限制.DLL访问

rau*_*and 3 c#

假设我有两个.dll,Dll1和Dll2.

DLL1使用或调用DLL2.

有没有办法可以确保它是DLL1,只有DLL1谁调用DLL2?

更新1

这背后的原因是:

我有一个WinForms解决方案,为了简单起见,它包含一个视图项目和一个控制器项目(生成一个单独的.dll).在客户端计算机上安装应用程序后,我意识到可以在其"Program Files"文件夹中查看应用程序.dll.有人可能会添加对控制器的.dll的引用.我想避免这种情况,因此它是视图项目,只有正在进行调用的视图项目.

更新2
我喜欢将控制器分成单独项目的原因之一是我可能有许多不同的视图项目调用并使用相同的控制器.然后,我只需要为所有视图维护一个控制器项目.例如,win表单应用程序和测试项目甚至是使用相同控制器项目的网站.但是采用这种方法,我将面临我提到的安全问题(避免和控制我的dll的不当使用).

所以我有一种方法,编译为一个.dll,使用不同的文件夹,我认为这是正确的并解决了我的安全问题,但它让我只有一个视图.

另一方面,如果我有单独的项目,我面临安全问题.

我仍然怀疑我应该怎么做,因为我仍然希望继续使用不同的项目,因为我提到的原因.

更新3
有关使用StrongNameIdentityPermission权限要求的任何建议吗?
http://msdn.microsoft.com/en-us/library/ff648663.aspx (请参阅:限制哪些代码可以调用您的代码)
http://blogs.msmvps.com/manoj/2004/10/20/tip- strongnameidentitypermission/ http://www.morganskinner.com/Articles/StrongNameIdentityPermission/

谢谢

Ode*_*ded 6

您可以在DLL2中创建所有类型internalInternalsVisibleToAttribute在其中使用设置为DLL1.

为确保不会破坏它,您应该签署DLL1并确保在属性中使用其公钥.


或者,作为两个DLL的作者,考虑将项目组合成一个 - 将DLL2中存在的所有公共方法设置为internal,如前所述,但现在只存在DLL1,并且只能由它访问它们.


注意:以上所有假设均未使用反射.