NUnit 在 Windows 7/64 上“丢失”GPSVC.DLL

问题描述 投票:0回答:3

我最近从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 位吗?还是我错过了一些明显的东西?

.net dll dependencies 32bit-64bit x86-64
3个回答
10
投票

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

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

部分解释的困难修复是:

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

修复了nunit控制台exe,你告诉windows强制它在32位兼容模式下运行。这个链接向您展示了如何操作。

注意,您还需要下载 Windows sdk 才能获取 corflags.exe,请记住从 SDK 命令提示符运行该命令。


0
投票

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


0
投票

Windows 有 64 位命令提示符,但您可以通过显式启动

c:\windows\syswow64\cmd.exe
来获取 32 位命令提示符。从那里您可以拨打
c:\windows\syswow64\regsvr32.exe
,注册就会成功。

© www.soinside.com 2019 - 2024. All rights reserved.