c# - 在我的 VS 扩展中,如何在 Visual Studio 2015/2017 中以编程方式预览文件?

标签 c# visual-studio-extensions vsix

在我的 Visual Studio 扩展中,我显示相关文件。

我有 可以在 Visual Studio 中打开文件的代码。

我要 可以预览文件的代码

这是我用来使用 DTE2 对象打开文件的代码。但是如何预览文件?

public void ViewFile(FileInfo file)
{
    if (null == file)
        throw new ArgumentNullException(nameof(file));

    var dte2 = (EnvDTE80.DTE2)DTE;
    dte2.MainWindow.Activate();
    var newWindow = dte2.ItemOperations.IsFileOpen(file.FullName)
            ? FindWindow(file.FullName)
            : dte2.ItemOperations.OpenFile(file.FullName);
    newWindow.Activate();
}

这是一个预览文件,如果您在解决方案资源管理器中单击它:

enter image description here

这是一个打开的文件,如果您在解决方案资源管理器中双击它,或者对预览文件进行更改:

enter image description here

最佳答案

您可以使用 NewDocumentStateScope 从 Visual Studio 扩展的预览选项卡中打开文档。 :

    private void OpenDocumentInPreview(DTE dte, string filename)
    {
        using (new NewDocumentStateScope(__VSNEWDOCUMENTSTATE.NDS_Provisional, VSConstants.NewDocumentStateReason.SolutionExplorer))
        {
            dte.ItemOperations.OpenFile(filename);
        }
    }
当以其他方式启动预览时,如果文件已经在普通选项卡中打开,则此代码将切换到该选项卡而不是使用预览选项卡。

关于c# - 在我的 VS 扩展中,如何在 Visual Studio 2015/2017 中以编程方式预览文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45689836/

相关文章:

c# - 无法将可解构类型隐式转换为元组

c# - 命名管道服务器读取超时

visual-studio-2013 - Visual Studio扩展未在实验实例中加载

wpf - XamlParseException 在 VS 扩展项目中使用 Extended.Wpf.Toolkit

c# - 如何使用 VSIX 扩展实现控制台应用程序

google-api - 如何在 Vsix 扩展中执行 dll bindingRedirect?

c# - 创建、刷新 WPF TreeView 并记住没有 XAML 的扩展节点

c# - 如何在 EF 4.1 中将属性映射为 NOT 列

visual-studio - 如何在 VS 中调试 VSIX 扩展,该扩展是其他版本,然后是正在使用的 VS SDK 版本

visual-studio - Visual Studio 2012 扩展在鼠标悬停时显示成员信息