C# 单元测试-组件加载失败

C# 单元测试-组件加载失败,c#,visual-studio-2012,dll,nunit,resharper,C#,Visual Studio 2012,Dll,Nunit,Resharper,我有一个Visual studio项目(包含NUnit测试),平台目标为:任何CPU(调试和发布)。 此项目引用具有以下配置的dll(Reference.dll): (from ILSpy) // Architecture: AnyCPU (64-bit preferred) // This assembly contains unmanaged code. // Runtime: .NET 4.0 [assembly: CLSCompliant(true)] [assembly: Assem

我有一个Visual studio项目(包含NUnit测试),平台目标为:任何CPU(调试和发布)。 此项目引用具有以下配置的dll(Reference.dll):

(from ILSpy)
// Architecture: AnyCPU (64-bit preferred)
// This assembly contains unmanaged code.
// Runtime: .NET 4.0

[assembly: CLSCompliant(true)]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyProduct("DotNet")]
[assembly: AssemblyTitle("DotNet")]
[assembly: AssemblyTrademark("")]
[assembly: ComVisible(false)]
[assembly: TargetFramework(".NETFramework,Version=v4.5", FrameworkDisplayName = ".NET Framework 4.5")]
[assembly: SecurityRules(SecurityRuleSet.Level1)]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, UnmanagedCode = true)]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
构建项目后,将使用以下配置生成Tests.dll

(from ILSpy)
// Architecture: AnyCPU (64-bit preferred)
// Runtime: .NET 4.0

[assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyTrademark("")]
[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: ComVisible(false)]
[assembly: Guid("37AAB39F-D11B-4C7D-887C-A056A63177A3")]
[assembly: TargetFramework(".NETFramework,Version=v4.5", FrameworkDisplayName = ".NET Framework 4.5")]
我使用Resharper以以下首选项运行NUnit测试:

默认平台架构:基于测试项目目标平台的自动

默认.NET framework版本:基于test projet的目标平台自动

当执行测试用例并使用Reference.dll中的任何方法时,我得到以下异常: System.BadImageFormatException:无法加载文件或程序集“”或其依赖项之一。试图加载格式不正确的程序。

当我将Tests.dll的目标平台更改为x86时,它可以工作。
有人能解释一下为什么两个平台的任何CPU都不工作。

这似乎失败了,因为正在测试的程序集(不是您测试的程序集)是32位的。如果测试项目被设置为AnyCPU,它将以64位运行,并且无法加载被测试的程序集


您需要将测试项目设置为与被测程序集或其依赖项具有相同的位。ReSharper仅在决定测试程序集应以32位还是64位运行时查看测试程序集。

在使用nunit控制台运行时是否收到相同的错误?如果我删除对reference.dll的引用并将其设置回任何可用的CPU。引用Reference.dll后出现问题。Reference.dll引用的程序集是否不是任何CPU?