【问题标题】:NUnit "missing" GPSVC.DLL on Windows 7/64Windows 7/64 上的 NUnit“丢失”GPSVC.DLL
【发布时间】:2010-12-25 00:40:08
【问题描述】:

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

【问题讨论】:

  • gpsvc.dll 似乎只有 64 位。但是,它是延迟加载的,因此这里不应该成为问题,因为只有在实际使用时才会加载它。我不知道你的情况出了什么问题,但关注 gpsvc.dll 似乎是一个红鲱鱼。
  • 我希望是这样,但是 NUnit 仍然拒绝加载我的单元测试。顺便说一句,DW 还显示了 IEFRAME.DLL 和 SHLWAPI.DLL 的标志,但这些也是延迟加载的。

标签: .net dll dependencies 32bit-64bit x86-64


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

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

    部分解释的困难修复是:

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

    修复了 nunit 控制台 exe,您告诉 Windows 强制它以 32 位兼容模式运行。这个link 向您展示了如何做到这一点。

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-01-25
        • 2011-11-25
        • 2023-03-30
        • 1970-01-01
        • 2012-04-28
        • 2014-11-28
        • 1970-01-01
        • 2012-11-15
        相关资源
        最近更新 更多