如何在与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性地禁止自定义过时的警告