【问题标题】:Using MSBuild to sign ClickOnce or assembly results in error MSB3321使用 MSBuild 对 ClickOnce 或程序集进行签名会导致错误 MSB3321
【发布时间】:2010-10-27 11:52:56
【问题描述】:

我在 Visual Studio 2008 中设置了我的简单项目以使用 ClickOnce 安装程序。我已指定 ClickOnce 清单应由我们公司的 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 文件,也会发生同样的事情。

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

【问题讨论】:

    标签: .net msbuild clickonce code-signing


    【解决方案1】:

    John Robbins 有一篇关于如何将 SignTool.exe 包裹在 MSBuildCode Signing – It’s Cheaper and Easier than You Thought 中的博文。

    【讨论】:

    • 虽然理论上这可以回答这个问题,it would be preferable 在这里包含答案的基本部分,并提供链接以供参考。
    【解决方案2】:

    您能否将您的证书导入到构建机器上的 Trusted Publisher 存储中? (Internet Explorer > 工具 > 选项 > 内容 > 证书)

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

    【讨论】:

    • 将证书导入我的受信任的发布者商店对我有用。
    • 除此之外,我还必须使用这个 msbuild 属性来指示 msbuild 签署 ClickOnce 应用程序:ManifestCertificateThumbprint ...this helped me
    猜你喜欢
    • 2013-11-07
    • 2012-06-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多