我有一个Visual项目(包含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框架版本:基于测试项目目标平台的自动化
在执行测试用例并使用来自Reference.dll的任何方法时,我得到以下异常:System.BadImageFormatException:无法加载文件或程序集“”或其依赖项之一。尝试加载格式不正确的程序。。
当我将Tests.dll的目标平台更改为x86时,它可以工作。有人能解释一下为什么两个平台的都不能工作吗?
发布于 2016-01-15 14:51:35
这似乎失败了,因为正在测试的程序集(而不是带有测试的程序集)是32位。如果测试项目设置为AnyCPU,它将运行为64位,并且无法加载正在测试的程序集。
您需要将测试项目设置为与正在测试的程序集或其依赖项具有相同的位性。ReSharper只在决定它应该作为32位还是64位运行时才查看测试程序集。
https://stackoverflow.com/questions/34809076
复制相似问题