CA1903: Usar solo API de la versión de .NET Framework de destino

Elemento Valor
RuleId CA1903
Category Microsoft.Portability
Cambio importante Importante: cuando se desencadena con la firma de un miembro o tipo visible externamente.

No importante: cuando se desencadena en el cuerpo de un método.

Causa

Un miembro o tipo utiliza un miembro o tipo que se introdujo en un Service Pack no incluido junto con la plataforma de destino del proyecto.

Nota

Esta regla está en desuso. Para más información, consulte Reglas en desuso.

Descripción de la regla

Los nuevos miembros y tipos se incluyeron en .NET Framework 2.0 Service Pack 1 y 2, .NET Framework 3.0 Service Pack 1 y 2, y .NET Framework 3.5 Service Pack 1. Los proyectos que tienen como destino las versiones principales de .NET Framework pueden tomar dependencias involuntariamente en estas nuevas API. Para evitar esta dependencia, esta regla se activa en los usos de los nuevos miembros y tipos que no se incluyeron de forma predeterminada con la plataforma de destino del proyecto.

Plataforma de destino y dependencias de Service Pack

Elemento Valor
Cuando la plataforma de destino es Se activa en los usos de los miembros introducidos en
.NET Framework 2.0 .NET Framework 2.0 SP1, .NET Framework 2.0 SP2
.NET Framework 3.0 .NET Framework 2.0 SP1, .NET Framework 2.0 SP2, .NET Framework 3.0 SP1, .NET Framework 3.0 SP2
.NET Framework 3.5 .NET Framework 3.5 SP1
.NET Framework 4 N/D

Para cambiar la plataforma de destino de un proyecto, consulte Procedimiento: Establecimiento de como destino una versión de .NET.

Cómo corregir infracciones

Para quitar la dependencia del Service Pack, quite todos los usos del nuevo miembro o tipo. Si se trata de una dependencia deliberada, suprima la advertencia o desactive esta regla.

Cuándo suprimir las advertencias

No suprima una advertencia de esta regla si no era una dependencia deliberada del Service Pack especificado. En esta situación, es posible que la aplicación no se ejecute en sistemas sin este Service Pack instalado. Suprima la advertencia o desactive esta regla si se trata de una dependencia deliberada.

Ejemplo

En el ejemplo siguiente se muestra una clase que usa el tipo DateTimeOffset que solo está disponible en .NET 2.0 Service Pack 1. En este ejemplo se requiere que .NET Framework 2.0 se haya seleccionado en la lista desplegable Plataforma de destino en las propiedades del proyecto.

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; }
        }
    }
}

En el ejemplo siguiente se corrige la infracción descrita anteriormente reemplazando los usos del tipo DateTimeOffset por el tipo 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; }
        }
    }
}

Consulte también