方法 : サテライト DLL のリソースにアクセスする
更新 : 2007 年 11 月
サテライト DLL を作成し、そこにリソース (アイコン、ビットマップ、リソース文字列など) を追加すると、アドインやその他のオートメーション プロジェクトからこれらのリソースにアクセスできるようになります。この具体的な方法を次の手順に示します。
メモ : |
---|
使用している設定またはエディションによっては、表示されるダイアログ ボックスやメニュー コマンドがヘルプに記載されている内容と異なる場合があります。ここに記載されている手順は、全般的な開発設定が適用されているものとして記述されています。設定を変更するには、[ツール] メニューの [設定のインポートとエクスポート] をクリックします。詳細については、「Visual Studio の設定」を参照してください。 |
サテライト DLL リソースへのアクセス
Visual Studio を起動し、既存のアドイン プロジェクトを読み込むか、アドイン プロジェクトを新規作成します。
次のコード例を追加し、コンパイルして実行します。
使用例
Visual Studio でサテライト DLL を検索する場合、一般的に、次のアルゴリズムが使用されます。このコードを使用することにより、サテライト DLL を適切な場所にビルドし、必要なリソース名を割り当てることができます。
static void Main(string[] args)
{
string path = @"<some path here>";
System.Reflection.Assembly asm =
System.Reflection.Assembly.LoadFrom(path);
// For enhanced security, use the LoadFrom overload
// System.Reflection.Assembly.LoadFrom(path, securityInfo);
// where securityInfo is an instance of an Evidence object.
System.Reflection.Assembly assemblyForResources =
asm.GetSatelliteAssembly(System.Threading.
Thread.CurrentThread.CurrentCulture);
System.IO.Stream stream =
assemblyForResources.GetManifestResourceStream
(assemblyForResources.GetManifestResourceNames()[0]);
ResourceReader resReader = new ResourceReader(stream);
foreach (System.Collections.DictionaryEntry entry in resReader)
{
System.Windows.Forms.MessageBox.Show(entry.Key.ToString());
}
}
コードのコンパイル方法
この例を使用するには、Visual C# のコンソール アプリケーションを作成して、Main() 関数にこのコードを追加し、path 変数に (サテライト DLL へのパスではなく) アドイン アセンブリへのパスを設定します。実行すると、サテライト DLL 内で利用可能なすべてのリソースが表示されます。