2012-08-17 4 views
11

Resxリソースファイルで作業している間にVisual Studio 2010で異常な動作が発生しました。 。 Visual Studioはローカライズされた名前(たとえば、resource.fr.resx)とリソースファイルのdesigner.csファイルを生成しませんが、それは(例えばresource.resxなど)の単純な名前を持つ他のファイルのために正常に動作します:次のようにファイルがローカライズされている場合、Visual Studio 2010はリソース(Resx)デザイナーコードを生成しません。

問題があります。

  • test.resx
  • :あなたは、私はちょうど3つのリソースファイルに簡単なテストをした見ることができるように

    enter image description here

    :ここ

    は私のVisual Studioプロジェクトの設定のスナップショットですtest2.resx

  • test.fr.resx

test.resxtest2.resxのファイルはdesigner.csです。しかし、私が何をしても、test.fr.designer.csが作成されますが、常に空白です。

私はダブルチェックとトリプルチェックを行っています:ローカライズされたファイルのカスタムツールプロパティが正しく設定されています。すべてのプロパティはすべてのファイルで全く同じです(私はPublicResxFileCodeGeneratorを使用していますが、内部にアクセス修飾子を設定してResxFileCodeGeneratorを使用すると同じ動作になります)。

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

- >私にはここに何かがありますか?誰かがこの件に関するいくつかの洞察を持っていれば、私は感謝しています。これは私を夢中にしています。

答えて

19

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

+0

私はちょうどそれがそれで動作するはずの方法を忘れていたと思います。しかし、リソースマネージャーは、私がこの全部を調査するのに要した、私のローカライズされた文字列を見つけることができません。しかし、これはもう一つの理由があります。私は、リソースファイルに何も問題がないという前提の下で、再度調査します。 – Aerendel

+0

しかし、私が説明した方法で試してみてください。それはうまくいくはずです。 – Larry

+1

確かに、私はフレームワークが間違った方向に私を導いたマスターリソースファイルのコードを生成する必要があるだけであることを理解していませんでした。説明して、それを指摘してくれてありがとう! Visual Studioは実際には意味をなさないローカライズされた命名規則に従ったファイルのコードを生成することに真剣に取り組んでいます。ローカライズされたファイルを「コード生成なし」に変更した後、すべてが機能しています。どうもありがとう! – Aerendel