temp.pfx
。我可以成功地在我的工作站上从Visual Studio构建和部署该项目。但是,在服务器上运行MSBuild时,我收到以下错误消息:"C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Microsoft.Common.targets(1970,9):错误 MSB3326: 无法导入以下密钥文件:。该密钥文件可能受到密码保护。要纠正此问题,请尝试重新导入证书或将证书手动导入当前用户的个人证书存储区。[C:.hudson\jobs[...].csproj]" "C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Microsoft.Common.targets(1970,9):错误 MSB3321: 取消导入密钥文件“temp.pfx”。[C:.hudson\jobs[...].csproj]" "
我尝试了所有以下的问题和答案,但没有成功:
"Stack Overflow问题无法导入密钥文件'blah.pfx'-错误'密钥文件可能受到密码保护'
=> 在我的情况下,错误消息没有指示证书存储的名称,而是说“当前用户的个人证书存储”。
=> 即使尝试使用“Personal”作为容器名称执行接受的答案(
sn -i temp.pfx personal
),它仍然无法解析密钥:在ALiS_TemporaryKey.pfx中未能解析PKCS#12 blob--发生了内部错误。
Stack Overflow问题使用MSBuild签名ClickOnce或程序集会导致错误MSB3321
=> 我尝试了接受的答案,但无法导入密钥文件,因为 "要么用户配置文件不可访问,要么您导入的私钥可能需要在系统上未安装的加密服务提供程序"
=> 如果我尝试通过在Windows资源管理器中双击该文件来导入该文件,同样的事情也会发生(RobinDotNet的建议)
Stack Overflow问题使用PFX文件在MSBuild,Team Build和TFS中签名程序集
=> 该问题的OP也未能成功使用上述两个答案,但不幸的是,他得到的答案也无法帮助我:
以在构建机器上运行MSBuild的用户身份登录,手动调用MSBuild,然后在提示时输入密码。
=> 我登录并运行了
msbuild myproject.sln
,但它甚至不会提示我输入密码。最终为我解决问题的是将TFS Build服务运行的帐户设置为本地计算机的管理员。
=> 运行Hudson(更确切地说: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 Professional,而服务器是Windows Server 2008 R2 Standard。