8

5000以上のリソース文字列を含むプロジェクトがあります。ほとんどすべての識別子にピリオドがあります。

強く型付けされたクラスを自動的に生成するように切り替えています。もちろん、期間があるため、数千の警告が表示されます。

リソース名'blah'は有効な識別子ではありません。

そうではないことはわかっています。ジェネレーターはピリオドをアンダースコアに変更し、すべてが正常です。

警告を抑制できますか?#pragmaawayに関連付けられた番号がないようです。

4

4 に答える 4

6

問題のクリスタルではありませんが、再現できると思います。プロジェクト+プロパティ、リソース、および「foo.bar」のような文字列リソース名を入力すると、この警告がトリガーされます。

はい、この警告を抑制することはできません。IDEのリソース設計者によって生成されます。Properties\Resources.resxファイルからProperties\Resources.Designer.csファイルにコードを自動生成する場合。<data>.resxファイルを見て、要素の「name」属性を確認します。属性値のピリオドが警告をトリガーします。

慎重に作成された正規表現による検索と置換は、ピリオドをアンダースコアに変えることでそれを修正できます。それは私に個人的に2つの問題を与えます、私はXDocumentを使用する小さなプログラムを書くだけです。また、この自動生成されたコードがまだ必要かどうかを確認してください。置き換えているようです。

于 2012-04-16T19:34:05.527 に答える
2

これにより、特定の.csファイルのすべての警告が抑制されます。

#pragma warning disable

警告を右クリックしてから、[エラーヘルプの表示]をクリックすることもできます。プロジェクトのプロパティに移動し、ビルドページに移動して[警告の抑制]テキストボックスに入力することで、プロジェクト全体の警告だけを抑制できるように、正確な警告番号を指定する必要があります。

さらなる調査の結果、一部の警告は抑制できないようです。/ nowarn C#コンパイラオプションについては、msdnの詳細を参照してくださいhttp://msdn.microsoft.com/en-us/library/7f28x9z3.aspx

それらの1つは、コンパイラ警告(レベル1)CS2029です。これは、表示される「有効な識別子ではありません」という警告を示します。コンパイラ警告(レベル1)CS2029の詳細(http://msdn.microsoft.com/en-us/library/878y1894.aspx )にアクセスすると、抑制できないことをさらに確認できます。

于 2012-04-04T16:13:05.263 に答える
2

ここでの本当にひどい回避策は、生成されたコードをリソースツールから切り離すことです。

リソースファイルの名前がResources.resxであるとしましょう

  1. Visual Studio内のプロジェクトでResources.resxをダブルクリックして、リソースツールを開きます。

  2. 使用している生成されたコードスコープに適切なAccess修飾子を設定します。

  3. Windowsエクスプローラーで、Resources.resxおよびResources.Designer.csコードが格納されているディレクトリに移動します。(手動で参照するか、プロジェクト/名前空間フォルダーを右クリックして[Windowsエクスプローラーでフォルダーを開く]を選択します)

  4. Resources.Designer.csの名前をResources.csに変更します

  5. Visual Studioのリソースツールに戻り、Access修飾子を「コード生成なし」に設定します

  6. 保存して、リソースツールを閉じます

  7. ソリューションエクスプローラーウィンドウの上部にある[すべてのファイルを表示]アイコンをクリックします。Resources.csファイルは、Resources.resxと同じフォルダーにゴースト形式で表示されます。

  8. Resources.csを右クリックし、[プロジェクトに含める]を選択します

警告が消えるはずです。もちろん、この回避策の不便さは、リソースファイルを変更するたびにこれらのすべての手順を実行する必要があることです。

于 2012-04-19T19:32:22.170 に答える
0

この警告は、リソース名が有効な識別子ではなく(たとえば、スペースまたは「-」が含まれている)、ファイルに対して強い型のリソース生成がオンになっている場合に発生します。強く入力されたリソース名は有効な名前に変更されますが(たとえば、「a b」は「a_b」に変更されます)、リソース名は「a b」のままになるため、これはエラーではなく警告です。

このエラーを修正するには

可能であれば、最初にリソースの名前を有効な識別子に変更する必要があります。それが有効なオプションでない場合は、この.resxファイルの厳密に型指定されたリソースコード生成を無効にします。これを行うには、ソリューションエクスプローラーで.resxファイルを選択し、カスタムツールプロパティをクリアします。

出典:http ://msdn.microsoft.com/en-us/library/ms228672 (v = vs.80).aspx

于 2012-10-10T09:49:16.197 に答える