【问题标题】:Internalize Class and Methods in .NET Assembly在 .NET 程序集中内部化类和方法
【发布时间】:2010-09-06 19:17:55
【问题描述】:

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

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

我已经看到 Microsoft 的 ILMerge,但无法确定它是否可以满足我的需求。 http://research.microsoft.com/~mbarnett/ILMerge.aspx

【问题讨论】:

    标签: c# .net vb.net assemblies


    【解决方案1】:

    我已经使用微软的 ILMerge 将 DLL 内化到单个组装库中。有一个用于使用 ILMerge 的有用 GUI,称为 NuGenUnify。你可以找到它here

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        【解决方案3】:

        我建议你查看MSDN 上的InternalsVisibleTo 属性。

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

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

        【讨论】:

          【解决方案4】:

          有一些 issues with ILMerge,但我认为如果你添加优化 + 合并 + 混淆,你可能会创建一个高度复杂的情况,而没有什么好处。

          为什么不只有一个程序集,只公开你的 API?

          如果您总是将它们作为单个程序集分发,那么没有理由不直接编译它们。您将从编译器优化中获得更多好处,并且编译速度也会更快。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2018-12-07
            • 2011-08-25
            • 1970-01-01
            • 2013-04-25
            • 1970-01-01
            • 2021-11-06
            • 2016-07-14
            • 2018-10-09
            相关资源
            最近更新 更多