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
Elegir versión de destino o perfil de .NET Framework específico