2009-12-09 43 views
21

我最近從Vista/32的Win7/64升級。在我的舊機器上,一切正常。NUnit的 「失蹤」 GPSVC.DLL在Windows 7/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位,還是我失去了一些東西明顯?

+2

gpsvc.dll似乎只有64位。但是,它是延遲加載的,所以在這裏不應該成爲問題,因爲它只會在實際使用時加載。我不知道你的情況出了什麼問題,但專注於gpsvc.dll似乎是一個紅鯡魚。 – Michael 2009-12-09 21:56:48

+0

我希望情況會如此,但NUnit仍然拒絕加載我的單元測試。 BTW,DW也顯示IEFRAME.DLL和SHLWAPI.DLL的標誌,但這些也是延遲加載的。 – 2009-12-09 22:02:46

回答

10

我今天打了同樣的問題,幸運的是,有一個非常簡單的修復和更復雜的一個。

簡單的解決方法是運行NUnit控制檯-x86.exe程序,而不是NUnit的-console.exe

與部分解釋困難的解決方法是:

正在發生的事情是NUnit的控制檯亞軍運行在64位模式下,它以某種方式阻止它加載32位模式下的單元測試dll。

修復了對nunit控制檯的exe文件,你告訴windows強制它以32位兼容模式運行。這link告訴你如何做到這一點。

注意,您還需要下載一個windows sdk以獲取corflags.exe,請記住從SDK命令提示符運行該命令。

0

我能得到它的工作的唯一辦法是我的整個應用程序到32位的目標轉化,並對其進行測試的32位虛擬機上。此外,DLL必須位於本地(非網絡)驅動器上,因爲在網絡驅動器上不允許調試(至少我無法使其工作)。

0

Windows有一個64位的命令提示符下,但你可以通過啓動c:\windows\syswow64\cmd.exe明確地得到一個32位的一個。從那裏你可以撥打c:\windows\syswow64\regsvr32.exe,註冊將會成功。