Ситуация следующая:
- Я хочу выпустить полный исходный код для библиотеки классов
- Я также хочу выпустить двоичные файлы, подписанные мной, с ключомфайл, который я не хочу публиковать
- Я предоставлю пакетные файлы и этапы предварительной сборки, которые создадут новый файл ключа локально, если его нет, чтобы любой мог быстро начать использовать исходный код
- Тестовый проект нуждается в ссылке на внутренний класс в основном проекте
- Чтобы получить доступ к внутреннему классу, мне нужно добавить атрибут
[assembly: InternalsVisibleTo("...")]
в основной файл AssemblyInfo.cs проекта - Поскольку я подписываю выходные данные проекта, мне нужно указать часть PublicKey этого атрибута
- Затем он будет привязан к файлу ключа, который я не хочу публиковать
Итак, как мне решить эту проблему?
Если я подпишу основной вывод проекта, а не тестовую библиотеку и укажу только имя сборки в атрибуте InternalsVisibleTo
, я получу этотошибка времени:
Ошибка 1 Недопустимая ссылка на сборку друга 'Mercurial.Net.Tests'.Сборки со строгим именем должны указывать открытый ключ в своих объявлениях InternalsVisibleTo.C: \ Dev \ VS.NET \ Mercurial.Net \ Mercurial.Net \ Properties \ AssemblyInfo.cs 22 31 Mercurial.Net
Так что, очевидно, недостаточно подписать выходные данные тестового проекта.
Является ли мой единственный способ удалить параметры, которые подписывают проекты, и изменить файлы проектов как часть моего сценария сборки двоичных файлов?то есть.Выследить элемент <SignAssembly>false</SignAssembly>
файла проекта и изменить его перед сборкой?