マルチファイル アセンブリの構築
コマンド ライン コンパイラまたは C++ のマネージ拡張付き Visual Studio .NET を使用して、マルチファイル アセンブリを作成できます。アセンブリ内の 1 つのファイルでアセンブリ マニフェストを格納している必要があります。また、アプリケーションを起動するアセンブリは、Main メソッドや WinMain メソッドなどのエントリ ポイントを含む必要があります。
たとえば、Client.cs と Stringer.cs の 2 つのコード モジュールを含むアプリケーションがあるとします。Stringer.cs は、Client.cs 内のコードによって参照される myStringer
名前空間を作成します。Client.cs は、アプリケーションのエントリ ポイントである Main
メソッドを格納します。この例で、この 2 つのコード モジュールをコンパイルしてから、アプリケーションを起動するためのアセンブリ マニフェストを格納する 3 番目のファイルを作成します。アセンブリ マニフェストは、Client
モジュールと Stringer
モジュールの両方を参照します。
メモ マルチファイル アセンブリは、アセンブリに複数のコード モジュールがある場合でも、1 つのエントリ ポイントしか持つことができません。
マルチファイル アセンブリの作成が必要になる理由は、いくつか考えられます。
異なる言語で記述された複数のモジュールを結合するため。これは、マルチファイル アセンブリの作成が必要になる最も一般的な理由です。
必要な場合にしかダウンロードされないモジュールに使用頻度の低い型を配置することで、アプリケーションのダウンロードを最適化するため。
メモ <object> タグと Microsoft Internet Explorer を使用してダウンロードされるアプリケーションを作成する場合は、マルチファイル アセンブリを作成することが重要です。この方法では、アセンブリは、アセンブリ マニフェストだけを格納するコードモジュールとは分けて作成します。Internet Explorer は、最初にアセンブリ マニフェストをダウンロードしてから、その他の必要なモジュールまたはアセンブリをすべてダウンロードするためにワーカー スレッドを作成します。アセンブリ マニフェストを格納するファイルのダウンロード中は、Internet Explorer はユーザーからの入力には応答しません。アセンブリ マニフェストを格納するファイルが小さいほど、Internet Explorer が応答しない時間は短くなります。
複数の開発者が記述したコード モジュールを結合するため。開発者は作成したコード モジュールを各自でコンパイルできます。しかしこの場合、すべてのモジュールを 1 つのマルチファイル アセンブリにするときには公開されない型が、パブリックな型として公開されてしまうことがあります。
アセンブリを作成した後は、アセンブリ マニフェストの格納ファイル、つまりアセンブリに署名したり、ファイルおよびアセンブリに厳密な名前を付けてグローバル アセンブリ キャッシュに配置したりできます。
マルチファイル アセンブリを作成するには、次のようにします。
アセンブリ内のほかのモジュールによって参照される名前空間を含むすべてのファイルをコンパイルして、コード モジュールを生成します。コード モジュールの既定の拡張子は .netmodule です。たとえば、Client ファイル コード内で参照される
myStringer
名前空間をStringer
ファイルが作成する場合、Stringer
は最初にコード モジュールとしてコンパイルされます。コード内で参照されるほかのモジュールを示すために必要なコンパイラ オプションを使用して、ほかのすべてのモジュールをコンパイルします。
アセンブリ リンカ (Al.exe) を使用して、アセンブリ マニフェストを格納する出力ファイルを作成します。このファイルは、アセンブリの一部であるすべてのモジュールまたはリソースについての参照情報を格納します。マニフェストは、アプリケーションの実行可能ファイルとしての機能を果たすことができます。
メモ Visual Studio .NET IDE for C# および Visual Basic は、シングルファイル アセンブリの作成でしか使用できません。マルチファイル アセンブリを作成する場合は、コマンド ライン コンパイラまたは C++ のマネージ拡張付き Visual Studio .NET を使用します。
上記の 3 つの手順の例を、次のセクション「マルチファイル アセンブリの例」に示します。