次の非標準セットアップがあります (VS2008、.NET 3.5 SP1):
MainSite というメイン Web プロジェクトがあり、名前の異なる「プラグイン」Web プロジェクトがいくつかあります。
これらのプラグインをビルドするとき、 と を呼び出すカスタム ビルド ステップがaspnet_compiler.exe
ありaspnet_merge.exe
ます。これにより、2 つの .DLL ファイル ( plugin_name .dll とplugin_name _deploy.dll) が作成されます。最初のクラスには分離コード クラスが含まれ、2 番目のクラスには .ascx ファイルから生成されたコードが含まれます。
次に、これらのプラグイン .DLL が/MainSite/bin/Plugins/
フォルダーにコピーされます。実行時 (アプリケーションの起動時)、MainSite アプリケーションはこのフォルダーを調べ、そこにあるすべての .DLL ファイルを動的に読み込みます。
すべてのフォームはプラグインの .ascx ファイルにあります。メイン アプリケーションは、必要に応じてこれらの .ascx ユーザー コントロールをロードする単なるスケルトンです。
そして今、ローカリゼーションの必要性が生じています。理想的には、次のものが必要です。
- Visual Studio でリソースを作成する場合は、フォームごとに個別のリソース ファイル (.ascx ファイル) を作成して、フォームを並行してローカライズしやすくする必要があります。
meta:resourcekey
.ascx ファイルのナイスメソッドは、コントロールのローカライズに非常に適しています。- .NET の自動リソース言語/カルチャ フォールバック メカニズムを使用できる必要があります。
/MainSite/bin/Plugins/
コンパイルの結果、すべてのプラグインのファイルをフォルダーにコピーできるようになるはずです。すべての言語/カルチャ用の .DLL ファイルがあり、それらを特定のサブフォルダーに配置する必要がある場合 - 異なるプラグインの .DLL に衝突する名前がない限り問題ありません。
これを達成する方法についてのアイデアはありますか?