即使添加了新密钥,“无法在证书存储中找到清单签名证书”。

226

我无法使用强名称密钥签名构建项目 - 总是提示标题中的消息。

是的,该项目最初是从另一台机器上复制过来的。但是,即使我通过“项目属性”中的“签名”选项卡添加新密钥,仍会显示此错误。

我尝试以管理员身份运行Visual Studio,并尝试手动将密钥添加到Windows证书存储区,但没有成功。

帮帮我吧!

编辑:对于一个新项目,我不会遇到这个错误,但我很想让这个现有项目正常工作。即使我创建一个新证书,它也无法工作!


6
你使用的是哪种类型的VS项目?你也在项目属性签名选项卡中取消了“签署ClickOnce清单”的勾选吗? - Simon Mourier
@Simon Mourier,如果我取消勾选该选项,则文件将不会被签名。我想要它被签名!这是一个C#项目。在我的主要开发机器上运行良好,但在笔记本电脑上却无法正常工作。 - Marcus
错误信息是在您的构建日志中显示还是以其他方式显示的?如果您复制并粘贴日志,可能会有所帮助。 - Owen Wengerd
1
构建日志中的错误:“在证书存储中找不到清单签名证书” - Marcus
我没有在被接受的答案中看到代码行。但是这对我有用:我在VS2015中创建了一个新的密钥。我取消了程序集签名并保存。然后我点击了“从文件选择”按钮,选择了刚刚创建的文件,再次点击了“程序集签名”,并保存。重新构建。 - Tim
12个回答

0

你说你从另一台电脑复制了文件。在复制后,你有没有“解除锁定”它们?特别是应该检查 .snk 文件以确保其未被标记为不安全。


它并没有被阻止,而是来自于Windows Live Mesh同步软件。然而这并不重要,因为即使在笔记本电脑上创建一个新的键也不起作用。 - Marcus

0

使用属性为程序集签名

打开AssemblyInfo.cs(在$(SolutionDir)\Properties中)

使用AssemblyKeyFileAttributeAssemblyKeyNameAttribute,指定包含密钥对的文件或容器的名称,以便使用强名称对程序集进行签名。

添加以下代码:

[assembly:AssemblyKeyFileAttribute("keyfile.snk")]

添加这行代码没有任何区别,我仍然得到相同的错误。 - Marcus

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接