2009-12-09 3 views
21

Недавно я обновился с Vista/32 до Win7/64. На моей старой машине все работало нормально.NUnit «отсутствует» GPSVC.DLL для Windows 7/64

К сожалению, на моей новой машине NUnit не будет загружать мои модульные тесты с сообщением об ошибке «System.IO.FileNotFoundException: не удалось загрузить файл или сборку« UnitTest »или одну из его зависимостей. указанный файл «. (На самом деле, я должен был пройти через все проекты мое решение и установить их на 32-бит, чтобы получить это далеко.)

Так что я загрузил Dependency Walker, и он сказал мне, что мне не хватает ieshims.dll , Я нашел два на своей машине, поэтому я скопировал 32-битную версию из каталога Internet Explorer, и DW перестала жаловаться на этот файл.

Однако его также нет GPSVC.DLL. Я нашел только одну копию этого файла в C: \ Windows \ System32, но когда я копирую его в свой тестовый каталог, DW жалуется, что он 64-разрядный, а NUnit все еще не запускается. Он также добавляет SYSNTFY.DLL в список недостающих. У меня только один из них, и это тоже 64-бит. NUnit все еще сообщает об ошибке.

Так что я должен отказаться от этой 64-разрядной ОС и вернуться к добрым 32-битным, или я пропущу что-то очевидное?

+2

gpsvc.dll похоже только на 64-разрядную версию. Однако это задержка, поэтому она не должна быть проблемой, поскольку она будет загружаться только в том случае, если она действительно используется. Я не знаю, что происходит в вашем случае, но сосредоточение внимания на gpsvc.dll кажется красной селедкой. – Michael

+0

Я надеялся, что это будет так, однако NUnit все еще отказался загружать мои модульные тесты. BTW, DW также показывает флаги как для IEFRAME.DLL, так и для SHLWAPI.DLL, но они также задерживаются. –

ответ

10

Сегодня я столкнулся с той же проблемой, к счастью, есть очень простое исправление и более сложное.

Простое исправление для запуска NUnit-консоль-x86.exe, вместо NUnit-console.exe

Тяжелое затруднительное с частичным объяснением является:

Что происходит это NUnit консоли бегун работает в 64-битном режиме, что каким-то образом останавливает его от загрузки тестовых DLL-модулей, находящихся в 32-битном режиме.

Исправление выполнено в консоли ex-nunit, вы указываете окна, чтобы заставить ее работать в режиме совместимости 32 бит. Это link показывает, как это сделать.

NB, вам необходимо загрузить Windows sdk, чтобы получить файл corflags.exe, не забудьте запустить команду из командной строки SDK.

0

Единственный способ заставить его работать, это преобразовать все мое приложение в 32-битную цель и протестировать его на 32-разрядной виртуальной машине. Кроме того, библиотеки DLL должны быть на локальном (несетевом) диске, потому что отладка не разрешена на сетевых дисках (по крайней мере, я не смог заставить ее работать).

0

Windows имеет 64-разрядную командную строку, но вы можете получить 32-разрядную версию, запустив c:\windows\syswow64\cmd.exe явно. Оттуда вы можете позвонить c:\windows\syswow64\regsvr32.exe, и регистрация будет успешной.