2010-04-22 58 views
7

我有兩個.NET庫:「Foo.Bar」和「Foo.Baz」。
「Foo.Bar」是獨立的,而「Foo.Baz」引用「Foo.Bar」。.NET ILMerged程序集的性能

假設我執行以下操作:

  • 使用ILMerge以 「Foo.Bar.dll」 合併爲 「Foo.Baz.dll」 到 「Foo1.dll」。
  • 創建一個包含「Foo.Bar」和「Foo.Baz」(因爲我可以訪問它們的源代碼)的純度的新解決方案,並將其編譯爲「Foo2.dll」。

從外部項目中使用它們的功能時,Foo1.dll和Foo2.dll的性能有任何差異嗎?如果是這樣,這種性能差異有多重要,是一次性的(負載?)還是持續的差異?兩種方法是否有其他優點或缺點?

回答

3

我相信它不會產生完全相同的IL,但它會非常接近,我無法想象這兩種方法之間有任何可察覺的區別。除了ILMerge方法可能更方便和可維護的事實之外,我認爲這兩種解決方案都會有相同的結果。

+0

爲什麼它不會產生完全相同的IL?爲什麼ILMerge必須發佈新的IL? – 2010-04-22 06:16:15

+0

IL的大部分將是相同的,但ILMerge確實做了一些轉變。其中一些可以像合併類型定義一樣進行配置。其中一些與裝配級屬性有關。我認爲它可以改變類型的可見性等 – Josh 2010-04-22 06:25:47

+0

這些都不會影響裝配的性能,請注意。 – Josh 2010-04-22 06:26:19