禁用“名称可以简化”IDE0003修复提示

24

即使在选项中禁用了检查功能,Visual Studio 2017仍然显示了不必要的this限定符的提示。

它是这样的:

(第一行是罪犯,第二行是我希望this总是看起来像的方式。)

将鼠标悬停在灰色的this上并单击灯泡会显示此建议的修复方法: enter image description here

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

“无”是最不严重的选项,但它仍然显示这个令人讨厌的不同颜色。
enter image description here


有没有完全禁用此检查的可能性?

2个回答

30

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

  1. 在项目的引用节点上右键单击分析器,然后选择打开活动规则集 image

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

image

image

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

<CodeAnalysisRuleSet>ConsoleApp9.ruleset</CodeAnalysisRuleSet>


1
我的解决方案中有52个项目,这个数字还会增加。是否有比为每个项目都建立和维护更全面的选项? - DonBoitnott
1
您可以通过目标文件在所有项目中包含一个默认的规则集文件。 - Jonathon Marolf
1
@DonBoitnott - 在寻找如何实现Jonathon所说的内容时,我发现了MSBuild .targets文件。在这里,可以看到“导入元素(MSBuild)”和“如何:在多个项目文件中使用相同的目标”的链接。需要向每个项目的proj文件添加一个“Import”行。因此,直接添加一个引用公共(“..\”)位置上规则集的CodeAnalysisRuleSet行可能会更容易。 - ToolmakerSteve
1
如果您至少使用的是 MSBuild 15,则可以使用 Directory.Build.props 并将其自动导入到所有项目中。 - Jonathon Marolf
1
有没有办法在特定情况下禁用规则,而在其他情况下保留它?例如,我收到一个IDE0002错误“简化成员访问”。当它建议我从MyStaticClass.Member中删除静态类时,我想忽略此规则。这可以做到吗? - pushkin
显示剩余3条评论

4
当前的流程对于.NET Core和.NET Standard项目来说似乎更加复杂。
根据MS VS Docs

如果你有一个.NET Core或.NET Standard项目,流程会有一些不同,因为没有代码分析属性选项卡。 按照步骤复制预定义的规则集到你的项目中,并将其设置为活动规则集。在复制了规则集之后,你可以通过从解决方案资源管理器中打开它来在Visual Studio规则集编辑器中进行编辑。[我强调]

在引用中选择第一个链接,经过一些调查后,最终会带您到代码样式规则选项,该页面告诉您如何添加文件:

在Visual Studio中,您可以生成此文件并将其保存到项目中的工具 > 选项 > 文本编辑器 > [C#或Basic] > 代码风格 > 常规。然后,单击从设置生成.editorconfig文件按钮。

location of "Generate .editorconfig file from settings" button in VS 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在此解释),我认为你就可以放心了[当然,只针对属性 - 根据需要进行编辑]。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接