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

时间:2010-05-03 22:12:38

标签: visual-studio-2010 clickonce code-signing

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

  

尝试引用不存在的令牌

如何解决此问题?

4 个答案:

答案 0 :(得分:14)

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

答案 1 :(得分:13)

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

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

答案 2 :(得分:9)

如果您希望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文件。

答案 3 :(得分:1)

这对我有用。

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

  

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

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

现在请按照以下步骤操作:

  1. 在Windows证书存储区中导入数字证书密钥(PFX)。在Windows资源管理器中双击PFX密钥并将其安装/导入密钥存储区(我实际上通过选择手动选择存储将其导入到受信任的根证书存储区中。)
  2. 以普通用户身份启动Visual Studio 2010(我不会以管理员身份面对此密钥签名问题,但我想以用户身份调试我的应用程序)(在整个过程中保持打开状态)
  3. 从“开始”菜单中打开Visual Studio Command Prompt (2010)快捷方式(x64,如果您在x64计算机上)作为管理员(右键单击Visual Studio 2010命令提示符快捷方式并选择以管理员身份运行)。这应该使用Visual Studio环境设置打开管理命令提示符。 (不是常规命令提示符)
  4. 在命令提示符下,从您在开头保存的错误消息中输入带有密钥存储区名称的sn -d VS_KEY_xxxx
  5. 然后输入sn -i xxx.pfx VS_KEY_xxxx,在提示时输入密码,如果是数字证书则输入xxx.pfx
  6. 返回Visual Studio并重建项目