Freigeben über


Import-Element (MSBuild)

Aktualisiert: November 2007

Importiert den Inhalt einer Projektdatei in eine andere Projektdatei.

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

Attribute und Elemente

In den folgenden Abschnitten werden Attribute, untergeordnete Elemente und übergeordnete Elemente beschrieben.

Attribute

Attribut

Beschreibung

Project

Erforderliches Attribut.

Der Pfad der zu importierenden Projektdatei.

Condition

Optionales Attribut.

Die auszuwertende Bedingung. Weitere Informationen hierzu finden Sie unter MSBuild-Bedingungen.

Untergeordnete Elemente

Keine

Übergeordnete Elemente

Element

Beschreibung

Project

Erforderliches Stammelement einer MSBuild-Projektdatei.

Hinweise

Mit dem Import-Element können Sie Code wiederverwenden, der vielen Projektdateien gemeinsam ist. Beim Verschieben gemeinsam genutzter Codeblöcke in andere Projektdateien erlaubt es Ihnen, den Code an einem zentralen Speicherort zu verwalten und Änderungen von dort zu übertragen. Beispiel: Projekt A und Projekt B legen die Element- und Eigenschaftenwerte für die jeweiligen Builds fest, und Projekt C enthält die gemeinsam genutzten Buildprozesse. Projekt A und Projekt B können Projekt C importieren, und Änderungen an den Buildprozessen werden nur in einer Datei vorgenommen.

Allgemeine importierte Projektdateien werden konventionsgemäß als Dateien mit der Erweiterung TARGETS gespeichert, sind aber standardmäßige MSBuild-Projektdateien. MSBuild verhindert nicht den Import eines Projekts mit einer anderen Dateierweiterung, aber die Erweiterung TARGETS wird aus Konsistenzgründen empfohlen.

Alle relativen Pfade in importierten Projekten werden als relativ zum Verzeichnis des importierten Projekts interpretiert. Wenn eine Projektdatei in verschiedene Projektdateien an unterschiedlichen Speicherorten importiert wird, werden daher die relativen Pfade in der importierten Projektdatei je nach importiertem Projekt unterschiedlich interpretiert.

Allen reservierten Eigenschaften von MSBuild mit Bezug zu der Projektdatei, z. B. MSBuildProjectDirectory und MSBuildProjectFile, auf die in einem importierten Projekt verwiesen wird, werden je nach der importierenden Projektdatei Werte zugewiesen.

Wenn das importierte Projekt kein DefaultTargets-Attribut aufweist, werden importierte Projekte in der Reihenfolge, in der sie importiert wurden, überprüft, und der Wert des ersten gefundenen DefaultTargets-Attributs wird verwendet. Wenn beispielsweise ProjektA ProjektB und ProjektC (in dieser Reihenfolge) importiert und ProjektB ProjektD importiert, sucht MSBuild zuerst in ProjektA, dann in ProjektB, anschließend in ProjektD und schließlich in ProjektC nach einer Angabe für DefaultTargets.

Das Schema eines importierten Projekts ist mit dem eines Standardprojekts identisch. Es besteht die Möglichkeit, dass MSBuild ein importiertes Projekt erstellt, die Erstellung schlägt aber wahrscheinlich fehl, da das importierte Projekt i. d. R. keine Informationen darüber enthält, welche Eigenschaften festgelegt oder in welcher Reihenfolge Ziele ausgeführt werden müssen. Diese Informationen muss das importierende Projekt für das importierte Projekt bereitstellen.

Tipp

Bedingte Importanweisungen funktionieren zwar in MSBuilds mit Befehlszeilen, sie funktionieren jedoch nicht, wenn MSBuild in der integrierten Entwicklungsumgebung (IDE) von Visual Studio gehostet wird. Bedingte Importe werden mithilfe der Ausgangskonfiguration ausgewertet, und Standardwerte für die Plattform werden beim Laden des Projekts festgelegt. Wenn nachfolgend Änderungen, z. B. das Ändern der Plattform, vorgenommen werden, die eine Neuauswertung der Bedingungen in der Projektdatei erforderlich machen, wertet Visual Studio die Bedingungen für Elemente und Eigenschaften, jedoch nicht für Importe neu aus. Da die Importbedingung nicht neu ausgewertet wird, wird der Import übersprungen.

Platzieren Sie zur Umgehung dieses Problems die bedingten Importe in die TARGETS-Dateien oder in bedingte Blöcke wie einen Choose-Element (MSBuild)-Block.

Beispiel

Das folgende Codebeispiel veranschaulicht ein Projekt, das mehrere Elemente und Eigenschaften festlegt und eine allgemeine Projektdatei importiert.

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

Siehe auch

Aufgaben

Gewusst wie: Verwenden eines Ziels in mehreren Projektdateien

Konzepte

Referenz zum MSBuild-Projektdateischema