使用临时密钥的MSBuild不能签署的ClickOnce清单(错误MSB3326和MSB3321)(

2019-07-30 02:31发布

我想建立一个ClickOnce Windows窗体在Windows Server计算机上的项目(.NET 3.5 / Visual Studio 2010中)。 (在努力实现自动化构建过程哈德森 CI )。

对于签署的ClickOnce清单我创造了在Visual Studio中,临时密钥temp.pfx 。 我可以成功地构建和我的工作站上部署从Visual Studio项目。 但是,当运行MSBuild的服务器上,我得到以下错误信息:

C:\ WINDOWS \ Microsoft.NET \ Framework64 \ v4.0.30319 \ Microsoft.Common.targets(1970,9):错误MSB3326:无法导入以下密钥文件: 密钥文件可能受密码保护。 为了解决这个问题,尝试手动重新导入证书或证书导入当前用户的个人证书存储区。 [C:.hudson \职位[...]的csproj]

C:\ WINDOWS \ Microsoft.NET \ Framework64 \ v4.0.30319 \ Microsoft.Common.targets(1970,9):错误MSB3321:导入密钥文件 “temp.pfx” 被取消。 [C:.hudson \职位[...]的csproj]

我尝试了所有的以下问题及答案没有运气:

  • 堆栈溢出问题无法导入密钥文件“blah.pfx” -错误“密钥文件可以被密码保护”

    =>在我的情况下,错误消息并不表示证书存储的名称,但表示,“当前用户的个人证书存储区”来代替。

    =>甚至还试图以“个人”接受的答案,当作为容器名称( sn -i temp.pfx personal ),它无法解析的关键:

    解析失败在ALiS_TemporaryKey.pfx的PKCS#12团块 - 内部错误Òccurred。

  • 堆栈溢出问题, 使用的MSBuild登录错误MSB3321的ClickOnce或组装结果

    =>我试图接受的答案,但关键文件无法导入,因为“无论是用户配置文件无法访问或您要导入可能需要未在系统上安装加密服务提供程序的私钥”

    =>同样的情况,如果我尝试通过双击它在Windows资源管理器(RobinDotNet的建议)要导入的文件

  • 堆栈溢出问题与MSBuild的PFX文件,团队建设和TFS签名组件

    =>这个问题的任择议定书是不成功的上述两个答案,太多,但不幸的是,即使没有,他得到的答案会帮我:

    登录为运行的MSBuild构建机上的用户,手动调用的MSBuild,然后在密码提示时输入。

    =>我登录并运行msbuild myproject.sln但它甚至不提示我输入密码。

    什么最终确定它为我做了这下TFS生成服务的帐户运行在本地计算机上的管理员。

    =>运行哈德森(更准确地说是帐户的Tomcat )已经本地管理员。 我试图从一个“以管理员身份运行”命令行中运行,甚至和的MSBuild会得到相同的错误消息仍。


更新:我试图打开同一台服务器上在Visual Studio中的解决方案,并建立它。 我犯了同样的错误。 当我尝试重新导入PFX文件在项目属性选项卡上签名,它告诉我:‘密码无效’。 如果我尝试导入非常相同的文件在Visual Studio我的工作站上非常相同的解决方案,为他们提供相同的密码,它被接受。

更新2:如果我参加,我曾与Visual Studio 2008,它可以成功地在我们的服务器的证书存储进口产生的旧的临时密钥; 我刚与Visual Studio 2010创建的任何临时密钥无法导入。

更新3:我能在服务器上创建在Visual Studio中新的“临时密钥”,并用它在服务器上,以及我的工作站签署的ClickOnce清单上。 我不仅不能弥补它一个合理的解释 - 无论电脑是64位,和我使用Visual Studio 2010的两个。 两者都安装了V3.5和V4(4.0.30319).NET框架。 我的工作站是Windows 7专业版和服务器是Windows Server 2008的 R2标准。

Answer 1:

在复制PFX文件到你正在做的机器基础上。 上双击它,然后在机器上的证书管理器进行安装。 请确保您登录到用来做这些版本的帐户。

其他建议/问题:你有没有在机器上安装的.NET版本是正确的? 你有权限写入该机器上的证书存储?

如果您打开Visual Studio项目,进入项目属性,尝试创建一个新的证书,它的工作原理? 它应该创建一个PFX文件,并将其添加到项目中。 你可以看到它的证书存储(菜单开始/ certmgr.msc)?



Answer 2:

我发现,如果你创建一个temporary.pfx文件,并保留密码为空,则它会正常工作在构建机上。 我不知道,你可以把它空,第一次失败了,作为OP。 创建了第二个temp.pfx没有密码,并将其建在生成服务器上我。



Answer 3:

我有完全一样的问题。 并通过构建机器上安装Windows SDK 7.1 .NET 4.0固定它。 PS起初,我们已经安装了SDK 8.0A,并构建了工作,除了唱歌很好。 看来,7.1系统更新了一些组件,因此PFX开始工作。



Answer 4:

我有同样的问题,TFS机器上无法导入。 原来我不得不将其导出开发机器上(项目属性,签约页面,点击详细信息)更详细地 - >选项卡详细信息,然后只用密码出口。 副本导出的文件,TFS,并使用相同的密码:DONE



文章来源: MSBuild cannot sign a ClickOnce manifest using a temporary key (errors MSB3326 and MSB3321)