我正在为 .NET 使用 Common.Logging。当我使用 XXXFormat 函数(如 DebugFormat 或 InfoFormat)之一时,我收到CA1305警告。通过右键单击并说在代码中抑制或添加到项目抑制文件中很容易抑制。我想在 GlobalSuppressions.cs 中添加一行,以禁止所有对 DebugFormat 的调用出现此警告(以及 InfoFormat、TraceFormat 等的单独行)。到目前为止,我不知道该怎么做。当我右键单击警告并选择 Suppress Message -> In Project Suppressions file 时,添加的内容如下:
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Globalization", "CA1305:SpecifyIFormatProvider", MessageId = "Common.Logging.ILog.DebugFormat(System.String,System.Object[])", Scope = "member", Target = "My.Full.Namespace.Class.#MyFunctionName(int)")]
如您所见,抑制创建了一个程序集级属性来抑制消息。在属性本身中,Scope 设置为“member”,Target 设置为命名空间限定的类名“dot”方法签名。这确实抑制了该函数中调用 DebugFormat 的消息,但我想抑制所有调用 DebugFormat 的消息。我已尝试删除 Target 并将 Scope 更改为“模块”(和“程序集”-不确定这是否有效),但对于所有出现的 DebugFormat,我仍然无法抑制此警告。
理想情况下,我想创建一个 GlobalSuppressions.cs 文件,其中至少包含以下条目(或类似条目):
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Globalization", "CA1305:SpecifyIFormatProvider", MessageId = "Common.Logging.ILog.TraceFormat(System.String,System.Object[])", Scope = "module",)]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Globalization", "CA1305:SpecifyIFormatProvider", MessageId = "Common.Logging.ILog.DebugFormat(System.String,System.Object[])", Scope = "module",)]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Globalization", "CA1305:SpecifyIFormatProvider", MessageId = "Common.Logging.ILog.InfoFormat(System.String,System.Object[])", Scope = "module",)]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Globalization", "CA1305:SpecifyIFormatProvider", MessageId = "Common.Logging.ILog.WarnFormat(System.String,System.Object[])", Scope = "module",)]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Globalization", "CA1305:SpecifyIFormatProvider", MessageId = "Common.Logging.ILog.ErrorFormat(System.String,System.Object[])", Scope = "module",)]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Globalization", "CA1305:SpecifyIFormatProvider", MessageId = "Common.Logging.ILog.FatalFormat(System.String,System.Object[])", Scope = "module",)]
有谁知道如何做到这一点?
谢谢。