所以我们试图弃用一些现有的类,并开始使用ObsoleteAttribute将它们标记为过时,因此它们将停止使用。使用具有使用Obsolete属性标记的类型的KnownType属性并导致编译器警告的事实是预期的。但是,在我们的项目中,我们将警告视为错误,因此忽略警告不是一种选择。是否有编译器指令来抑制此警告?
以下用法会导致编译器警告:
///ProductTemplateDataSet is marked with the Obsolete attribute
[KnownType(typeof(ProductTemplateDataSet))]
public class EntityCollectionBase : System.Data.DataSet
{
}
编辑:我理解使用编译器指令来忽略错误,但是这个编译器警告没有数字。
答案 0 :(得分:109)
使用此选项可在违规行之前禁用相应的警告:
#pragma warning disable 612, 618
然后重新启用警告:
#pragma warning restore 612, 618
奇怪的是,有2个与此相关的警告:CS0612和CS0618 - 一个用于[Obsolete]
,另一个用于[Obsolete("Message")]
。去图......
答案 1 :(得分:55)
如果您想避免使用#prgrama
s代码,请尝试以下操作:
在csproj文件中,找到相应的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项目。
答案 2 :(得分:5)
您是否可以使用#pragma
列出相应的警告号码?
#pragma warning (C# Reference)
修改强>
找到了这个但是有点晚了C# - Selectively suppress custom Obsolete warnings