代码之家  ›  专栏  ›  技术社区  ›  Vincent

在.NET程序集中内部化类和方法

  •  1
  • Vincent  · 技术社区  · 16 年前

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

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

    我看到过微软的ilmerge,但无法确定它是否能满足我的需要。 http://research.microsoft.com/~mbarnett/ILMerge.aspx

    4 回复  |  直到 16 年前
        1
  •  2
  •   Siddharth Rout    12 年前

    我已经使用微软的ilmerge将dll内部化到一个组装的库中。有一个有用的图形用户界面,可以使用名为nugenuiny的ilmerge。你可以找到它 here .

        2
  •  1
  •   Vincent    16 年前

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

    我在ilmerge中发现了/internalize开关,它“内部化”除主程序集之外的所有程序集。非常有用!

        3
  •  1
  •   Ant    16 年前

    我建议你看看 InternalsVisibleTo 属性对 MSDN .

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

    完成后,使用ilmerge应该给您一个程序集,只有API类可见。

        4
  •  1
  •   Community Mr_and_Mrs_D    7 年前

    有一些 issues with ILMerge 但是我认为,如果你添加优化+合并+模糊,你很可能会创造一个非常复杂的情况,而没有什么好处。

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

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