gpt4 book ai didi

c# - 使用 ReSharper 将日志记录代码灰显

转载 作者:可可西里 更新时间:2023-11-01 08:27:30 25 4
gpt4 key购买 nike

是否可以使用 ReSharper 将有用但臃肿的代码灰显?例如,当我想添加详细的日志记录时,最好让功能代码在日志记录代码周围突出显示。

我曾尝试使用 ReSharper 的模式目录搜索来匹配代码中的模式并以灰色突出显示它们,但它仅支持提示、建议、警告和错误。

我正在寻找类似于 Debug.WriteLine 在 Release 模式下的显示方式的东西,尽管我不想将代码编译出来。

最佳答案

您可以在某种程度上实现这一点,但这有点像 hack。您可以做的是用 ConditionalAttribute 装饰您的日志记录方法。 ,使用 ReSharper 的 External Annotations .

注释在 ReSharper 中几乎无处不在,这就是它如何知道将 Debug.WriteLine 变灰的原因Release 中的行,例如,自 Debug.Write...线条装饰有 [Conditional("DEBUG")]属性。

您可以做的是作弊,让 ReSharper 认为记录器的方法中存在这样的条件方法。您可以通过 XML 在外部应用此属性来实现。

我在 my blog 中写过关于做这样的事情,这是您可以执行此操作的方法:

  1. 创建一个名为 YourLogger.ExternalAnnotations.xml 的文件,例如NLog.ExternalAnnotations.xml 并将其放在您的记录器程序集旁边。
  2. 添加以下内容:
<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 名称的 block 。在 ReSharper 8 EAP 中,有一个选项将 XML-Doc ID 复制到剪贴板,位于 ReSharper 的编辑菜单下。

这基本上会导致 ReSharper 的引擎认为有一个 [Conditional("LOG")]在记录器的类型元数据中定义。

添加完所有需要的方法后,只需重新加载解决方案即可。你应该得到你正在寻找的东西(有点......就像我说的,这是一个 hack :))

ReSharper hackery

关于c# - 使用 ReSharper 将日志记录代码灰显,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17000131/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com