Import, élément (MSBuild)
Importe le contenu d’un fichier projet dans un autre fichier projet.
<Projet><Importer>
Syntaxe
<Import Project="ProjectPath"
Condition="'String A'=='String B'" />
Attributs et éléments
Les sections suivantes décrivent des attributs, des éléments enfants et des éléments parents.
Attributs
Attribut | Description |
---|---|
Project |
Attribut requis. Chemin du fichier projet à importer. Le chemin peut inclure des caractères génériques. Les fichiers correspondants sont importés dans un ordre trié. Cette fonctionnalité vous permet d’ajouter du code à un projet simplement en ajoutant le fichier de code dans un répertoire. |
Condition |
Attribut facultatif. Condition à évaluer. Pour plus d’informations, consultez l’article Conditions (Conditions MSBuild). |
Label |
Attribut facultatif. Applique un identificateur à cet élément d’importation. |
Sdk |
Attribut facultatif. Référence un SDK de projet. |
Éléments enfants
Aucun
Éléments parents
Élément | Description |
---|---|
Projet | Élément racine obligatoire d’un fichier projet MSBuild. |
ImportGroup | Contient une collection d’éléments Import regroupés sous une condition facultative. |
Remarques
L’élément Import
vous permet de réutiliser du code commun à de nombreux fichiers projet. L’utilisation des importations facilite la maintenance du code, car les mises à jour que vous apportez au code partagé sont propagées à tous les projets qui l’importent.
Par convention, les fichiers projet importés partagés sont enregistrés en tant que fichiers .targets
, mais il s’agit de fichiers projet MSBuild standard. MSBuild ne vous empêche pas d’importer un projet ayant une extension de nom de fichier différente, mais nous vous recommandons d’utiliser l’extension .targets
pour des raisons de cohérence.
Les chemins d’accès relatifs dans les projets importés sont interprétés par rapport au répertoire du projet d’importation (avec quelques exceptions décrites plus loin dans ce paragraphe). Ainsi, si un fichier projet est importé dans plusieurs fichiers projet à différents emplacements, les chemins relatifs dans le fichier projet importé sont interprétés différemment pour chaque projet importé. Il y a deux exceptions. Une exception est que dans les éléments Import
, le chemin d’accès est toujours interprété par rapport au projet qui contient l’élément Import
. Une autre exception est que le UsingTask
interprète toujours le chemin relatif de l’attribut AssemblyFile
par rapport au fichier qui contient l’élément UsingTask
.
Toutes les propriétés réservées MSBuild associées au fichier projet qui sont référencées dans un projet importé (par exemple MSBuildProjectDirectory
et MSBuildProjectFile
) sont affectées de valeurs basées sur le fichier projet importateur.
Si le projet importé n’a pas d’attribut DefaultTargets
, les projets importés sont inspectés dans l’ordre dans lequel ils sont importés, et la valeur du premier attribut DefaultTargets
découvert est utilisée. Par exemple, si le ProjetA importe le ProjetB et le ProjetC (dans cet ordre), et que le ProjetB importe le ProjetD, MSBuild recherche d’abord DefaultTargets
spécifié sur le ProjetA, puis le ProjetB, puis le ProjetD, et enfin le ProjetC.
Le schéma d’un projet importé est identique à celui d’un projet standard. Bien que MSBuild puisse générer un projet importé, cela est peu probable, car un projet importé ne contient généralement pas d’informations sur les propriétés à définir ou sur l’ordre dans lequel exécuter les cibles. Le projet importé dépend du projet dans lequel il est importé pour fournir ces informations.
Caractères génériques
Dans le .NET Framework 4, MSBuild autorise les caractères génériques dans l’attribut de projet. Quand il existe des caractères génériques, toutes les correspondances trouvées sont triées (à des fins de reproductibilité), puis elles sont importées dans cet ordre comme si celui-ci avait été défini explicitement.
Cela est utile si vous souhaitez offrir un point d’extensibilité pour que quelqu’un d’autre puisse importer un fichier sans avoir à ajouter explicitement le nom du fichier au fichier d’importation. À cette fin, Microsoft.Common.Targets contient la ligne suivante en haut du fichier.
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\$(MSBuildThisFile)\ImportBefore\*" Condition="'$(ImportByWildcardBeforeMicrosoftCommonTargets)' == 'true' and exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\$(MSBuildThisFile)\ImportBefore')"/>
Exemple
L’exemple suivant montre un projet qui a plusieurs éléments et propriétés, et qui importe un fichier projet général.
<Project DefaultTargets="Compile"
xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<resourcefile>Strings.resx</resourcefile>
<compiledresources>
$(O)\$(MSBuildProjectName).Strings.resources
</compiledresources>
</PropertyGroup>
<ItemGroup>
<CSFile Include="*.cs" />
<Reference Include="System" />
<Reference Include="System.Data" />
</ItemGroup>
<Import Project="$(CommonLocation)\General.targets" />
</Project>