在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