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.