在MSBuild,Team Build和TFS中使用PFX文件对程序集进行签名

Mik*_*keG 20 msbuild code-signing tfsbuild

尝试使用TFS 2010 上的Team Build(MSBuild)构建项目时出现此错误:


C:\ Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.targets(1970):
无法导入以下密钥文件:CCC.pfx.
密钥文件可能受密码保护.

要更正此问题,请尝试再次导入证书,或使用以下密钥容器名称手动将证书安装到强名称CSP:VS_KEY_C00C673BBB353901

C:\ Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.targets(1970):
导入密钥文件"CCC.pfx"已取消.


它在Visual Studio 2010中构建正常.程序集使用PFX文件进行签名.通常在Visual Studio中,我们会在第一次构建时提示输入密码,但之后再也不会...

我试过跑:

sn -i companyname.pfx VS_KEY_3E185446540E7F7A 
Run Code Online (Sandbox Code Playgroud)

正如Stack Overflow问题中建议的其他回复无法导入密钥文件'blah.pfx' - 错误'密钥文件可能受密码保护'.我已尝试按Stack Overflow问题中的建议导入个人证书存储区使用MSBuild对ClickOnce或程序集结果进行错误MSB3321签名.但一切都无济于事,仍然是同样的错误.

我该怎么做?我是否必须以某种方式将证书添加到构建服务运行的Windows帐户或类似的东西?

或者,如何在Team Build中完成构建而不使用签名?我只是想检查它编译并运行单元测试.我不需要签名.

hea*_*vyd 9

您需要根据具体情况调整此答案.就像是:

sn -i companyname.pfx VS_KEY_C00C673BBB353901
Run Code Online (Sandbox Code Playgroud)

  • 从我原来的帖子中可以看出,我已经尝试过这个并没有成功 (4认同)

gre*_*mac 8

我所做的不是那么优雅,而是有效:以在构建机器上运行msbuild的用户身份登录,手动调用msbuild,然后在提示时输入密码.它现在将保存在该用户的证书存储中,现在构建可以无人值守运行.

  • FWIW,大约2年后,仍然使用相同的构建服务器映像,甚至从未想过这个. (2认同)
  • 你能描述一下如何运行msbuild吗?我从TFS构建日志中获取了命令并删除了/ noconsolelogger开关并在控制台中运行它.当我运行它时,我从未被提示输入密码,它只是失败并显示相同的错误消息. (2认同)

Mik*_*keG 5

最终为我修复的是制作TFS Build服务在本地计算机上运行管理员的帐户.

不知道我之前尝试过的其他任何东西是否也需要完成以使其正常工作.但在它成为管理员之前,它在成为管理员后才起作用.