21

我最近从 Vista/32 升级到 Win7/64。在我的旧机器上,一切正常。

不幸的是,在我的新机器上,NUnit 不会加载我的单元测试,并显示错误消息“System.IO.FileNotFoundException:无法加载文件或程序集'UnitTest'或其依赖项之一。系统找不到指定的文件”。(实际上,我必须检查我所有的解决方案项目并将它们设置为 32 位才能做到这一点。)

所以我加载了 Dependency Walker,它告诉我我缺少IESHIMS.DLL。我在我的机器上找到了两个,所以我从 Internet Explorer 目录中复制了 32 位版本,DW 停止抱怨该文件。

但是,它也缺少GPSVC.DLL。我在 C:\Windows\System32 中只找到了一个副本,但是当我将它复制到我的单元测试目录时,DW 抱怨它是 64 位的,并且 NUnit 仍然无法运行。它现在还将 SYSNTFY.DLL添加到缺失列表中。我只有其中一个,而且也是 64 位的。NUnit 仍然报错。

那么我应该放弃这个 64 位操作系统并回到旧的 32 位,还是我遗漏了一些明显的东西?

4

3 回答 3

10

我今天遇到了同样的问题,幸运的是有一个非常简单的修复和一个更复杂的修复。

简单的解决方法是运行 nunit-console-x86.exe,而不是 nunit-console.exe

部分解释的困难修复是:

正在发生的事情是 nunit 控制台运行程序在 64 位模式下运行,这以某种方式阻止它加载处于 32 位模式的单元测试 dll。

修复了 nunit 控制台 exe,您告诉 Windows 强制它以 32 位兼容模式运行。此链接向您展示了如何执行此操作。

注意,您还需要下载一个 windows sdk 来获取 corflags.exe,记住从 SDK 命令提示符运行命令。

于 2010-04-14T14:56:10.043 回答
0

我可以让它工作的唯一方法是将我的整个应用程序转换为 32 位目标,并在 32 位虚拟机上对其进行测试。此外,DLL 必须位于本地(非网络)驱动器上,因为不允许在网络驱动器上进行调试(至少我无法让它工作)。

于 2010-03-31T14:34:24.393 回答
0

Windows 有 64 位命令提示符,但您可以通过显式启动获得 32 位命令提示符c:\windows\syswow64\cmd.exe。从那里你可以打电话c:\windows\syswow64\regsvr32.exe,注册就会成功。

于 2014-10-09T21:04:16.587 回答