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.VsShellComponentModelHost
和 Editor or Editor Extension
的 Source
报告了错误。
错误没有提到哪个扩展导致了错误,我找不到任何提示去哪里寻找问题。
当 运行 调试器 (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。
我 运行 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.VsShellComponentModelHost
和 Editor or Editor Extension
的 Source
报告了错误。
错误没有提到哪个扩展导致了错误,我找不到任何提示去哪里寻找问题。
当 运行 调试器 (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。