CA1903: использовать API-интерфейс только из целевой исполняющей среды

Товар Значение
Идентификатор правила CA1903
Категория Microsoft.Portability
Критическое изменение Критическое — при срабатывании сигнатуры внешнего видимого элемента или типа.

Non-Breaking — при срабатывании в тексте метода.

Причина

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

Примечание.

Это правило устарело. Дополнительные сведения см. в разделе "Устаревшие правила".

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

Новые члены и типы были включены в платформа .NET Framework 2.0 с пакетом обновления 1 и 2, платформа .NET Framework 3.0 с пакетом обновления 1 и 2 и платформа .NET Framework 3.5 с пакетом обновления 1 ( SP1). Проекты, предназначенные для основных версий платформа .NET Framework, могут непреднамеренно принимать зависимости от этих новых API. Чтобы предотвратить эту зависимость, это правило запускает использование новых элементов и типов, которые не были включены по умолчанию в целевую платформу проекта.

Целевые платформы и зависимости пакета обновления

Товар Значение
Если целевая платформа имеет значение Пожары по использованию элементов, представленных в
.NET Framework 2.0 платформа .NET Framework 2.0 с пакетом обновления 1 (SP1) платформа .NET Framework 2.0 с пакетом обновления 2 (SP2)
.NET Framework 3.0 платформа .NET Framework 2.0 с пакетом обновления 1 (SP1), платформа .NET Framework 2.0 с пакетом обновления 2 (SP2), платформа .NET Framework 3.0 с пакетом обновления 1 (SP1), платформа .NET Framework 3.0 с пакетом обновления 2 (SP2)
.NET Framework 3.5 .NET Framework 3.5 SP1
.NET Framework 4 Н/П

Сведения об изменении целевой платформы проекта см. в статье "Практическое руководство. Назначение версии .NET".

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

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

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

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

Пример

В следующем примере показан класс, использующий тип DateTimeOffset, доступный только в пакете обновления 1 для .NET 2.0. В этом примере требуется, чтобы платформа .NET Framework 2.0 был выбран в раскрывающемся списке Target Framework в свойствах проекта.

using System;
namespace Samples
{
    public class LibraryBook
    {
        private readonly string _Title;
        private DateTimeOffset _CheckoutDate;   // Violates this rule
        public LibraryBook(string title)
        {
            _Title = title;
        }
        public string Title
        {
        get { return _Title; }
        }
        public DateTimeOffset CheckoutDate      // Violates this rule
        {
            get { return _CheckoutDate; }
            set { _CheckoutDate = value; }
        }
    }
}

В следующем примере исправлено ранее описанное нарушение путем замены использования типа DateTimeOffset типом DateTime.

using System;
namespace Samples
{
    public class LibraryBook
    {
        private readonly string _Title;
        private DateTime _CheckoutDate;
        public LibraryBook(string title)
        {
            _Title = title;
        }
        public string Title
        {
            get { return _Title; }
        }
        public DateTime CheckoutDate
        {
            get { return _CheckoutDate; }
            set { _CheckoutDate = value; }
        }
    }
}

См. также