Освобождение исходного кода библиотеки классов без подписи ключевого файла, но для модульных тестов требуется доступ к внутренним классам, что делать?

Ситуация следующая:

  1. Я хочу выпустить полный исходный код в библиотеку классов
  2. Я также хочу выпустить двоичные файлы, подписанные мной, с ключевым файлом, который я не хочу публиковать
  3. Я предоставлю командные файлы и предварительно build stepts, который создает новый файл ключа локально, если он отсутствует, так что любой может быстро начать использовать исходный код
  4. Тестовый проект нуждается в ссылке на внутренний класс в основном проекте
  5. Чтобы получить доступ к внутреннему классу , Мне нужно добавить атрибут [assembly: InternalsVisibleTo ("...")] в файл AssemblyInfo.cs основного проекта
  6. Поскольку я подписываю выходные данные проекта, мне нужно указать Паб Часть этого атрибута licKey
  7. Затем он будет привязан к ключевому файлу, который я не желаю публиковать

Итак, как мне решить эту проблему?

Если я подпишу основной вывод проекта, а не test и укажите только имя сборки в атрибуте InternalsVisibleTo , я получаю эту ошибку времени компиляции:

Ошибка 1 Ссылка на другую сборку «Mercurial.Net.Tests» недействительна. Сборки, подписанные строгим именем, должны указывать открытый ключ в своих объявлениях InternalsVisibleTo. C: \ Dev \ VS.NET \ Mercurial.Net \ Mercurial.Net \ Properties \ AssemblyInfo.cs 22 31 Mercurial.Net

Таким образом, очевидно, что не подписывать выходные данные тестового проекта недостаточно.

Единственный ли у меня вариант - удалить настройки, которые подписывают проекты, и изменить файлы проекта как часть моего сценария сборки двоичных файлов? т.е. найти элемент false в файле проекта и изменить его перед сборкой?

6
задан Lasse V. Karlsen 14 November 2010 в 19:56
поделиться