【发布时间】:2017-10-23 06:01:31
【问题描述】:
我有一个强命名的 c# 程序集:Strong.Named.Assembly.dll。它具有属性InternalsVisibleTo 及其公钥,用于另一个程序集:[assembly: InternalsVisibleTo("Another.Assembly, PublicKey=xxx")]。 Anoter.Assembly 尚未签名。所以我无法引用Strong.Named.Assembly 中的类,直到我也唱了Another.Assembly。
为什么不能将强命名程序集的内部显示给未签名的程序集?
【问题讨论】:
-
我将标签“assembly”更改为“.net-assembly”,因为标签“assembly”是关于汇编语言的......
-
当任何人都可以使用“允许的”AssemblyNames 之一来获得访问权限时,对程序集施加这种限制没有多大意义。 PublicKey 确保它确实是您想要的。
-
你为什么需要它?
-
我不需要它。我遇到了它,因为默认情况下项目没有强名称。我只是想知道这种行为的原因。
-
只有开发人员知道这一点,但我想是出于安全原因。签名的程序集被视为更“安全”,如果任何未签名的程序集可以使用其内部类型(通过使用正确的名称) - 有点违反了这一点。出于同样的原因,您不能从已签名的程序集中引用未签名的程序集。
标签: c# .net .net-assembly internalsvisibleto