Создать подписанную копию моей сборки на лету
Мне нужно сделать подписанную копию моей сборки на лету.
Я попытался сделать это, добавив этот скрипт в событие после сборки:
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
)
Вслед за этим пост изменений: один и тот же проект отличается конфигурацией знака решения