这对我来说听起来不对。我为多个应用程序使用了完全相同的工作流程,并且效果很好。您的后期构建步骤很可能存在问题。确保您在 OBJ 文件夹中签署 EXE 文件(因为 ClickOnce 从那里获取所有文件) - 而不是 BIN 文件。
执行 ClickOnce 发布,转到 OBJ 文件夹,右键单击您的 application.exe 文件,然后选择属性。它应该有六个选项卡 - 最后一个是“数字签名”:
![在此处输入图像描述](https://i.stack.imgur.com/1i20t.png)
如果你没有它,你就没有正确地签署你的申请。
这是我的后期构建步骤 - 请注意,我仅签署“RELEASE”配置:
<Target Name="SignOutput" AfterTargets="CoreCompile" Condition="'$(ConfigurationName)'=='Release'">
<PropertyGroup>
<TimestampServerUrl>http://timestamp.verisign.com/scripts/timestamp.dll</TimestampServerUrl>
<ApplicationDescription>my app</ApplicationDescription>
<SigningCertificateCriteria>/n "my company."</SigningCertificateCriteria>
</PropertyGroup>
<ItemGroup>
<SignableFiles Include="$(ProjectDir)obj\$(ConfigurationName)\$(TargetName)$(TargetExt)" />
</ItemGroup>
<Exec Condition=" '$(ConfigurationName)'=='Release'" Command=""c:\Program Files (x86)\Windows Kits\8.0\bin\x64\signtool.exe" sign $(SigningCertificateCriteria) /d "$(ApplicationDescription)" /t "$(TimestampServerUrl)" "%(SignableFiles.Identity)"" />
</Target>