禁用不在规则集中的编译器警告

时间:2014-02-12 07:48:36

标签: c# compiler-warnings suppress-warnings

我的C#应用​​程序使用代码分析规则集Microsoft Managed Recommended Rules。我正在使用一些过时的类,所以我得到警告CS0618。 (我不能替换过时的类,因为它是在第三方API中定义的,所以我必须使用它)

我想通过编辑默认规则集并以新名称保存它来禁用此警告,但CS0618规则不属于此规则集。

所以我有两个问题:

  • 为什么编译器会检查CS0618,尽管它不是所选规则集的一部分?
  • 如何针对每个项目/每个解决方案而不是在每个单独的位置禁用警告?

对于那些好奇的人,为什么我不能简单地修复编译器警告: 见Refactoring XmlSchemaCollection, XmlValidatingReader and ValidationType.XDR to get rid of compiler warning

2 个答案:

答案 0 :(得分:4)

CS0168不是代码分析的一部分 - 它是一个简单的C#编译器警告。这与以后的任何代码分析无关。

要在项目属性中禁用它,请进入项目属性,“构建”选项卡,“错误和警告”部分,“抑制警告”,并指定0168(不是CS0168)。

答案 1 :(得分:1)

我无法相信我会在答案中与Skeet对抗,但是......

我过去曾经有过这个,我有一个包含大量Oracle Dll调用的DataAccess类。不幸的是,MS淘汰了Oracle类,它正在抛出警告。我不喜欢全面压制过时警告的想法,因为它会抑制我们自己的代码中的其他过时,但我们没有时间来解决这个问题(这个类在不同的地方被用于不同的地方)应用程序)。

我所做的是使用#pragma来禁用该类的警告:

#pragma warning disable 612, 618

public class MyWrapper
{
}

#pragma warning enable 612, 618

当然,如果通过代码中的单个点对所有已过时的类进行调用,则这种方法效果最佳,否则您需要在整个位置设置#pragma标志。