Jac*_*hea 53 .net c# attributes compiler-warnings
因此,我们尝试弃用一些现有的类,并开始使用ObsoleteAttribute将它们标记为过时,以便它们将停止使用.使用具有使用Obsolete属性标记的类型的KnownType属性并导致编译器警告的事实是预期的.但是,在我们的项目中,我们将警告视为错误,因此忽略警告不是一种选择.是否有编译器指令来抑制此警告?
以下用法会导致编译器警告:
///ProductTemplateDataSet is marked with the Obsolete attribute
[KnownType(typeof(ProductTemplateDataSet))]
public class EntityCollectionBase : System.Data.DataSet
{
}
Run Code Online (Sandbox Code Playgroud)
编辑:我理解使用编译器指令来忽略错误,但是这个编译器警告没有数字.
Jor*_*dão 112
使用此选项可以在违规行之前禁用相应的警告:
#pragma warning disable 612, 618
Run Code Online (Sandbox Code Playgroud)
然后重新启用警告:
#pragma warning restore 612, 618
Run Code Online (Sandbox Code Playgroud)
奇怪的是,有2个警告与此相关:CS0612和CS0618 - 一个用于[Obsolete]
,另一个用于[Obsolete("Message")]
.去搞清楚...
Met*_*ght 57
如果你想避免使用#prgrama
s 代码,请尝试这样:
在你的csproj文件中,找到合适的PropertyGroup
元素并添加
<WarningsNotAsErrors>612,618</WarningsNotAsErrors>
Run Code Online (Sandbox Code Playgroud)
这是我的一个项目文件的片段:
<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>
Run Code Online (Sandbox Code Playgroud)
我已经成功地使用了VS2010,VS2012和VS2013项目.