为什么ReSharper和/或Microsoft Code Analysis没有抱怨这个非本地化的字符串?

时间:2016-04-14 15:28:49

标签: c# localization resharper code-analysis nlog

我在我的C#代码中添加了一条日志消息:

Log.Info("Why no complaint about this nonlocalized string?");

正如它所表明的那样,我没有收到ReSharper或Microsoft Code Analysis关于我使用非本地化字符串这一事实的投诉。我认为我有些事情要抱怨本地化问题:

对于ReSharper,我将项目的“Localizable”设置为“Yes”,将“Localizable Inspector”设置为“Pessimistic”。

对于Microsoft Code Analysis,我将项目的规则集设置为“Microsoft All Rules”。

我肯定得到了至少其中一个人的抱怨,我认为他们两个人,过去关于这样的事情,(我认为)这些相同的设置。我错过了什么吗?

“属性”窗格中项目的“可本地化”设置的少量描述显示“默认情况下,如果项目中有一个或多个资源文件,则ReSharper仅突出显示可本地化的项目。”我将“Localizable”设置为“Yes”,而不是“Default”,所以看起来这应该不适用于我(我很确定它在过去的类似情况下不适用于我),但它是一个尚未拥有资源文件的全新项目,因此我决定添加一个以查看它是否有用。它没有 - 问题仍然存在。

我正在使用VS2012和ReSharper Ultimate 10.0.2。我过去使用过这些产品/版本的精确组合,并在这些方面取得了成功。

UPDATE:好像它与Log.Info有关? ReSharper会抱怨以下任何一行:

var blah = "Why no complaint about this nonlocalized string?";

System.Console.WriteLine("Why no complaint about this nonlocalized string?");

会抱怨这个:

Log.Info("Why no complaint about this nonlocalized string?");

有趣的是, 会抱怨这个:

Log.Info("Why no complaint about this nonlocalized string? {0}", blah);

“Log”是一个NLog.Logger,在类中定义如下:

private static readonly Logger Log = LogManager.GetCurrentClassLogger();

1 个答案:

答案 0 :(得分:2)

Log.Info具有[Localizable(false)]属性:  public void Info([Localizable(false)] string message)