C# NUnit错误:";FrameworkName的组件不能少于两个或多于三个;

C# NUnit错误:";FrameworkName的组件不能少于两个或多于三个;,c#,.net,nunit,resharper,C#,.net,Nunit,Resharper,我正在使用: Visual Studio 2017 v15.5.4 NUnit 3.9.0 NUnit测试适配器3.9.0 Resharper 2017.3 .NET4.7项目 我在尝试调试NUnit测试时遇到随机异常: 首先是: 托管调试助手“BindingFailure”:“具有 显示名称“Microsoft.VisualStudio.QualityTools.VideoRecorderEngine” 无法在ID为的AppDomain的“加载”绑定上下文中加载 1.失败的原因是:Syst

我正在使用:

  • Visual Studio 2017 v15.5.4
  • NUnit 3.9.0
  • NUnit测试适配器3.9.0
  • Resharper 2017.3
  • .NET4.7项目
我在尝试调试NUnit测试时遇到随机异常:

首先是:

托管调试助手“BindingFailure”:“具有 显示名称“Microsoft.VisualStudio.QualityTools.VideoRecorderEngine” 无法在ID为的AppDomain的“加载”绑定上下文中加载 1.失败的原因是:System.BadImageFormatException:无法加载文件或程序集 “Microsoft.VisualStudio.QualityTools.VideoRecorderEngine”或 它的依赖性。该模块应包含一个程序集 明显的。”

其次是:

System.BadImageFormatException:'无法加载文件或程序集 “Microsoft.VisualStudio.QualityTools.VideoRecorderEngine”或 它的依赖性。该模块应包含一个程序集 明显的。”

以及:

托管调试助手“BindingFailure”:“具有 无法在“加载”中加载显示名称“VSTestVideoRecorder” ID为1的AppDomain的绑定上下文。失败的原因 was:System.BadImageFormatException:无法加载文件或程序集 “VSTestVideoRecorder”或其依赖项之一。进行了一次尝试 加载格式不正确的程序。'

在一些相关的例外情况出现后:

托管调试助手“LoadFromContext”:“名为 “nunit.engine.api”已从加载 'file:///C:/Users/[用户名]/AppData/Local/Temp/VisualStudioTestExplorerExtensions/NUnit3TestAdapter.3.9.0/build/net35/nunit.engine.api.DLL' 使用LoadFrom上下文。使用此上下文可能会导致 序列化、强制转换和依赖项的意外行为 决议在几乎所有情况下,建议从 必须避免上下文。这可以通过在中安装程序集来完成 全局程序集缓存或在ApplicationBase目录中,并使用 程序集。显式加载程序集时加载。“

托管调试助手“LoadFromContext”:“名为 “Mono.Cecil”是从 'file:///C:/Users/[用户名]/AppData/Local/Temp/VisualStudioTestExplorerExtensions/NUnit3TestAdapter.3.9.0/build/net35/Mono.Cecil.DLL' 使用LoadFrom上下文。使用此上下文可能会导致 序列化、强制转换和依赖项的意外行为 决议在几乎所有情况下,建议从 必须避免上下文。这可以通过在中安装程序集来完成 全局程序集缓存或在ApplicationBase目录中,并使用 程序集。显式加载程序集时加载。“

最后:

System.ArgumentException:'FrameworkName不能少于两个 组件或三个以上组件。参数名称: 框架名称'

之后,我可以调试我的测试,但有新的随机异常 在调试视图中传递集合时:

System.ArgumentNullException:'值不能为null。参数名称: 收藏'

使用Stracktrace:

在System.ThrowWhelper.ThrowArgumentNullException(例外参数 (论据)在 System.Collections.Generic.Mscorlib\u CollectionDebugView
1..ctor(ICollection
1 收藏)


转到测试->测试设置->默认处理器体系结构。确保这与您当前的系统架构相匹配,即,如果您的机器为64位,则将其设置为X64,反之亦然:


好吧,这是一个bug。据说这将在VS15.8预览版3中修复。

我在版本15.9.11中仍然存在此问题。我的工作是:

  • 在异常设置窗口中引发ArgumentException时显式启用中断
  • 调试单元测试,并等待调试器因框架名称而中断(因为它是ArgumentException)
  • 使用调试器中的异常抛出窗口,并选中设置“从系统.dll抛出时除外”,因此,我们告诉调试器 在System.dll中抛出时忽略ArgumentException

  • 就我而言,
    托管调试助手
    可以忽略。所以真正的问题只是我发布的最后3个例外,我认为这3个例外不适合我。System.ArgumentException HResult=0x80070057 Message=FrameworkName的组件不能少于两个或多于三个。参数名称:frameworkName Source=System StackTrace:at System.Runtime.Versioning.frameworkName..ctor(字符串frameworkName)