1

次の非標準セットアップがあります (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 に衝突する名前がない限り問題ありません。

これを達成する方法についてのアイデアはありますか?

4

1 に答える 1

1

どうやら、.NET でカスタム リソース プロバイダーを実装することは可能です。これは、プロセス全体を説明する他のさまざまな記事へのリンクを含む記事です。実際には、必要meta:resourcekeyな場所から値を取得します。たとえば、上記の記事では、すべてのローカライズ情報を DB に格納しています。

于 2009-05-08T08:48:27.380 に答える