我將一個VS Addin轉換爲一個VS Package。爲什麼dte.MainWindow在VSIX Package Initialize方法中拋出一個NullRefEx?
我有我的VSIX包類代碼(從Microsoft.VisualStudio.Shell.Package派生)
protected override void Initialize() {
base.Initialize();
var dte = this.GetService<DTE>() as DTE2;
if(dte != null) {
var x = dte.MainWindow;
但是呼籲在這方面dte.MainWindow
拋出一個NullReferenceException
。
東西不能初始化。 我應該打電話給dte.MainWindow
嗎?
在VS Addin中,當dte.MainWindow
從public void OnStartupComplete(ref Array custom) {
調用Connect
Addin類型時,它正在工作。
Debug.Assert()讓你入睡。無論如何,它絕對沒有什麼可告訴你一些你不會很快找到的東西。這是有害的,刪除它。清理你的想法,你會看* dte *現在。 – 2014-09-19 17:55:13
這個問題與Debug.Assert(...)Hans無關。順便說一句,它告訴我一些非常有用的東西:感謝這個斷言,我知道dte不是null,因此在調用get_MainWindow()期間NullRefEx來自null。 – 2014-09-19 18:01:53
通往神祕問題的道路鋪平了假設。我們不知道的是_DEBUG條件是否被實際定義。一切都說它不是。 – 2014-09-19 18:09:50