NUnit “missing” GPSVC.DLL on Windows 7/64

陌路散爱 提交于 2019-12-12 07:10:04

问题


I recently upgraded from Vista/32 to Win7/64. On my old machine, everything was working fine.

Unfortunately, on my new machine NUnit won't load my unit tests, with the error message "System.IO.FileNotFoundException: Could not load file or assembly 'UnitTest' or one of its dependencies. The system cannot find the file specified". (Actually, I had to go through all of my solution's projects and set them to 32-bit to get this far.)

So I loaded up Dependency Walker, and it told me that I was missing IESHIMS.DLL. I found two on my machine, so I copied in the 32-bit version from the Internet Explorer directory, and DW stopped complaining about that file.

However, it's also missing GPSVC.DLL. I found only one copy of this in C:\Windows\System32, but when I copy that into my unit test directory, DW complains that it's 64-bit, and NUnit still won't run. It also now adds SYSNTFY.DLL to the missing list. I've only got one of those, and that's also 64-bit. NUnit still reports an error.

So should I scrap this 64-bit OS and go back to good-old 32-bit, or am I missing something obvious?


回答1:


I hit the same problem today, luckily there is a very simple fix and a more complex one.

The simple fix is to run nunit-console-x86.exe, instead of nunit-console.exe

The difficult fix with a partial explanation is:

What is happening is the nunit console runner is running in 64bit mode, which somehow stops it from loading your unit test dlls which are in 32 bit mode.

The fix is made to the nunit console exe, you tell windows to force it to run in a 32 bit compatibility mode. This link shows you how to do it.

NB, you will need to download a windows sdk as well to get the corflags.exe, remember to run the command from the SDK command prompt.




回答2:


The only way I could get it to work was to convert my entire application to 32-bit target, and test it on a 32-bit virtual machine. Also, the DLLs had to be on a local (non-network) drive, because debugging is not permitted on network drives (at least I wasn't able to get it to work).




回答3:


Windows has a 64-bit command prompt, but you can get a 32-bit one by starting c:\windows\syswow64\cmd.exe explicitly. From there you can call c:\windows\syswow64\regsvr32.exe and the registration will succeed.



来源:https://stackoverflow.com/questions/1877098/nunit-missing-gpsvc-dll-on-windows-7-64

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!