Compartir a través de


Usar solo API de la versión de .Net Framework de destino

Actualización: noviembre 2007

     Nombre de tipo

UseOnlyApiFromTargetedFramework

Identificador de comprobación

CA1903

Category

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.

Motivo

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 destinados a las versiones principales de .NET Framework pueden incluir, involuntariamente, dependencias con respecto a 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 el marco de destino del proyecto.

Dependencias del marco de destino y el Service Pack

Cuando el marco 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

Para cambiar el marco del destino de un proyecto, vea Especificar una versión concreta de .NET Framework.

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 ejemplo siguiente se muestra una clase que utiliza el tipo DateTimeOffset que únicamente está disponible en .NET 2.0 Service Pack 1. Para el ejemplo se necesita que .NET Framework 2.0 se haya seleccionado en la lista desplegable Marco de trabajo 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 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

Especificar una versión concreta de .NET Framework