Cibler plusieurs versions et plateformes de framework
À l’aide de MSBuild, vous pouvez compiler une application pour s’exécuter sur une des versions de .NET Framework et sur l’une de plusieurs plateformes système. Par exemple, vous pouvez compiler une application à exécuter sur .NET Framework 2.0 sur une plateforme 32 bits et compiler la même application à exécuter sur .NET Framework 4.5 sur une plateforme 64 bits.
Remarque
Cet article décrit un type plus ancien de multitargeting qui s’applique aux builds .NET Framework dans lesquelles un projet ne peut cibler qu’un seul framework et une seule plateforme à la fois. Dans .NET Core et .NET 5 et versions ultérieures, vous pouvez utiliser un type plus récent de multitargeting à l’aide de la propriété TargetFrameworks
(plural) dans un fichier projet. Lorsque vous générez avec dotnet build
ou des commandes .NET CLI similaires, ou avec Visual Studio après le rechargement du projet, votre build utilise le type plus récent de multitargeting, dans lequel plusieurs builds se produisent, une fois pour chaque framework cible répertorié. Consultez Cadres cibles.
Voici quelques-unes des fonctionnalités du ciblage MSBuild :
Vous pouvez développer une application qui cible une version antérieure du .NET Framework, par exemple, les versions 2.0, 3.5 ou 4.
Vous pouvez cibler un framework autre que .NET Framework, par exemple, Silverlight Framework.
Vous pouvez cibler un profil d’infrastructure , qui est un sous-ensemble prédéfini d’une infrastructure cible.
Si un Service Pack pour la version actuelle du .NET Framework est publié, vous pouvez le cibler.
Le ciblage MSBuild garantit qu’une application utilise uniquement les fonctionnalités disponibles dans l’infrastructure et la plateforme ciblées.
Infrastructure cible et plateforme
Un framework cible est la version du .NET Framework sur laquelle un projet est conçu pour s’exécuter, et une plateforme cible est la plateforme système sur laquelle le projet est conçu pour s’exécuter. Par exemple, vous pouvez cibler une application .NET Framework 2.0 pour s’exécuter sur une plateforme 32 bits compatible avec la famille de processeurs 80x86 (x86). La combinaison de l'infrastructure cible et de la plateforme cible est connue sous le nom de contexte cible . Pour plus d'informations, consultez Cadre cible et plateforme cible.
Ensemble d'outils (ToolsVersion)
Un ensemble d’outils collecte les outils, les tâches et les cibles utilisés pour créer l’application. Un ensemble d’outils inclut des compilateurs tels que csc.exe et vbc.exe, le fichier cible commun (microsoft.common.targets) et le fichier de tâches courantes (microsoft.common.tasks). L’ensemble d’outils 4.5 peut être utilisé pour cibler .NET Framework versions 2.0, 3.0, 3.5, 4 et 4.5. Toutefois, l’ensemble d’outils 2.0 ne peut être utilisé que pour cibler le .NET Framework version 2.0. Pour plus d’informations, consultez Toolset (ToolsVersion).
Assemblies de référence
Les assemblys de référence spécifiés dans l’ensemble d’outils vous aident à concevoir et à générer une application. Ces assemblys de référence permettent non seulement une build cible particulière, mais aussi de limiter les composants et fonctionnalités de l’IDE Visual Studio à ceux compatibles avec la cible. Pour plus d’informations, voir Résoudre des assemblies au moment de la conception.
Configurer des cibles et des tâches
Vous pouvez configurer des cibles et des tâches MSBuild pour qu’elles s’exécutent hors processus avec MSBuild afin que vous puissiez cibler des contextes considérablement différents de celui sur lequel vous exécutez. Par exemple, vous pouvez cibler une application .NET Framework 2.0 32 bits pendant l’exécution de l’ordinateur de développement sur une plateforme 64 bits avec .NET Framework 4.5. Pour plus d’informations, consultez Configurer des cibles et des tâches.
Dépannage
Vous pouvez rencontrer des erreurs si vous essayez de référencer un assembly qui ne fait pas partie du contexte cible. Pour plus d’informations sur ces erreurs et sur ce qu’il faut faire à leur sujet, consultez Résoudre les erreurs de ciblage .NET Framework.