#.net #nunit
#.net #nunit
Вопрос:
У нас есть проект, в котором все сборки подписаны с задержкой. Машины разработки настроены на пропуск проверки с помощью sn.exe
инструмента :
sn.exe -Vr *,PUBLIC_KEY_TOKEN_HERE
Если мы протестируем эти сборки с использованием nunit (версия с графическим интерфейсом), тест не сработает (все тесты завершены неудачей) из-за задержки подписи. Но если эти сборки подписаны повторно, тест работает. Мы все знаем, что для повторной подписи сборки нам нужен закрытый файл пары открытых ключей (например, mycompany.snk). Мы не считаем хорошей практикой раздавать файл mycompany.snk всем разработчикам.
Есть ли какое-либо решение, позволяющее каждому разработчику проводить модульное тестирование своих сборок без повторного выхода из системы или без использования файла mycompany.snk?
Комментарии:
1. Проблема только в графическом интерфейсе запуска? Не работает ли CLI runner? Я спрашиваю, потому что я делаю то же самое (с задержкой подписи) для всех своих сборок, используя sn.exe чтобы пропустить проверку, и может отлично запускать тесты NUnit с помощью CLI runner. Я держусь подальше от графического интерфейса, поэтому не знаю, есть ли у меня такая же проблема или нет. Можете попробовать, если хотите.
2. Я тестирую только в GUI runner. Судя по вашему комментарию, проблема, похоже, существует только в GUI runner.
Ответ №1:
Вы случайно не разрабатываете 64-разрядную версию Windows? Некоторое время назад у нас была похожая проблема, когда мы подписывали сборки с задержкой, но они неправильно загружались во время модульного тестирования. Проблема оказалась в том, что мы разрабатывали на 64-разрядной Windows. Оказывается, что существует два sn.exe программы, одна для 32-разрядной и одна для 64-разрядной. (64-разрядная версия расположена в каталоге «x64» под каталогом bin для 32-разрядного исполняемого файла в Windows SDK — извините, в данный момент я не на компьютере для разработки, поэтому я не могу указать вам точный путь из памяти). Что мы делаем, так это используем команду «sn -Vr», используя 32-разрядную версию, а затем запускаем ту же команду, используя 64-разрядную версию, и все работает.