2011-09-14 9 views
3

アセンブリは1つ以上のモジュールとリソースファイル(存在する場合)で構成されていることを理解します。複数の管理モジュールを使用したアセンブリ

C#でプロジェクトをコンパイルすると、コンパイラはコードを管理対象モジュールに変換し、そのモジュールをアセンブリにスローします。今、私の質問は、アセンブリに1つ以上の管理対象モジュールがあるのはいつですか?

+0

を使用することにより、既存のアセンブリ内のモジュール構造を見ることができます? – Oded

+0

@Oded、モジュール別には、CLRをターゲットとしたコンパイラによって作成されたILコードとメタデータである "managed module"を意味します。 – ebb

+0

これはお使いになりましたか? http://stackoverflow.com/questions/1326556/what-is-managed-module/1326563#1326563 – Oded

答えて

2

Heresの良い説明はNetmodule vs. Assemblyです。要するに

、1はこれらの理由のために複数のモジュールを使用します。

多言語アセンブリ。

アセンブリが異なるプログラミング言語のソースファイルで構成されている場合は、同じプログラミング言語のファイルをネットモジュールにコンパイルしてアセンブリにリンクする必要があります。

ソースファイルを別々に管理します。

アセンブリが複数の開発者によってメンテナンスされている場合は、ソースファイルを小さなコレクションに分けるのが理にかなっています。各コレクションは個々の開発者が所有しています。コレクションはネットモジュールとしてコンパイルされ、最終アセンブリにリンクされます。

小さなダウンロードフットプリント。

アセンブリがhttpサイトでホストされている場合、CLRはメインモジュールのみを初めてダウンロードします。残りのモジュールは必要に応じてダウンロードされます。頻繁に使用されないコードをメインラインコードから分離し、使用頻度の低いコードをネットモジュールとしてコンパイルすることができます。ユーザーは必要なときにのみネットモジュールをダウンロードします。

複数のアセンブリに同じソースファイルをリンクします。

複数のアセンブリで使用されている共通コードがあります。共通コードは十分に小さく、別のアセンブリにコンパイルする価値はありません。同じソースファイルを複数回コンパイルしないようにするには、それらをコンパイルしてネットモジュールにしてから、別のアセンブリにリンクすることができます。

-1

あなたはProject名前空間内のクラスを持っている、とProject.Utilities名前空間内の別のクラスの場合、2つのモジュールが存在することになる。

  • Project
  • Project.Utilities

これは、ように見えます.Netアセンブリが編成される方法である、classes -> modules -> assembly

コンパイラはクラスがでている名前空間によって、モジュールに名前を付けるように思われる。

あなたは何を意味するのか、あなたは「モジュール」と言うときildasmまたは.Net Reflector

関連する問題