Visual Studio:禁止对命名空间中的所有文件发出警告

fhn*_*eer 6 c# code-analysis visual-studio roslyn roslyn-code-analysis

我的项目中有以下命名空间。

在此处输入图片说明

我想禁用特定命名空间上的特定警告(比如 Project.ViewModels)。我可以通过在GlobalSuppression.cs

[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Formatting", "RCS1057:Add empty line between declarations.", Justification = "<Pending>", Scope = "type", Target = "~T:Project.ViewModels.MainViewModel.cs")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Formatting", "RCS1057:Add empty line between declarations.", Justification = "<Pending>", Scope = "type", Target = "~T:Project.ViewModels.TreeViewModel.cs")]
Run Code Online (Sandbox Code Playgroud)

我试图Scopetype改为namespacenamespaceanddescendants但没有奏效。

[assembly: SuppressMessage("Formatting", "RCS1057:Add empty line between declarations.", Justification = "<Pending>", Scope = "namespace", Target = "~T:Project.ViewModels")]
Run Code Online (Sandbox Code Playgroud)

知道如何解决这个问题吗?我正在使用 Visual Studio 2017。

Joe*_*l B 9

您不应该使用~T:for 命名空间,这似乎仅适用于类型。对于使用示例,您可以在此处查看 .NET Core 代码中的命名空间未使用它的情况。此外,仅来自文档 namespace

禁止针对命名空间本身发出警告。它不会抑制针对命名空间内类型的警告,如下所示:

根据您的文件层次结构,您可能希望使用namespaceanddescendants如下所示的方法:

[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Formatting", "RCS1057:Add empty line between declarations.", Justification = "<Pending>", Scope = "namespaceanddescendants", Target = "Project.ViewModels")]
Run Code Online (Sandbox Code Playgroud)

  • “目标”值的格式是旧的。它应该是“~N:Project.ViewModels”。 (2认同)