我需要'朋友'我没有创作的dll库。
我可以在属性中看到它有一个强名称,但我如何找出强名称是什么,所以我可以在System.Runtime.CompilerServices.InternalsVisibleTo
中使用它?
答案 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,您可以使用它来查看此信息