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