Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Hiermee importeert u de inhoud van het ene projectbestand in een ander projectbestand.
<Project><importeren>
Syntaxis
<Import Project="ProjectPath"
Condition="'String A'=='String B'" />
Kenmerken en elementen
In de volgende secties worden kenmerken, onderliggende elementen en bovenliggende elementen beschreven.
Attributes
| Attribute | Description |
|---|---|
Project |
Vereist kenmerk. Het pad van het te importeren projectbestand. Het pad kan jokertekens bevatten. De overeenkomende bestanden worden geïmporteerd in gesorteerde volgorde. Met deze functie kunt u code toevoegen aan een project door het codebestand toe te voegen aan een map. |
Condition |
Optioneel kenmerk. Een voorwaarde die moet worden geëvalueerd. Zie Voorwaarden voor meer informatie. |
Label |
Optioneel kenmerk. Hiermee past u een id toe op dit importelement. |
Sdk |
Optioneel kenmerk. Verwijst naar een project-SDK. |
Onderliggende elementen
Geen
Bovenliggende elementen
| Onderdeel | Description |
|---|---|
| Project | Vereist hoofdelement van een MSBuild-projectbestand. |
| ImportGroup | Bevat een verzameling Import elementen gegroepeerd onder een optionele voorwaarde. |
Opmerkingen
Met behulp van het Import element kunt u code hergebruiken die gebruikelijk is voor veel projectbestanden. Door importbewerkingen te gebruiken, is het eenvoudiger om de code te onderhouden, omdat alle updates die u in de gedeelde code aanbrengt, worden doorgegeven aan alle projecten die deze importeren.
Standaard worden geïmporteerde projectbestanden opgeslagen als .targets bestanden, maar ze zijn standaard MSBuild-projectbestanden. MSBuild voorkomt niet dat u een project met een andere bestandsnaamextensie importeert, maar we raden u aan de .targets extensie te gebruiken voor consistentie.
Relatieve paden in geïmporteerde projecten worden geïnterpreteerd ten opzichte van de map van het importproject (met enkele uitzonderingen die verderop in deze alinea worden beschreven). Als een projectbestand daarom in verschillende projectbestanden op verschillende locaties wordt geïmporteerd, worden de relatieve paden in het geïmporteerde projectbestand anders geïnterpreteerd voor elk geïmporteerd project. Er zijn twee uitzonderingen. Een uitzondering hierop is dat het Import pad in elementen altijd wordt geïnterpreteerd ten opzichte van het project dat het Import element bevat. Een andere uitzondering is dat het UsingTask relatieve pad voor het AssemblyFile kenmerk altijd wordt geïnterpreteerd ten opzichte van het bestand dat het UsingTask element bevat.
Alle gereserveerde MSBuild-eigenschappen die betrekking hebben op het projectbestand waarnaar wordt verwezen in een geïmporteerd project (bijvoorbeeld MSBuildProjectDirectory en MSBuildProjectFile) zijn toegewezen waarden op basis van het projectbestand dat wordt geïmporteerd.
Als het geïmporteerde project geen kenmerk heeft DefaultTargets , worden geïmporteerde projecten gecontroleerd in de volgorde waarin ze worden geïmporteerd en wordt de waarde van het eerste gedetecteerde DefaultTargets kenmerk gebruikt. Als ProjectA bijvoorbeeld ProjectB en ProjectC (in die volgorde) importeert en ProjectB ProjectD importeert, zoekt MSBuild eerst naar DefaultTargets opgegeven in ProjectA, vervolgens ProjectB, vervolgens ProjectD en tot slot ProjectC.
Het schema van een geïmporteerd project is identiek aan dat van een standaardproject. Hoewel MSBuild een geïmporteerd project kan bouwen, is het onwaarschijnlijk dat een geïmporteerd project doorgaans geen informatie bevat over welke eigenschappen moeten worden ingesteld of de volgorde waarin doelen moeten worden uitgevoerd. Het geïmporteerde project is afhankelijk van het project waarin het wordt geïmporteerd om die informatie op te geven.
Jokertekens
MSBuild staat jokertekens toe in het projectkenmerk. Wanneer er jokertekens zijn, worden alle gevonden overeenkomsten gesorteerd (voor reproduceerbaarheid) en worden ze in die volgorde geïmporteerd alsof de volgorde expliciet is ingesteld.
Dit is handig als u een uitbreidbaarheidspunt wilt aanbieden, zodat iemand anders een bestand kan importeren zonder dat u expliciet de bestandsnaam aan het importbestand hoeft toe te voegen. Voor dit doel bevat Microsoft.Common.Targets de volgende regel boven aan het bestand.
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\$(MSBuildThisFile)\ImportBefore\*" Condition="'$(ImportByWildcardBeforeMicrosoftCommonTargets)' == 'true' and exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\$(MSBuildThisFile)\ImportBefore')"/>
Example
In het volgende voorbeeld ziet u een project met verschillende items en eigenschappen en importeert u een algemeen projectbestand.
<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>