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-битным, или мне не хватает чего-то очевидного?
Ответы
Ответ 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
, и регистрация будет успешной.