使用已签名的ClickOnce部署清单构建VS2012项目时遇到问题。用于签署项目的.pfx证书使用付费密钥进行密码保护。我正在使用Jenkins和MSBuild插件。
BUILD FAILED
之后出现的错误是:
C:\ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ Microsoft.Common.targets(2455,5):错误MSB3325:无法导入以下密钥文件:xxxx.pfx。密钥文件可能受密码保护。要更正此问题,请尝试再次导入证书,或使用以下密钥容器名称手动将证书安装到强名称CSP:VS_KEY_11234A3322194 [C:\ Program Files(x86)\ Jenkins \ jobs \ xxxx \ workspace \ xxxx \ xxxx。的csproj]
我已尝试在我的本地计算机上安装证书作为受信任的根证书(使用certlm.msc
),并尝试将其安装到sn.exe
提到的特定容器中,但这没有任何区别。我已确保Jenkins服务作为特定用户而非本地系统帐户运行。
如果我在VS2012中打开项目,我可以构建它,但只有在项目属性的“签名”选项卡下选择了证书并输入密码后才能构建它。即使.csproj设置为使用该特定文件来签署ClickOnce清单。
我可以作为管理员用户从命令行使用MSBuild成功构建项目,但是当Jenkins运行构建时它会失败。我也尝试将证书作为/property:AssemblyOriginatorKeyFile
参数传递给Jenkins的MSBuild。
关于可能导致这种情况的任何想法?
答案 0 :(得分:2)
我不知道“Jenkins”是什么,但我知道有关证书和ClickOnce的信息。证书必须安装在正在进行构建的用户帐户下。尝试导入它并使用默认值,将其导入用户存储,而不是将其导入受信任的发布者或其中一个较旧的文件夹。通过运行certmgr.msc导入后可以看到它。
我们在TFS服务器上进行自动构建时遇到了这种情况。每年,我们都必须登录执行构建的帐户并导入新的签名证书。