限制对.NET程序集的访问?

Shi*_*mmy 6 .net security dll assemblies namespaces

有没有办法让.NET程序集只能被授权来源访问?

我的意思是我想要一个包含组件的DLL,但我不希望任何人能够使用这些组件,但我的解决方案中的其他DLL EXE.我确实希望它们在分离的DLL中.

如果此功能存在,那么对命名空间的限制也可能是一个好主意.

有办法吗?

Vad*_*dim 6

您可以创建内部类.并使用InternalsVisibleTo属性为指定的程序集提供访问这些类的权限.

装配应该是强有力的命名.您可以在本文中找到有关该属性的更多信息.


blo*_*art 5

内部类的问题是内部在IL中没有意义,可以通过反射调用类.所以使用InternalsVisibleTo更像是编译器的帮助器而不是其他任何东西.

您可以使用StrongNameIdentityPermission更进一步,它将检查调用代码的强命名程序集的公钥 - 如果公钥不匹配则抛出安全异常.即使通过反射调用代码,也会强制执行此操作.