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

Свойство Значение
Идентификатор правила CA1014
Заголовок Пометьте сборки с помощью CLSCompliantAttribute
Категория Проектирование
Исправление является критическим или не критическим Не критическое
Включен по умолчанию в .NET 8 No

Причина

К сборке не применен атрибут 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

См. также