CA1903 : Utiliser uniquement l'API à partir du Framework cibleCA1903: Use only API from targeted framework

TypeNameTypeName UseOnlyApiFromTargetedFrameworkUseOnlyApiFromTargetedFramework
CheckIdCheckId CA1903CA1903
CategoryCategory Microsoft.PortabilityMicrosoft.Portability
Modification avec ruptureBreaking Change Avec rupture - lorsque déclenchée par rapport à la signature d’un type ou un membre extérieurement visible.Breaking - when fired against the signature of an externally visible member or type.

Sans rupture - lorsqu’il est déclenché dans le corps d’une méthode.Non-Breaking - when fired in the body of a method.

CauseCause

Un membre ou un type utilise un membre ou un type qui a été introduit dans un service pack qui n’était pas inclus dans le framework ciblé du projet.A member or type is using a member or type that was introduced in a service pack that was not included with the project's targeted framework.

Description de la règleRule description

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.New members and types were included in .NET Framework 2.0 Service Pack 1 and 2, .NET Framework 3.0 Service Pack 1 and 2, and .NET Framework 3.5 Service Pack 1. Les projets qui ciblent les versions principales du .NET Framework peuvent involontairement prendre des dépendances sur ces nouvelles API.Projects that target the major versions of the .NET Framework can unintentionally take dependencies on these new APIs. Pour éviter cette dépendance, cette règle se déclenche sur les utilisations de nouveaux membres et types qui n’étaient pas incluses par défaut avec le framework cible du projet.To prevent this dependency, this rule fires on usages of any new members and types that were not included by default with the project's target framework.

Framework cible et les dépendances du Service PackTarget Framework and Service Pack Dependencies

Lorsque le framework cible estWhen target framework is Se déclenche sur l’utilisation de membres introduits dansFires on usages of members introduced in
.NET Framework 2.0.NET Framework 2.0 .NET framework 2.0 SP1, .NET Framework 2.0 SP2.NET Framework 2.0 SP1, .NET Framework 2.0 SP2
.NET Framework 3.0.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 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 .NET Framework 3.5 SP1.NET Framework 3.5 SP1
.NET Framework 4.NET Framework 4 N/AN/A

Pour modifier le framework cible d’un projet, consultez ciblant une Version spécifique du .NET Framework.To change a project's target framework, see Targeting a Specific .NET Framework Version.

Comment corriger les violationsHow to fix violations

Pour supprimer la dépendance sur le service pack, supprimez toutes les utilisations du nouveau membre ou type.To remove the dependency on the service pack, remove all usages of the new member or type. S’il s’agit d’une dépendance délibérée, supprimez l’avertissement ou désactiver cette règle.If this is a deliberate dependency, either suppress the warning or turn off this rule.

Quand supprimer les avertissementsWhen to suppress warnings

Ne supprimez pas un avertissement de cette règle si ce n’est pas une dépendance délibérée sur le service pack spécifié.Do not suppress a warning from this rule if this was not a deliberate dependency on the specified service pack. Dans ce cas, votre application peut échouer à s’exécuter sur les systèmes sans ce service pack installé.In this situation, your application might fail to run on systems without this service pack installed. Supprimer l’avertissement ou de désactiver cette règle s’il s’agissait d’une dépendance délibérée.Suppress the warning or turn off this rule if this was a deliberate dependency.

ExempleExample

L’exemple suivant montre une classe qui utilise le type DateTimeOffset est uniquement disponible dans .NET 2.0 Service Pack 1.The following example shows a class that uses the type DateTimeOffset that is only available in .NET 2.0 Service Pack 1. Cet exemple nécessite que .NET Framework 2.0 a été sélectionné dans la liste déroulante Framework cible dans les propriétés du projet.This example requires that .NET Framework 2.0 has been selected in the Target Framework drop-down list in the Project properties.

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

ExempleExample

L’exemple suivant corrige la violation précédemment décrite en remplaçant les utilisations du type DateTimeOffset par le type DateTime.The following example fixes the previously described violation by replacing usages of the DateTimeOffset type with the DateTime type.

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 aussiSee also