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 - lorsque déclenchée 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 la version du projet cible.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, soit supprimer l’avertissement ou désactivez cette règle.If this is a deliberate dependency, either suppress the warning or turn this rule off.

Quand supprimer les avertissementsWhen to Suppress Warnings

Ne supprimez aucun avertissement de cette règle s’il ne s’agit pas d’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 risque d’échouer à exécuter sur les systèmes où ce service pack installé.In this situation, your application might fail to run on systems without this service pack installed. Supprimer l’avertissement ou désactivez cette règle s’il s’agit d’une dépendance délibérée.Suppress the warning or turn this rule off if this was a deliberate dependency.

ExempleExample

L’exemple suivant montre une classe qui utilise le type DateTimeOffset qui 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 requiert que .NET Framework 2.0 a été sélectionné dans la liste déroulante de cible de .NET Framework 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 résout 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

Les avertissements de portabilité ciblant une Version spécifique de .NET FrameworkPortability Warnings Targeting a Specific .NET Framework Version