首页 文章

“无法在证书库中找到清单签名证书” - 即使添加新密钥也是如此

提问于
浏览
105

我无法使用强名称密钥签名来构建项目 - Headers 中的消息总是会出现 .

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

我尝试以管理员身份运行Visual Studio,并尝试手动将密钥添加到Windows证书库 .

救命!

编辑:我没有得到一个新项目的错误,但我很想让这个现有的项目工作 . 即使我创建了新证书,它也无法工作!

11 回答

  • 0

    我终于找到了解决方案,并且真的希望这也有助于其他人 .

    • 编辑相关项目的 .csproj 文件 .

    • 删除以下代码行:

    <PropertyGroup>
       <ManifestCertificateThumbprint>...........</ManifestCertificateThumbprint>
    </PropertyGroup>
    <PropertyGroup>
       <ManifestKeyFile>xxxxxxxx.pfx</ManifestKeyFile>
    </PropertyGroup>
    <PropertyGroup>
       <GenerateManifests>true</GenerateManifests>
    </PropertyGroup>
    <PropertyGroup>
       <SignManifests>false</SignManifests>
    </PropertyGroup>
    
  • 94

    在visual studio中转到项目的“属性” . 然后转到签名选项卡 .

    然后确保关闭“单击一次清单” .


    Updated Instructions:

    Within your Solution Explorer:

    • right click on your project

    • click on properties

    • 通常位于左侧, select the "Signing" tab

    • check off the Sign the ClickOnce manifests

    • Make sure you save!

    enter image description here

  • 2
    • 在记事本中打开.csproj文件 .

    • 删除与证书存储区中的签名证书相关的以下信息

    <PropertyGroup>
      <ManifestCertificateThumbprint>xxxxx xxxxxx</ManifestCertificateThumbprint>
      <ManifestKeyFile>xxxxxxxx.pfx</ManifestKeyFile>
    <GenerateManifests>true</GenerateManifests>
    <SignManifests>false</SignManifests>
    </PropertyGroup>
    
  • 0

    试试这个:右键单击你的项目 - >转到 properties - >点击屏幕左侧的 signing - > Uncheck Sign the click once manifests - >保存和构建

  • 0

    这很简单!!

    我按照以下步骤解决了这个问题:

    • 打开项目属性
      img

    • 单击“签名”选项卡

    • 并取消选中"Sign the assembly"

    而已!!

  • 154

    转到visual studio中的“Properties”项目 . 然后转到签名选项卡 .

    然后确保关闭“单击一次清单” .

    要么

    1.在记事本中打开.csproj文件 .

    2.删除与证书存储中的签名证书相关的以下信息xxxxx xxxxxx xxxxxxxx.pfx true false

    为我工作 .

  • 9

    假设这是由您复制项目的系统上的窗口创建的个人证书,您可以使用项目所在系统上的证书管理器并导入证书 . 启动证书管理器(certmgr)并选择个人证书,然后右键单击现有证书列表下方,并从任务中选择导入 . 使用浏览查找项目中的.pfx(您之前使用项目复制的系统中的.pfx) . 它应该位于与项目目录同名的子目录中 . 我熟悉C#和VS,所以如果那不是你的环境,也许.pfx会在别处或者这个建议不适用 . 导入后,您应该收到状态消息 . 如果成功,编译证书错误应该消失 .
    certmgr screen

  • 0

    仅将密钥手动添加到Windows证书库是不够的 . 证书仅包含已签名的公钥 . 您还必须导入与证书中的公钥关联的私钥 . .pfx文件在单个文件中包含公钥和私钥 . 这就是您需要导入的内容 .

  • 6

    你说你从另一台计算机上复制了文件 . 复制它们后,你是否“解锁”了它们?特别是应该检查.snk文件以确保它没有标记为不安全 .

  • 4

    使用属性对具有强名称的程序集进行签名

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

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

    添加以下代码:

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

    如果您只需要在本地构建项目或解决方案,那么删除签名可能是其他人建议的简单解决方案 .

    但是,如果您在自动构建服务器(如TeamCity)上出现此错误,您可以在其中构建用于部署或分发的实际发布部件,则可能需要考虑如何将此证书正确安装到构建计算机上的证书存储区中,以便获得构建结束时签名的包 .

    通常,不会重新开始将任何 PFX 证书签入/提交到源代码管理中,因此在构建过程中如何在构建服务器上获取此文件是另一个问题,但有时人们会将此文件与解决方案一起存储代码,所以你可以找到它项目文件夹 .

    您只需在构建服务器上的适当帐户下安装此证书即可 .

    • 下载PsExec from Windows Sysinternals .

    • 打开命令提示符,然后输入以下内容 . 它将生成一个新的命令提示符,运行为 Local System (假设您的TeamCity在默认的本地系统帐户下运行):

    > psexec.exe -i -s cmd.exe

    • 在此新命令提示符下,切换到包含证书的目录并输入要安装的文件名(将文件名更改为您的文件名):

    > mykey.pfx

    • “导入证书”向导将启动 . 单击并选择所有建议的默认值 .

    • 运行构建 .

    所有学分都转到 Stuart Noble (然后再到 Laurent Kempé 我相信☺) .

相关问题