4

我安装了 NUnit 2.6.1 并尝试在 Windows 7 x64 上运行一个简单的测试。它会导致异常

试图加载格式不正确的程序。您可能正在尝试加载使用比 NUnit 当前运行的版本 (2.0.50727) 更高版本的 CLR 构建的程序集,或者尝试将 64 位程序集加载到 32 位进程中。

这很奇怪,因为nunit.exe.config看起来像下面

  <?xml version="1.0" encoding="utf-8" ?> 
- <configuration>
- <!-- 
   The GUI only runs under .NET 2.0 or higher. The
   useLegacyV2RuntimeActivationPolicy setting only
   applies under .NET 4.0 and permits use of mixed 
   mode assemblies, which would otherwise not load 
   correctly.


  --> 
- <startup useLegacyV2RuntimeActivationPolicy="true">
- <!--  Comment out the next line to force use of .NET 4.0 
  --> 
- <!--  <supportedRuntime version="v2.0.50727" /> 
  --> 
  <supportedRuntime version="v4.0.30319" /> 
  </startup>
- <runtime>
- <!--  Ensure that test exceptions don't crash NUnit 
  --> 
  <legacyUnhandledExceptionPolicy enabled="1" /> 
- <!--  Run partial trust V2 assemblies in full trust under .NET 4.0 
  --> 
  <loadFromRemoteSources enabled="true" /> 
- <!--  Look for addins in the addins directory for now 
  --> 
- <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
  <probing privatePath="lib;addins" /> 
  </assemblyBinding>
  </runtime>
  </configuration>
4

1 回答 1

7

这听起来不像 NUnit 的问题。这听起来像您的单元测试程序集不是为 32 位进程构建的。您确定您的单元测试程序集是为 32 位构建的吗?如果 NUnit 运行 32 位并且你的程序集是在 64 位上构建的(或者不是作为任何 CPU 构建的)你会遇到这个问题。调用应用程序确定程序集所需的位深度。您不能将 64 位 dll 与 32 位进程一起使用,反之亦然。

我提到这一点的唯一原因是因为您的问题说您正在尝试运行测试。如果 NUnit 配置不正确,它甚至不会启动。

于 2012-09-19T15:50:00.417 回答