Подтвердить что ты не робот

NUnit "отсутствует" GPSVC.DLL для Windows 7/64

Недавно я обновился с Vista/32 до Win7/64. На моей старой машине все работало нормально.

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

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

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

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

4b9b3361

Ответ 1

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

Простым решением является запуск nunit-console-x86.exe вместо nunit-console.exe

Сложное исправление с частичным объяснением:

Что происходит, так это бегун для консоли nunit работает в режиме 64 бит, что как-то мешает ему загружать ваши dll unit test, которые находятся в режиме 32 бит.

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

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

Ответ 2

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

Ответ 3

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