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