.NET TIPS [参照の追加]ダイアログに独自のアセンブリを表示するには?デジタルアドバンテージ 一色 政彦2006/06/02 |
|
|
.NETアプリケーションを開発する際、そのアプリケーションは何らかの外部のアセンブリが持つ機能を利用することになる。例えば、Windowsアプリケーションを開発するには、.NET Frameworkの基本機能が搭載されているSystemアセンブリ(=「System.dll」ファイル)や、Windowsフォーム作成機能を持つSystem.Windows.Formsアセンブリ(=「System.Windows.Forms.dll」ファイル)などを利用しなければならない。
つまり、これらのアセンブリへの「参照」を(最終的にはコンパイル時に)設定しなければならないのだ。といっても、この参照設定はVisual Studio(.NET 2002/2003および2005)を使って開発を行う場合は非常に簡単だ。次の画面のように、IDEのソリューション・エクスプローラから表示される[参照の追加]ダイアログで、参照したいアセンブリを選択するだけで済むからだ(基本的なアセンブリについてはあらかじめ参照設定されている)。
しかし独自に作成したアセンブリ(以降、独自アセンブリ)を、この[参照の追加]ダイアログに表示するにはどうすればよいのだろうか。実は、ユーザーが作成した独自アセンブリは、そのままでは、たとえGAC(グローバル・アセンブリ・キャッシュ)にインストールしたとしても、この一覧には表示されないのである。
そこで本稿では、この[参照の追加]ダイアログの.NETコンポーネント一覧に独自アセンブリを表示する方法を紹介する。
[参照の追加]ダイアログに独自アセンブリを表示する手順
これを行うには、次の手順を実行すればよい。
- 独自アセンブリを配置するフォルダを決定する
- そのフォルダをレジストリに登録する
●1. 独自アセンブリを配置するフォルダを決定する
まずは独自アセンブリ(=.DLLファイルとして作成したクラス・ライブラリ)を格納するフォルダを決定する。本稿の例ではこれを次の場所とする。
「C:\MyAssemblyFolder」
ちなみに本稿では、このフォルダに独自に作成したMyAssemblyアセンブリ(=「MyAssembly.dll」ファイル)を配置する。
●2. そのフォルダをレジストリに登録する
次に先ほど決定したフォルダをレジストリに登録するわけだが、この設定をコンピュータ内のすべてのWindowsユーザーで共有するか、それとも現在使用中のユーザーだけにしか適用しないかによって、設定場所が変わってくる。特に理由がなければ、すべてのユーザーで共有する方を選択すればよいだろう。
すべてのユーザーで設定を共有する場合、具体的には次のキーの配下に、適当な名前のキーを作成する。
・【.NET Framework 2.0】「すべてのユーザーで共有する場合」のレジストリ・キー
・【.NET Framework 1.x】「すべてのユーザーで共有する場合」のレジストリ・キー |
一方、現在のユーザーのみに適用する場合のキーは次のとおりだ。
・【.NET Framework 2.0】「現在のユーザーのみに適用する場合」のレジストリ・キー
・【.NET Framework 1.x】「現在のユーザーのみに適用する場合」のレジストリ・キー |
なお筆者の環境では、この「HKEY_CURRENT_USER\Software\Microsoft\.NETFramework」というキーはあらかじめ存在していなかったので、自らキーを作成した。
取りあえずここでは、.NET Framework 2.0用の「すべてのユーザーで共有する場合」のレジストリ・キーの配下に「MyAssemblyFolder」というキーを作成することにしよう。最終的には、次のキーを作成した。
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\ |
あとは、次の画面の手順で、このキーに含まれる「(既定)」の値を、先ほどのフォルダ名(本稿の例では「C:\MyAssemblyFolder」)に指定するだけだ。
独自アセンブリを格納しているフォルダのレジストリへの登録 | ||||||||||
レジストリ・エディタを使って、独自アセンブリを格納しているフォルダをレジストリへ登録する。レジストリ・エディタを起動するには、[スタート]メニュー−[ファイル名を指定して実行]を選択して表示されるダイアログで「regedit」と入力し、[OK]ボタンをクリックすればよい。 | ||||||||||
|
以上でレジストリへの登録は完了だ。Visual Studioの[参照の追加]ダイアログを開くと、次の画面の例のように、独自アセンブリが表示されるはずだ(※ただし、事前にVisual Studioの再起動が必要)。
独自アセンブリが表示されている[参照の追加]ダイアログ |
[参照の追加]ダイアログの[.NET]タブを開くと表示されるコンポーネント一覧の中に独自アセンブリ(本稿の例では「MyAssembly」アセンブリ)が表示されるのが確認できるだろう。 |
GACに登録したアセンブリを[参照の追加]ダイアログに表示するには?
以上見てきたように、[参照の追加]ダイアログの.NETコンポーネント一覧は、レジストリに登録されたパス情報に基づいて表示されており、GACにインストールされているアセンブリを直接、列挙してくれるわけではない。従って、GACに登録した独自アセンブリであっても、前述の「フォルダを追加してレジストリにそれを登録する」という手順を必ず踏まなければならないというわけだ。
上記手順に従ってGACに登録した独自アセンブリを[参照の追加]ダイアログに表示されるようにした場合、見た目だけでそのアセンブリがGACにインストールされているかどうかを判別することはできない。だが、参照の追加を行ったアセンブリがGACに登録されているならば、次の画面のように、[ローカル コピー]が自動的に「False」となる(GACにインストールされていないアセンブリの場合は自動的に「True」になる)。非常に気付きにくい違いだが、このように「GACにインストールされているアセンブリへの参照を追加する場合」と「(GACにインストールされていない)通常のアセンブリへの参照を追加する場合」では、若干動作が異なるのである。
GACに登録した独自アセンブリへの参照の追加 | ||||||
GGACにインストールされているアセンブリを参照する場合の動作は、通常のアセンブリのときと違う。 | ||||||
|
これにより、(フォルダに配置されたアセンブリではなく)GACに登録された.NETコンポーネントが使われるようになる(=無駄なアセンブリのコピー作業が行われなくなる。ちなみに、.NETアプリケーションが実行される仕組みとして、参照しているアセンブリが実際に利用される際には、基本的にディレクトリに配置されたアセンブリよりも優先的にGACにインストールされたものを探しに行くので、ローカルにコピーしようがしまいが基本的にGACにインストールされたアセンブリが使われるはずだ)。
カテゴリ:Visual Studio 2005 処理対象:IDE |
|
「.NET TIPS」 |
- 第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用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
|
|