Сборка подписывается со строгим именем до события после сборки. Это означает, что editbin
изменит эту сборку, и подпись больше не будет действительной.
sn.exe -v assembly.exe
вернется Failed to verify assembly -- Strong name validation failed ...
Обходной путь для получения действительной подписанной сборки, которая была изменена с помощью editbin
, заключается в использовании события AfterCompile
и повторной сборке, используя sn
.
Файл проекта должен выглядеть так:
<Target Name="AfterCompile">
<Exec Command="
"$(DevEnvDir)..\..\VC\bin\editbin.exe" /STACK:16777216 "$(ProjectDir)obj\$(ConfigurationName)\$(TargetFileName)"
echo $(FrameworkSDKDir)bin\NETFX 4.5.1 Tools\
"$(FrameworkSDKDir)bin\NETFX 4.5.1 Tools\sn.exe" -Ra "$(ProjectDir)obj\$(ConfigurationName)\$(TargetFileName)" "$(SolutionDir)\STRONGNAME.snk"
" />
</Target>
<PropertyGroup>
<PostBuildEvent>REM "See AfterCompile for stack size and resigning"</PostBuildEvent>
</PropertyGroup>