2012-07-03 30 views
-1

我有由被同一个解决方案内开发大约10重要的DLL文件,一个解决方案时,我发布这个解决方案,所有的DLL文件(公开课和内部功能)是开放的并可用于所有其他人。我怎样才能使一个DLL文件中的类和函数可见和可用只有通过相同的解决方案?!DLL文件的使用不允许别人用C#

问候。

+0

你有什么试过?看看混淆,你不会得到比这更多的东西。 DLL始终可以反编译。 – CodeCaster

回答

1

从你的问题,据我所知,你事先知道(即在编译时),什么组件将被运到一起。

因此,有两种解决方案:

  • 要么,你标记你的类型为internal和部署所有的代码在一个组件。当你出现出货的所有组件结合在一起,有没有真正的必然原因航运(除许可问题)前一个组件不合并的一切。
    如果你可以做到这一点,你仍然可以将所有东西都作为单独的项目来开发,并使用一些构建工具来创建一个包含所有代码的综合项目文件。

  • 或者,你让你的类型internal和解决方案作为朋友申报的其他组件。
    在装配体上声明InternalsVisibleToAttribute,装配体的内部类型应该对解决方案中的其他装配体可见。

请注意,我在“看得见”到编译器的意义上解读“看得见”,所以有人引用您的组件可编码对你的API。如果你想阻止你的代码真正以任何方式被显示出来,你必须按照CodeCaster的评论中的建议使用模糊处理,即使这样也可能不是不可破解的。

+0

通过哪种方式可以让我的所有程序集(dll文件)在编译后分离并且不能被其他人使用? – Moh

+0

@MOLi:我想我只是回答了上面的问题(第二个列表项)。请让我知道具体点不明确。 –

+0

对不起,我有点忙,我会测试你上面提到的,并让你知道结果。提前致谢。 – Moh

0

你可以strong-name all your assemblies。然后,当一个公共方法被调用或一个类实例化,你可以通过Assembly.GetCallingAssembly()获得主叫组装和检查强名称,然后抛出一个异常,如果它不匹配(约的所有的东西表现不知道虽然)。这就是我现在所能想到的,除了将所有东西放入一个装配体并使其成为内部装配体。