我有一组多个程序集(一个程序集将用作API,它依赖于其他程序集)。我想将所有程序集合并到一个单独的程序集中,但是防止除了API之外的所有程序集从外部可见。
然后我将使用Xenocode对此程序集进行混淆。从我所看到的情况来看,不可能使用Xenocode内部组装。
我见过微软的ILMerge,但无法确定它是否可以做我想要的。 http://research.microsoft.com/~mbarnett/ILMerge.aspx
答案 0 :(得分:2)
我使用了来自microsoft的ILMerge将DLL内部化为单个汇编的库。有一个有用的GUI用于使用名为NuGenUnify的ILMerge。你可以找到它here。
答案 1 :(得分:1)
我知道Xenocode可以将程序集合并为一个,但我不确定它是否会内化其他非主要程序集。
我在ILMerge中找到了/ internalize开关,它“内化”了除主要组件之外的所有组件。非常有用!
答案 2 :(得分:1)
我建议您查看MSDN上的InternalsVisibleTo
属性。
您可以将所有程序集(API程序集除外)中的所有内容标记为internal
而不是public
,然后将它们重新显示为您的API程序集。
完成后,使用ILMerge应该只给出一个只有API类可见的程序集。
答案 3 :(得分:1)
有一些issues with ILMerge,但我认为如果你添加优化+合并+混淆,你可能会创造一个非常复杂的情况,但收效甚微。
为什么不只有一个程序集,只公开你的API?
如果您总是将它们作为单个程序集分发,那么没有理由不将它们编译为单独的程序集。您将从编译器优化中获得更多好处,并且编译速度也会更快。