web-dev-qa-db-fra.com

Comment ignorer l'avertissement du compilateur lors de l'utilisation de l'attribut obsolète sur une classe utilisée avec un attribut Knowntype

Nous essayons donc de déprécier certaines de nos classes existantes et avons commencé à les marquer comme obsolètes avec ObsoleteAttribute afin qu'elles cessent d'être utilisées. Le fait que l'utilisation de l'attribut KnownType avec un type marqué avec l'attribut obsolète et provoque un avertissement du compilateur est attendu. Cependant, dans notre projet, nous avons des avertissements traités comme des erreurs, donc ignorer l'avertissement n'est pas une option. Existe-t-il une directive de compilation pour supprimer cet avertissement?

L'utilisation suivante provoque un avertissement du compilateur:

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

}

Edit: je comprends l'utilisation des directives du compilateur pour ignorer les erreurs, mais cet avertissement du compilateur n'a pas de nombre.

53
Jace Rhea

Utilisez-le pour désactiver les avertissements correspondants juste avant la ligne incriminée:

#pragma warning disable 612, 618

Et réactivez les avertissements après:

#pragma warning restore 612, 618

Curieusement, il y a 2 avertissements liés à cela: CS0612 et CS0618 - l'un est pour [Obsolete] Et l'autre pour [Obsolete("Message")] . Allez comprendre...

111
Jordão

Si vous voulez éviter d'avoir à poivrer votre code avec #prgramas, essayez ceci:
Dans votre fichier csproj, recherchez l'élément PropertyGroup approprié et ajoutez

<WarningsNotAsErrors>612,618</WarningsNotAsErrors>

voici un extrait d'un de mes fichiers de projet:

<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>

J'ai utilisé cela avec succès avec les projets VS2010, VS2012 et VS2013.

57
MetaFight

Pourriez-vous simplement utiliser un #pragma répertorier le numéro d'avertissement approprié?

# avertissement pragma (référence C #)

[~ # ~] modifier [~ # ~]

J'ai trouvé ça mais c'est un peu tard C # - Suppression sélective des avertissements obsolètes personnalisés

5
MattC