我的机器上有两个不同版本的同一个项目。一个来自代码中继,另一个来自代码分支。这些项目使用.pfx键来启用强命名。当我第一次尝试编译项目的trunk版本时,我收到以下错误:
无法导入以下密钥文件:sgKey.pfx。密钥文件可能受密码保护。要更正此问题,请尝试再次导入证书,或使用以下密钥容器名称手动将证书安装到强名称CSP:VS_KEY_45891C38BC1BB345
要解决此问题,我使用sn.exe并使用以下命令:
sn -i sg Key.pfx VS_KEY_45891C38BC1BB345
这解决了trunk项目的问题,然后很高兴地构建它。
但是,当我尝试构建项目的分支版本时,我收到相同的初始错误(使用相同的密钥容器名称),当我尝试使用sn.exe安装证书时(不出意外)给出以下错误:
无法安装密钥对 - 对象已存在
这是有道理的,因为我在sn命令中使用了相同的 infile 和容器,但我想要了解的是:
答案 0 :(得分:51)
我已经设法解决了我的问题,但没有完全理解原因。我发现了一篇关于类似问题here的帖子,但不能完全符合我的情况,因为我只是以单个用户身份登录到我的机器。
该帖子展示了如何删除容器,但我无法做到这一点,因为它说容器不存在。虽然它做了什么促使我以管理员身份运行命令提示符,这是我之前没有做过的。这使我可以卸载并重新安装证书,现在项目的两个版本都已成功构建。
我的假设是,不知何故,证书最初(由我)安装在与我第二次尝试安装的用户不同的用户之下,尽管我不知道为什么会这样,因为我有仅作为单个用户登录到计算机。对我来说,这仍然是一个谜。
<强>要点:强>
答案 1 :(得分:3)
在做了&#34;刷新&#34;之后我们遇到了同样的问题。在Windows 10上。这对我们有用:
就像刷新将旧容器存储在一些隐藏区域中一样,它们无法被删除(但也会干扰添加相同的容器)。从当前用户的角度来看,更改为基于用户可以提供清晰的平板。请注意,如果您在同一台计算机上有多个用户,他们可能都需要注册证书。