web-dev-qa-db-ja.com

Knowntype属性で使用されるクラスでObsolete属性を使用する場合、コンパイラの警告を無視する方法

そのため、既存のクラスの一部を廃止しようとし、ObsoleteAttributeを使用してそれらのクラスを廃止とマークし始め、使用を停止します。 Obsolete属性でマークされたタイプでKnownType属性を使用し、コンパイラ警告を引き起こしているという事実が予想されます。ただし、このプロジェクトでは、警告をエラーとして扱うため、警告を無視することはできません。この警告を抑制するコンパイラ指令はありますか?

次の使用法では、コンパイラの警告が発生します。

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

}

編集:コンパイラ指令を使用してエラーを無視することは理解していますが、このコンパイラ警告には数字がありません。

53
Jace Rhea

これを使用して、問題のある行の直前に対応する警告を無効にします。

#pragma warning disable 612, 618

そして、その後の警告を再度有効にします。

#pragma warning restore 612, 618

不思議なことに、これに関連する2つの警告があります: CS0612 および CS0618 -1つは[Obsolete]用で、もう1つは[Obsolete("Message")]用です。図を行く...

111
Jordão

コードを#prgramasでペッパー化することを避けたい場合は、これを試してください:
csprojファイルで、適切なPropertyGroup要素を見つけて追加します

<WarningsNotAsErrors>612,618</WarningsNotAsErrors>

私のプロジェクトファイルの1つからの抜粋です。

<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プロジェクトで正常に使用しました。

57
MetaFight

単に#pragma適切な警告番号をリストしますか?

#pragma warning(C#リファレンス)

[〜#〜] edit [〜#〜]

これを見つけましたが、少し遅れています C#-廃止されたカスタム警告を選択的に抑制します

5
MattC