如何在与Knowntype属性一起使用的类上使用Obsolete属性时忽略编译器警告

所以我们试图贬低我们现有的一些类,并开始将它们标记为ObsoleteAttribute的废弃,以便它们不再被使用。 预期将KnownType属性与使用Obsolete属性标记的types一起使用并导致编译器警告的事实。 但是,在我们的项目中,我们将警告视为错误,因此忽略警告不是一种select。 有没有一个编译器指令来抑制这个警告?

以下用法会导致编译器警告:

///ProductTemplateDataSet is marked with the Obsolete attribute [KnownType(typeof(ProductTemplateDataSet))] public class EntityCollectionBase : System.Data.DataSet { } 

编辑:我明白使用编译器指令来忽略错误,但这个编译器警告没有一个数字。

使用它可以在违规行之前禁用相应的警告:

 #pragma warning disable 612, 618 

之后重新启用警告:

 #pragma warning restore 612, 618 

奇怪的是,有两个与此相关的警告: CS0612和CS0618 – 一个是[Obsolete] ,另一个是[Obsolete("Message")] 。 去搞清楚…

如果你想避免用#prgrama s胡椒你的代码,试试这个:
在你的csproj文件中,find合适的PropertyGroup元素并添加

 <WarningsNotAsErrors>612,618</WarningsNotAsErrors> 

这是我的一个项目文件的一个片段:

 <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> <DebugSymbols>true</DebugSymbols> <DebugType>full</DebugType> <Optimize>false</Optimize> <OutputPath>bin\Debug\</OutputPath> <DefineConstants>TRACE;DEBUG</DefineConstants> <ErrorReport>prompt</ErrorReport> <WarningLevel>4</WarningLevel> <TreatWarningsAsErrors>true</TreatWarningsAsErrors> <WarningsNotAsErrors>612,618</WarningsNotAsErrors> <NoWarn> </NoWarn> <WarningsAsErrors> </WarningsAsErrors> </PropertyGroup> 

我已经用VS2010,VS2012和VS2013项目成功地使用了它。

你可以用#pragma列出适当的警告号码吗?

#pragma警告(C#参考)

编辑

发现这个,但有点迟了C# – select性地禁止自定义过时的警告