Błąd „Plik ma inną obliczoną wartość skrótu niż określona w manifeście” podczas podpisywania EXE

Moja instalacja ClickOnce kończy się niepowodzeniem z błędem:

Plik WindowsFormsProject.exe ma inną obliczoną wartość skrótu niż określona w manifeście.

Używam MSBuild do generowania pakietu wdrażania ClickOnce. Odpowiednia linia ze skryptu kompilacji:

<MSBuild Targets="Publish"
         Projects="WindowsFormsProject.csproj"
         ContinueOnError="false" />

WindowsFormsProject.csproj ma krok po zbudowaniu, który podpisuje plik wykonywalny w następujący sposób:

signtool sign /a $(ProjectDir)\obj\$(PlatformName)\$(ConfigurationName)\$(TargetFileName)

Problem polega na tym, że gdy patrzę na dziennik kompilacji, widzę, że manifest jest generowany PRZED wykonaniem zdarzenia Post-Build. Nic więc dziwnego, że kody skrótu nie pasują do siebie. Odpowiednie linie z dziennika budowy:

_CopyManifestFiles:

WindowsFormsProject -> ... WindowsFormsProject.application

...

PostBuildEvent:

Pomyślnie podpisano: ... WindowsFormsProject.exe

Tak więc pytania są następujące:

Czy istnieje sposób na podpisanie złożenia PRZED wygenerowaniem manifestu podczas zadania <MSBuild>?Czy istnieje sposób na ponowne wygenerowanie manifestu (i tylko manifest) po zakończeniu kompilacji, tak aby kody skrótu były zgodne?

Lub, jeśli myślisz o innym rozwiązaniu problemu, doceniłbym Twoje pomysły.

questionAnswers(3)

yourAnswerToTheQuestion