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

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

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

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

    }

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

Ответ 1

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

#pragma warning disable 612, 618

И повторно запустите предупреждения после него:

#pragma warning restore 612, 618

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

Ответ 2

Если вы хотите избежать перекоса кода с помощью #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.