我有一组多个程序集(一个程序集将用作 API,它依赖于其他程序集)。我想将所有程序集合并为一个程序集,但阻止除 API 之外的所有程序集从外部可见。

然后我将使用 Xenocode 混淆这个程序集。据我所知,用 Xenocode 内部化汇编是不可能的。

我已经看到了 Microsoft 的 ILMerge,但无法确定它是否可以实现我想要的功能。http://research.microsoft.com/~mbarnett/ILMerge.aspx

有帮助吗?

解决方案 2

我知道 Xenocode 可以将程序集合并为一个程序集,但我不确定它是否会内化其他非主要程序集。

我发现 ILMerge 中的 /internalize 开关可以“内部化”除主程序集之外的所有程序集。相当有用!

其他提示

我使用了 microsoft 的 ILMerge 将 DLL 内化为单个组装库。有一个用于使用 ILMerge 的有用 GUI,称为 NuGenUnify。你可以找到它 这里.

我建议你看看 InternalsVisibleTo 属性上 微软软件定义网络.

您可以将所有程序集中的所有内容(API 程序集除外)标记为 internal 代替 public, ,然后将它们重新显示给您的 API 程序集。

完成此操作后,使用 ILMerge 应该会为您提供一个仅包含可见 API 类的程序集。

有一些 ILMerge 的问题, ,但我认为如果你添加优化+合并+混淆,你可能会创建一个高度复杂的情况,但收效甚微。

为什么不只使用一个程序集,并只公开您的 API?

如果您始终将它们作为单个程序集分发,则没有理由不这样编译它们。您将从编译器优化中获得更多好处,并且编译速度也会更快。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top