チュートリアル : マネージ サテライト DLL の作成
サテライト DLL は、アイコン、ビットマップ、リソース文字列などのリソース ファイルを、アドインやその他のオートメーション プロジェクトからアクセスできるような場所にまとめて格納するために使用されます。サテライト DLL は、他のプロジェクトまたはアドインで再利用できます。また、文字列などのリソースをアドインから切り離すことによって、リソースの一元的な変更が可能となり、リソースを別の言語にローカライズする作業も効率化されます。
以前のバージョンの Visual Studio では、SatelliteDllPath および SatelliteDllName にレジストリ エントリが使用されていました。しかし、現在は、レジストリのエントリよりも .addin 登録ファイルのエントリが優先されます。プロジェクトでリソースが必要な場合、アドインを読み込むと、Visual Studio がサテライト DLL に対してリソースを照会します。そのため、リソースのパスをハードコーディングする必要はありません。また、#id メソッドを使ってリソース ID を指定する代わりに、@<リソース名> 形式を使用します。ここで、<リソース名> は、目的のリソースの名前 (@Icon1 や @String1 など) です。@ 記号は、Visual Studio がサテライト DLL からリソースを検索することを指定します。
マネージ サテライト DLL の作成
アイコンおよび文字列のリソースを含んだサテライト DLL を作成し、これらのリソースにアクセスするようにアドインを変更する方法を次の手順に示します。ここでは、アドインに [バージョン情報] ダイアログ ボックスを設定し、そのアイコンや文字列にリソースを使用します。通常、[バージョン情報] ダイアログ ボックスを備えたアドインを作成すると、既定のアイコンやテキストが提供されます。次の手順では、既定のアイコンおよびテキストを独自のアイコンおよびテキストに置き換える方法も示します。
マネージ サテライト DLL を作成するには
[ファイル] メニューの [新規作成] をポイントし、[プロジェクト] をクリックします。
[新しいプロジェクト] ダイアログ ボックスで、[その他のプロジェクトの種類] を展開し、[機能拡張プロジェクト] を選択します。
[テンプレート] ペインで、[Visual Studio アドイン] を選択します。
Visual Studio アドイン ウィザードの指示に従います。[[バージョン情報] に関する情報を選択します。] ページで、[[バージョン情報] ボックスの情報を指定する] を選択します。それ以外は、既定の設定をそのまま使用します。
[プロジェクト] メニューの [参照の追加] をクリックします。
[.NET] タブで System.Drawing をクリックし、[OK] をクリックします。
ソリューション エクスプローラーで、アドイン プロジェクトを右クリックし、[追加] をクリックして、[新しい項目] をクリックします。
テンプレート一覧の [リソース ファイル] を選択し、[追加] をクリックします。既定の名前 (Resources1.resx) をそのまま使用します。
既定では、Resource1.resx という名前のリソース ファイルが作成され、Visual Studio リソース エディターが起動します。
Resource1.resx で、[文字列] ボックスの一覧 (最上部の左端のボタン) の [アイコン] を選択します。
[リソースの追加] ボックスの一覧の [新しいアイコンの追加] をクリックします。ここでは、既定の名前 (Icon1.bmp) をそのまま使用し、[追加] をクリックします。
アイコンには、既存のビットマップ イメージ (16 x 16 ピクセル、16 色または True Color) を選択することもできます。
アイコン エディターにアイコンが表示されたら、ツールを使ってこれを変更します。必要な作業を終えたら、アイコン エディターを終了し、変更内容を保存します。
[リソースの追加] ボックスの一覧の [新しい文字列の追加] を選択します。
[名前] 列の先頭のボックスをクリックします。
String1 という既定の文字列リソースが作成されます。
[値] ボックスに「Line1」と入力します。
これは、最初の文字列リソースの値です。
他にも 2 つの文字列リソースを作成し、それぞれ "Line2" および "Line3" という名前を付けます。
リソース エディターを閉じ、変更内容を保存します。
ソリューション エクスプローラーで Resource1.resx を右クリックし、[プロパティ] をクリックします。
[プロパティ] ウィンドウで、[ビルド アクション] の内容を [埋め込まれたリソース] から [なし] に変更します。
これにより、リソースがアドイン アセンブリに組み込まれるのを防ぐことができます。
プロジェクトをビルドします。
サテライト リソース DLL を作成します。この作業では、ResGen とアセンブリ リンカー (AL: Assembly Linker) の 2 つのユーティリティを使用して、サテライト DLL をビルドします。
[スタート] ボタンをクリックし、[すべてのプログラム]、[Microsoft Visual Studio 2010]、[Visual Studio ツール] の順にポイントし、[Microsoft Visual Studio コマンド プロンプト (2010)] をクリックします。
これにより、必要な環境変数が設定され、Visual Studio ツールを簡単に参照できるようになります。
コマンド プロンプトで、.resx ファイルが格納されているフォルダーに移動し、「Resgen Resource1.resx」と入力します。
Resgen は、指定された .resx ファイルを .resources ファイルにコンパイルするためのユーティリティです。詳細については、「Resgen.exe (リソース ファイル ジェネレーター)」を参照してください。
コマンド プロンプトに「AL.exe /embed:Resource1.resources /culture:en-US /out:<アドイン名>.resources.dll」と入力します。
<アドイン名> は、使用するアドインの名前に置き換えます。たとえば、アドイン プロジェクトの名前が MyAddin の場合、/out: スイッチは /out:MyAddin.resources.dll になります。/out: の名前はプロジェクトの名前と一致している必要があります。一致していないとリソース DLL が見つかりません。
AL.exe (アセンブリ リンカー) により、指定された .resources ファイルが、アドインで参照可能な DLL へと変換されます。/culture スイッチは、英語以外の言語に変更できます。詳細については、「Al.exe (アセンブリ リンカー)」を参照してください。
ファイル エクスプローラーで、AL.exe のカルチャ値に " en-US " を入力したため) アドインの DLL ディレクトリに移動し、\en-US\ という名前のフォルダーを作成します (英語 (米国) の場合は。
<アドイン名>.resources.dll ファイルを新しい \en-US\ フォルダーにコピーします。
ファイル エクスプローラーで、\Addins\ ディレクトリに移動します。通常は\Documents and Settings\<ユーザー名>\My Documents\Visual Studio 2010\Addins\ になります。
次の手順に従って、Visual Studio のアドイン定義ファイルを変更します。
対象のアドインのアドイン定義ファイルを右クリックし、[プログラムから開く] をクリックして、[メモ帳] をクリックします。
次のタグに置き換えます。
<FriendlyName>@String1</FriendlyName> <Description>@String2</Description> <AboutBoxDetails>@String3</AboutBoxDetails> <AboutIconData>@Icon1</AboutIconData>
Friendlyname のエントリによって、アドインの名前が、Resource1.resx ファイルの String1 に入力した Line1 に変更されます。[バージョン情報] ダイアログ ボックスの [説明] には "Line2" が使用されます。また、AboutIconData エントリで検索されるのは、[バージョン情報] ダイアログ ボックス用に作成したアイコンになります。
アセンブリ名の拡張子の前に .resources を挿入します。
プロジェクトを再度ビルドし、アドイン マネージャーでアドインを選択します。
[ヘルプ] メニューの [Microsoft Visual Studio のバージョン情報] をクリックし、一覧の [Line1] (アドインの名前) を選択します。
カスタム アイコンおよび作成した 3 つの文字列が表示されます。