Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/297.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 保护DLL不被外部使用_C#_Dll - Fatal编程技术网

C# 保护DLL不被外部使用

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

我将直接回答这个问题。我有以下情况:

项目A->products.dll A 项目B->引用.dll A并生成.dll B 问题是,我创建了.dll B来重新编写.dll A中的一些类,以减少功能,供第三方使用。但是当Project B编译时,整个.dll A都会在那里


那么,有什么方法可以锁定/隐藏.dll吗?

是否应该使用不同的方法?用较小的功能子集创建dll,然后用其他dll扩展它?问题是,一旦您创建了dll,就可以访问它,例如使用反射,即使您使用内部。

看起来您需要ILMerge。ILMerge只是从多个dll中创建一个dll,不是吗?它不会阻止访问它的功能。@JanBarta:是的,将dllA+dllB合并为一个DLL。我猜dllA和dllB会被隐藏起来。关于代码隐藏、混淆和知识产权保护的问题经常被问到,其中的共识是:不,你不能,任何二进制文件都可以反编译。如果你真的不想公开你的代码,那就自己托管并通过Web服务公开它。我不能仅仅为了这一小部分就改变项目a的整个实现:也许看看。您可以在dll A中指定仅从dll B调用。如果您对其进行签名,我认为这会有所帮助。