【问题标题】:How to Strongly Name an Assembly so that it has a Public Key Token如何强命名程序集以使其具有公钥令牌
【发布时间】:2012-03-19 01:23:43
【问题描述】:

我正在尝试创建项目模板向导。为此,我需要一个带有公钥令牌的强命名程序集。

我去了这里:http://msdn.microsoft.com/en-us/library/ms247123.aspx 并按照步骤操作。

我最终在我的程序集中得到了一个 .pfx 文件。但是当我清理和构建 dll 时,它上面没有公钥令牌。

(我通过运行 'sn -t EventWizard.dll' 进行了验证,结果得到了这个结果:

无法将密钥转换为令牌 -- 程序集“(null)”的公钥无效。

所以我认为我没有获得公钥令牌。我怎样才能得到一个?

更新:这是我的签名标签:

【问题讨论】:

  • 签名下的下拉菜单中选择了什么?
  • @SLaks - 我添加了一个截图。
  • 应该可以;我不确定出了什么问题。
  • @SLaks,感谢您的命名更新...我更新了问题以反映。
  • @SLaks,奇怪的是它不起作用......我跳我错过了证书或其他东西。

标签: .net visual-studio visual-studio-2010 .net-4.0


【解决方案1】:

我也遇到过这种情况。

解决方案非常简单 - 参数区分大小写。

sn -T <yourassembly.dll>

【讨论】:

    【解决方案2】:

    所以它毕竟被强烈命名。但是需要以不同的方式使用 sn.exe 工具来查看我正在寻找的值 (PublicKeyToken)。

    如果我运行这个:

    sn -e EventWizard.dll temp.txt
    sn -t temp.txt
    

    然后它工作得很好。

    【讨论】:

      【解决方案3】:

      我也遇到过这个问题。

      解决方案非常简单 - 参数区分大小写。

      //Does not work
      sn -t yourassembly.dll
      
      //Works
      sn -T yourassembly.dll
      

      【讨论】:

        【解决方案4】:

        InternalsVisibleTo with Strong-Type Assemblies找到解决方案

        转到:C:\Program Files (x86)\Microsoft SDKs\Windows\v8.1A\bin\NETFX 4.5.1 Tools(或 sn.exe 所在的位置)

        sn -p MyKey.snk MyKey.PublicKeyOnly.snk
        

        这会将公钥复制到一个新文件中

        sn -tp MyKey.PublicKeyOnly.snk
        

        这将输出如下内容: 公钥是 0024000004800000940000000602000000240000525341310004000001000100cfb8bc23b86a08 e70d021dd53d3b0293e716e71015870bdcc58a0231a4228618851a83e06077f5a44f42beb2baf3 56ad2d344521a96b0081ed0f25f9227523e3625eda524efe1cf2e1e5e41f3693a76ec52347684b 8129a4bb2d5fc49681adf33da0eecc4f81f011af4539d12abe1b4e760b5ce32d766db1012d4402 8381f0b4

        公钥令牌是 2ff2b71993eeff95

        复制公钥值并更新 InternalsVisibleTo:

        [程序集:InternalsVisibleTo("MyProject.Domain.Tests, PublicKey= 0024000004800000940000000602000000240000525341310004000001000100cfb8bc23b86a08 e70d021dd53d3b0293e716e71015870bdcc58a0231a4228618851a83e06077f5a44f42beb2baf3 56ad2d344521a96b0081ed0f25f9227523e3625eda524efe1cf2e1e5e41f3693a76ec52347684b 8129a4bb2d5fc49681adf33da0eecc4f81f011af4539d12abe1b4e760b5ce32d766db1012d4402 8381f0b4")]

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2023-03-18
          相关资源
          最近更新 更多