【问题标题】:Visual Studio: Suppress warnings for all files in a namespace [duplicate]Visual Studio:抑制命名空间中所有文件的警告[重复]
【发布时间】:2019-05-16 09:10:55
【问题描述】:

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

我想禁用特定命名空间上的特定警告(比如说 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")]

我尝试将 Scopetype 更改为 namespacenamespaceanddescendants,但没有成功。

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

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

【问题讨论】:

  • ~T:Project.ViewModels 似乎不是有效的命名空间
  • @ganchito55 我也试过不使用~T,但它不起作用。
  • @AlessandroD'Andria 这将抑制整个项目的警告,我只想抑制一个命名空间。
  • 在这种情况下,suppressmessage 属性对我不起作用。对于那些想要走 MSBUILD 方式的人,这里是链接:lvquoc.blogspot.com/2010/11/… 看起来像一个硬核方法,但看起来很有希望。

标签: c# visual-studio roslyn code-analysis roslyn-code-analysis


【解决方案1】:

您不应该将~T: 用于命名空间,这似乎只用于类型。对于一个使用示例,您可以在the .NET Core code here 中查看它是如何未被用于命名空间的。另外,仅限from the docsnamespace

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

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

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

【讨论】:

  • Target 值的格式是旧的。应该是~N:Project.ViewModels