我正在尝试构建 ClickOnceWindows 窗体 http://en.wikipedia.org/wiki/Windows_FormsWindows Server 计算机上的项目 (.NET 3.5 / Visual Studio 2010)。(为了使构建过程自动化Hudson http://en.wikipedia.org/wiki/Hudson_%28software%29 CI http://en.wikipedia.org/wiki/Continuous_integration.)
为了签署 ClickOnce 清单,我在 Visual Studio 中创建了一个临时密钥,temp.pfx
。我可以在我的工作站上从 Visual Studio 成功构建和部署项目。但跑步时MSBuild http://en.wikipedia.org/wiki/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]
我尝试了以下所有问题和答案,但没有运气:
-
堆栈溢出问题无法导入密钥文件“blah.pfx”-错误“密钥文件可能受密码保护” https://stackoverflow.com/questions/2815366
=> 就我而言,错误消息并不指示证书存储的名称,而是显示“当前用户的个人证书存储”。
=> 即使在尝试使用“个人”作为容器名称的接受答案时(sn -i temp.pfx personal
),它无法解析密钥:
无法解析 ALiS_TemporaryKey.pfx 中的 PKCS#12 blob — 内部错误
发生了。
-
堆栈溢出问题使用 MSBuild 签署 ClickOnce 或程序集会导致错误 MSB3321 https://stackoverflow.com/questions/885484
=> 我尝试了接受的答案,但无法导入密钥文件,因为“用户配置文件无法访问,或者您正在导入的私钥可能需要系统上未安装的加密服务提供程序”
=> 如果我尝试通过在 Windows 资源管理器中双击文件来导入该文件,也会发生同样的情况(RobinDotNet 的建议)
-
堆栈溢出问题在 MSBuild、Team Build 和 TFS 中使用 PFX 文件对程序集进行签名 https://stackoverflow.com/questions/4025316
=>该问题的OP对上述两个答案也没有成功,但不幸的是,即使他得到的答案也无法帮助我:
以在生成计算机上运行 MSBuild 的用户身份登录,手动调用 MSBuild,然后在出现提示时输入密码。
=> 我登录并运行msbuild myproject.sln
但它甚至不会提示我输入密码。
最终为我解决的问题是让 TFS Build 服务在本地计算机上以管理员身份运行的帐户。
=> 运行 Hudson 的帐户(更准确地说:Tomcat http://en.wikipedia.org/wiki/Apache_Tomcat) 已经is本地管理员。我什至尝试从“以管理员身份运行”命令行运行 MSBuild,但仍然会收到相同的错误消息。
Update:我尝试在同一服务器上的 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 http://en.wikipedia.org/wiki/Windows_Server_2008R2 标准。
将 PFX 文件复制到您正在执行构建的计算机上。双击它,并将其安装在计算机上的证书管理器中。确保您登录到用于进行构建的帐户。
其他建议/问题:您的计算机上安装了正确版本的 .NET 吗?您是否有权写入该计算机上的证书存储?
如果您打开 Visual Studio 项目,转到项目属性并尝试创建新证书,它是否有效?它应该创建一个 PFX 文件并将其添加到项目中。您可以在证书存储区(菜单“开始”/certmgr.msc)中看到它吗?
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)