Visual Studio 2008 のプロジェクトには自動生成されたリソース ファイルがいくつかあり、ローカライズされたバージョンがいくつかあります。これらのローカライズされたバージョンの 1 つに、この場合は空の文字列があります。
より明確に。多くの文字列リソースを含むコア リソース ファイルがあります。次に、このファイルの他の 4 つのローカライズ バージョンがあり、これらの他のローカライズ ファイルの 1 つで、文字列の 1 つに空の値が指定されています。
ここでの問題は、フォーム デザイナーが文字列のリソースを見つけたことに非常に満足しており、フォームの生成されたデザイナー コードでプロパティを割り当てる空の文字列に対してこのリソースを再利用するために明らかに何もしないことです。
たとえば、何らかの理由でコントロールのプロパティがデフォルト値で指定されていない場合 (そのため、空であってもコードにシリアル化されます)、空の文字列リテラルをC# コード。
問題は、ローカライズされたバージョンを参照していて、これらがコードにコンパイルされていないことです。
簡略化されたコード例を次に示します。
this.rpAllFields.KeyTip =
global::namespaces.SystemMessagesResources_sv_SE.
dash_red_shift_info_description;
この場合、 にdash_red_shift_info_description
は sv-SE ロケールの値がないため、デザイナーは、コード内に空の文字列を見つけると、そのリソースへのリンクを試みます。しかし、SystemMessagesResources_sv_SE は既存のクラスではなく、クラスにコンパイルされたSystemMessagesResources リソース ファイルのスウェーデン語ローカライズ バージョン用に生成されたクラス名のようです。
これを回避することは可能ですか?フォームファイルで何かを変更するたびに、検索/置換にかなりうんざりしています。これを実現するために行った、額を平手打ちしたことがあると確信していますが、明らかに、自分でこの原因を見つけることができません。
リソースを削除すると、上記のコードは次のようになります。
this.rpAllFields.KeyTip = "";