CA1903 : Utiliser uniquement l'API à partir du Framework cible

Élément Valeur
ID de la règle CA1903
Category Microsoft.Portability
Modification avec rupture Cassant : en cas de déclenchement par rapport à la signature d’un membre ou type visible en externe.

Non cassant : en cas de déclenchement dans le corps d’une méthode.

Cause

Un membre ou type utilise un membre ou type qui a été introduit dans un Service Pack qui ne figurait pas dans la version cible de .Net Framework du projet.

Notes

Cette règle est déconseillée. Pour plus d’informations, consultez Règles dépréciées.

Description de la règle

Les 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 principales versions du .NET Framework peuvent involontairement adopter des dépendances vis-à-vis de ces nouvelles API. Pour éviter ces dépendances, cette règle se déclenche lors de l’utilisation de tous les nouveaux membres et types qui n’étaient pas inclus par défaut avec la version cible de .Net Framework du projet.

Dépendances de la version cible de .Net Framework et du Service Pack

Élément Valeur
Quand la version cible de .Net Framework est : Se déclenche lors de l’utilisation des 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
.NET Framework 4 N/A

Pour modifier la version cible de .Net Framework d’un projet, consultez Guide pratique pour cibler une version de .NET.

Comment corriger les violations

Pour supprimer la dépendance vis-à-vis du Service Pack, supprimez toutes les utilisations 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 pas un avertissement issu de cette règle s’il ne s’agit pas d’une dépendance délibérée vis-à-vis du Service Pack spécifié. Dans ce cas, votre application risque de ne pas s’exécuter sur les systèmes sur lesquels ce Service Pack n’est pas installé. Supprimez l’avertissement ou désactivez cette règle s’il s’agit d’une dépendance délibérée.

Exemple

L’exemple suivant montre une classe qui utilise le type DateTimeOffset uniquement disponible dans .NET 2.0 Service Pack 1. Cet exemple nécessite que .NET Framework 2.0 ait été sélectionné dans la liste déroulante de la version cible de .Net Framework dans les 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 décrite précédemment 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