В моем решении 2 проекта:
- Сборка (базовая библиотека)
- Тестовая сборка (NUnit)
Я объявил тестовую сборку как сборку друзей в первом проекте:
[assembly: InternalsVisibleTo ("Company.Product.Tests")]
Все работало нормально, пока я не понял, что забыл настроить решение для подписи моих сборок. Итак, создал файл snk и настроил проект Visual Studio для подписи первой сборки (базовая библиотека). Теперь, когда я компилирую первый проект, я получаю следующую ошибку:
Ссылка на сборку друга "Company.Product.Tests" недействительна. Сборки, подписанные строгим именем, должны указывать открытый ключ в своих объявлениях InternalsVisibleTo.
Я попытался извлечь открытый ключ из своего файла snk с помощью утилиты sn, но она генерирует зашитый двоичный файл, который я не знаю, как использовать. Как я могу решить проблему?
AssemblyInfo.cs
. С тех пор было установлено, что правильное имя для использования - это «имя сборки» из диалогового окна «Свойства / приложение» проекта (которое снова отличается от имени проекта в обозревателе решений Visual Studio).Вы можете напрямую получить publicKey из интересующей вас сборки без каких-либо дополнительных действий с помощью sn.exe.
источник
Я думаю, вам нужно ввести строгое имя, которое будет примерно таким: «Company.Product.Tests, Version = 1.0.0.0, Culture = нейтральный, PublicKeyToken = 17135d9fcba0119f». Я предполагаю, что Company.Product.Tests - это ваше имя сборки, а 17135d9fcba0119f - это открытый ключ.
Другой способ решить эту проблему - не использовать отдельные сборки. Обычно я помещаю исходный код и код тестирования в одну сборку. Я не знаю, есть ли у вас какие-то особые опасения, что вы должны их разделить.
источник