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