首页 文章

使用Visual Studio 2010进行程序集签名时出错:“尝试引用不存在的标记”

提问于
浏览
17

我正在尝试使用PFX文件在Visual Studio 2010中签署程序集 . 输入私钥密码后,我得到:

尝试引用不存在的令牌

我该如何解决这个问题?

4 回答

  • 13

    我也有同样的问题 . 只需使用Visual Studio命令提示符中的 signtool 即可 . 有时 signtool 会声称您的密码无效,但通常经过几次尝试后它才开始为我工作 .

    signtool.exe sign /f YOURCERT.pfx /p YOURPASSWORD YOURTARGET.exe

  • 1

    以管理员身份运行Visual Studio为我解决了这个问题 .

  • 13

    如果您希望Visual Studio自动签署文件并使用ClickOnce,这就是我必须做的事情:

    • 获取OpenSSL的副本 . 这是available for Windows . 或者使用Linux盒子,因为他们几乎都拥有它 .

    • 运行以下命令以导出到密钥文件:

    openssl pkcs12 -in certfile.pfx -out backupcertfile.key
    
    openssl pkcs12 -export -out certfiletosignwith.pfx -keysig -in backupcertfile.key
    

    然后在项目属性中,您可以使用PFX文件 .

  • 9

    这对我有用 .

    首先尝试使用为项目启用的密钥签名选项构建项目 . 构建将失败,转到“输出”窗口,您将看到如下错误:

    错误1无法导入以下密钥文件:MyKey.pfx . 密钥文件可能受密码保护 . 要更正此问题,请尝试再次导入证书,或使用以下密钥容器名称手动将证书安装到强名称CSP:VS_KEY_7B9423FE45F4DBEB Project.SomeName

    保存密钥库名称(例如VS_KEY_7B9423FE45F4DBEB),稍后您将需要它 .

    现在请执行以下步骤:

    • 在Windows证书存储区中导入数字证书密钥(PFX) . 在Windows资源管理器中双击PFX密钥并将其安装/导入密钥存储区(我实际上通过选择手动选择存储将其导入受信任的根证书存储区) .

    • 以常规用户身份启动Visual Studio 2010(我不会以管理员身份面对此密钥签名问题,但我想以用户身份调试我的应用程序)(在整个过程中保持打开状态)

    • 从“开始”菜单中打开 Visual Studio Command Prompt (2010) 快捷方式(x64,如果您在x64计算机上)作为管理员(右键单击Visual Studio 2010命令提示符快捷方式并选择以管理员身份运行) . 这应该使用Visual Studio环境设置打开管理命令提示符 . (不是常规命令提示符)

    • 在命令提示符下,从您在开头保存的错误消息中输入带有密钥库名称的 sn -d VS_KEY_xxxx

    • 然后输入 sn -i xxx.pfx VS_KEY_xxxx ,在提示时输入密码,如果是数字证书则输入xxx.pfx

    • 返回Visual Studio并重建项目

相关问题