Ошибка «Файл имеет вычисленный хэш, отличный от указанного в манифесте» при подписании EXE
Моя установка ClickOnce завершается с ошибкой:
File, WindowsFormsProject.exe, has a different computed hash than specified in manifest.
Я использую MSBuild для создания пакета развертывания ClickOnce. Соответствующая строка из скрипта сборки:
<MSBuild Targets="Publish"
Projects="WindowsFormsProject.csproj"
ContinueOnError="false" />
WindowsFormsProject.csproj имеет шаг после сборки, который подписывает исполняемый файл следующим образом:
signtool sign /a $(ProjectDir)\obj\$(PlatformName)\$(ConfigurationName)\$(TargetFileName)
Проблема в том, что когда я просматриваю журнал сборки, я вижу, что манифест генерируется ДО выполнения события Post-Build. Поэтому неудивительно, что хеш-коды не совпадают. Соответствующие строки из журнала сборки:
_CopyManifestFiles:
WindowsFormsProject -> ...\WindowsFormsProject.application
...
PostBuildEvent:
Successfully signed: ...\WindowsFormsProject.exe
Итак, вопросы:
Is there a way to sign the assembly BEFORE the manifest is generated during the <MSBuild> task? Is there a way to re-generate the manifest (and manifest only) after the build is complete so that hash codes match again?Или, если вы можете придумать другое решение проблемы, я буду признателен за ваши идеи.