"Arquivo tem um hash computado diferente do especificado no manifesto" erro ao assinar o EXE
Minha instalação do ClickOnce falha com um erro:
Arquivo, WindowsFormsProject.exe, tem um hash calculado diferente do especificado no manifesto.
Eu uso o MSBuild para gerar o pacote de implantação do ClickOnce. A linha relevante do script de construção:
<MSBuild Targets="Publish"
Projects="WindowsFormsProject.csproj"
ContinueOnError="false" />
O WindowsFormsProject.csproj tem uma etapa de pós-compilação que assina o executável, da seguinte maneira:
signtool sign /a $(ProjectDir)\obj\$(PlatformName)\$(ConfigurationName)\$(TargetFileName)
O problema é que, quando olho para o log de compilação, vejo que o manifesto é gerado ANTES de o evento Post-Build ser executado. Portanto, não é surpreendente que os códigos hash não correspondam. As linhas relevantes do log de construção:
_CopyManifestFiles:
WindowsFormsProject -> ... \ WindowsFormsProject.application
...
PostBuildEvent:
Assinado com sucesso: ... \ WindowsFormsProject.exe
Então, as perguntas são:
Existe uma maneira de assinar o assembly antes que o manifesto seja gerado durante a tarefa <MSBuild>?Existe uma maneira de gerar novamente o manifesto (e somente manifesto) após a compilação ser concluída para que os códigos de hash correspondam novamente?Ou, se você puder pensar em uma solução diferente para o problema, agradeço suas ideias.