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>

Voir aussi