![]() |
||
解説インサイド .NET Framework [改訂版]第3回 アセンブリのロード
吉松 史彰 |
||
| 本稿は、2002/06/05に公開された記事を、.NET Frameworkの新しいバージョンである「.NET Framework 1.1」に対応させ、全面的に加筆・修正を行った改訂版です。 |
はじめに
|
Back Issue
|
||||
|
前回はアセンブリのアイデンティティについて解説した。アセンブリのアイデンティティは簡易名、バージョン、カルチャ、公開キーの4つの部分からなるデータ構造であり、アセンブリのメタデータには自分自身のアイデンティティの情報と、そのアセンブリが参照しているほかのアセンブリの情報が含まれている。
共通言語ランタイム(CLR)上でコードが実行されたときに、そのコードがほかのアセンブリに含まれている型を参照していると、CLRはそのアセンブリをメモリ上にロードする。今回は、そのロード手順を解説しよう。なお、前回説明したとおり、.NET Framework上での開発では、ほぼすべての場合でアセンブリには厳密名を付けなければならない。そのため、今回の解説はすべて、アセンブリには厳密名が付いているものと仮定している。あいまいな名前のアセンブリをロードする手順は本稿の解説とは異なる可能性があるので、特に言及していない場合でも注意してほしい。
サンプル・アプリケーション
今回の記事で共通に利用するコードは次のようなものだ。
|
|
| 本稿で共通して利用するサンプル・コード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”) |
さらに、このアセンブリを利用するアプリケーション・コードを次のように定義した。
|
|
| 上記のアセンブリを利用するサンプル・コード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 [改訂版]」 |
TechTargetジャパン
- Kinectが切り開く“夢の近未来” (2012/2/2)
日本を含めた世界中でKinect for Windowsセンサー商用版とSDK正式版がリリース。未来のコンピューティングはどう変化するのか? - 3つの視点でネイティブと.NETの適材適所を考察 (2012/1/31)
アプリ開発は「ネイティブ」と「.NET」、どちらが最良? その問いには「適材適所」と答えるしかない。では、“適所”は一体どこかを考察する - SQL Azure Data Sync入門 (2012/1/30)
SQL Azure/SQL Serverデータベース間のデータ同期を簡単に実現するサービスとは? その仕組みや使用手順を解説 - Windows Phoneアプリ市場の現状を分析する (2012/1/27)
Windows Phone のアプリ・ストアに日々登録されている多種多様なアプリ。カテゴリ別のアプリ数は? 市場の現状を明らかにする
|
|
キャリアアップ
スポンサーからのお知らせ
- - PR -
イベントカレンダー
- - PR -



