如何获得装配的强名称?

时间:2011-08-12 22:44:55

标签: c#-4.0

我需要'朋友'我没有创作的dll库。

我可以在属性中看到它有一个强名称,但我如何找出强名称是什么,所以我可以在System.Runtime.CompilerServices.InternalsVisibleTo中使用它?

2 个答案:

答案 0 :(得分:14)

要获取具有强名称的程序集的公钥,请使用sn工具:

sn -Tp assembly.dll

这将显示您需要放入InternalsVisibleTo属性的公钥。如果打开Visual Studio命令提示符,则sn.exe工具已经位于路径中。

然而,我会质疑你想要实现的目标。如果您有一个未编写的已编译程序集,则将InternalsVisibleTo属性添加到代码中将允许它访问代码的内部,但如果没有友好访问权限,则无法进行编译。如果您尝试访问其他程序集的内部,那么InternalsVisibleTo属性将需要添加到其他程序集 - 这是您无法重新编译它就无法做到的事情。

答案 1 :(得分:2)

您必须在程序集的AssemblyInfo.cs文件中指定完全限定名称和公钥令牌,并且“需要朋友”:

[assembly: InternalsVisibleTo("FullAssemblyName, PublicKey=....", )]

如果您手头有Reflector.NET或ildasm,您可以使用它来查看此信息

相关问题