我的ClickOnce安装失败了,并出现以下错误:
文件WindowsFormsProject.exe在清单中指定的哈希值与计算哈希值不同。
我使用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: 成功签名:...\WindowsFormsProject.exe 因此,问题是:
1. 有没有办法在 <MSBuild> 任务期间生成清单之前签署程序集? 2. 是否有办法在构建完成后重新生成清单(仅限清单),以使哈希码再次匹配?
如果你有其他解决方案,请告诉我。
Postbuild
解释为Target
,这是不正确的。'Target' 应该在项目级别上。 - Al Lelopath