C# 保护DLL不被外部使用
我将直接回答这个问题。我有以下情况: 项目A->products.dll A 项目B->引用.dll A并生成.dll B 问题是,我创建了.dll B来重新编写.dll A中的一些类,以减少功能,供第三方使用。但是当Project B编译时,整个.dll A都会在那里C# 保护DLL不被外部使用,c#,dll,C#,Dll,我将直接回答这个问题。我有以下情况: 项目A->products.dll A 项目B->引用.dll A并生成.dll B 问题是,我创建了.dll B来重新编写.dll A中的一些类,以减少功能,供第三方使用。但是当Project B编译时,整个.dll A都会在那里 那么,有什么方法可以锁定/隐藏.dll吗?是否应该使用不同的方法?用较小的功能子集创建dll,然后用其他dll扩展它?问题是,一旦您创建了dll,就可以访问它,例如使用反射,即使您使用内部。看起来您需要ILMerge。ILMer
那么,有什么方法可以锁定/隐藏.dll吗?是否应该使用不同的方法?用较小的功能子集创建dll,然后用其他dll扩展它?问题是,一旦您创建了dll,就可以访问它,例如使用反射,即使您使用内部。看起来您需要ILMerge。ILMerge只是从多个dll中创建一个dll,不是吗?它不会阻止访问它的功能。@JanBarta:是的,将dllA+dllB合并为一个DLL。我猜dllA和dllB会被隐藏起来。关于代码隐藏、混淆和知识产权保护的问题经常被问到,其中的共识是:不,你不能,任何二进制文件都可以反编译。如果你真的不想公开你的代码,那就自己托管并通过Web服务公开它。我不能仅仅为了这一小部分就改变项目a的整个实现:也许看看。您可以在dll A中指定仅从dll B调用。如果您对其进行签名,我认为这会有所帮助。