如何在加载解决方案时检测加载项?

时间:2009-02-23 14:57:03

标签: visual-studio visual-studio-2008

我的加载项如何检测加载解决方案的时间?我知道在DTE模型中必定会有某些事件,但我找不到它。我的加载项在Visual Studio加载时加载,但它取决于打开的解决方案。我不想把它变成一个解决方案加载项,直到MS在COM上丢失了他们的生病,因为解决方案加载项必须是COM组件。

3 个答案:

答案 0 :(得分:8)

以下是使用C#注册事件处理的方法:

_solutionEvents = _applicationObject.Events.SolutionEvents;
_solutionEvents.Opened += new _dispSolutionEvents_OpenedEventHandler(SolutionOpened);
_solutionEvents.AfterClosing += new _dispSolutionEvents_AfterClosingEventHandler(SolutionClosed);

另请注意,当用户通过双击解决方案文件打开Visual Studio时,您将无法获得解决方案打开的事件。您应该检查OnStartupComplete方法中的_applicationObject.Solution是否为空,以正确处理这种情况。

答案 1 :(得分:0)

MSDN上的SolutionEvents类包含事件:

已打开:在打开解决方案或项目后立即发生。

答案 2 :(得分:0)

您在DTE2类中有一个名为Events的属性,它提供了很多类型的事件,您需要使用它们:

DTE2 _applicationObject
_applicationObject.Events.SolutionEvents.Opened+=new _dispSolutionEvents_OpenedEventHandler(SolutionEvents_Opened);