Я использую Common.Logging для .NET . Когда я использую одну из функций XXXFormat, такую как DebugFormat или InfoFormat, я получаю предупреждение CA1305 . Это достаточно просто подавить, щелкнув правой кнопкой мыши и сказав подавить в коде или добавить в файл подавлений проекта. Я хотел бы добавить одну строку в GlobalSuppressions.cs, чтобы подавить все вхождения этого предупреждения для всех вызовов DebugFormat (и отдельных строк для InfoFormat, TraceFormat и т. Д.). Пока я не могу понять, как это сделать. Когда я щелкаю правой кнопкой мыши предупреждение и выбираю Подавить сообщение -> В файле Подавления проекта, вот что добавляется:
[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 - сигнатура метода точечного имени класса с указанием пространства имен. Это действительно подавляет сообщение для вызовов DebugFormat в этой функции, но я хочу подавить сообщение для всех вызовов DebugFormat. Я попытался удалить Target и изменить Scope на «module» (и «assembly» - не уверен, если это допустимо), но я все еще не могу отключить это предупреждение для всех вхождений 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",)]
Кто-нибудь знает, как это сделать?
Спасибо.