Ответ 1
Вы можете отчасти добиться этого, но это своего рода хак. Что вы можете сделать, украсит ваши методы ведения журнала с помощью ConditionalAttribute, используя ReSharper Внешние аннотации.
Аннотации используются в ReSharper почти повсеместно, так как известно, что серая строка Debug.WriteLine
в Release, например, так как строки Debug.Write...
украшены атрибутом [Conditional("DEBUG")]
.
Что вы можете сделать, так это обмануть, заставив ReSharper подумать, что такой условный метод существует в ваших методах регистрации. Вы можете сделать это, применив этот атрибут извне через XML.
Я написал о том, как это сделать в моем блоге, вот как вы могли это сделать:
- Создайте файл с именем YourLogger.ExternalAnnotations.xml, например. NLog.ExternalAnnotations.xml и поместите его рядом с вашей сборкой журнала.
- Добавьте следующее:
<assembly name="NLog"> <member name="M:NLog.Logger.Info(System.String)"> <attribute ctor="M:System.Diagnostics.ConditionalAttribute.#ctor(System.String)"> <argument>LOG</argument> </attribute> </member> <member name="M:NLog.Logger.Debug(System.String)"> <attribute ctor="M:System.Diagnostics.ConditionalAttribute.#ctor(System.String)"> <argument>LOG</argument> </attribute> </member> </assembly>
Для каждого метода, который вы хотите "серого", вам нужно добавить блок <member>
с именем XML-Doc ID метода. В ReSharper 8 EAP есть опция Скопировать XML-Doc ID в буфер обмена, расположенную в меню ReSharper Изменить.
Это существенно заставляет механизм ReSharper мыслить там [Conditional("LOG")]
, определенный в метаданных типа регистратора.
После того, как вы добавили все нужные методы, просто перезагрузите решение. Вы должны получить то, что ищете (вроде... как я уже сказал, это взломать:))