我有一个超过500个缺少XML注释警告的项目。我知道我可以删除XML注释特性,或者将空注释片段粘贴到任何地方,但是我更喜欢一种通用的解决方案,即只做一个更改就可以禁用所有此类警告。

我刚才做的是放

///<Summary>
/// 
///</Summary>

or

#pragma warning disable 1591

我只是好奇有没有可能。


当前回答

您还可以修改项目的.csproj文件,在第一个<PropertyGroup>中包含一个<noWarn>1591</noWarn>标记。 原选自Alexandru Bucur的文章

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    ...
    <NoWarn>1591</NoWarn>
  </PropertyGroup>
  ...
</Project>

其他回答

您可以使用.editorconfig文件在每个文件的基础上选择性地禁用此功能-例如,如果您有一个特定的源文件(或多个文件),您可以使用如下内容:

# single file
[IgnoreThisFile.cs]
dotnet_diagnostic.CS1591.severity = none

# multiple files, matching on specific naming convention
[*{Type,Stuff,Things}.cs]
dotnet_diagnostic.CS1591.severity = none

请注意,我在持续管理此警告方面有复杂的经验,但在VS2022的当前版本(17.4.4+)中,它似乎仍然存在。确保.editorconfig在文件夹结构中处于足够“高”的级别,以便适用于所有源文件(或者,根据需要在特定的文件夹级别上使用多个文件)。

Visual Studio 2022:

我建议使用Visual Studio中的.editorconfig文件在所有解决方案中设置一个通用的代码风格。

在这种情况下,只需手动将以下代码添加到.editorconfig文件:

# SA0001: XML comment analysis is disabled due to project configuration
dotnet_diagnostic.SA0001.severity = none

注意:对我来说,从编辑器配置设计器中抑制SA0001不起作用。

文件中只能手动设置规则。

您还可以修改项目的.csproj文件,在第一个<PropertyGroup>中包含一个<noWarn>1591</noWarn>标记。 原选自Alexandru Bucur的文章

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    ...
    <NoWarn>1591</NoWarn>
  </PropertyGroup>
  ...
</Project>

如上所述,总的来说,我认为这些警告不应该被忽视(压制)。总而言之,绕过警告的方法是:

通过改变项目属性来抑制警告>构建>错误和警告>输入1591来抑制警告 添加XML文档标记(GhostDoc非常方便) 通过编译器选项抑制警告 取消选中项目属性>生成>输出中的“XML文档文件”复选框 在各自文件的顶部添加#pragma warning disable 1591,在底部添加#pragma warning restore 1591

这本来是一个评论,但我不能让它符合限制:

我希望只在Reference.cs和WebService导入时禁用它们。实际上,我用宏来处理文件。只需打开文件并执行这个宏(在VS2010中测试):

Sub PragmaWarningDisableForOpenFile()
    DTE.ActiveDocument.Selection.StartOfDocument()
    DTE.ActiveDocument.Selection.NewLine()
    DTE.ActiveDocument.Selection.LineUp()
    DTE.ActiveDocument.Selection.Insert("#pragma warning disable 1591")
    DTE.ActiveDocument.Selection.EndOfDocument()
    DTE.ActiveDocument.Selection.NewLine()
    DTE.ActiveDocument.Selection.Insert("#pragma warning restore 1591")
    DTE.ActiveDocument.Save()
End Sub

真的没有办法自动做到吗?每次自动生成的代码覆盖该文件时,您都必须重新执行此操作。