“无法在证书存储中查找清单签名证书” – 即使添加新密钥
我不能使用强名称密钥签名来构build项目 – 标题中的消息总是出现。
是的,项目最初是从另一台机器上复制过来的。 但是,即使通过“项目属性”中的“签名”选项卡添加新的密钥,该错误仍会显示。
我曾尝试以pipe理员身份运行Visual Studio,并试图手动将密钥添加到Windows证书存储区。
帮帮我!
编辑:我没有得到这个新的项目的错误,但我很想让这个现有的项目工作。 即使我创build一个新的证书也不会工作!
我终于find了解决scheme,真的希望这可以帮助别人。
- 编辑有问题项目的
.csproj
文件。 -
删除以下几行代码:
<PropertyGroup> <ManifestCertificateThumbprint>...........</ManifestCertificateThumbprint> </PropertyGroup> <PropertyGroup> <ManifestKeyFile>xxxxxxxx.pfx</ManifestKeyFile> </PropertyGroup> <PropertyGroup> <GenerateManifests>true</GenerateManifests> </PropertyGroup> <PropertyGroup> <SignManifests>false</SignManifests> </PropertyGroup>
在Visual Studio中转到项目的“属性”。 然后去签名选项卡。
然后确保签署点击一次清单closures。
更新说明:
在你的解决scheme浏览器
- 右键点击你的项目
- 点击属性
- 通常在左侧, select“签名”选项卡
- 检查签署ClickOnce清单
- 确保你保存!
试试这个:右键点击你的项目 – >转到属性 – >点击屏幕左侧的签名 – > 取消 签名点击一次清单 – >保存和构build
- 在记事本中打开.csproj文件。
-
删除与在证书存储中签署证书相关的以下信息
<PropertyGroup> <ManifestCertificateThumbprint>xxxxx xxxxxx</ManifestCertificateThumbprint> <ManifestKeyFile>xxxxxxxx.pfx</ManifestKeyFile> <GenerateManifests>true</GenerateManifests> <SignManifests>false</SignManifests> </PropertyGroup>
在Visual Studio中转到您的项目“属性”。 然后去签名选项卡。
然后确保签署点击一次清单closures。
要么
1.在记事本中打开.csproj文件。
2.在证书存储区中删除以下有关签名证书的信息xxxxx xxxxxx xxxxxxxx.pfx true false`
为我工作。
假设这是您从项目中复制项目的系统上的Windows创build的个人证书,则可以在项目所在系统上使用证书pipe理器并导入证书。 启动证书pipe理器(certmgr)并select个人证书,然后右键单击现有证书列表下面的,然后从任务中select导入。 使用浏览来查找项目中的.pfx(使用项目复制的上一个系统的.pfx)。 它应该在与工程目录同名的子目录中。 我熟悉C#和VS,所以如果这不是你的环境,也许.pfx将在其他地方,或者这个build议不适用。 导入后,你应该得到一个状态消息。 如果成功了,则编译证书错误应该消失。
手动将密钥添加到Windows证书存储是不够的。 证书只包含签名的公钥。 您还必须导入与证书中的公钥相关联的私钥。 .pfx文件在单个文件中包含公钥和私钥。 这就是你需要导入。
你说你从另一台电脑复制文件。 复制之后,你是否“解锁”它们? 特别是应该检查.snk文件,以确保它不被标记为不安全。
使用属性来为具有强名称的程序集签名
打开AssemblyInfo.cs
(在$(SolutionDir)\Properties
)
AssemblyKeyFileAttribute
或AssemblyKeyNameAttribute
,指定包含使用强名称签署程序集时要使用的密钥对的文件或容器的名称。
添加下面的代码:
[assembly:AssemblyKeyFileAttribute("keyfile.snk")]