解説

インサイド .NET Framework [改訂版]

第3回 アセンブリのロード

吉松 史彰
2003/07/09 改訂(改訂前の記事はこちら

Page1 Page2 Page3 Page4 Page5

 本稿は、2002/06/05に公開された記事を、.NET Frameworkの新しいバージョンである「.NET Framework 1.1」に対応させ、全面的に加筆・修正を行った改訂版です。

はじめに

Back Issue
1
マネージ・コード/アセンブリ/モジュール
2 アセンブリのアイデンティティ

 前回はアセンブリのアイデンティティについて解説した。アセンブリのアイデンティティは簡易名、バージョン、カルチャ、公開キーの4つの部分からなるデータ構造であり、アセンブリのメタデータには自分自身のアイデンティティの情報と、そのアセンブリが参照しているほかのアセンブリの情報が含まれている。

 共通言語ランタイム(CLR)上でコードが実行されたときに、そのコードがほかのアセンブリに含まれている型を参照していると、CLRはそのアセンブリをメモリ上にロードする。今回は、そのロード手順を解説しよう。なお、前回説明したとおり、.NET Framework上での開発では、ほぼすべての場合でアセンブリには厳密名を付けなければならない。そのため、今回の解説はすべて、アセンブリには厳密名が付いているものと仮定している。あいまいな名前のアセンブリをロードする手順は本稿の解説とは異なる可能性があるので、特に言及していない場合でも注意してほしい。

サンプル・アプリケーション

 今回の記事で共通に利用するコードは次のようなものだ。

public class Util {
  public string Method() {
    return "Hello@IT";
  }
}
本稿で共通して利用するサンプル・コードutil.cs

 util.csは次のコマンドでコンパイルする。

% csc /t:module util.cs

 さらに、次のコマンドでアセンブリにする。この結果、「util.dll」と「util.netmodule」という名前の2つのモジュールからなるマルチ・モジュール・アセンブリが作成されることになる(CSPコンテナ(CspContainer)については「第2回 アセンブリのアイデンティティ」で解説している)。

% al /t:library /out:util.dll /version:1.0 /keyname:CspContainer util.netmodule

2つのモジュールからなるマルチ・ファイル・アセンブリ(アセンブリの表示名は“util, version=1.0.0.0, culture=neutral, publickeytoken=52aa3cb48fd943e1”)

 さらに、このアセンブリを利用するアプリケーション・コードを次のように定義した。

class User {
  static void Main() {
    Util u = new Util();
    System.Console.WriteLine(u.Method());
  }
}
上記のアセンブリを利用するサンプル・コードuser.cs

 これを次のコマンドでコンパイルする。これでutilアセンブリを参照するuser.exeが作成される。

% csc /noconfig /r:util.dll user.cs

 それでは、上記のコードを例に、アセンブリがどのようにロードされるのかを解説していこう。


 INDEX
  解説 インサイド .NET Framework [改訂版]
  第3回 アセンブリのロード
  1.はじめにサンプル・アプリケーション
    2.アセンブリのロード 1〜2段階
    3.GACとコードベース
    4.アセンブリのロード 3〜5段階
    5.アセンブリの配置に関する補足とまとめ
 
インデックス・ページヘ  「解説:インサイド .NET Framework [改訂版]」


Insider.NET フォーラム 新着記事
  • 第2回 簡潔なコーディングのために (2017/7/26)
     ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている
  • 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
     Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう
  • 第1回 明瞭なコーディングのために (2017/7/19)
     C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える
  • Presentation Translator (2017/7/18)
     Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Insider.NET 記事ランキング

本日 月間