调试由Visual Studio扩展引发的异常

6
我正在使用安装了一些扩展的Visual Studio 2015。 我试图调试以下错误,如下所示: An exception has been encountered. This may be caused by an extension 这些错误被记录在ActivityLog.xml文件中:
440 ERROR A MEF Component threw an exception at runtime: System.InvalidCastException: Unable to cast object of type 'System.Reflection.RuntimeMethodInfo' to type 'System.Reflection.ConstructorInfo'. 
  at Microsoft.VisualStudio.Composition.Reflection.ResolverExtensions.Resolve(ConstructorRef constructorRef) 
  at Microsoft.VisualStudio.Composition.RuntimeComposition.RuntimePart.get_ImportingConstructor() 
  at Microsoft.VisualStudio.Composition.RuntimeExportProviderFactory.RuntimeExportProvider.RuntimePartLifecycleTracker.CreateValue() 
  at Microsoft.VisualStudio.Composition.ExportProvider.PartLifecycleTracker.Create() 
  at Microsoft.VisualStudio.Composition.ExportProvider.PartLifecycleTracker.MoveNext(PartLifecycleState nextState) 
  at Microsoft.VisualStudio.Composition.ExportProvider.PartLifecycleTracker.MoveToState(PartLifecycleState requiredState) 
  at Microsoft.VisualStudio.Composition.ExportProvider.PartLifecycleTracker.GetValueReadyToExpose() 
  at Microsoft.VisualStudio.Composition.RuntimeExportProviderFactory.RuntimeExportProvider.<>c__DisplayClass15_0.<GetExportedValueHelper>b__0()   
  Source: Microsoft.VisualStudio.CommonIDE.ExtensibilityHosting.VsShellComponentModelHost 
  Time: 2016/09/12 07:16:43.932 
  
441 ERROR System.InvalidCastException: Unable to cast object of type 'System.Reflection.RuntimeMethodInfo' to type 'System.Reflection.ConstructorInfo'. 
  at Microsoft.VisualStudio.Composition.Reflection.ResolverExtensions.Resolve(ConstructorRef constructorRef) 
  at Microsoft.VisualStudio.Composition.RuntimeComposition.RuntimePart.get_ImportingConstructor() 
  at Microsoft.VisualStudio.Composition.RuntimeExportProviderFactory.RuntimeExportProvider.RuntimePartLifecycleTracker.CreateValue() 
  at Microsoft.VisualStudio.Composition.ExportProvider.PartLifecycleTracker.Create() 
  at Microsoft.VisualStudio.Composition.ExportProvider.PartLifecycleTracker.MoveNext(PartLifecycleState nextState) 
  at Microsoft.VisualStudio.Composition.ExportProvider.PartLifecycleTracker.MoveToState(PartLifecycleState requiredState) 
  at Microsoft.VisualStudio.Composition.ExportProvider.PartLifecycleTracker.GetValueReadyToExpose() 
  at Microsoft.VisualStudio.Composition.RuntimeExportProviderFactory.RuntimeExportProvider.<>c__DisplayClass15_0.<GetExportedValueHelper>b__0() --- End of stack trace from previous location where exception was thrown --- 
  at Microsoft.VisualStudio.Composition.RuntimeExportProviderFactory.RuntimeExportProvider.<>c__DisplayClass15_0.<GetExportedValueHelper>b__0() 
  at Microsoft.VisualStudio.Composition.DelegateServices.<>c__DisplayClass2_0`1.<As>b__0() 
  at System.Lazy`1.CreateValue() 
  at System.Lazy`1.LazyInitValue() 
  at System.Lazy`1.get_Value() 
  at Microsoft.VisualStudio.Text.Utilities.GuardedOperations.InvokeEligibleFactories[TExtensionInstance,TExtensionFactory,TMetadataView](IEnumerable`1 lazyFactories, Func`2 getter, IContentType dataContentType, IContentTypeRegistryService contentTypeRegistryService, Object errorSource)   
  Source: Editor or Editor Extension 
  Time: 2016/09/12 07:16:44.075 
  

SourceMicrosoft.VisualStudio.CommonIDE.ExtensibilityHosting.VsShellComponentModelHostEditor或Editor Extension时会报告错误。

这些错误没有提及是哪个扩展程序引起的,我找不到任何提示来寻找问题所在。

使用调试器运行(devenv.exe" /RootSuffix Exp)时,调试器不会停止在异常处,错误消息框仍然会出现。

有什么想法可以进一步调试此问题,以找出是哪个扩展程序引起了问题以及扩展程序中的问题在哪里?


更新

关闭Visual Studio、重新启动计算机、重新安装扩展程序等后,问题已经消失。
我对此并不满意,因为我无法找出问题的根本原因或得到任何好的提示去寻找/调试此问题。

4个回答

10

Visual Studio 2015 更新 3(至少)提供了一个开始菜单项:

Visual Studio 2015 > 重置 Visual Studio 2015 实验实例

它似乎比被接受的答案更低级和更简单: 它调用

"C:\Program Files (x86)\Microsoft Visual Studio 14.0\VSSDK\
 VisualStudioIntegration\Tools\Bin\CreateExpInstance.exe"
 /Reset /VSInstance=14.0 /RootSuffix=Exp

看起来只是删除并重新创建相关文件。


1
这难道不仅影响实验实例吗? - Amir Gonnen
1
@AmirGonnen 是的,但问题中的截图显示正在使用实验性实例(14.0Exp\ActivityLog.xml),因此这是一个合理的答案。 - reduckted

5

这个错误意味着Visual Studio中的扩展信息缓存和您安装的扩展已经不同步。这不是任何一个扩展本身的问题,而是Visual Studio的一个错误。请确保您已经安装了所有更新的最新版本——我们在最近几个月中修复了一些可能会导致出错的bug。如果您想强制重建缓存,可以运行以下命令:

devenv /updateconfiguration

强制缓存在下一次运行时重新构建。


感谢澄清。下次出现这种情况,我会尝试强制重建缓存。 - Amir Gonnen

2
为了确保是否与插件或扩展工具相关,您可以在安全模式下运行VS:
devenv /SafeMode 如果在安全模式下正常工作,我们会考虑它们。
根据您评论中的信息,我也没有找到错误消息,分享哪个扩展工具影响了VS IDE。
就像这篇文档一样:

http://blog.masterdevs.com/debugging-a-visual-studio-crash/

您需要收集和查看详细的错误消息,例如“哪些dll文件或包未加载或其他”,如果您确定没有其他错误消息,则可以清理临时/ AppData文件,重新打开VS,并再次检查它。

@Amir Gonnen,关于这个问题怎么样了?您能否分享一下最新的信息? - Jack Zhai
您IP地址为143.198.54.68,由于运营成本限制,当前对于免费用户的使用频率限制为每个IP每72小时10次对话,如需解除限制,请点击左下角设置图标按钮(手机用户先点击左上角菜单按钮)。 - Amir Gonnen

-1

我通过删除<user>\AppData\Local\Microsoft\VisualStudio\中的每个相关目录来解决了这个问题。

(因为它找不到目录blahblah\15.0Exp\,所以“较低级别”的重置调用无法起作用。)

顺便说一下,我使用的是VS2017RCUpdate3。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接