2009-07-21 45 views

回答

8

没有办法阻止用户添加引用。这是来自DLL部分的被动行为,没有任何事情可以阻止它发生。

虽然你可以做的是,添加引用一个不值得的操作。例如,如果DLL中的所有类型都是内部的或私有的,则不仅仅是为用户添加引用以使用DLL中的类型。此外,混淆DLL会使它变得更加困难。

+1

如果您需要它,Visual Studio中会内置一个免费混淆器。 (工具 - > Dotfuscator社区版) – 2009-07-21 22:08:20

+0

非常感谢 - 我一定会看看保护我的程序集,虽然它发生在我身上,如果dll中的所有类型都是私有的或内部的,该dll不会非常有用。我也看了一下模糊处理 - 和Dotfuscator CE玩得很快,看起来没问题 - 但可能需要购买专业版,因为CE看起来不够强大。 – 2009-07-21 23:08:41

1

我严重怀疑这是可能的。即使是这样,具有全部推力的集会也可以伪造所有证据并假装成你的程序。

5

你不能阻止某人添加对你的dll的引用。然而,你可以做的是让他们难以使用它,如果他们添加引用。

代码访问安全性(CAS)可用于防止未经授权的代码调用到程序集中,但这会影响调用的性能,并且出于此目的过于矫枉过正。

另一种方法是将dll中的所有内容标记为内部。如果您有其他需要访问dll中的类的程序集,请使用InteralsVisibleTo属性将它们设置为好友程序集。这允许其他程序集访问您的dll的内部类。将其与已签署的程序集(与InternalsVisibleTo定义一起使用)结合使用,应该足够了。

1

虽然.NET不允许真正的静态链接,您可以伪造它,打包DLL和EXE在一个组件。这里有一个工具可以做到这一点: ILMerge 可能有其他人。

0

您可能会混淆DLL(工具 - > Dotfuscator社区版),使其无法引用您的DLL。