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

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

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

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

}

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

Ответы [ 3 ]

110 голосов
/ 11 марта 2011

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

#pragma warning disable 612, 618

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

#pragma warning restore 612, 618

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

56 голосов
/ 07 июня 2011

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

5 голосов
/ 11 марта 2011

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

# Прагма предупреждение (C # Reference)

EDIT

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

...