使用MSBuild对ClickOnce或程序集进行签名导致错误MSB3321

时间:2009-05-19 23:11:31

标签: .net msbuild clickonce code-signing

我在Visual Studio 2008中设置了我的简单项目以使用ClickOnce安装程序。我已经指定ClickOnce清单应该由我们的comapny的PFX文件签名。当我在Visual Studio中设置它时,它要求输入PFX文件的密码,我很乐意提供。当我在Visual Studio中构建和发布时,一切正常。它也可以在我的机器上MSBuild上正常构建。

但是,当我尝试在我们的构建计算机上使用MSBuild构建它时,我收到以下错误:

ERROR MSB3321 in 
    C:\WINDOWS\Microsoft.NET\Framework\v3.5\Microsoft.Common.targets(1805,7)
    : Importing key file "ourCertificate.pfx" was canceled (sic).

经过一番搜索,我发现了一些信息,说这是因为我没有提供密码。但我找不到在构建机器上提供密码的方法。我也看到了安装Visual Studio的建议,并在Visual Studio中提供了一次密码,之后它将在MSBuild中运行。但我真的想避免在构建机器上安装Visual Studio。

我尝试双击PFX文件导入它并在询问时输入密码,但这没有帮助。

如果我在Visual Studio中选中“签署程序集”并提供相同的PFX文件,也会发生同样的事情。

如何解决此问题?是否有手动方式在构建机器上存储密码?

2 个答案:

答案 0 :(得分:6)

您可以将证书导入构建计算机上的Trusted Publisher存储区吗? (Internet Explorer>工具>选项>内容>证书)

我不使用MSBuild来创建部署;我用法师。但是,我使用.pfx文件将我们的证书导入我的Trusted Publisher商店。为此,我必须输入密码。完成之后,当我在Mage中保存清单时,我不再需要提供密码。我只需从我的商店中选择证书即可。

答案 1 :(得分:-1)

约翰罗宾斯有一篇关于如何将SignTool.exe包裹在MSBuild Code Signing – It’s Cheaper and Easier than You Thought 中的博文。