【问题标题】:Disable "Name can be simplified" IDE0003 fix hint禁用“名称可以简化”IDE0003 修复提示
【发布时间】:2018-07-29 04:55:16
【问题描述】:

即使在选项中禁用了检查,Visual Studio 2017 也会提示不必要的 this 限定符。

看起来是这样的:

(第一行是罪魁祸首,第二行是我希望this 总是 的样子。)

将鼠标悬停在灰色的 this 上并单击灯泡会显示以下建议的修复方法:

我找不到完全禁用此功能的方法。有时我想要“不必要的”this 限定符,有时我没有,所以我根本不希望 VS 对此发表评论。

“无”是最不严重的选项,但它仍然显示这种烦人的不同颜色。


是否有可能完全禁用此检查?

【问题讨论】:

    标签: c# .net visual-studio-2017 roslyn


    【解决方案1】:

    对于 .NET Core 和 .NET Standard 项目,当前流程看起来更复杂。

    来自MS VS Docs

    如果您有 .NET Core 或 .NET Standard 项目,则该过程会略有不同,因为没有代码分析属性选项卡。 Follow the steps to copy a predefined rule set to your project and set it as the active rule set。复制规则集后,您可以 edit it in the Visual Studio rule set editor 从解决方案资源管理器中打开它。 [强调我的]

    经过一番调查后,获取该引用中的第一个链接最终会将您带到Code style rule options,它最终会告诉您如何添加文件:

    在 Visual Studio 中,您可以在 工具 > 选项 > 文本编辑器 > [C# 或 Basic] > 代码样式 > 常规处生成此文件并将其保存到项目中。然后,点击Generate .editorconfig file from settings按钮。

    注意:这会在您的工具栏下方产生一个微小警告,表明您的解决方案中添加了.editorconfig。选择“是”按钮将其包含在您的解决方案中。

    现在您可以打开和编辑新的.editorconfig 文件了。

    看起来这是“违规”部分:

    # this. and Me. preferences
    dotnet_style_qualification_for_event = false:suggestion
    dotnet_style_qualification_for_field = false:silent
    dotnet_style_qualification_for_method = true:suggestion
    dotnet_style_qualification_for_property = false:suggestion
    

    如果将 dotnet_style_qualification_for_property 更改为 = true:suggestion (explanation here),我认为你是黄金 [当然,至少在属性方面 -- 进行适当的编辑]。

    【讨论】:

      【解决方案2】:

      如果您知道其诊断 ID(在本例中为“IDE0003”),则可以使用规则集文件禁用任何分析

      1. 在您项目的References 节点上,右键单击Analyzers 并选择Open Active Rule Set

      2. 打开规则集编辑器后,只需搜索 IDE0003 并取消选中该复选框。然后保存规则集文件。然后保存项目。

      1. 以下 XML 将添加到您的项目文件中。您可以将此规则集文件添加到您希望禁用此规则的任何项目中。

      <CodeAnalysisRuleSet>ConsoleApp9.ruleset</CodeAnalysisRuleSet>

      【讨论】:

      • 我的解决方案中有 52 个项目,而且这个数字还会增长。有没有比必须为每个人都建立和维护这一点更全面的选择?
      • 您可以通过目标文件在所有项目中包含默认规则集文件
      • @DonBoitnott - 搜索 Jonathon 所说的方法,我找到了MSBuild .targets files。在那里,请参阅链接“导入元素 (MSBuild)”和“如何:在多个项目文件中使用相同的目标”。是否涉及在每个项目的 proj 文件中添加 Import 行。因此,直接添加引用公共 ("..\") 位置中的规则集的 CodeAnalysisRuleSet 行可能同样容易。
      • 如果您至少使用 MSBuild 15,您可以使用 Directory.Build.props 并将其自动导入到您的所有项目中
      • 有没有办法在特定情况下禁用规则并在其他情况下保留它?例如,我收到 IDE0002 错误“简化成员访问”。当它建议我从MyStaticClass.Member 中删除静态类时,我想忽略此规则。这个可以吗?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多