12

Resx リソース ファイルを操作しているときに、Visual Studio 2010 で最も奇妙な動作に遭遇したばかりで、頭を包むことができません。

問題は次のとおりです。Visual Studio はdesigner.cs、ローカライズされた名前resource.fr.resx( resource.resx.

私のビジュアル スタジオ プロジェクトのセットアップのスナップショットを次に示します。

ここに画像の説明を入力

ご覧のとおり、3 つのリソース ファイルを使用して簡単なテストを行いました。

  • test.resx
  • test2.resx
  • test.fr.resx

とのdesigner.csファイルは問題なく生成されます。ただし、作成されますが、何をしても常に空白です。test.resxtest2.resxtest.fr.designer.cs

カスタム ツール プロパティがローカライズされたファイルに対して適切に設定されていることを確認しました。すべてのプロパティはすべてのファイルでまったく同じです (私は を使用してPublicResxFileCodeGeneratorいますが、アクセス修飾子を internal に設定して を使用すると同じ動作になりますResxFileCodeGenerator)。

注: リソース ファイルを作成すると、Visual Studio は通常、アクセス修飾子をデフォルトで "Internal" に設定することに気付きました。ただし、ローカライズされたリソース ファイル ( resource.fr.resx) を作成すると、デフォルトで「コード生成なし」になります。Visual Studio が何らかの理由でローカライズされたファイルを異なる方法で処理していることを証明しているため、興味深いことに注意してください。

--> ここで私が見逃しているものはありますか? 誰かがこの件について何らかの洞察を持っていれば幸いです。これは私を夢中にさせています。

4

1 に答える 1

21

この特定の問題については調べていませんが、「.resx」ファイルに関して他にも多くの問題がありました。Visual Studio は時々バグがあります (特に ".resx" ファイルの処理)。私は、これらのいくつかを MSFT に公式に報告しました (これは、私自身の商用ローカリゼーション プログラムに影響するためです)。いずれにせよ、通常はこのように名前を付けるべきではありません。これは、MSFT のローカリゼーション ルールに事実上違反しています。デフォルトの言語ファイルには通常、言語コードが埋め込まれていてはならず、この理由で言語コードが詰まる可能性があります。調査する必要がありますが、「Designer.cs」ファイルを含む「Test.resx」を作成してから、ファイルを含まない「Test.fr.resx」を作成する必要があります。すべての既定の言語文字列は、"Test.resx" に配置されます。「Test.fr.resx」の対応するフランス語の文字列。コードでは、"Test.Designer.cs" にある厳密に型指定された名前にアクセスします。返される文字列は、"System.Threading.Thread.CurrentThread.CurrentUICulture" を "fr" に設定しない限り、既定の言語文字列になります。 . 次に、"Test.fr.resx" からフランス語版の文字列が返されますが、そこに見つからない (翻訳がない) 場合は、"Test.resx" からフォールバック文字列が返されます (つまり、デフォルトの言語文字列)。これが、ハブ アンド スポーク モデルの基本的な仕組みです。

于 2012-08-17T20:29:16.270 に答える