【问题标题】:Opened program with EnvDTE, closes immediately使用 EnvDTE 打开程序,立即关闭
【发布时间】:2018-03-27 12:08:02
【问题描述】:

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

【问题讨论】:

  • 当你的方法结束时,里面创建的对象不会超出范围并被垃圾回收吗?
  • 这确实在我脑海中浮现,这就是我进行一些测试的原因;似乎如果我在范围的末尾放置一个断点并在 VS 完成加载后点击继续,它不会关闭。但也请参阅更新。

标签: c# visual-studio-2017 devenv


【解决方案1】:

有 dte.MainWindow.Activate() 。你试过用那个吗? VS 实例保留在任务管理器中且未完全关闭存在一个已知问题,但仅在 VS 被强制/突然关闭时才会发生。

【讨论】:

【解决方案2】:

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

文档中的相关段落:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-11-19
    • 2021-03-26
    • 2022-11-14
    • 2020-04-20
    • 1970-01-01
    • 2013-12-21
    • 1970-01-01
    相关资源
    最近更新 更多