我試圖掛鉤幾個Visual Studio事件。不幸的是我在第一步失敗了。事件處理程序永遠不會被調用。Visual Studio 2010擴展 - 未調用的事件
所以我的問題是我做錯了什麼?
這裏是我的代碼的一小段摘錄。
// here are some attributes
[ProvideAutoLoad(VSConstants.UICONTEXT.SolutionExists_string)]
public sealed class VSPackage : Package {
EnvDTE80.DTE2 dte_;
EnvDTE.DocumentEvents documentEvents_;
EnvDTE.WindowEvents windowEvents_;
public VSPackage2Package() {
Trace.WriteLine("I am get called.");
}
protected override void Initialize() {
Trace.WriteLine("I am get called too.");
dte_ = (EnvDTE80.DTE2) System.Runtime.InteropServices.Marshal.
GetActiveObject("VisualStudio.DTE.10.0");
windowEvents_ = dte_.Events.WindowEvents;
documentEvents_ = dte_.Events.DocumentEvents;
windowEvents_.WindowCreated +=
new EnvDTE._dispWindowEvents_WindowCreatedEventHandler(
windowEvents_WindowCreated);
documentEvents_.DocumentOpened +=
new EnvDTE._dispDocumentEvents_DocumentOpenedEventHandler(
documentEvents__DocumentOpened);
Trace.WriteLine("Everything fine until here.");
}
void documentEvents__DocumentOpened(EnvDTE.Document document) {
Trace.WriteLine("Never called");
}
void windowEvents_WindowCreated(EnvDTE.Window window) {
Trace.WriteLine("Never called");
}
}
編輯:
我得到它的工作,尋找其他的示例代碼,我想通了,他們有時會獲得DTE對象不同。更改
dte_ = (EnvDTE80.DTE2) System.Runtime.InteropServices.Marshal.
GetActiveObject("VisualStudio.DTE.10.0");
到
dte_ = GetService(typeof(EnvDTE.DTE)) as EnvDTE80.DTE2;
,現在一切都很好。
沒有幫助,OnShellPropertyChange叫,但從來沒有與那裏提到,移動我的事件註冊反正有沒有物業成功地執行,而且事件不叫 – ConfusedSushi 2011-01-27 13:55:11