Как игнорировать предупреждение компилятора при использовании атрибута 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.
Ответ 3
Не могли бы вы просто использовать #pragma
, указав соответствующий номер предупреждения?
# предупреждение pragma (ссылка С#)
ИЗМЕНИТЬ
Обнаружено это, но немного поздно С# - выборочно запретить пользовательские устаревшие предупреждения