Import-Element (MSBuild)Import element (MSBuild)

Importiert die Inhalte einer Projektdatei in eine andere Projektdatei.Imports the contents of one project file into another project file.

<Project> <Import><Project> <Import>

SyntaxSyntax

<Import Project="ProjectPath"
    Condition="'String A'=='String B'" />

Attribute und ElementeAttributes and elements

In den folgenden Abschnitten werden Attribute sowie untergeordnete und übergeordnete Elemente beschrieben.The following sections describe attributes, child elements, and parent elements.

AttributeAttributes

AttributAttribute BeschreibungDescription
Project Erforderliches Attribut.Required attribute.

Der Pfad der zu importierenden Projektdatei.The path of the project file to import. Der Pfad kann Platzhalter enthalten.The path can include wildcards. Die entsprechenden Dateien werden in sortierter Reihenfolge importiert.The matching files are imported in sorted order. Mit dieser Funktion können Sie Code einem Projekt hinzufügen, indem Sie einfach die Codedatei einem Verzeichnis hinzufügen.By using this feature, you can add code to a project just by adding the code file to a directory.
Condition Optionales Attribut.Optional attribute.

Eine auszuwertende Bedingung.A condition to be evaluated. Weitere Informationen finden Sie unter Conditions (MSBuild-Bedingungen).For more information, see Conditions.
Sdk Optionales Attribut.Optional attribute.

Verweist auf ein Projekt-SDK.References a project SDK.

Untergeordnete ElementeChild elements

KeineNone

Übergeordnete ElementeParent elements

ElementElement BeschreibungDescription
ProjektProject Erforderliches Stammelement einer MSBuild-Projektdatei.Required root element of an MSBuild project file.
ImportGroupImportGroup Enthält eine Sammlung von Import -Elementen, die unter einer optionalen Bedingung gruppiert sind.Contains a collection of Import elements grouped under an optional condition.

HinweiseRemarks

Mithilfe des Import -Elements können Sie Code wiederverwenden, der in vielen Projektdateien verwendet wird.By using the Import element, you can reuse code that is common to many project files. Dies erleichtert die Verwaltung des Codes, da jedes von Ihnen ausgeführte Update für den freigegebenen Code an alle Projekte weitergegeben wird, die ihn importieren.This makes it easier to maintain the code because any updates you make to the shared code get propagated to all the projects that import it.

Gemäß Konvention werden freigegebene importierte Projektdateien als TARGETS-Dateien gespeichert, es handelt sich jedoch um MSBuild-Standardprojektdateien.By convention, shared imported project files are saved as .targets files, but they are standard MSBuild project files. MSBuild hindert Sie nicht daran, ein Projekt zu importieren, das eine andere Dateinamenerweiterung aufweist. Es wird jedoch empfohlen, aus Konsistenzgründen die Erweiterung TARGETS zu verwenden.MSBuild does not prevent you from importing a project that has a different file name extension, but we recommend that you use the .targets extension for consistency.

Relative Pfade in importierten Projekten werden relativ zum Verzeichnis des importierenden Projekts interpretiert (mit einigen wenigen Ausnahmen, die weiter unten beschrieben werden).Relative paths in imported projects are interpreted relative to the directory of the importing project (with a few exceptions described later in this paragraph). Wenn eine Projektdatei in verschiedene Projektdateien an unterschiedliche Speicherorte importiert wird, werden daher die relativen Pfade in der importierten Projektdatei unterschiedlich für jedes importierte Projekt interpretiert.Therefore, if a project file is imported into several project files in different locations, the relative paths in the imported project file will be interpreted differently for each imported project. Dazu gibt es zwei Ausnahmen:There are two exceptions. In Import-Elementen wird der Pfad immer relativ zum Projekt interpretiert, das das Import-Element enthält.One exception is that in Import elements, the path is always interpreted relative to the project that contains the Import element. UsingTask interpretiert den relativen Pfad für das AssemblyFile-Attribut immer relativ zur Datei, die das UsingTask-Element enthält.Another exception is that the UsingTask always interprets the relative path for the AssemblyFile attribute relative to the file that contains the UsingTask element.

