CA1014: помечайте сборки атрибутом CLSCompliantAttribute

Свойство Значение
Идентификатор правила CA1014
Заголовок Отметьте сборки с использованием CLSCompliantAttribute
Категория Проектирование
Исправление является критическим или не критическим неразрывный
Включен по умолчанию в .NET 10 Нет
Применимые языки C# и Visual Basic

Причина

К сборке не применен атрибут System.CLSCompliantAttribute.

Описание правила

Спецификация среды CLS определяет ограничения по именованию, типам данных и правилам, которым должны соответствовать сборки, предназначенные для использования в нескольких языках программирования. Хороший дизайн требует, чтобы во всех сборках явно указывалась совместимость с CLS с помощью атрибута CLSCompliantAttribute. Если этот атрибут у сборки отсутствует, сборка не совместима.

CLS-совместимая сборка может включать типы или члены типов, которые несовместимы.

Устранение нарушений

Чтобы устранить нарушение этого правила, добавьте атрибут в сборку. Вместо того, чтобы помечать всю сборку как несоответствующую, следует определить, какой тип или члены типа не соответствуют требованиям, и пометить только эти элементы. По возможности вы должны предоставить CLS-соответствующую альтернативу для несовместимых компонентов, чтобы как можно более широкий круг пользователей имел доступ ко всем функциональным возможностям вашей сборки.

Когда лучше отключить предупреждения

Для этого правила отключать вывод предупреждений не следует. Если вы не хотите, чтобы сборка была совместимой, примените атрибут и задайте для него значение false.

Отключение предупреждений

Если вы просто хотите отключить одно нарушение, добавьте директивы препроцессора в исходный файл, чтобы отключить и повторно включить правило.

#pragma warning disable CA1014
// The code that's violating the rule is on this line.
#pragma warning restore CA1014

Чтобы отключить правило для файла, папки или проекта, задайте его серьезность none в файле конфигурации.

[*.{cs,vb}]
dotnet_diagnostic.CA1014.severity = none

Дополнительные сведения см. в разделе Практическое руководство. Скрытие предупреждений анализа кода.

Пример

В следующем примере показана сборка с примененным атрибутом System.CLSCompliantAttribute, который объявляет ее CLS-совместимой.

[assembly:CLSCompliant(true)]
namespace DesignLibrary {}
<assembly:CLSCompliant(true)>
Namespace DesignLibrary
End Namespace

См. также