Создать подписанную копию моей сборки на лету

Мне нужно сделать подписанную копию моей сборки на лету.

Я попытался сделать это, добавив этот скрипт в событие после сборки:

call "$(DevEnvDir)..\Tools\vsvars32.bat"
ildasm /all /out=MyAssemblySignedVersion.il $(TargetFileName)
ilasm /dll /key=MyAssembly.snk MyAssemblySignedVersion.il

Однако, когда я ссылаюсь на подписанную сборку, я получаю исключение времени выполнения «Не удалось загрузить файл или сборку MyAssembly, версия = 1.2.5511.31417, культура = нейтральная, PublicKeyToken = b025765091e877ec» или одна из ее зависимостей. Система не может найти файл указано."

Я пытался использовать рефлектор для создания проекта из MyAssemblySignedVersion.dll, и он не компилируется, потому что некоторые пространства имен отсутствуют, возможно, в результате повторной сборки дизассемблированной dll. Может ли это быть связано?

Как я могу заставить это работать? Заранее большое спасибо.


person Shani    schedule 02.02.2015    source источник


Ответы (1)


Я нашел способ сделать подписанную копию моей сборки: я создал новую конфигурацию решения: «ReleaseSigned», а в событии после сборки я поместил этот скрипт:

if $(ConfigurationName) == Debug (
     echo "Building in DEBUG. Skipping signing..."
) else if $(ConfigurationName) == ReleaseSigned (
call "$(DevEnvDir)..\Tools\vsvars32.bat"
     msbuild.exe "$(ProjectPath)" /property:Configuration=Release
)

Вслед за изменениями в этом сообщении: тот же проект, другая конфигурация знака решения

person Shani    schedule 03.02.2015