我们刚刚将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安装和微软代码签名。


当前回答

我得到了同样的错误。 在我的情况下,我尝试了以上所有的方法,但我无法得到结果。

我最终意识到,在我的情况下,错误的原因是没有输入证书密码或输入错误。当我动态正确地输入密码时,错误消失了。成功的

其他回答

VSCommands 2010 (Visual Studio插件)可以自动修复这个问题-只需右键单击错误,然后从菜单中单击Apply fix。你可以从Visual Studio gallery中获得它。

在将Windows安装移动到SSD之后,我也遇到了同样的问题。其他的解决方法对我都不起作用。

我的解决方案是在记事本中打开项目文件,并删除对PFX键的所有引用。保存文件后,在Visual Studio中打开解决方案。进入项目->属性->签名。你不应该在“选择强名称密钥文件”组合框中看到任何键。在组合框中,浏览到该键,选择它,您的项目现在可以构建。

这解决了我的问题: 打开VS项目

双击Package.appxmanifest

进入包装选项卡

点击选择证书

单击配置证书

从文件中选择并使用示例。PFX的统一或任何其他创造

我通过更改Visual Studio项目的.csproj文件中的下面一行来解决这个问题:

这抛出了“不能导入”错误:

<PropertyGroup>
<SignManifests>true</SignManifests>
</PropertyGroup>

将值更改为false可以消除错误。

为了在Visual Studio 2012中解决这个问题,我右键单击项目,属性->“signing”,然后取消选中“Sign the ClickOnce manifest”。