4

我正在编写一个 VS 包,我需要在其中存储用户启动我的包以及用户关闭 Visual Studio 的时间。

问题是,我不知道如何获取 Visual Studio 的结束事件。谁能给我有关如何检测 VS 是否正在关闭的任何信息?

注意:当我从互联网上搜索时,我遇到了以下类似的问题:如何通过 VSPackage 取消 ToolWindowPane 或 Visual Studio IDE 关闭操作?,但是当我尝试时,这个解决方案是在Package窗口关闭时检测并执行某些操作,而无法检测Visual Studio何时关闭。

非常感谢任何帮助。

谢谢

4

1 回答 1

7

只是为了明确并关闭这个问题。这是检查 VS 是否正在关闭的代码快照:

// Create 2 variables below
private DTE2 m_applicationObject = null;
DTEEvents m_packageDTEEvents = null;

然后在初始化中添加:

// Link the Event when VS CLOSING                
m_packageDTEEvents = ApplicationObject.Events.DTEEvents;
m_packageDTEEvents.OnBeginShutdown += new _dispDTEEvents_OnBeginShutdownEventHandler(HandleVisualStudioShutDown);

您需要的另外两种方法:

 public DTE2 ApplicationObject
 {
        get
        {
            if (m_applicationObject == null)
            {
                // Get an instance of the currently running Visual Studio IDE
                DTE dte = (DTE)GetService(typeof(DTE));
                m_applicationObject = dte as DTE2;
            }
            return m_applicationObject;
        }
  }

public void HandleVisualStudioShutDown()
{
    MessageBox.Show("Exiting Visual Studio. Bye");
}
于 2013-02-05T06:38:56.550 回答