アセンブリの概要
更新 : 2007 年 11 月
アセンブリは、.NET Framework を使用したプログラミングにおける基本的要素です。アセンブリの機能は次のとおりです。
共通言語ランタイムが実行するコードを保持します。ポータブル実行可能 (PE: Portable Executable) ファイル内の MSIL (Microsoft Intermediate Language) コードにアセンブリ マニフェストが関連付けられていない場合、このコードは実行されません。各アセンブリが保持できるエントリ ポイントは 1 つだけです (つまり、DllMain、WinMain、または Main)。
セキュリティの境界を形成します。アクセス許可の要求および付与は、アセンブリを単位として行われます。アセンブリに適用されるセキュリティ境界の詳細については、「アセンブリのセキュリティに関する考慮事項」を参照してください。
型の境界を形成します。すべての型の ID には、その型を含んでいるアセンブリの名前が含まれます。したがって、あるアセンブリのスコープに読み込まれた MyType と呼ばれる型は、別のアセンブリのスコープに読み込まれた MyType と呼ばれる型とは異なります。
参照スコープの境界を形成します。アセンブリのマニフェストには、型を解決したり、リソース要求に応答したりするために使用されるアセンブリ メタデータが含まれています。このメタデータは、アセンブリの外部に公開する型およびリソースを指定します。マニフェストには、そのアセンブリが依存するほかのアセンブリも列挙されています。
バージョンの境界を形成します。アセンブリは、共通言語ランタイムにおけるバージョン管理の最小単位です。同じアセンブリ内のすべての型およびリソースは、まとめてバージョン管理されます。アセンブリのマニフェストには、任意の依存アセンブリに対して指定した、バージョンの依存関係が記述されています。バージョン管理の詳細については、「アセンブリのバージョン管理」を参照してください。
配置を行う場合の単位として機能します。アプリケーションの起動時には、そのアプリケーションが最初に呼び出すアセンブリだけが必要です。その他のアセンブリ、たとえばローカリゼーション リソースや、ユーティリティ クラスを格納するアセンブリは必要に応じて取得できます。これにより、最初にダウンロードされるアプリケーションを単純化し、サイズを縮小できます。アセンブリの配置の詳細については、「アプリケーションの配置」を参照してください。
side-by-side 実行がサポートされる場合、その単位として機能します。同じアセンブリの複数バージョンの同時実行については、「アセンブリと side-by-side 実行」を参照してください。
アセンブリには、静的アセンブリと動的アセンブリの 2 種類があります。静的アセンブリには、.NET Framework の各型 (インターフェイスおよびクラス) と、アセンブリ用のリソース (ビットマップ、JPEG ファイル、リソース ファイルなど) を格納できます。静的アセンブリは、ディスク上のポータブル実行可能 (PE) ファイルに保存されます。.NET Framework を使用して動的アセンブリを作成することもできます。動的アセンブリはメモリから直接実行され、実行前にディスクに保存されることはありません。動的アセンブリは、実行後にディスクに保存できます。
アセンブリを作成するには、いくつかの方法があります。Visual Studio 2005 など、これまで .dll ファイルや .exe ファイルの作成に使用してきた開発ツールを使用できます。他の開発環境で作成されたモジュールを使ってアセンブリを作成するには、Windows Software Development Kit (SDK) に付属している各種ツールを使用できます。動的アセンブリの作成には、Reflection.Emit などの共通言語ランタイム API も使用できます。