在Package構造函數中,我添加了OnStartupComplete事件的事件處理函數。但是當我運行代碼時,事件處理程序不會被調用。我究竟做錯了什麼?DTEEvents.OnStartupComplete事件不適用於VSPackage(VSSDK2010)
2
A
回答
0
嘗試將代碼從包構造函數移動到包的Initialize()方法。它應該有所幫助,但如果沒有,請測試其他UICONTEXT _ ???您的AutoLoad屬性值可能爲UICONTEXT_NoSolution?
3
VS中存在一個錯誤,它會回收DTEEvents
對象(使用您的事件處理程序),除非您明確引用該對象。你需要的東西是這樣的:
[ProvideAutoLoad(VSConstants.UICONTEXT.NoSolution_string)]
[ProvideAutoLoad(VSConstants.UICONTEXT.SolutionExists_string)]
class MyPackage : Package
{
DTEEvents _EventsObj;
protected override void Initialize()
{
var dte = (EnvDTE.DTE)GetService(typeof(EnvDTE.DTE));
_EventsObj = dte.Events.DTEEvents;
_EventsObj.OnStartupComplete += OnStartupComplete;
}
void OnStartupComplete()
{
}
}
+0
非常好,完全正確。謝謝! – Kram 2014-10-14 14:15:09
0
見我的答案在這裏:http://social.msdn.microsoft.com/Forums/en-US/vsx/thread/eb1e8fd1-32ad-498c-98e9-25ee3da71004
我認爲,那是因爲你可能是拳擊和做的事件訂閱之前拆箱您DTE對象。這是一個巨大的麻煩,並且令人驚訝的是DTE對象無法通過服務位置輕鬆傳遞以用於事件訂閱;但這似乎是罪魁禍首。
我曾嘗試保留對DTE對象的引用,但無論如何我沒有做出任何改變。有些事件會起作用,有些則不會;但這是一致的。
相關問題
- 1. wxPython繪畫事件適用於Mac OSX,但不適用於Windows
- 2. UISlider的editingDidEnd事件不適用於iPad
- 3. Jquery事件.live不適用於1.4.2?
- 4. touchend事件不適用於Android
- 5. MSAnimationStart事件不適用於IE10
- 6. stopPropagation()不適用於委託事件
- 7. getApplicationContext()不適用於異步事件
- 8. onclick事件不適用於Safari?
- 9. 更改事件不適用於選擇
- 10. jQuery事件修剪不適用於我
- 11. onmouseover事件不適用於手機
- 12. onClick事件不適用於按鈕
- 13. onmouseover事件不適用於火狐
- 14. 多個開關不適用於此事件()事件
- 15. 事件提醒不適用於Android中的日曆事件
- 16. 排序事件不適用於引發事件的網格
- 17. 時事通訊適用於mysql_connect,但不適用於PDO
- 18. 廣播事件 - 適用於服務器端,但不適用於客戶端
- 19. XMLHttpRequest.upload進度事件只適用於IE
- 20. ACL規則是否適用於事件?
- 21. popViewController不適用於故事板
- 22. DataBound事件不適用於ASP.Net中的DataList控件
- 23. htaccess不適用於文件
- 24. Click事件不適用於主幹應用程序
- 25. 提交事件preventDefault()不適用於使用os9的iPad/iPhone
- 26. jQuery的變化事件不適用於鉻聯繫7
- 27. jQuery - 字符計數器不適用於粘貼事件
- 28. 標籤選擇事件不適用於jQuery 1.8.3
- 29. onMouseOver事件不適用於畫布/ d3(工具提示)
- 30. Onchange事件不適用於動態表格行
默認情況下,包延遲加載。你是否告訴Visual Studio在啓動時加載你的包?看到這個問題的答案:http://stackoverflow.com/questions/7815461/vsix-execute-code-on-vs-startup – Will 2012-01-09 15:56:35
請問,我使用PackageAutoload屬性,但這個屬性只適用於VS是由一個項目或解決方案文件。如果我只打開VS來打開StartPage,那麼這個包不會被加載! – dattebayo 2012-01-12 01:58:33
我不相信這是真的。還有其他一些屬性可以放在你的包上,它告訴VS你的包只有在解決方案出現時才應該加載。你確定你沒有使用其中之一? – Will 2012-01-12 14:12:27