Почему Machine.Specification рекомендует использовать неподписанные двоичные файлы?
На странице github Machine.Specifications я могу загрузить как подписанные, так и неподписанные двоичные файлы, и рекомендуется использовать неподписанные двоичные файлы.
В моем проекте.net все сборки должны быть подписаны ключом. Это внешнее требование.
Также я использую атрибут InternalsVisibleTo, чтобы обеспечить доступ для сборки модульного теста к внутренним членам всех других сборок. Если вы используете атрибут InternalsVisibleTo в подписанной сборке, сборка, которая будет обращаться к внутренним компонентам, также должна быть подписана.
Так что мой сборочный блок должен быть подписан. Это означает, что я не могу использовать неподписанные версии каких-либо платформ модульного тестирования.
Я нашел подписанные версии Machine.Specifications на Nuget, но я также хочу использовать Machine.Fakes в качестве контейнера для автоматической блокировки и не могу найти подписанную версию Machine.Fakes.
Поэтому я не могу использовать Machine.Fakes в моем проекте.
Я просто не могу понять, как я могу следовать "рекомендованному пути" в моем случае? Возможно, мне стоит добавить условную компиляцию основных сборок - неподписанные версии для модульного тестирования и подписанные версии для выпуска?
2 ответа
Я вижу три варианта:
- Как вы упомянули, создайте неподписанную версию вашей сборки для запуска тестов.
- Как уже упоминалось в nikita, подпишите сборку Machine.Fakes вручную, как описано при использовании неподписанных сборок в подписанных.
- Или вы извлекаете источники Machine.Fakes и компилируете и подписываете сборку самостоятельно.
Там нет подписанной версии Machine.Fakes, потому что пока это никому не нужно. Я видел проблему, которую вы подали, но у меня еще не было времени взглянуть на нее. Так что есть еще один вариант: подождите, пока я создам подписанную версию.:-) Однако, я еще не уверен, если и как я буду делать это.
Когда вы используете подписанную версию, вам также нужен подписанный бегун ReSharper. И обе версии должны совпадать.
С неподписанными версиями можно использовать другую версию в ReSharper и вашем проекте, если внутренние API-интерфейсы совместимы.
С моей точки зрения, первое более хлопотно (поддерживает синхронизацию обеих версий), поэтому и рекомендуется. Это также то, что я использую для тестирования и для моей собственной работы.