10

メソッドでロガーを呼び出すたびに、たとえば

_logger.Debug("Connecting to database...");

警告が表示されます:

CA1303 : Microsoft.Globalization: 
Method 'Database.Connect()' passes a literal 
string as parameter  'message' of a call to 'ILogger.Debug(string)'. 
Retrieve the following string(s) from a resource table instead: 
"Connecting to database...".

の関数を使用するたびにこの警告を抑制する方法はありILoggerますか? 使用しているすべての方法でそれを抑制したくありません。

4

4 に答える 4

15

ILoggerインターフェイスを制御する場合はLocalizable、値が false の属性を利用して、値がローカライズできないことを示すことができます。

例えば:

void Info([Localizable(false)] string message);
于 2014-03-25T20:21:09.057 に答える
3

私はこの問題に遭遇し、最も簡単な解決策は、ロギング メソッドのパラメーターの名前を「メッセージ」から別のものに変更することであることがわかりました。

CA1303は、関連するパラメーターまたはプロパティ名に「テキスト」、「メッセージ」、または「キャプション」が含まれている場合にのみトリガーされます。Console.Writeパラメータがまたはに渡される場合、パラメータにConsole.WriteLine「value」または「format」という名前を付けることもできません。

于 2013-03-26T02:12:09.157 に答える
3

FxCop/VS Code Analysis も CA1303 ルールも、この方法で特定のターゲットを無視するように構成することはできません。基本的に次の 3 つのオプションがあります。

  1. 違反を個別に抑制し、
  2. ルールを無効にする、または
  3. 希望どおりに動作するカスタム ルールに置き換えます。

私はこのようなことについては #3 に傾倒しがちですが、ymmv... また、CA1303 の動作を制御できるようにする必要があると強く感じている場合は、https://connect.microsoft で要求することを検討してください。 .com/VisualStudioまたはhttp://visualstudio.uservoice.com/forums/121579-visual-studio

于 2012-03-27T12:25:06.300 に答える
2

GeneratedCode 属性をクラスに適用すると、コード分析はクラスを分析しません。

于 2012-09-19T21:30:50.077 に答える