每当我用方法调用我的记录器时,例如
_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
函数时,有没有办法抑制此警告?
我真的不想在我使用它的每一种方法中压制它。
答案 0 :(得分:14)
如果您控制ILogger
接口,则可以使用值为false的Localizable
属性来指示该值不可本地化。
例如:
void Info([Localizable(false)] string message);
答案 1 :(得分:3)
FxCop / VS代码分析和CA1303规则都不能配置为以这种方式忽略特定目标。你基本上有三个选择:
我倾向于倾向于#3这样的事情,但是ymmv ......另外,如果你强烈认为你应该能够控制CA1303的行为,那么这需要考虑{{3} }或https://connect.microsoft.com/VisualStudio。
答案 2 :(得分:3)
我遇到了这个问题,发现最简单的解决方案是将我的日志记录方法的参数从“message”重命名为其他内容。
CA1303仅在相关参数或属性名称包含“Text”,“Message”或“Caption”时触发。如果参数传递给Console.Write
或Console.WriteLine
,则参数也不能命名为“value”或“format”。
答案 3 :(得分:1)
如果将GeneratedCode属性应用于类,则代码分析将不会分析您的类。