5

当从 Visual Studio 运行代码时停止代码时是否有可能运行一些代码?

我正在使用 CefGlue 库来构建一个 WinForms 应用程序,并意识到当按下停止按钮(从异常到两个没有内容打开的窗口)时会出现问题。一个单独的进程继续在后台运行。为了很好地停止 Cef 我需要执行CefRuntime.Shutdown();也许这是因为它没有在 Visual Studio 托管进程中运行应用程序,因为 CefGlue 有这个问题(见这个)。这不会影响生产,但在开发和测试时很讨厌,但我还是想执行一些代码来解决这个问题。

我想这是不可能的,但如果是的话,知道会很有趣。

因此,我正在寻找一种在开发过程中按下停止按钮时 Visual Studio 停止应用程序时执行某些代码的方法。

注意:我使用的是 Visual Studio 2013 和 2015。

编辑 这个问题用很少的代码行就无法重现。尽管如此,我还是尝试在这里创建一个简化的示例

4

1 回答 1

1

您基本上要寻找的是使用 Visual Studio SDK 的解决方案。

您可以通过实现IDTExtensibility 接口来构建自己的加载项。

在该OnConnection功能中,您可以订阅不同的事件。使用(DTE2)application你可以从 VS访问很多东西。

您必须订阅一些可以从Events 属性中获得的事件。

您必须自己找出最适合您的解决方案的事件。但是DebuggerEvents似乎是一个不错的起点。

这确实需要一些研究才能使用它。可能会有更简单的解决方案。

作为一个简单的例子OnConnection

public void OnConnection(object application, ext_ConnectMode connectMode, object addInInst, ref Array custom)
{
    var applicationObject = (DTE2)application;

    var events = _applicationObject.Events;
    var buildEvents = (BuildEvents)events.BuildEvents;
    buildEvents.OnBuildBegin += new _dispBuildEvents_OnBuildBeginEventHandler(OnBuildBegin);
}

这在构建开始时触发。可用的文档不是很好,因此在找到所需的内容之前需要进行一些试验和错误。

于 2016-01-28T11:20:16.833 回答