MSBuild 或 Bamboo 对 clickonce 应用程序进行签名时出错

本文关键字:出错 应用程序 Bamboo clickonce MSBuild | 更新日期: 2023-09-27 18:37:14

我有一个 ClickOnce 应用程序,我使用从窗口存储的证书对清单(而不是程序集)进行签名。在我的本地机器上的视觉工作室中,一切都构建/发布得很好。我有另一台用于Bamboo集成测试的计算机,但它无法正常工作。它在发布任务期间给出此错误:

错误 MSB4044:"SignFile"任务未获得 必需参数"证书指纹"。

我已经做了研究,我看到的所有帖子都说证书需要安装在正在构建它的机器上。我已经这样做了。事实上,在同一台机器上,我运行了一个可视化工作室构建/发布并且它工作了,所以显然已经安装了证书。

另一个问题是我尝试使用证书文件引用而不是存储,这导致了其他问题。这样,在msbuild期间会出现一个错误,指出即使我关闭了程序集签名,也无法导入用于对程序集进行签名的证书:

错误 MSB3326:无法导入以下密钥文件:虚拟密钥.snk。密钥文件可能受密码保护。若要更正此问题,请尝试再次导入证书或手动将证书导入当前用户的个人证书存储中。

此文件没有密码,它已被禁用,所以我不知道出了什么问题。任何帮助都会很棒

MSBuild 或 Bamboo 对 clickonce 应用程序进行签名时出错

代码签名证书将安装到个人存储中。在生成计算机上 – 是否为生成服务帐户安装?请注意,对程序集进行强名称签名与验证码签名清单无关。

我只是花了一些时间在 ClickOnce 清单上签名,并最终让它工作。以下是我的发现的详细信息,以防它们帮助某人。

  1. 生成 PFX 文件时 – 您需要指定密码。

  2. 当 PFX 受密码保护时,MSBuild 将无法自动安装证书:

    2618:无法导入以下密钥文件

  3. 即使您没有自动安装,CSPROJ 文件仍然必须指定<ManifestKeyFile>(不仅仅是 <ManifestCertificateThumbprint> ) – 否则 MSBuild 不会调用正确签名文件任务:

    4677:未为"签名文件"任务提供所需参数"证书指纹"的值

  4. 可以通过调用证书进行安装和签名MicrosoftSDKs''Windows''v7.0A''bin''signtool.exe在命令中 - 但随后你的CSPROJ 具有明文形式的密码。

  5. 项目>属性>签名>从文件选择似乎是最佳路线。但是这些步骤必须手动执行每个帐户,以便您可以输入步骤 1 中的密码并获取证书进入个人存储。

  6. 验证魔力的最简单方法:下载ClickOnce下降,右键单击"设置".exe>"属性">"数字签名">证书