Ale*_*lex 6 c# msbuild clickonce msbuild-task
我的ClickOnce安装失败并显示错误:
File,WindowsFormsProject.exe具有与manifest中指定的不同的计算哈希值.
我使用MSBuild生成ClickOnce部署包.构建脚本中的相关行:
<MSBuild Targets="Publish"
Projects="WindowsFormsProject.csproj"
ContinueOnError="false" />
Run Code Online (Sandbox Code Playgroud)
WindowsFormsProject.csproj具有签署可执行文件的Post-Build步骤,如下所示:
signtool sign /a $(ProjectDir)\obj\$(PlatformName)\$(ConfigurationName)\$(TargetFileName)
Run Code Online (Sandbox Code Playgroud)
麻烦的是,当我查看构建日志时,我发现清单是在Post-Build事件执行之前生成的.因此哈希码不匹配就不足为奇了.构建日志中的相关行:
_CopyManifestFiles:
WindowsFormsProject - > ...\WindowsFormsProject.application
...
PostBuildEvent:
成功签名:...\WindowsFormsProject.exe
所以,问题是:
或者,如果你能想到问题的不同解决方案,我会很感激你的想法.
如果您使用的是MSBuild 4,则可以使用AfterTargets属性在创建后立即对程序集进行签名,然后再执行任何进一步的步骤.删除构建后的步骤,并将此块添加到项目中:
<Target Name="SignOutput" AfterTargets ="CoreCompile">
<PropertyGroup>
<TimestampServerUrl>http://timestamp.verisign.com/scripts/timstamp.dll</TimestampServerUrl>
<ApplicationDescription>Foo bar</ApplicationDescription>
<SigningCertificateCriteria>/sha1 578a9486f10ed1118f2b5f428afb842e3f374793</SigningCertificateCriteria>
</PropertyGroup>
<ItemGroup>
<SignableFiles Include="$(ProjectDir)obj\$(PlatformName)\$(ConfigurationName)\$(TargetName)$(TargetExt)" />
</ItemGroup>
<GetFrameworkSdkPath>
<Output
TaskParameter="Path"
PropertyName="SdkPath" />
</GetFrameworkSdkPath>
<Exec Command=""$(SdkPath)bin\signtool" sign $(SigningCertificateCriteria) /d "$(ApplicationDescription)" /t "$(TimestampServerUrl)" "%(SignableFiles.Identity)"" />
</Target>
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
7339 次 |
最近记录: |