Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Importiert den Inhalt einer Projektdatei in eine andere Projektdatei.
<Projektimport><>
Syntax
<Import Project="ProjectPath"
Condition="'String A'=='String B'" />
Attribute und Elemente
In den folgenden Abschnitten werden Attribute, untergeordnete Elemente und übergeordnete Elemente beschrieben.
Attribute
| Merkmal | Description |
|---|---|
Project |
Erforderliches Attribut. Der Pfad der zu importierenden Projektdatei. Der Pfad kann Wildcards enthalten. Die übereinstimmenden Dateien werden in sortierter Reihenfolge importiert. Mithilfe dieses Features können Sie einem Projekt Code hinzufügen, indem Sie die Codedatei zu einem Verzeichnis hinzufügen. |
Condition |
Optionales Attribut. Eine zu bewertende Bedingung. Weitere Informationen finden Sie unter Bedingungen. |
Label |
Optionales Attribut. Wendet einen Bezeichner auf dieses Importelement an. |
Sdk |
Optionales Attribut. Verweist auf ein Projekt-SDK. |
Untergeordnete Elemente
Nichts
Übergeordnete Elemente
| Element | Description |
|---|---|
| Projekt | Erforderliches Stammelement einer MSBuild-Projektdatei. |
| ImportGroup | Enthält eine Auflistung von Import Elementen, die unter einer optionalen Bedingung gruppiert sind. |
Bemerkungen
Mithilfe des Import Elements können Sie Code wiederverwenden, der für viele Projektdateien üblich ist. Die Verwendung von Importen erleichtert die Verwaltung des Codes, da alle Aktualisierungen, die Sie an den freigegebenen Code vornehmen, an alle Projekte weitergegeben werden, die sie importieren.
Standardmäßig werden freigegebene importierte Projektdateien als .targets Dateien gespeichert, aber sie sind standardmäßige MSBuild-Projektdateien. MSBuild hindert Sie nicht daran, ein Projekt mit einer anderen Dateinamenerweiterung zu importieren, es wird jedoch empfohlen, die .targets Erweiterung für Konsistenz zu verwenden.
Relative Pfade in importierten Projekten werden relativ zum Verzeichnis des Importprojekts interpretiert (mit einigen Ausnahmen, die weiter unten in diesem Absatz beschrieben werden). Wenn eine Projektdatei daher an verschiedenen Speicherorten in mehrere Projektdateien importiert wird, werden die relativen Pfade in der importierten Projektdatei für jedes importierte Projekt unterschiedlich interpretiert. Es gibt zwei Ausnahmen. Eine Ausnahme besteht darin, dass der Pfad in Import Elementen immer relativ zum Projekt interpretiert wird, das das Import Element enthält. Eine weitere Ausnahme besteht darin, dass der UsingTask relative Pfad für das AssemblyFile Attribut immer relativ zur Datei interpretiert wird, die das UsingTask Element enthält.
Alle reservierten MSBuild-Eigenschaften, die sich auf die Projektdatei beziehen, MSBuildProjectDirectory auf die in einem importierten Projekt verwiesen wird (z. B. und MSBuildProjectFile) werden basierend auf der importierten Projektdatei Werte zugewiesen.
Wenn das importierte Projekt nicht über ein DefaultTargets Attribut verfügt, werden importierte Projekte in der Reihenfolge überprüft, in der sie importiert werden, und der Wert des ersten ermittelten DefaultTargets Attributs wird verwendet. Wenn ProjectA beispielsweise ProjectB und ProjectC (in dieser Reihenfolge) importiert, und ProjectB ProjectD importiert, sucht DefaultTargets MSBuild zuerst nach der Angabe in ProjectA, dann ProjectB, dann ProjectD und schließlich ProjectC.
Das Schema eines importierten Projekts ist identisch mit dem eines Standardprojekts. Obwohl MSBuild möglicherweise ein importiertes Projekt erstellen kann, ist es unwahrscheinlich, dass ein importiertes Projekt normalerweise keine Informationen darüber enthält, welche Eigenschaften festgelegt werden sollen, oder die Reihenfolge, in der Ziele ausgeführt werden sollen. Das importierte Projekt hängt vom Projekt ab, in das es importiert wird, um diese Informationen bereitzustellen.
Wildcards
MSBuild ermöglicht Wildcards im Project-Attribut. Wenn es Wildcards gibt, werden alle gefundenen Übereinstimmungen (zur Reproduzierbarkeit) sortiert und dann in dieser Reihenfolge importiert, als ob die Bestellung explizit festgelegt wurde.
Dies ist nützlich, wenn Sie einen Erweiterbarkeitspunkt anbieten möchten, damit eine andere Person eine Datei importieren kann, ohne dass Sie den Dateinamen explizit zur importierenden Datei hinzufügen müssen. Zu diesem Zweck enthält Microsoft.Common.Targets die folgende Zeile am Anfang der Datei.
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\$(MSBuildThisFile)\ImportBefore\*" Condition="'$(ImportByWildcardBeforeMicrosoftCommonTargets)' == 'true' and exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\$(MSBuildThisFile)\ImportBefore')"/>
Example
Das folgende Beispiel zeigt ein Projekt mit mehreren Elementen und Eigenschaften und importiert eine allgemeine Projektdatei.
<Project DefaultTargets="Compile">
<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>