Import – element (MSBuild)
Importuje obsah jednoho souboru projektu do jiného souboru projektu.
<Import projektu><>
Syntaxe
<Import Project="ProjectPath"
Condition="'String A'=='String B'" />
Atributy a prvky
Následující části popisují atributy, podřízené prvky a nadřazené prvky.
Atributy
Atribut | Popis |
---|---|
Project |
Požadovaný atribut. Cesta k souboru projektu, který chcete importovat. Cesta může obsahovat zástupné cardy. Odpovídající soubory se importují v seřazených pořadích. Pomocí této funkce můžete do projektu přidat kód pouze přidáním souboru kódu do adresáře. |
Condition |
Nepovinný atribut. Podmínka, která se má vyhodnotit. Další informace naleznete v tématu Podmínky. |
Label |
Nepovinný atribut. Použije identifikátor pro tento prvek importu. |
Sdk |
Nepovinný atribut. Odkazuje na sadu SDK projektu. |
Podřízené prvky
Žádné
Nadřazené prvky
Element (Prvek) | Popis |
---|---|
Projekt | Povinný kořenový prvek souboru projektu MSBuild. |
ImportGroup | Obsahuje kolekci Import prvků seskupených podle volitelné podmínky. |
Poznámky
Pomocí elementu Import
můžete opakovaně používat kód, který je společný pro mnoho souborů projektu. Použití importů usnadňuje údržbu kódu, protože všechny aktualizace, které uděláte pro sdílený kód, se rozšíří do všech projektů, které ho importují.
Podle konvence se sdílené importované soubory projektu ukládají jako .targets
soubory, ale jsou to standardní soubory projektu MSBuild. NÁSTROJ MSBuild vám nebrání v importu projektu, který má jinou příponu názvu souboru, ale doporučujeme použít .targets
rozšíření pro konzistenci.
Relativní cesty v importovaných projektech jsou interpretovány vzhledem k adresáři importovaného projektu (s několika výjimkami popsanými dále v tomto odstavci). Proto pokud je soubor projektu importován do několika souborů projektu v různých umístěních, relativní cesty v importovaném souboru projektu budou interpretovány odlišně pro každý importovaný projekt. Existují dvě výjimky. Jednou z výjimek je, že v Import
prvcích je cesta vždy interpretována vzhledem k projektu, který obsahuje Import
prvek. Další výjimkou je, že UsingTask
vždy interpretuje relativní cestu atributu AssemblyFile
vzhledem k souboru, který obsahuje UsingTask
prvek.
Všechny rezervované vlastnosti nástroje MSBuild, které se vztahují k souboru projektu, na který odkazuje importovaný projekt (například MSBuildProjectDirectory
a MSBuildProjectFile
) jsou přiřazeny hodnoty založené na importovaném souboru projektu.
Pokud importovaný projekt nemá DefaultTargets
atribut, importované projekty se zkontrolují v pořadí, v jakém se importují, a použije se hodnota prvního zjištěného DefaultTargets
atributu. Pokud ProjectA například importuje ProjectB a ProjectC (v tomto pořadí) a ProjectB importuje ProjectD, nástroj MSBuild nejprve vyhledá DefaultTargets
zadaný v ProjectA, pak ProjectB, potom ProjectD a nakonec ProjectC.
Schéma importovaného projektu je stejné jako u standardního projektu. Přestože nástroj MSBuild může být schopen sestavit importovaný projekt, je nepravděpodobné, že importovaný projekt obvykle neobsahuje informace o tom, které vlastnosti se mají nastavit, nebo pořadí, ve kterém se mají cíle spouštět. Importovaný projekt závisí na projektu, do kterého se importuje, aby poskytl dané informace.
Zástupné znaky
V rozhraní .NET Framework 4 nástroj MSBuild umožňuje zástupné cardy v atributu Projektu. Pokud existují zástupné cardy, všechny nalezené shody se seřadí (kvůli reprodukovatelnosti) a pak se naimportují v daném pořadí, jako by bylo pořadí explicitně nastaveno.
To je užitečné, pokud chcete nabídnout bod rozšiřitelnosti, aby někdo jiný mohl importovat soubor, aniž byste museli explicitně přidat název souboru do importujícího souboru. Pro tento účel obsahuje Microsoft.Common.Targets v horní části souboru následující řádek.
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\$(MSBuildThisFile)\ImportBefore\*" Condition="'$(ImportByWildcardBeforeMicrosoftCommonTargets)' == 'true' and exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\$(MSBuildThisFile)\ImportBefore')"/>
Příklad
Následující příklad ukazuje projekt, který má několik položek a vlastností a importuje obecný soubor projektu.
<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>