Partager via


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

Voir aussi

Autres ressources

Avertissements de portabilité

Ciblage d'un .NET Framework spécifique