Allen für MSBuild reservierten Eigenschaften, die sich auf die Projektdatei beziehen, z. B. MSBuildProjectDirectory und MSBuildProjectFile, und auf die in einem importierten Projekt verwiesen wird, werden basierend auf der importierenden Projektdatei Werte zugewiesen.All MSBuild reserved properties that relate to the project file, for example, MSBuildProjectDirectory and MSBuildProjectFile, that are referenced in an imported project are assigned values based on the importing project file.

Wenn das importierte Projekt über kein DefaultTargets -Attribut verfügt, werden importierte Projekte in der Reihenfolge untersucht, in der Sie importiert wurden und der Wert des ersten gefundenen DefaultTargets -Attributs wird daraufhin verwendet.If the imported project does not have a DefaultTargets attribute, imported projects are inspected in the order that they are imported, and the value of the first discovered DefaultTargets attribute is used. Wenn beispielsweise ProjektA ProjektB und ProjektC (in dieser Reihenfolge) importiert, und ProjectB importiert ProjektD, prüft MSBuild zuerst, ob DefaultTargets in ProjektA angegeben ist, durchsucht dann ProjektB und ProjektD und schließlich ProjektC.For example, if ProjectA imports ProjectB and ProjectC (in that order), and ProjectB imports ProjectD, MSBuild first looks for DefaultTargets specified on ProjectA, then ProjectB, then ProjectD, and finally ProjectC.

Das Schema eines importierten Projekts ist identisch mit dem Schema eines Standardprojekts.The schema of an imported project is identical to that of a standard project. Obwohl MSBuild möglicherweise ein importiertes Projekt erstellen kann, ist es unwahrscheinlich, da ein importiertes Projekt normalerweise keine Informationen enthält, wie Eigenschaften festzulegen sind oder die Reihenfolge, in der Ziele ausgeführt werden.Although MSBuild may be able to build an imported project, it is unlikely because an imported project typically does not contain information about which properties to set or the order in which to run targets. Das importierte Projekt ist abhängig vom Projekt in das es importiert wird, um diese Information bereitzustellen.The imported project depends on the project into which it is imported to provide that information.

PlatzhalterWildcards

In .NET Framework 4 erlaubt MSBuild Platzhalter im Attribut „Projekt“.In the .NET Framework 4, MSBuild allows wildcards in the Project attribute. Wenn Platzhalter vorhanden sind, werden alle gefundenen Übereinstimmungen (für die Reproduzierbarkeit) sortiert und dann werden sie in dieser Reihenfolge importiert, so als ob diese explizit festgelegt wurde.When there are wildcards, all matches found are sorted (for reproducibility), and then they are imported in that order as if the order had been explicitly set.

Dies ist hilfreich, wenn Sie einen Erweiterungspunkt zur Verfügung stellen möchten, sodass jemand anderes eine Datei importieren kann, ohne dass Sie explizit der zu importierenden Datei den Dateinamen hinzufügen müssen.This is useful if you want to offer an extensibility point so that someone else can import a file without requiring you to explicitly add the file name to the importing file. Zu diesem Zweck enthält Microsoft.Common.Targets die folgende Zeile am Anfang der Datei.For this purpose, Microsoft.Common.Targets contains the following line at the top of the file.

<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\$(MSBuildThisFile)\ImportBefore\*" Condition="'$(ImportByWildcardBeforeMicrosoftCommonTargets)' == 'true' and exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\$(MSBuildThisFile)\ImportBefore')"/>

BeispielExample

Das folgende Beispiel zeigt ein Projekt, das über mehrere Elemente und Eigenschaften verfügt und eine allgemeine Projektdatei importiert.The following example shows a project that has several items and properties and imports a general project file.

<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>

Siehe auchSee also