使用EnvDTE打开的程序立即关闭

时间:2018-03-27 12:08:02

标签: c# visual-studio-2017 devenv

我尝试启动Visual Studio 2017并以编程方式打开解决方案,如下面的代码所示。问题是,当我运行VS2017打开时,加载解决方案并立即关闭。我已经搜索过,但没有找到任何类似问题的人与开放VS解决方案的解决方案相似的代码。可能导致此行为的原因以及如何阻止VS2017立即关闭?从未遇到异常。

private void OpenVisualStudio(string file)
    {
        try
        {
            System.Type t = Type.GetTypeFromProgID("VisualStudio.DTE.15.0");
            EnvDTE80.DTE2 dte = (EnvDTE80.DTE2)System.Activator.CreateInstance(t);
            dte.MainWindow.Visible = true;
            dte.Solution.Open(file);
        }
        catch (Exception e)
        {
            Logger.GetInstance().Write(e.StackTrace, e.Message, LoggingLevel.Error);
        }
    }

更新 如果我在范围的末尾放置一个断点并在VS完成加载后点击继续,则它不会关闭。检查任务管理器后,似乎Visual Studio的实例根本没有关闭...只有窗口是。即使在手动退出以编程方式创建的VS实例停止调试会话后,以编程方式创建的实例仍可在任务管理器中看到。

2 个答案:

答案 0 :(得分:0)

有dte.MainWindow.Activate()。你尝试过使用它吗? VS实例仍然存在于任务管理器中并且没有完全关闭,但只有当VS被强制/突然关闭时才会发生。

答案 1 :(得分:0)

DTE.UserControl属性设置为true,VS将不再关闭。

文档中的相关段落:

  

如果环境不受用户控制,并且最后一个外部环境   自动化客户端断开连接,然后环境关闭。