我有一个强名称的c#程序集:Strong.Named.Assembly.dll。它具有属性InternalsVisibleTo
及其公钥,用于另一个程序集:[assembly: InternalsVisibleTo("Another.Assembly, PublicKey=xxx")]
。 Anoter.Assembly
尚未签名。因此,在我Strong.Named.Assembly
之前,我无法引用Another.Assembly
中的课程。
为什么不能将强名称程序集的内部显示给未签名的程序集?
答案 0 :(得分:3)
查看MSDN InternalsVisibleToAttribute Class。文档明确指出"当前程序集和友元程序集必须是未签名的,或者两个程序集都必须使用强名称签名。"
我认为原因很明显。它保证您授予内部访问权限的程序集在将来发生更改时不会攻击您的实现。