为什么我的Excel插件会出现“在证书存储中找不到清单签名证书”的错误?

223

我有一个Excel插件项目,几年前在Visual Studio 2008中创建的。现在需要进行一些更改,因此我已经升级到Visual Studio 2010(这是我唯一能使用的IDE)。不确定这是否引起了问题,这是背景信息。

当我检查代码并编译时,出现错误:“Error 1 Unable to find manifest signing certificate in the certificate store.”

有人能告诉我这意味着什么以及如何修复它吗?

9个回答

263

您需要重新添加该证书到您的计算机或选择另一个证书。

要选择另一个证书或重新创建证书,请转到项目属性页面,单击签名选项卡,然后执行以下操作之一:

  • 单击“从存储中选择”
  • 单击“从文件中选择”
  • 单击“创建测试证书”

完成任意一个步骤后,您应该可以重新构建它。


136
在“项目属性页面”中,您可以转到“签名”选项卡,然后取消选中“签名ClickOnce清单”的复选框。 - Rubens Mariuzzo
10
@RubensMariuzzo - 如果您真的想签名,那就不要这样做。 - Matt Wilko
Office Add-ins 不支持取消勾选,将会自动重新勾选。 - it3xl
1
在构建服务器上如何执行“创建测试证书”操作? - ryanwebjackson

138

我发现这个解决方案可以解决我的问题:删除*.csproj中所有属于以下范畴的条目:

<manifestcertificatethumbprint>...</manifestcertificatethumbprint>
<manifestkeyfile>...</manifestkeyfile>
<generatemanifests>...</generatemanifests>
<signmanifests>...</signmanifests>

2
这是必要的,当应用程序曾经使用ClickOnce但不再使用时(签名选项卡中的复选框变灰)。 - Dan Bechard
1
也适用于我。显然,项目文件中还有一些我们进行实验时留下的残留物需要手动清理。顺便说一句 - 我还必须从项目中删除.snk文件。所以对我来说是:删除.snk、禁用签名、编辑项目文件、重新加载项目并启用签名。 - OSH
如果您曾经使用过ClickOnce,然后切换到签署程序集,那么显然需要这个。 - Roland
1
这是最好的答案。 - Homam
3
取消勾选“签署ClientOnce清单”不总是有效的。解决方法是从您的csproj文件中删除所提到的行。 - nectar
显示剩余2条评论

99

快速解决方法是在以下位置取消选中“签署 ClickOnce 清单”:项目 -> (项目名称)属性 -> 签名选项卡


1
我不得不在项目属性的签名选项卡下取消选中“签署 ClickOnce 清单”和“签署程序集”复选框,以解决这个问题。我根本没有使用任何签名。 - RBT

13

在最初创建项目时,点击一次签名证书已添加到项目属性的签名选项卡中。这将在构建时对点击一次清单进行签名。但在此之后,该证书不再可用。可能是因为您没有在原始构建机器上构建项目,或者该证书由某种方式被清除。您需要重新将该证书添加到您的机器上或选择另一个证书。


24
你需要重新将那个证书添加到你的设备上,或选择另一个证书。如果你知道如何添加证书,提供具体步骤或链接将非常有帮助。目前为止,你的回答只解决了一半问题。 - user1002206
1
项目属性页面 > 垂直选项卡中的 签名 > 单击 创建测试证书。别忘了提交新创建的文件 You.Project_TemporaryKey.pfx,因为 .pfx 文件经常被忽略。 - it3xl
我认为这个解决方案是适用于Visual Studio Office项目的唯一正确方案。 - it3xl

13

添加新证书解决了我的问题。属性页面 -> 签名 -> 单击“创建测试证书”


有没有一种方法可以在构建服务器上(通过命令行)完成这个操作? - ryanwebjackson

9

确保将.pfx文件提交到代码仓库。

我刚刚发现默认的.gitignore中包含*.pfx。用#注释掉它,然后提交变更。接着拉取代码仓库并重新构建。


3

0
我创建了一个新的密钥,我必须在 csproj 中搜索旧的密钥并进行重构。

0
在VS2015update3中,错误的剩余条目问题仍然存在,并且如果您尝试更改签名证书以使用不同的证书(即使是使用证书选择下拉列表中的“新建”选项生成的证书),也可能会出现此问题。 接受答案中的建议(标记为未签名,保存,卸载项目,编辑.csproj文件,删除与旧证书/指纹/密钥相关的属性并重新加载项目,设置证书)是可靠的。

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