La mia installazione ClickOnce ha esito negativo con un errore:"File ha un diverso hash calcolato quanto specificato nel manifesto" l'errore al momento della firma il file EXE
File, WindowsFormsProject.exe, has a different computed hash than specified in manifest.
Io uso MSBuild per generare pacchetto di distribuzione ClickOnce. La linea in questione dal script di build:
<MSBuild Targets="Publish"
Projects="WindowsFormsProject.csproj"
ContinueOnError="false" />
Il WindowsFormsProject.csproj ha un post-generazione passo che firma l'eseguibile, come segue:
signtool sign /a $(ProjectDir)\obj\$(PlatformName)\$(ConfigurationName)\$(TargetFileName)
Il problema è che quando guardo la build log Vedo che il manifest è generato PRIMA che l'evento Post-Build venga eseguito. Quindi non sorprende che i codici hash non corrispondano. Le linee interessate dal log di compilazione:
_CopyManifestFiles:
WindowsFormsProject -> ...\WindowsFormsProject.application
...
PostBuildEvent:
Successfully signed: ...\WindowsFormsProject.exe
Quindi, le domande sono:
- Esiste un modo per firmare l'assembly PRIMA manifesto viene generato durante la MSBuild > compito <?
- C'è un modo per rigenerare il manifest (e manifest solo) dopo che la compilazione è completa in modo che i codici hash corrispondano di nuovo?
Oppure, se riesci a pensare a una soluzione diversa al problema, apprezzerei le tue idee.
Nel caso qualcuno faccia lo stesso errore che ho fatto ... Ho interpretato questa risposta 'Postbuild' con' Target'. Questo non è corretto 'Target' dovrebbe essere a livello di progetto. –