Share via


Import, élément (MSBuild)

Mise à jour : novembre 2007

Importe le contenu d'un fichier projet dans un autre fichier projet.

<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 d'accès du fichier projet à importer.

Condition

Attribut facultatif.

Condition à évaluer. Pour plus d'informations, consultez Conditions MSBuild.

Éléments enfants

Aucun

Éléments parents

Élément

Description

Project

Élément racine requis d'un fichier projet MSBuild.

Notes

L'élément Import vous permet de réutiliser le code commun à de nombreux fichiers projet. Lorsque vous déplacez des blocs de code communs dans d'autres fichiers projet, il vous permet de gérer le code et de propager des modifications en un emplacement central. Par exemple, le projet A et le projet B définissent les valeurs de propriétés et d'éléments pour leurs générations et le projet C contient les processus de génération communs. Les projets A et B peuvent importer le projet C, et toutes les modifications apportées aux processus de génération sont uniquement effectuées dans un seul fichier.

Les fichiers projet importés communs sont enregistrés en tant que fichiers .targets par convention, mais il s'agit de fichiers projet MSBuild standard. MSBuild ne vous empêche pas d'importer un projet avec une autre extension de fichier, mais l'extension .targets est recommandée pour des raisons de cohérence.

Tous les chemins d'accès relatifs dans les projets importés sont interprétés en fonction du répertoire du projet importé. Par conséquent, si un fichier projet est importé dans plusieurs fichiers projet résidant dans différents emplacements, les chemins d'accès relatifs dans le fichier projet importé seront interprétés différemment pour chaque projet importé.

Les valeurs assignées à toutes les propriétés réservées de MSBuild, associées au fichier projet, par exemple MSBuildProjectDirectory et MSBuildProjectFile, et référencées dans un projet importé, dépendent du fichier projet importateur.

Si le projet importé n'a pas d'attribut DefaultTargets, les projets importés sont examinés dans l'ordre de leur importation, et la valeur du premier attribut DefaultTargets découvert est utilisée. Si, par exemple, le projet A importe le projet B et le projet C (dans cet ordre), et que le projet B importe le projet D, MSBuild recherche d'abord l'attribut DefaultTargets spécifié pour le projet A, ensuite le projet B, puis le projet D et enfin le projet C.

Le schéma d'un projet importé est identique à celui d'un projet standard. Il est possible que MSBuild puisse générer un projet importé, mais la génération risque d'échouer, car le projet importé ne contient généralement pas d'informations relatives aux propriétés à définir ou à l'ordre d'exécution des cibles. Le projet importé dépend du projet dans lequel il est importé pour fournir cette information.

Remarque :

Alors que les instructions import conditionnelles fonctionnent en ligne de commande MSBuilds, elles ne fonctionnent pas avec MSBuild lorsqu'il est hébergé dans l'environnement de développement intégré (IDE) Visual Studio. Les importations conditionnelles sont évaluées sur la base de la configuration initiale et des valeurs par défaut de la plateforme, définies lorsque le projet est chargé. Si, par la suite, des modifications sont apportées et qu'elles nécessitent la réévaluation des conditions dans le fichier projet, telles qu'une modification de la plateforme, Visual Studio réévalue les conditions sur les propriétés et les éléments, mais pas les importations. Les conditions d'importation n'étant pas réévaluées, l'importation est ignorée.

Pour contourner ce problème, placez les importations conditionnelles dans les fichiers .targets ou placez le code source dans des blocs conditionnels comme Choose, élément (MSBuild).

Exemple

L'exemple de code suivant montre comment un projet définit plusieurs éléments et propriétés et importe un fichier projet général.

<Project DefaultTargets="Compile"
    xmlns="https://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

Tâches

Comment : utiliser la même cible dans plusieurs fichiers projet

Concepts

Référence du schéma de fichier de projet MSBuild