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

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

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

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

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

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

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

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
)

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

Другие вопросы по тегам