我访问了这里:http://msdn.microsoft.com/en-us/library/ms247123.aspx 并按照步骤进行操作。
我最终得到一个.pfx文件。但是当我清理并构建dll时,它没有公钥标记。
我通过运行 'sn -t EventWizard.dll' 来验证,得到以下结果:
“无法将密钥转换为标记--程序集“(null)”的公钥无效。”
因此,我认为我没有得到公钥标记,那么我该如何获得呢?
更新:这是我的签名选项卡:
sn -T <yourassembly.dll>
终于成功为程序集进行了强名称。但是,我需要以不同的方式使用sn.exe工具才能查看我想要的值(PublicKeyToken)。
如果我运行以下命令:
sn -e EventWizard.dll temp.txt
sn -t temp.txt
然后它正常运行了。
//Does not work
sn -t yourassembly.dll
//Works
sn -T yourassembly.dll
在此处找到了一个解决方案,可以帮助使用强类型程序集的InternalsVisibleTo。
前往路径: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:
[assembly: InternalsVisibleTo("MyProject.Domain.Tests, PublicKey= 0024000004800000940000000602000000240000525341310004000001000100cfb8bc23b86a08 e70d021dd53d3b0293e716e71015870bdcc58a0231a4228618851a83e06077f5a44f42beb2baf3 56ad2d344521a96b0081ed0f25f9227523e3625eda524efe1cf2e1e5e41f3693a76ec52347684b 8129a4bb2d5fc49681adf33da0eecc4f81f011af4539d12abe1b4e760b5ce32d766db1012d4402 8381f0b4")]