Как игнорировать предупреждение компилятора при использовании устаревшего атрибута в классе, используемом с атрибутом Knowntype

Поэтому мы пытаемся объявить устаревшими некоторые из существующих классов и начали помечать их как устаревшие с помощью атрибута ObsoleteAttribute, чтобы они перестали использоваться. Ожидается тот факт, что использование атрибута KnownType с типом, который помечен атрибутом "Устарел" и вызывает предупреждение компилятора. Однако в нашем проекте предупреждения рассматриваются как ошибки, поэтому игнорирование предупреждения невозможно. Существует ли директива компилятора для подавления этого предупреждения?

Следующее использование вызывает предупреждение компилятора:

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

}

Изменить: я понимаю, с помощью директив компилятора игнорировать ошибки, но это предупреждение компилятора не имеет номера.

3 ответа

Решение

Используйте это, чтобы отключить соответствующие предупреждения непосредственно перед ошибочной строкой:

#pragma warning disable 612, 618

И включите предупреждения после этого:

#pragma warning restore 612, 618

Как ни странно, есть два предупреждения, связанных с этим: CS0612 и CS0618 - одно для [Obsolete] а другой для [Obsolete("Message")], Пойди разберись...

Если вы хотите избежать того, чтобы ваш код #prgramas, попробуйте это:
В вашем файле 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.

Не могли бы вы просто использовать #pragma перечислить соответствующий номер предупреждения?

#pragma warning (C# Reference)

РЕДАКТИРОВАТЬ

Нашел это, но уже немного поздно C# - выборочно подавить пользовательские устаревшие предупреждения

Другие вопросы по тегам