マルチファイル アセンブリMultifile assemblies

コマンド ライン コンパイラまたは Visual C++ で Visual Studio を使って、.NET Framework をターゲットとするマルチファイル アセンブリを作成できます。You can create multifile assemblies that target the .NET Framework using command-line compilers or Visual Studio with Visual C++. アセンブリ内の 1 つのファイルには、アセンブリ マニフェストが含まれている必要があります。One file in the assembly must contain the assembly manifest. アプリケーションを起動するアセンブリには、Main メソッドや WinMain メソッドなどのエントリ ポイントも含まれている必要があります。An assembly that starts an application must also contain an entry point, such as a Main or WinMain method.

たとえば、2 つのコード モジュール Client.csStringer.cs を含むアプリケーションがあるものとします。For example, suppose you have an application that contains two code modules, Client.cs and Stringer.cs. Stringer.cs は、Client.cs 内のコードによって参照される myStringer 名前空間を作成します。Stringer.cs creates the myStringer namespace that is referenced by the code in Client.cs. Client.cs には、アプリケーションのエントリ ポイントである Main メソッドが含まれます。Client.cs contains the Main method, which is the application's entry point. この例では、2 つのコード モジュールをコンパイルし、さらにアプリケーションを起動するアセンブリ マニフェストを含む 3 番目のファイルを作成します。In this example, you compile the two code modules, and then create a third file that contains the assembly manifest, which launches the application. アセンブリ マニフェストは、Client モジュールと Stringer モジュールの両方を参照します。The assembly manifest references both the Client and Stringer modules.

注意

アセンブリに複数のコード モジュールがある場合でも、マルチファイル アセンブリが持つことのできるエントリ ポイントは 1 つだけです。Multifile assemblies can have only one entry point, even if the assembly has multiple code modules.

マルチファイル アセンブリを作成するのにはいくつかの理由があります。There are several reasons you might want to create a multifile assembly:

  • 異なる言語で記述されたモジュールを結合するため。To combine modules written in different languages. これは、マルチファイル アセンブリを作成する最も一般的な理由です。This is the most common reason for creating a multifile assembly.

  • 使用頻度の低い型を、必要なときにだけダウンロードされるモジュールに入れることにより、アプリケーションのダウンロードを最適化するため。To optimize downloading an application by putting seldom-used types in a module that is downloaded only when needed.

    注意

    Microsoft Internet Explorer で <object> タグを使ってダウンロードされるアプリケーションを作成する場合は、マルチファイル アセンブリを作成することが重要です。If you are creating applications that will be downloaded using the <object> tag with Microsoft Internet Explorer, it is important that you create multifile assemblies. このシナリオでは、コード モジュールとは別に、アセンブリ マニフェストだけを含むファイルを作成します。In this scenario, you create a file separate from your code modules that contains only the assembly manifest. Internet Explorer は、最初にアセンブリ マニフェストをダウンロードした後、ワーカー スレッドを作成して、追加のモジュールまたは必要なアセンブリをダウンロードします。Internet Explorer downloads the assembly manifest first, and then creates worker threads to download any additional modules or assemblies required. アセンブリ マニフェストが含まれるファイルがダウンロードしている間、Internet Explorer はユーザー入力に応答できません。While the file containing the assembly manifest is being downloaded, Internet Explorer will be unresponsive to user input. アセンブリ マニフェストを含むファイルが小さいほど、Internet Explorer が応答しない時間が短くなります。The smaller the file containing the assembly manifest, the less time Internet Explorer will be unresponsive.

  • 複数の開発者が記述したコード モジュールを結合するため。To combine code modules written by several developers. 開発者ごとに各コード モジュールをアセンブリにコンパイルすることもできますが、そうすると、すべてのモジュールがマルチファイル アセンブリに収められている場合であれば公開されない一部の型が強制的に公開されることがあります。Although each developer can compile each code module into an assembly, this can force some types to be exposed publicly that are not exposed if all modules are put into a multifile assembly.

アセンブリを作成した後は、アセンブリ マニフェスト (以降アセンブリ) を含むファイルに署名したり、ファイルとアセンブリに厳密な名前を付けて、グローバル アセンブリ キャッシュに配置したりすることができます。Once you create the assembly, you can sign the file that contains the assembly manifest, and hence the assembly, or you can give the file and the assembly a strong name and put it in the global assembly cache.

関連項目See also