2008-08-25 68 views
1

我有一組多個程序集(一個程序集要用作API並取決於其他程序集)。我想將所有程序集合併成一個程序集,但是要阻止除API之外的所有程序集從外部可見。在.NET程序集中內部化類和方法

然後我會用Xenocode對這個程序集進行混淆。從我所看到的情況來看,使用Xenocode將組裝內部化是不可能的。

我已經看到來自微軟的ILMerge,但無法確定它是否可以做我想做的事。 http://research.microsoft.com/~mbarnett/ILMerge.aspx

回答

1

我知道Xenocode可以將程序集合成一個,但我不確定它是否會內部化其他非主要程序集。

我發現ILMerge中的/ internalize開關「內部化」除主節點之外的所有程序集。非常有用!

2

我已經使用微軟公司的ILMerge將DLL內部化爲單個組裝庫。使用稱爲NuGenUnify的ILMerge有一個有用的GUI。你可以找到它here

1

我建議你看看MSDN上的InternalsVisibleTo屬性。

您可以將所有程序集(API程序集除外)中的所有內容都標記爲internal而不是public,然後將它們重新顯示爲您的API程序集。

這樣做後,使用ILMerge應該給你一個只有API類可見的程序集。

1

有一些issues with ILMerge,但我認爲如果您添加優化+合併+模糊處理,您可能會創建一個非常複雜的情況,但效果不大。

爲什麼不只有一個程序集,並只公開您的API?

如果您始終將它們作爲單個程序集分發,那麼沒有理由不將它們編譯爲它。您將從編譯器優化中獲得更多收益,編譯速度也會更快。