我注意到在VS软件包产品的安装时(例如http://www.continuoustests.com/)devenv.exe
已启动
我注意到某个时候我的VS插件被加载(调用了它的OnConnection()
方法),这可能会引发崩溃。
问题是某个时候,因为我无法重新加载我的VS插件加载的条件。
从我的崩溃日志中,我知道它很少发生,只有VS2010 devenv.exe
,我知道它也独立于机器架构x86 / x64。
我尝试安装/卸载没有运行VS实例或运行VS实例的额外插件,VS2008或VS2010。
当我的VS插件被加载时,是否有人知道如何重现问题?
顺便说一句,我非常肯定能解决这个问题,因为在OnConnection()
我已经有了类似的代码......
switch (connectMode) {
case ext_ConnectMode.ext_cm_External: // This setting is no longer used by Visual Studio. (http://msdn.microsoft.com/en-us/library/extensibility.ext_connectmode%28v=vs.80%29.aspx)
case ext_ConnectMode.ext_cm_CommandLine:// The add-in was loaded from the command line, don't support it so far
case ext_ConnectMode.ext_cm_UISetup: // addin loaded for the first time, we don't need it (http://msmvps.com/blogs/carlosq/archive/2008/10/13/the-onconnection-method-and-ext-connectmode-ext-cm-uisetup-of-visual-studio-add-ins.aspx)
return;
case ext_ConnectMode.ext_cm_AfterStartup:
case ext_ConnectMode.ext_cm_Startup:
case ext_ConnectMode.ext_cm_Solution:
break;
}
...但是一旦调用OnStartupComplete()
,我就忘记检查connectMode
中OnConnection()
的值,因此崩溃了。
无论如何能够重现这个错误会让我感到安慰。
答案 0 :(得分:0)
更新:2011年10月10日
经过更多测试和反复问题的用户的反馈后,我的理论似乎是错误的:connectMode
实际上在[ext_cm_AfterStartup, ext_cm_Startup, ext_cm_Solution]
范围内。
问题只发生在VS2010上,而且来自于插件没有UI元素,导致dte.MainWindow
或HwndSource.FromHwnd(new IntPtr(mainWindow.HWnd)).RootVisual
之类的内容为空。
我与VS addin的世界专家Carlos Quintero http://msmvps.com/blogs/carlosq/进行了交谈,从未观察到这种情况。 VS2010不应该在VS扩展安装/卸载场景中加载任何插件,它似乎是在未知和罕见的情况下随机发生或更可能发生的。
我将又一个 try/catch
来绕过另一个 VS2010插件错误:(