アセンブリは、展開、バージョン管理、再利用、アクティブ化スコープ、およびセキュリティアクセス許可の基本的な単位です。NET ベースのアプリケーション。 アセンブリは、連携して機能の論理単位を形成するために構築された型とリソースのコレクションです。 アセンブリは、実行可能ファイル (.exe) またはダイナミック リンク ライブラリ (.dll) ファイルの形式であり、.NET アプリケーションの構成要素です。 型の実装に注意する必要がある情報を共通言語ランタイムに提供します。
.NET と .NET Framework では、1 つ以上のソース コード ファイルからアセンブリをビルドできます。 .NET Framework では、アセンブリに 1 つ以上のモジュールを含めることができます。 これにより、複数の開発者が個別のソース コード ファイルまたはモジュールで作業できるように、大規模なプロジェクトを計画できます。このファイルを組み合わせて 1 つのアセンブリを作成できます。 モジュールの詳細については、「 方法: マルチファイル アセンブリをビルドする」を参照してください。
アセンブリには、次のプロパティがあります。
アセンブリは、 .exe または .dll ファイルとして実装されます。
.NET Framework を対象とするライブラリの場合は、 アセンブリをグローバル アセンブリ キャッシュ (GAC) に配置することで、アプリケーション間でアセンブリを共有できます。 アセンブリを GAC に含める前に、厳密な名前を付ける必要があります。 詳細については、「厳密な名前付きアセンブリ を参照してください。
アセンブリは、必要な場合にのみメモリに読み込まれます。 使用されていない場合は、読み込まれません。 そのため、アセンブリは、大規模なプロジェクトのリソースを効率的に管理する方法です。
リフレクションを使用して、アセンブリに関する情報をプログラムで取得できます。 詳細については、「 リフレクション (C#) 」または「 リフレクション (Visual Basic)」を参照してください。
.NET および .NET Framework の MetadataLoadContext クラスを使用して、アセンブリを読み込んで検査できます。 MetadataLoadContext は、 Assembly.ReflectionOnlyLoad メソッドを置き換えます。
共通言語ランタイムのアセンブリ
アセンブリは、型の実装に注意する必要がある情報を共通言語ランタイムに提供します。 ランタイムでは、型はアセンブリのコンテキストの外部に存在しません。
アセンブリは、次の情報を定義します。
共通言語ランタイムが実行するコード。 各アセンブリには、
DllMain
、WinMain
、またはMain
のエントリ ポイントを 1 つだけ含めることができます。セキュリティ境界。 アセンブリは、権限が要求され、付与される単位です。 アセンブリ内のセキュリティ境界の詳細については、「 アセンブリのセキュリティに関する考慮事項」を参照してください。
型の境界。 すべての型の ID には、その型が存在するアセンブリの名前が含まれます。 1 つのアセンブリのスコープに読み込まれる
MyType
呼び出された型は、別のアセンブリのスコープに読み込まれるMyType
と呼ばれる型と同じではありません。参照スコープの境界: アセンブリ マニフェストには、型の解決とリソース要求の満たのために使用されるメタデータがあります。 マニフェストは、アセンブリの外部で公開する型とリソースを指定し、依存している他のアセンブリを列挙します。 ポータブル実行可能ファイル (PE) ファイル内の共通中間言語 (CIL) コードは、 アセンブリ マニフェストが関連付けられていない限り実行されません。
バージョンの境界。 アセンブリは、共通言語ランタイムの最小バージョン管理可能単位です。 同じアセンブリ内のすべての型とリソースは、1 つのユニットとしてバージョン管理されます。 アセンブリ マニフェストには、依存アセンブリに対して指定するバージョンの依存関係が記述されています。 バージョン管理の詳細については、「アセンブリの バージョン管理」を参照してください。
デプロイユニット: アプリケーションの起動時に、アプリケーションが最初に呼び出すアセンブリのみが存在する必要があります。 ローカライズ リソースやユーティリティ クラスを含むアセンブリなどの他のアセンブリは、必要に応じて取得できます。 このプロセスにより、最初にダウンロードしたときにアプリをシンプルかつ薄くすることができます。 アセンブリの配置の詳細については、「 アプリケーションの配置」を参照してください。
サイド バイ サイド実行ユニット: アセンブリの複数のバージョンの実行の詳細については、「アセンブリとサイド バイ サイド実行」を参照してください。
アセンブリを作成する
アセンブリは静的でも動的でもかまいません。 静的アセンブリは、ポータブル実行可能 (PE) ファイルのディスクに格納されます。 静的アセンブリには、インターフェイス、クラス、ビットマップ、JPEG ファイル、その他のリソース ファイルなどのリソースを含めることができます。 動的アセンブリを作成することもできます。動的アセンブリはメモリから直接実行され、実行前にディスクに保存されません。 動的アセンブリは、実行後にディスクに保存できます。
アセンブリを作成するには、いくつかの方法があります。 .dllファイルや .exe ファイルを作成できる Visual Studio などの開発ツール を 使用できます。 Windows SDK のツールを使用して、他の開発環境のモジュールを含むアセンブリを作成できます。 System.Reflection.Emitなどの共通言語ランタイム API を使用して、動的アセンブリを作成することもできます。
アセンブリをコンパイルするには、Visual Studio でビルドするか、.NET Core コマンド ライン インターフェイス ツールを使用してアセンブリをビルドするか、コマンド ライン コンパイラを使用して .NET Framework アセンブリをビルドします。 .NET CLI を使用したアセンブリの構築の詳細については、 .NET CLI の概要を参照してください。
注
Visual Studio でアセンブリをビルドするには、[ ビルド ] メニューの [ ビルド] を選択します。
アセンブリ マニフェスト
すべてのアセンブリにはアセンブリ マニフェスト ファイルがあります。 目次と同様に、アセンブリ マニフェストには次のものが含まれます。
アセンブリの ID (その名前とバージョン)。
.exe または.dll ファイルが依存している他のアセンブリ、 ビットマップ ファイル、 Readme ファイルなど、アセンブリを構成する他のすべてのファイルを記述するファイル テーブル。
アセンブリ参照リスト。.dllやその他のファイルなど、すべての外部依存関係の一覧です。 アセンブリ参照には、グローバル オブジェクトとプライベート オブジェクトの両方への参照が含まれています。 グローバル オブジェクトは、他のすべてのアプリケーションで使用できます。 .NET Core では、グローバル オブジェクトは特定の .NET Core ランタイムと結合されます。 .NET Framework では、グローバル オブジェクトはグローバル アセンブリ キャッシュ (GAC) に存在します。 System.IO.dll は、GAC 内のアセンブリの例です。 プライベート オブジェクトは、アプリがインストールされているディレクトリ以下のディレクトリ レベルにある必要があります。
アセンブリには、コンテンツ、バージョン管理、依存関係に関する情報が含まれています。 そのため、それらを使用するアプリケーションは、Windows システムのレジストリなどの外部ソースに依存して適切に機能する必要はありません。 アセンブリは .dll の競合を減らし、アプリケーションの信頼性を高め、デプロイしやすくします。 多くの場合、インストールすることができます.ターゲット コンピューターにファイルをコピーするだけで、NET ベースのアプリケーション。 詳細については、「 アセンブリ マニフェスト」を参照してください。
アセンブリへの参照を追加する
アプリケーションでアセンブリを使用するには、アセンブリへの参照を追加する必要があります。 アセンブリが参照されると、アクセス可能なすべての型、プロパティ、メソッド、およびその名前空間のその他のメンバーが、コードがソース ファイルの一部であるかのようにアプリケーションで使用できます。
注
.NET クラス ライブラリのほとんどのアセンブリは自動的に参照されます。 システム アセンブリが自動的に参照されない場合は、次のいずれかの方法で参照を追加します。
- .NET と .NET Core の場合は、アセンブリを含む NuGet パッケージへの参照を追加します。 Visual Studio で NuGet パッケージ マネージャーを使用するか、アセンブリの <PackageReference> 要素を .csproj または .vbproj プロジェクトに追加します。
- .NET Framework の場合は、Visual Studio の [参照の追加] ダイアログ、または C# コンパイラまたは Visual Basic コンパイラの
-reference
コマンド ライン オプションを使用して、アセンブリへの参照を追加します。
C# では、1 つのアプリケーションで同じアセンブリの 2 つのバージョンを使用できます。 詳細については、「 extern エイリアス」を参照してください。
関連コンテンツ
タイトル | 説明 |
---|---|
アセンブリの内容 | アセンブリを構成する要素。 |
アセンブリ マニフェスト | アセンブリ マニフェスト内のデータ、およびアセンブリに格納される方法。 |
グローバル アセンブリ キャッシュ | GAC がアセンブリを格納して使用する方法。 |
強い名前付きアセンブリ | 厳密な名前付きアセンブリの特性。 |
アセンブリのセキュリティに関する考慮事項 | アセンブリでのセキュリティのしくみ。 |
アセンブリのバージョン管理 | .NET Framework のバージョン管理ポリシーの概要。 |
アセンブリの配置 | アセンブリを配置する場所。 |
アセンブリと side-by-side 実行 | 複数のバージョンのランタイムまたはアセンブリを同時に使用します。 |
動的メソッドとアセンブリを出力する | 動的アセンブリを作成する方法。 |
ランタイムがアセンブリを検索する方法 | 実行時に .NET Framework がアセンブリ参照を解決する方法。 |
リファレンス
こちらも参照ください
.NET