複数のプロジェクト タイプ (Web フロント エンド、WCF、Windows サービスなど) 間でローカリゼーションを共有する必要があるシナリオがあるため、すべての resx ファイルを埋め込み、いつでも追加/変更できるローカリゼーション アセンブリを作成することを考えました。これらは、すべてのアプリを更新するために単一の dll を再デプロイするだけで済みます。
そこで、テストするためにクラス ライブラリ プロジェクトを作成し、TestLocalization という名前を付けました。LocalizationManager という名前のクラスを追加しましたが、これは今のところ単なるスタブです (後でいくつかのユーティリティ メソッドを配置する予定です)。次に、それぞれに 1 つのテスト エントリを含む 2 つの resx ファイルを追加しました。1 つのファイルには Resource.resx という名前を付け、もう 1 つのファイルには Resource.fr.resx という名前を付けました。resx ファイルの Build Action が「Embedded Resource」に設定されていることを確認してからコンパイルし、次のコードで呼び出してみました。
Assembly assembly = typeof(TestLocalization.LocalizationManager).Assembly;
ResourceManager rm = new ResourceManager("Resource", assembly);
string str = rm.GetString("AKey");
次のエラーが表示されます。
「指定されたカルチャまたはニュートラル カルチャに適したリソースが見つかりませんでした。コンパイル時に "Resource.resources" がアセンブリ "TestLocalization" に正しく埋め込まれているか、リンクされていること、または必要なすべてのサテライト アセンブリが読み込み可能で完全に署名されていることを確認してください。 "
ここで何が間違っていますか?ありがとう!