我们刚刚将Visual Studio 2008项目升级到Visual Studio 2010。我们所有的程序集都使用Verisign代码签名证书进行强签名。自从升级以来,我们不断得到以下错误:

无法导入以下密钥文件:companyname.pfx。密钥文件可能有密码保护。若要纠正此问题,请尝试重新导入证书或使用以下密钥容器名称手动将证书安装到强名称CSP: VS_KEY_3E185446540E7F7A

这发生在一些开发人员机器上,而不是其他机器上。一些用来修复这个问题的方法有时有效,包括:

从Windows资源管理器重新安装密钥文件(右键单击PFX文件并单击安装) 第一次在新机器上安装Visual Studio 2010会在您第一次打开项目时提示您输入密码,然后它就可以工作了。在从Visual Studio 2008升级的机器上,没有此选项。

我已经尝试使用SN.EXE实用工具(强名称工具)向强名称CSP注册密钥,正如错误消息所建议的那样,但每当我使用Visual Studio 2010附带的版本运行带有任何选项的工具时,SN.EXE只是列出了它的命令行参数,而不是做任何事情。无论我提供什么参数,都会发生这种情况。

为什么会发生这种情况,有什么明确的步骤来解决它?我打算放弃ClickOnce安装和微软代码签名。


当前回答

我在“选择强名称密钥文件”下拉框中重新选择了密钥(pfx)文件,然后在“ENTER password”弹出窗口中提供密码。拯救了我的项目并重建了。构建成功。

打开项目属性。 单击Signing部分。 当它说“选择强名称密钥文件:”时,从下拉框中重新选择当前值:

Visual Studio现在将提示您输入密码。进入它。

保存项目并重新构建。 如果得到错误消息:“试图引用一个不存在的令牌”,请忽略它并继续以下步骤 点击“更改密码”按钮:

在这三个框中都输入原密码,然后单击OK。如果您想更改密码(或者您的旧密码不符合复杂度要求),您现在就可以这样做。 保存项目并重新构建。

更多信息…

其他回答

对我来说什么都没用,但后来我去查看了证书管理器(mmc.exe)。证书没有导入到个人存储中,所以我手动导入了它,然后对项目进行了编译。

请参阅使用Visual Studio项目设计器的签名页面“签名程序集”的ClickOnce清单签名和Strong-Name程序集签名。

我也有类似的问题,但在“强名称密钥文件”组合框中选择pfx并输入密码后,我仍然得到了类似的错误(没有容器名称部分):

无法导入以下密钥文件:companyname.pfx。密钥文件可能有密码保护。若要纠正此问题,请尝试重新导入证书或手动安装证书

此外,“Sign the ClickOnce清单”证书信息面板也没有填充。

我在我的pfx上做了“从文件中选择…”,它解决了问题。

作为一种变通方法,我试着以管理员的身份运行Visual Studio 2010,它对我很有效。

我希望这能有所帮助。

这里描述的所有方法对我都没有帮助。但是当我删除*。pfx文件从我的项目,并将其添加到程序集的签名再次,我建立了我的项目没有任何错误!我无法解释其中的原因。但这对我很管用。

我说得太早了!重建带来了错误…

我发现这个工作-右键单击解决方案资源管理器并将其排除在项目之外。单击显示所有文件,右键单击,现在再次将其包含在项目中。现在撤销挂起的更改…

出于某种原因,这为我整理了它,相对来说没有什么痛苦!