N'utiliser que l'API du Framework cible
Mise à jour : novembre 2007
TypeName |
UseOnlyApiFromTargetedFramework |
CheckId |
CA1903 |
Category |
Microsoft.Portability |
Modification avec rupture |
Avec rupture – En cas de déclenchement sur la signature d'un type ou d'un membre visible de l'extérieur. Sans rupture – En cas de déclenchement sur le corps d'une méthode. |
Cause
Un membre ou un type utilise un membre ou un type qui a été introduit dans un Service Pack qui ne figurait pas dans le Framework cible du projet.
Description de la règle
De nouveaux membres et types ont été inclus dans .NET Framework 2.0 Service Pack 1 et 2, .NET Framework 3.0 Service Pack 1 et 2 et .NET Framework 3.5 Service Pack 1. Les projets qui ciblent les versions principales du .NET Framework risquent de devenir involontairement dépendants par rapport à ces nouvelles API. Pour empêcher toute dépendance, cette règle se déclenche en cas d'utilisation de nouveaux membres et types qui ne figurent pas par défaut dans la version cible de .Net Framework pour le projet.
Version cible de .Net Framework et dépendances par rapport au Service Pack
Lorsque la version cible de .Net Framework est |
Se déclenche en cas d'utilisation de membres introduits dans |
.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 |
Pour modifier la version cible de .Net Framework d'un projet, consultez Ciblage d'un .NET Framework spécifique.
Comment corriger les violations
Pour supprimer la dépendance par rapport au Service Pack, supprimez toute utilisation du nouveau membre ou type. S'il s'agit d'une dépendance délibérée, supprimez l'avertissement ou désactivez cette règle.
Quand supprimer les avertissements
Ne supprimez aucun avertissement de cette règle lorsqu'il ne s'agit pas d'une dépendance délibérée par rapport au Service Pack spécifié. Sinon, votre application risque de ne pas s'exécuter sur les systèmes si ce Service Pack n'y est pas installé. Supprimez l'avertissement ou désactivez cette règle lorsqu'il s'agit d'une dépendance délibérée.
Exemple
L'exemple suivant affiche une classe qui utilise le type DateTimeOffset qui est uniquement disponible dans le .NET 2.0 Service Pack 1. Dans cet exemple, le .NET Framework 2.0 doit avoir été sélectionné dans la liste déroulante Framework cible des propriétés du projet.
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; }
}
}
}
L'exemple suivant corrige la violation précédemment décrite en remplaçant les utilisations du type DateTimeOffset par le type 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; }
}
}
}