与Envdte打开程序,立即关闭



我正在尝试启动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实例停止调试会话后,编程创建的实例在任务管理器中仍然可见。

有dte.mainwindow.activate((。您尝试使用过吗?VS实例在任务管理器中存在一个已知问题,而不是完全关闭,但仅在强制关闭VS时才发生。

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

文档中的相关段落:

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

最新更新