Multi-ciblage de MSBuild
Visual Studio vous permet de compiler une application pour l'exécuter sur n'importe quelle version du .NET Framework. Par exemple, vous pouvez compiler une application qui s'exécutera sur le .NET Framework version 2.0 et compiler la même application pour qu'elle s'exécute sur le .NET Framework version 4. Le multi-ciblage désigne la possibilité de compiler en plusieurs Frameworks.
Notes
Visual Studio fonctionne sous la version la plus récente du .NET Framework installée sur l'ordinateur de développement.
Voici une partie des avantages offerts par le multi-ciblage :
Vous pouvez développer des applications qui ciblent des versions antérieures du .NET Framework (par exemple, les versions 2.0, 3.0 et 3.5).
Vous pouvez cibler des Frameworks autres que le .NET Framework (par exemple, Silverlight).
Vous pouvez cibler unprofil Framework, qui est un sous-ensemble prédéfini d'une version cible du .NET Framework.
Si des Service Packs pour le .NET Framework version 4 sont publiés, vous pouvez les cibler.
Le multi-ciblage garantit qu'une application utilise uniquement les fonctionnalités disponibles dans la version cible du .NET Framework.
La version cible de .Net Framework est la version particulière du .NET Framework sur laquelle repose l'exécution de votre projet. Elle est nécessaire car elle active des fonctions de compilateur qui sont exclusives à cette version de .NET Framework 2.0 ou fait référence à des assemblys qui sont inclus uniquement dans cette version du Framework.
Lorsque vous compilez une application pour cibler un Framework spécifique, vous devez coordonner ces trois ensembles de composants logiciels :
L'ensemble d'outils, qui contient les compilateurs, les tâches et les cibles utilisés pour créer l'application.
Les assemblys de référence, qui sont utilisés pour concevoir et générer l'application.
Les assemblys de runtime, qui sont utilisés pour exécuter l'application.
Ensemble d'outils (ToolsVersion)
Un ensemble d'outils est un assortiment de tâches MSBuild, de cibles MSBuild et d'outils qui s'installe avec MSBuild et le .NET Framework. Un ensemble d'outils inclut des compilateurs tels que csc.exe et vbc.exe, le fichier des cibles communes (microsoft.common.targets) et le fichier des tâches courantes (microsoft.common.tasks). L'ensemble d'outils 4.0 peut être utilisé pour cibler les versions 2.0, 3.0, 3.5 et 4 du .NET Framework. En revanche, l'ensemble d'outils 2.0 ne peut être utilisé que pour cibler la version 2.0 du .NET Framework.
Vous désignez l'ensemble d'outils en définissant l'attribut ToolsVersion de l'élément Project d'un fichier projet, par exemple,
<Project ToolsVersion="4.0" ...
Vous pouvez utiliser la version 4.0 de l'ensemble d'outils pour compiler des applications et les exécuter sur différentes versions cibles du .NET Framework, à condition qu'un pack cible soit installé pour chaque Framework que vous voulez cibler. Pour plus d'informations, consultez « Packs cibles » plus loin dans cette rubrique.
Vous pouvez également créer vos propres modèles de projet personnalisés. Pour plus d'informations, consultez Configurations standard et personnalisée de l'ensemble d'outils.
Notes
Visual Studio n'inclut aucune interface utilisateur pour modifier l'ensemble d'outils.
Assemblys de référence
En général, les Frameworks sont associés à des assemblys de référence. Un assembly de référence est un assembly simplifié qui n'a pas de code et expose uniquement les membres et les types publics.
Au moment du design et de la génération, Visual Studio utilise les assemblys de référence pour la version cible du .NET Framework comme des filtres pour rendre disponibles uniquement les types et les membres qui sont compatibles avec ce Framework. Par exemple, lorsque vous ciblez le .NET Framework version 3.5, les types et les membres fournis uniquement par le .NET Framework version 4 ne sont pas affichés dans les concepteurs Visual Studio (tels que l'onglet .NET de la boîte de dialogue Ajouter une référence) et ils ne sont pas disponibles dans le processus de génération.
Par exemple, LINQ est une nouvelle technologie incluse dans Visual Studio 2008. le .NET Framework 3.5 est la seule version du .NET Framework à comporter des assemblys liés à LINQ. Par conséquent, vous ne pouvez utiliser LINQ que si votre projet cible spécifiquement .NET Framework 3.5 ou ultérieure. De même, Windows Presentation Foundation (WPF) est inclus dans Windows Vista. Vous ne pouvez pas générer d'applications WPF à moins que votre projet cible .NET Framework 3.0 ou les versions ultérieures du .NET Framework.
Packs cibles
Les assemblys de référence deviennent disponibles lorsque le pack cible correspondant est installé. Un pack cible contient des assemblys de référence et un fichier FrameworkList.xml qui les répertorie. Le fichier FrameworkList.xml est également appelé liste de redistribution (redist).
Les packs cibles sont disponibles à partir des sources suivantes :
Les packs cibles pour les versions 2.0, 3.0 et 3.5 du .NET Framework sont inclus dans le .NET Framework version 3.5 SP1.
Les packs cibles pour le .NET Framework version 3.5 Client Profile, le .NET Framework version 4, le .NET Framework version 4 Client Profile et Silverlight sont inclus dans Visual Studio.
En général, les packs cibles sont installés dans le dossier .. \Program Files (x86)\Reference Assemblies\Microsoft\Framework\. Le pack cible pour le .NET Framework version 2.0 est généralement installé dans .. Dossier \Windows\Microsoft.NET\Framework\v2.0.50727\.
Lorsque vous générez une solution ou un projet à partir de la ligne de commande en spécifiant un attribut ToolsVersion pour msbuild.exe, tous les projets et leurs dépendances projet-à-projet sont générés d'après cette version des outils, même si chaque projet dans la solution spécifie son propre attribut ToolsVersion dans son Project, élément (MSBuild).
Assemblys de runtime
Vous ne pouvez définir aucune version cible du .NET Framework dans Visual Studio, sauf si le pack cible pour ce Framework est installé. Par exemple, pour cibler le .NET Framework version 3.0, ses assemblys de référence et les assemblys compatibles doivent être installés. Au moment de l'éxécution, le chargeur Fusion du Common Language Runtime (CLR) lie l'application aux assemblys de runtime du Framework qu'il cible.
Sélection d'une version cible du .NET Framework
Pour sélectionner une version cible du .NET Framework pour un projet existant
Dans l'Explorateur de solutions, cliquez avec le bouton droit sur le nœud du projet et sélectionnez Propriétés.
Sous l'onglet Application, dans la liste Framework cible, sélectionnez un Framework. Seuls les Frameworks pour lesquels un pack cible est installé sont affichés dans cette liste.
Visual Studio utilise votre sélection pour définir les valeurs de ces trois éléments dans le fichier projet :
L'élément TargetFrameworkIdentifier nomme la version cible du .NET Framework, par exemple
<TargetFrameworkIdentifier>Silverlight</TargetFrameworkIdentifier>
Si cet élément est manquant, sa valeur par défaut est « .NETFramework ».
L'élément TargetFrameworkVersion nomme la version cible du .NET Framework, par exemple
<TargetFrameworkVersion>v3.0</TargetFrameworkVersion>
L'élément TargetFrameworkProfile nomme le profil de la version cible du .NET Framework, par exemple
<TargetFrameworkProfile>Client</TargetFrameworkVersion>
Si cet élément est manquant, l'ensemble du Framework est ciblé.
Ces trois éléments sont combinés par les Cibles communes du système de génération Visual Studio pour former un identificateur appelé moniker du Framework cible (TFM, ou Target Framework Moniker).
Scénario : Visual Studio cible le .NET Framework version 3.5
Supposez que Visual Studio fonctionne sous le .NET Framework version 4. Pour cibler le .NET Framework version 3.5, les assemblys de runtime et les assemblys de référence associés doivent être installés. Ces assemblys sont inclus dans le .NET Framework version 3.5 SP1.
Dans ce scénario, les concepteurs Visual Studio affichent uniquement ce qui est filtré par les assemblys de référence du .NET Framework version 3.5, et votre projet est généré à partir de ces assemblys de référence. Lorsque vous exécutez le projet, il est exécuté sur les assemblys de runtime du .NET Framework version 3.5, qui sont à leur tour exécutés sur le CLR version 2.0.
Lorsque vous déployez l'application sur un autre ordinateur, le .NET Framework version 3.5 doit être installé. Vous pouvez rechercher la version 3.5 sur l'ordinateur cible et l'installer si nécessaire en utilisant un package de redistribution (redist) approprié.
Deuxième scénario : Visual Studio fonctionne sous le .NET Framework version 4.1 et cible le .NET Framework version 4
Supposez que le .NET Framework version 4.1 devienne disponible et que les versions 4 et 4.1 fonctionnent toutes les deux sous le CLR version 4. Visual Studio fonctionnera automatiquement sous le .NET Framework version 4.1 si ce dernier est installé.
Pour un projet qui cible le .NET Framework version 4, les assemblys de référence de la version 4 filtreront les types et les membres qui sont disponibles dans les concepteurs Visual Studio, le projet sera généré à partir de ces assemblys de référence et l'application résultante s'exécutera à partir des assemblys de runtime de la version 4.
Voir aussi
Concepts
Autres ressources
Résolution d'assemblys au moment du design
Historique des modifications
Date |
Historique |
Motif |
---|---|---|
Août 2010 |
Fusionnés à l'aide de MSBuild pour cibler des versions spécifiques sur le .NET Framework dans cette rubrique. |
Améliorations apportées aux informations. |