Visual Studio 扩展抛出的调试异常

Debugging Exceptions thrown by Visual Studio Extension

我 运行 Visual Studio 2015 年有一些扩展。
我正在尝试调试我遇到的以下错误:

错误记录在 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 
  

Microsoft.VisualStudio.CommonIDE.ExtensibilityHosting.VsShellComponentModelHostEditor or Editor ExtensionSource 报告了错误。

错误没有提到哪个扩展导致了错误,我找不到任何提示去哪里寻找问题。

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

知道如何进一步调试它,以查明是哪个扩展引起了问题以及问题可能出在扩展的什么地方吗?


更新

关闭Visual Studio、重启机器、re-installing扩展等,问题消失
我对此不满意,因为我无法 root-cause 问题或得到任何好的提示在哪里查看/如何调试它。

为了确定是否与加载项或扩展工具有关,您可以运行您的VS在安全模式下:

devenv /安全模式

如果在安全模式下运行良好,我们会考虑的。

根据您评论中的消息,我也没有细化共享扩展工具影响 VS 的错误消息 IDE。

点赞此文档:

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

您需要收集并查看详细的错误信息,如"which dll files or packages were not loaded or others",如果您确定没有其他错误信息,也许您可​​以清理temp/AppData文件,重新打开您的VS,再检查一遍。

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

devenv /updateconfiguration

强制在下一个 运行 重建缓存。

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

Visual Studio 2015 > Reset the Visual Studio 2015 Experimental Instance

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

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

这似乎只是删除并重新创建了相关文件。

我通过删除 <user>\AppData\Local\Microsoft\VisualStudio\

中的所有相关目录解决了这个问题

('lower level' 重置调用无效,因为它找不到目录 blahblah.0Exp\。)

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