我想建立一个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标准。