Compartir a través de


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

Nombre de tipo

UseOnlyApiFromTargetedFramework

Identificador de comprobación

CA1903

Categoría

Microsoft.Portability

Cambio problemático

Problemático: si se produce en la firma de un miembro o tipo externamente visible.

No problemático: si se produce 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 en el marco de destino del proyecto.

Descripción de la regla

Se han incluido nuevos miembros y tipos en los Service Pack 1 y 2 de .NET Framework 2.0, en los Service Pack 1 y 2 de .NET Framework 3.0 y en el Service Pack 1 de .NET Framework 3.5 Los proyectos diseñados para las versiones principales de .NET Framework pueden tomar dependencias involuntariamente en estas nuevas API. Para evitar esta dependencia, esta regla se desencadena cada vez que se usa un miembro o tipo nuevo no incluido de forma predeterminada en la versión de .NET Framework de destino del proyecto.

Dependencias de la versión de .NET Framework de destino y el Service Pack

Cuando la versión de .NET Framework de destino es

Se desencadena cuando se usan miembros presentados 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 versión de .NET Framework de destino de un proyecto, vea Elegir versión de destino o perfil de .NET Framework específico.

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, deberá suprimir la advertencia o desactivar esta regla.

Cuándo suprimir advertencias

No suprima una advertencia de esta regla si no se trata de una dependencia deliberada con respecto al Service Pack especificado. En esta situación, la aplicación podría no ejecutarse en aquellos sistemas donde no esté instalado este Service Pack. Si se trata de una dependencia deliberada, deberá suprimir la advertencia o desactivar esta regla.

Ejemplo

En el siguiente ejemplo se muestra una clase que utiliza el tipo DateTimeOffset que solo está disponible en .NET 2.0 Service Pack 1. Este ejemplo requiere que NET Framework 2.0 se haya seleccionado en la lista desplegable Versión de .NET Framework de destino de 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 previamente reemplazando los usos del tipo DateTimeOffset con 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; }
        }
    }
}

Vea también

Otros recursos

Advertencias de portabilidad

Elegir versión de destino o perfil de .NET Framework específico