Zelfstudie: MSBuild gebruiken
MSBuild is het buildplatform voor Microsoft en Visual Studio. In deze zelfstudie maakt u kennis met de bouwstenen van MSBuild en leert u hoe u MSBuild-projecten kunt schrijven, manipuleren en fouten kunt opsporen. U krijgt meer informatie over:
Een projectbestand maken en bewerken.
Hoe build-eigenschappen gebruiken.
Hoe bouwitems te gebruiken.
U kunt MSBuild uitvoeren vanuit Visual Studio of vanuit het Opdrachtvenster. In deze zelfstudie maakt u een MSBuild-projectbestand met Visual Studio. U bewerkt het projectbestand in Visual Studio en gebruikt het opdrachtvenster om het project te bouwen en de resultaten te bekijken.
MSBuild installeren
Als u Visual Studio hebt, hebt u MSBuild al geïnstalleerd. Met Visual Studio 2019 en hoger wordt deze geïnstalleerd onder de installatiemap van Visual Studio. Voor een typische standaardinstallatie in Windows 10 bevindt MSBuild.exe zich onder de installatiemap in MSBuild\Current\Bin.
Controleer in het installatieprogramma of MSBuild-tools zijn geselecteerd voor de werkbelastingen die u gebruikt en kies Installeren.
Als u MSBuild wilt installeren op een systeem dat geen Visual Studio heeft, gaat u naar Build Tools voor Visual Studio 2019of installeert u de .NET SDK-.
Als u Visual Studio hebt, hebt u MSBuild al geïnstalleerd. Met Visual Studio 2022 wordt deze geïnstalleerd onder de installatiemap van Visual Studio. Voor een typische standaardinstallatie in Windows 10 bevindt MSBuild.exe zich onder de installatiemap in MSBuild\Current\Bin.
Navigeer in het installatieprogramma van Visual Studio naar Afzonderlijke onderdelenen zoek het selectievakje voor MSBuild. Deze wordt automatisch geselecteerd wanneer u een van de andere takenpakketten kiest om te installeren.
Als u MSBuild wilt installeren op een systeem dat geen Visual Studio heeft, gaat u naar Build Tools voor Visual Studio 2022 op de downloadpagina. Een andere manier om MSBuild op te halen, is het installeren van de .NET SDK.
Een MSBuild-project maken
Het Visual Studio-projectsysteem is gebaseerd op MSBuild. U kunt eenvoudig een nieuw projectbestand maken met Visual Studio. In deze sectie maakt u een C#-projectbestand. U kunt ervoor kiezen om in plaats daarvan een Visual Basic-projectbestand te maken. In de context van deze zelfstudie is het verschil tussen de twee projectbestanden klein.
Een projectbestand maken
Open Visual Studio en maak een project:
Typ
winforms
in het zoekvak en kies vervolgens Een nieuwe Windows Forms-app (.NET Framework) maken. Kies in het dialoogvenster dat wordt weergegeven Maken.Typ in het vak
BuildApp
. Voer een Locatie- in voor de oplossing, bijvoorbeeld D:\.Klik op OK of Creëren om het projectbestand te maken.
Het projectbestand onderzoeken
In de vorige sectie hebt u Visual Studio gebruikt om een C#-projectbestand te maken. Het projectbestand wordt weergegeven in Solution Explorer door het projectknooppunt met de naam BuildApp. U kunt de Visual Studio-code-editor gebruiken om het projectbestand te onderzoeken.
Het projectbestand bekijken
Klik in Solution Explorerop het projectknooppunt BuildApp-.
In de browser Eigenschappen ziet u dat de eigenschap ProjectbestandBuildApp.csprojis. Alle projectbestanden hebben de naam met het achtervoegsel proj-. Als u een Visual Basic-project hebt gemaakt, wordt de naam van het projectbestand BuildApp.vbproj.
Klik opnieuw met de rechtermuisknop op het projectknooppunt en klik vervolgens op BuildApp.csproj bewerken.
Het projectbestand wordt weergegeven in de code-editor.
Notitie
Voor sommige projecttypen, zoals C++, moet u het project verwijderen (klik met de rechtermuisknop op het projectbestand en kies Project verwijderen) voordat u het projectbestand kunt openen en bewerken.
Doelen en taken
Projectbestanden zijn XML-bestanden met het hoofdknooppunt Project.
De meeste .NET-projecten hebben een Sdk
kenmerk. Deze projecten worden SDK-projecten genoemd. Verwijzen naar een SDK betekent dat MSBuild een set bestanden importeert die de build-infrastructuur voor die SDK bieden. Als u niet naar een SDK verwijst, kunt u nog steeds MSBuild gebruiken, maar hebt u niet automatisch alle SDK-specifieke eigenschappen en doelen die voor u beschikbaar zijn.
<Project Sdk="Microsoft.NET.Sdk">
Er zijn veel variaties van .NET SDK's voor speciale doeleinden; ze worden beschreven in SDK's voor .NET-projecten.
Het bouwen van een toepassing wordt uitgevoerd met doel- en taak- elementen.
Een taak is de kleinste werkeenheid, met andere woorden het 'atoom' van een build. Taken zijn onafhankelijke uitvoerbare onderdelen, die invoer en uitvoer kunnen hebben. Er zijn momenteel geen taken waarnaar wordt verwezen of gedefinieerd in het projectbestand. In de volgende secties voegt u taken toe aan het projectbestand. Zie Tasksvoor meer informatie.
Een doel is een benoemde reeks taken. Het kan een benoemde reeks taken zijn, maar essentieel is dat het iets vertegenwoordigt dat moet worden gebouwd of uitgevoerd, dus moet deze op een doelgerichte manier worden gedefinieerd. Zie Doelenvoor meer informatie.
Het standaarddoel is niet gedefinieerd in het projectbestand. In plaats daarvan wordt deze opgegeven in geïmporteerde projecten. Het element Importeren geeft geïmporteerde projecten op. In een C#-project wordt het standaarddoel bijvoorbeeld geïmporteerd uit het bestand Microsoft.CSharp.targets.
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
Geïmporteerde bestanden worden effectief ingevoegd in het projectbestand waar ze ook naar worden verwezen.
In SDK-projecten ziet u dit importelement niet, omdat het SDK-kenmerk ervoor zorgt dat dit bestand impliciet wordt geïmporteerd.
MSBuild houdt de doelen van een build bij en garandeert dat elk doel niet meer dan één keer wordt gebouwd.
Een doel en een taak toevoegen
Voeg een doel toe aan het projectbestand. Voeg een taak toe aan het doel waarmee een bericht wordt afgedrukt.
Een doel en een taak toevoegen
Voeg deze regels toe aan het projectbestand, net na de importinstructie of het geopende projectelement.
<Target Name="HelloWorld"> </Target>
Met deze code maakt u een doel met de naam HelloWorld. U krijgt IntelliSense-ondersteuning terwijl u het projectbestand bewerkt.
Voeg regels toe aan het HelloWorld-doel, zodat de resulterende sectie er als volgt uitziet:
<Target Name="HelloWorld"> <Message Text="Hello"></Message> <Message Text="World"></Message> </Target>
Sla het projectbestand op.
De Message
taak is een van de vele taken die worden geleverd met MSBuild. Zie Taakreferentievoor een volledige lijst met beschikbare taken en gebruiksgegevens.
De Message
taak gebruikt de tekenreekswaarde van het kenmerk Text
als invoer en geeft deze weer op het uitvoerapparaat (of schrijft deze naar een of meer logboeken, indien van toepassing). Het HelloWorld
doel voert de berichttaak twee keer uit: eerst om 'Hallo' weer te geven en vervolgens 'Wereld' weer te geven.
Het doel opbouwen
Als u dit project probeert te bouwen vanuit Visual Studio, wordt het doel dat u hebt gedefinieerd, niet gebouwd. Dat komt doordat Visual Studio het standaarddoel kiest, dat nog steeds het doel is in het geïmporteerde .targets
-bestand.
Voer MSBuild uit vanaf de developer-opdrachtprompt voor Visual Studio om het HelloWorld-doel te bouwen dat eerder is gedefinieerd. Gebruik de -target
of -t
opdrachtregeloptie om het doel te selecteren.
Notitie
In de volgende secties wordt verwezen naar de developer-opdrachtprompt als het opdrachtvenster.
Het doel bouwen:
Open het opdrachtvenster.
Typ in het zoekvak op de taakbalk de naam van het hulpprogramma, zoals
dev
ofdeveloper command prompt
. Er wordt een lijst weergegeven met geïnstalleerde apps die overeenkomen met uw zoekpatroon.Als u het handmatig wilt vinden, staat het bestand LaunchDevCmd.bat in de map {Visual Studio-installatiemap}\Common7\Tools-map.
Navigeer in het opdrachtvenster naar de map met het projectbestand, in dit geval D:\BuildApp\BuildApp.
Voer msbuild uit met de opdrachtschakelaar
-t:HelloWorld
. Met deze opdracht wordt het HelloWorld-doel geselecteerd en gebouwd:msbuild buildapp.csproj -t:HelloWorld
Bekijk de uitvoer in het opdrachtvenster. U ziet nu de twee regels 'Hallo' en 'Wereld':
Hello World
Notitie
Als u in plaats daarvan The target "HelloWorld" does not exist in the project
ziet, bent u waarschijnlijk vergeten het projectbestand op te slaan in de code-editor. Sla het bestand op en probeer het opnieuw.
Als u wisselt tussen de code-editor en het opdrachtvenster, kunt u het projectbestand wijzigen en snel de resultaten bekijken.
Build-eigenschappen
Build-eigenschappen zijn naam-waardeparen die de build aansturen. Er zijn al verschillende build-eigenschappen gedefinieerd boven aan het projectbestand:
<PropertyGroup>
...
<ProductVersion>10.0.11107</ProductVersion>
<SchemaVersion>2.0</SchemaVersion>
<ProjectGuid>{30E3C9D5-FD86-4691-A331-80EA5BA7E571}</ProjectGuid>
<OutputType>WinExe</OutputType>
...
</PropertyGroup>
Alle eigenschappen zijn onderliggende elementen van PropertyGroup-elementen. De naam van de eigenschap is de naam van het onderliggende element en de waarde van de eigenschap is het tekstelement van het onderliggende element. Bijvoorbeeld
<TargetFrameworkVersion>net8.0</TargetFrameworkVersion>
definieert de eigenschap met de naam TargetFrameworkVersion
, waardoor deze de tekenreekswaarde 'net8.0' geeft
Build-eigenschappen kunnen op elk gewenst moment opnieuw worden gedefinieerd. Als
<TargetFrameworkVersion>net6.0</TargetFrameworkVersion>
wordt later weergegeven in het projectbestand of in een bestand dat later in het projectbestand is geïmporteerd en TargetFrameworkVersion
de nieuwe waarde 'net6.0' gebruikt
Een eigenschapswaarde onderzoeken
Als u de waarde van een eigenschap wilt ophalen, gebruikt u de volgende syntaxis, waarbij PropertyName
de naam van de eigenschap is:
$(PropertyName)
Gebruik deze syntaxis om enkele eigenschappen in het projectbestand te onderzoeken.
Een eigenschapswaarde onderzoeken
Vervang vanuit de code-editor het HelloWorld-doel door deze code:
<Target Name="HelloWorld"> <Message Text="Configuration is $(Configuration)" /> <Message Text="MSBuildToolsPath is $(MSBuildToolsPath)" /> </Target>
Sla het projectbestand op.
Voer in het opdrachtvensterde volgende regel in en voer deze uit:
msbuild buildapp.csproj -t:HelloWorld
Bekijk de uitvoer. Je kunt deze twee regels zien (de uitvoer kan verschillen):
Configuration is Debug MSBuildToolsPath is C:\Program Files\Microsoft Visual Studio\2022\MSBuild\Current\Bin\amd64
Configuration is Debug MSBuildToolsPath is C:\Program Files (x86)\Microsoft Visual Studio\2019\MSBuild\16.0\Bin
Voorwaardelijke eigenschappen
Veel eigenschappen, zoals Configuration
, worden voorwaardelijk gedefinieerd, dat wil gezegd, het Condition
kenmerk wordt weergegeven in het eigenschapselement. Voorwaardelijke eigenschappen worden alleen gedefinieerd of opnieuw gedefinieerd als de voorwaarde 'true' oplevert. Niet-gedefinieerde eigenschappen krijgen de standaardwaarde van een lege tekenreeks. Bijvoorbeeld
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
betekent 'Als de eigenschap Configuratie nog niet is gedefinieerd, definieert u deze en geeft u deze de waarde 'Debug'.
Bijna alle MSBuild-elementen kunnen een Condition
kenmerk hebben. Zie Condition
voor meer informatie over het gebruik van het kenmerk .
Gereserveerde eigenschappen
MSBuild behoudt enkele eigenschapsnamen voor om informatie over het projectbestand en de binaire MSBuild-bestanden op te slaan. MSBuildToolsPath is een voorbeeld van een gereserveerde eigenschap. Er wordt naar gereserveerde eigenschappen verwezen met de $
notatie, net als andere eigenschappen. Zie voor meer informatie Hoe te: Verwijzen naar de naam of locatie van het projectbestand en MSBuild gereserveerde en bekende eigenschappen.
Omgevingsvariabelen
U kunt op dezelfde manier verwijzen naar omgevingsvariabelen in projectbestanden als build-eigenschappen. Als u bijvoorbeeld de omgevingsvariabele PATH
in uw projectbestand wilt gebruiken, gebruikt u $(Path
). Als het project een eigenschapsdefinitie bevat die dezelfde naam heeft als een omgevingsvariabele, overschrijft de eigenschap in het project de waarde van de omgevingsvariabele. Zie Hoe: Omgevingsvariabelen gebruiken in een buildvoor meer informatie.
Eigenschappen instellen vanaf de opdrachtregel
Eigenschappen kunnen worden gedefinieerd op de opdrachtregel met behulp van de -property
of -p
opdrachtregelswitch. Eigenschapswaarden die zijn ontvangen van de opdrachtregel overschrijven eigenschapswaarden die zijn ingesteld in het projectbestand en de omgevingsvariabelen.
Een eigenschapswaarde instellen vanaf de opdrachtregel:
Voer in het opdrachtvensterde volgende regel in en voer deze uit:
msbuild buildapp.csproj -t:HelloWorld -p:Configuration=Release
Bekijk de uitvoer. U ziet deze regel:
Configuration is Release.
MSBuild maakt de eigenschap Configuration en geeft deze de waarde 'Release'.
Speciale tekens
Bepaalde tekens hebben een speciale betekenis in MSBuild-projectbestanden. Voorbeelden van deze tekens zijn puntkomma's (;
) en sterretjes (*
). Als u deze speciale tekens als letterlijke tekens in een projectbestand wilt gebruiken, moeten ze worden opgegeven met behulp van de syntaxis %<xx>
, waarbij <xx>
de hexadecimale ascii-waarde van het teken vertegenwoordigt.
Wijzig de berichttaak om de waarde van de eigenschap Configuratie weer te geven met speciale tekens om deze beter leesbaar te maken.
Speciale tekens gebruiken in de taak "Bericht":
Vervang vanuit de code-editor beide berichttaken door deze regel:
<Message Text="%24(Configuration) is %22$(Configuration)%22" />
Sla het projectbestand op.
Voer in het opdrachtvensterde volgende regel in en voer deze uit:
msbuild buildapp.csproj -t:HelloWorld
Bekijk de uitvoer. U ziet deze regel:
$(Configuration) is "Debug"
Zie MSBuild speciale tekensvoor meer informatie.
Items bouwen
Een item is een stukje informatie, meestal een bestandsnaam, die wordt gebruikt als invoer voor het buildsysteem. Een verzameling items die bronbestanden vertegenwoordigen, kan bijvoorbeeld worden doorgegeven aan een taak met de naam Compileer om ze te compileren in een assembly.
Alle items zijn onderliggende elementen van ItemGroup-elementen. De itemnaam is de naam van het onderliggende element en de itemwaarde is de waarde van het kenmerk Include van het onderliggende element. De waarden van items met dezelfde naam worden verzameld in itemtypen van die naam. Bijvoorbeeld
<ItemGroup>
<Compile Include="Program.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
</ItemGroup>
definieert een itemgroep die twee items bevat. Het itemtype Compileer heeft twee waarden: Program.cs en Properties\AssemblyInfo.cs.
Met de volgende code wordt hetzelfde itemtype gemaakt door beide bestanden in één Include
kenmerk te declareren, gescheiden door een puntkomma.
<ItemGroup>
<Compile Include="Program.cs;Properties\AssemblyInfo.cs" />
</ItemGroup>
Zie Itemsvoor meer informatie.
Notitie
Bestandspaden zijn relatief ten opzichte van de map met het MSBuild-projectbestand, zelfs als het projectbestand een geïmporteerd projectbestand is. Er zijn enkele uitzonderingen, zoals bij het gebruik van Import en UsingTask elementen.
Itemtypewaarden onderzoeken
Als u de waarden van een itemtype wilt ophalen, gebruikt u de volgende syntaxis, waarbij ItemType
de naam van het itemtype is:
@(ItemType)
Gebruik deze syntaxis om het Compile
itemtype in het projectbestand te onderzoeken.
Itemtypewaarden onderzoeken:
Vervang in de code-editor de taak met als doel HelloWorld door deze code:
<Target Name="HelloWorld"> <Message Text="Compile item type contains @(Compile)" /> </Target>
Sla het projectbestand op.
Voer in het opdrachtvensterde volgende regel in en voer deze uit:
msbuild buildapp.csproj -t:HelloWorld
Bekijk de uitvoer. U ziet deze lange regel:
Compile item type contains Form1.cs;Form1.Designer.cs;Program.cs;Properties\AssemblyInfo.cs;Properties\Resources.Designer.cs;Properties\Settings.Designer.cs
De waarden van een itemtype worden standaard gescheiden door puntkomma's.
Als u het scheidingsteken van een itemtype wilt wijzigen, gebruikt u de volgende syntaxis, waarbij ItemType het itemtype is en Scheidingsteken een tekenreeks is van een of meer scheidingstekens:
@(ItemType, Separator)
Wijzig de Message
-taak zodat deze carriage returns en line feeds (%0A%0D) gebruikt om items één per regel weer te geven.
Itemtypewaarden één per regel weergeven
Vervang in de code-editor de berichttaak door deze regel:
<Message Text="Compile item type contains @(Compile, '%0A%0D')" />
Sla het projectbestand op.
Voer in het opdrachtvensterde volgende regel in en voer deze uit:
msbuild buildapp.csproj -t:HelloWorld
Bekijk de uitvoer. U ziet deze regels:
Compile item type contains Form1.cs Form1.Designer.cs Program.cs Properties\AssemblyInfo.cs Properties\Resources.Designer.cs Properties\Settings.Designer.cs
Opnemen, uitsluiten en wildcards
U kunt de jokertekens '*', '**' en '?' gebruiken met het kenmerk Include
om items toe te voegen aan een itemtype. Bijvoorbeeld
<Photos Include="images\*.jpeg" />
voegt alle bestanden met de bestandsextensie .jpeg toe in de afbeeldingen map aan het itemtype Foto's, terwijl
<Photos Include="images\**\*.jpeg" />
voegt alle bestanden toe met de bestandsextensie .jpeg in de afbeeldingen map, en alle bijbehorende submappen, aan het itemtype Foto's. Zie Procedures voor meer voorbeelden: Selecteer de bestanden omte bouwen.
Let op dat, als items worden gedeclareerd, ze worden toegevoegd aan het type item. Bijvoorbeeld
<Photos Include="images\*.jpeg" />
<Photos Include="images\*.gif" />
maakt een itemtype met de naam Foto met alle bestanden in de afbeeldingen map met een bestandsextensie van .jpeg
of .gif
. Deze regels zijn gelijk aan de volgende regel:
<Photos Include="images\*.jpeg;images\*.gif" />
U kunt een item uitsluiten van een itemtype met het kenmerk Exclude
. Bijvoorbeeld
<Compile Include="*.cs" Exclude="*Designer*">
voegt alle bestanden met de bestandsextensie .cs toe aan het Compile
itemtype, met uitzondering van bestanden waarvan de namen de tekenreeks Designerbevatten. Voor meer voorbeelden, zie Hoe te: Bestanden uitsluiten van de build.
Het kenmerk Exclude
is alleen van invloed op de items die zijn toegevoegd door het kenmerk Include
in het itemelement dat ze beide bevat. Bijvoorbeeld
<Compile Include="*.cs" />
<Compile Include="*.res" Exclude="Form1.cs">
sluit het bestand Form1.csniet uit, dat is toegevoegd in het vorige itemelement.
Items opnemen en uitsluiten
Vervang in de code-editor de berichttaak door deze regel:
<Message Text="XFiles item type contains @(XFiles)" />
Voeg deze itemgroep toe vlak na het element Importeren:
<ItemGroup> <XFiles Include="*.cs;properties/*.resx" Exclude="*Designer*" /> </ItemGroup>
Sla het projectbestand op.
Voer in het opdrachtvensterde volgende regel in en voer deze uit:
msbuild buildapp.csproj -t:HelloWorld
Bekijk de uitvoer. U ziet deze regel:
XFiles item type contains Form1.cs;Program.cs;Properties/Resources.resx
Metagegevens van items
Items kunnen metagegevens bevatten naast de gegevens die zijn verzameld uit de Include
en Exclude
kenmerken. Taken waarvoor meer informatie nodig is over items dan alleen de itemwaarde kan deze metagegevens gebruiken.
Itemmetagegevens worden gedeclareerd in het projectbestand door een element te maken met de naam van de metagegevens als onderliggend element van het item. Een item kan nul of meer metagegevenswaarden hebben. Het volgende CSFile-item bevat bijvoorbeeld cultuurmetagegevens met de waarde Fr:
<ItemGroup>
<CSFile Include="main.cs">
<Culture>Fr</Culture>
</CSFile>
</ItemGroup>
Als u de metagegevenswaarde van een itemtype wilt ophalen, gebruikt u de volgende syntaxis, waarbij ItemType
de naam is van het itemtype en MetaDataName de naam van de metagegevens is:
%(ItemType.MetaDataName)
Metagegevens van items onderzoeken:
Vervang in de code-editor de berichttaak door deze regel:
<Message Text="Compile.DependentUpon: %(Compile.DependentUpon)" />
Sla het projectbestand op.
Voer in het opdrachtvensterde volgende regel in en voer deze uit:
msbuild buildapp.csproj -t:HelloWorld
Bekijk de uitvoer. U ziet deze regels:
Compile.DependentUpon: Compile.DependentUpon: Form1.cs Compile.DependentUpon: Resources.resx Compile.DependentUpon: Settings.settings
Let op hoe de woordgroep "Compile.DependentUpon" meerdere keren verschijnt. Het gebruik van metagegevens met deze syntaxis binnen een doel veroorzaakt 'batchverwerking'. Batchverwerking betekent dat de taken binnen het doel eenmaal worden uitgevoerd voor elke unieke metagegevenswaarde. Batching is het MSBuild-scriptequivalent van de algemene foreach-lus-constructie. Zie Batchingvoor meer informatie.
Bekende metagegevens
Wanneer een item wordt toegevoegd aan een itemlijst, krijgt dat item enkele bekende metagegevens toegewezen.
%(Filename)
retourneert bijvoorbeeld de bestandsnaam van een item. Zie Bekende itemmetadatavoor een volledige lijst.
Om bekende metagegevens te onderzoeken:
Vervang in de code-editor de berichttaak door deze regel:
<Message Text="Compile Filename: %(Compile.Filename)" />
Sla het projectbestand op.
Voer in het opdrachtvensterde volgende regel in en voer deze uit:
msbuild buildapp.csproj -t:HelloWorld
Bekijk de uitvoer. U ziet deze regels:
Compile Filename: Form1 Compile Filename: Form1.Designer Compile Filename: Program Compile Filename: AssemblyInfo Compile Filename: Resources.Designer Compile Filename: Settings.Designer
Door de voorgaande twee voorbeelden te vergelijken, kunt u zien dat, hoewel niet elk item in het Compile
itemtype Afhankelijke metagegevens heeft, alle items de bekende metagegevens van bestandsnaam hebben.
Metagegevenstransformaties
Itemlijsten kunnen worden omgezet in nieuwe itemlijsten. Als u een itemlijst wilt transformeren, gebruikt u de volgende syntaxis, waarbij <ItemType>
de naam van het itemtype is en <MetadataName>
de naam van de metagegevens is:
@(ItemType -> '%(MetadataName)')
Een itemlijst met bronbestanden kan bijvoorbeeld worden omgezet in een verzameling objectbestanden met behulp van een expressie zoals @(SourceFiles -> '%(Filename).obj')
. Zie Transformatiesvoor meer informatie.
Items transformeren met behulp van metagegevens:
Vervang in de code-editor de berichttaak door deze regel:
<Message Text="Backup files: @(Compile->'%(filename).bak')" />
Sla het projectbestand op.
Voer in het opdrachtvensterde volgende regel in en voer deze uit:
msbuild buildapp.csproj -t:HelloWorld
Bekijk de uitvoer. U ziet deze regel:
Backup files: Form1.bak;Form1.Designer.bak;Program.bak;AssemblyInfo.bak;Resources.Designer.bak;Settings.Designer.bak
U ziet dat metagegevens die in deze syntaxis worden uitgedrukt, geen batchverwerking veroorzaken.
Volgende stappen
Als u wilt weten hoe u één stap voor stap een eenvoudig projectbestand maakt, kunt u in Windows een volledig nieuw MSBuild-projectbestand maken.
Als u voornamelijk de .NET SDK gebruikt, leest u verder op MSBuild Reference voor .NET SDK Projects.
Verwante inhoud
- Overzicht van MSBuild
- MSBuild-verwijzing