Delen via


MSBuild-opdrachtregelverwijzing

Wanneer u MSBuild.exe gebruikt om een project- of oplossingsbestand te maken, kunt u verschillende schakelopties opnemen om verschillende aspecten van het proces op te geven.

Elke switch is beschikbaar in twee vormen: -switch en /switch. In de documentatie wordt alleen het formulier -switch weergegeven. Schakelopties zijn niet hoofdlettergevoelig. Als u MSBuild uitvoert vanuit een andere shell dan de Windows-opdrachtprompt, hebben lijsten met argumenten naar een switch (gescheiden door puntkomma's of komma's) mogelijk enkele of dubbele aanhalingstekens nodig om ervoor te zorgen dat lijsten worden doorgegeven aan MSBuild in plaats van geïnterpreteerd door de shell.

De .NET CLI-opdrachten dotnet build, dotnet publish, dotnet msbuild en gerelateerde opdrachten geven deze switches door aan MSBuild, dus deze verwijzing is van toepassing wanneer u deze opdrachten gebruikt; dotnet run echter niet.

Syntaxis

MSBuild.exe [Switches] [ProjectFile]

Argumenten

Argument Beschrijving
ProjectFile Hiermee worden de doelen gebouwd in het projectbestand dat u opgeeft. Als u geen projectbestand opgeeft, zoekt MSBuild in de huidige werkmap naar een bestandsnaamextensie die eindigt op proj- en dat bestand gebruikt. U kunt ook een Visual Studio-oplossingsbestand opgeven voor dit argument.

Switches

In de eerste kolom in de volgende tabel ziet u een lange en korte vorm van elke schakeloptie. Beide formulieren zijn gelijkwaardig.

Vierkante haken [] optionele onderdelen aangeven en accolades {}door de gebruiker opgegeven waarden aangeven.

Schakelaar Beschrijving
-detailedSummary[:{True or False}]

-ds[:{True or False}]
Als True, kunt u gedetailleerde informatie weergeven aan het einde van het buildlogboek over de configuraties die zijn gebouwd en hoe ze zijn gepland voor knooppunten.
-getItem:{itemName,...} Noteer de waarde van het item of de items na evaluatie, zonder de build uit te voeren, of als de optie -targets of de optie -getTargetResult wordt gebruikt, de waarden na de build wegschrijven.
-getProperty:{propertyName,...} Noteer de waarde van de eigenschap of eigenschappen na evaluatie, zonder de build uit te voeren, of als de optie -targets of de optie -getTargetResult wordt gebruikt, de waarden na de build wegschrijven.
-getTargetResult:{targetName,...} Noteer de uitvoerwaarden van de opgegeven doelen.
-graphBuild[:{True or False}]

-graph[:{True or False}]
Zorgt ervoor dat MSBuild een projectgrafiek maakt en bouwt. Het samenstellen van een grafiek omvat het identificeren van projectverwijzingen om afhankelijkheden te vormen. Het bouwen van die grafiek omvat het bouwen van projectverwijzingen voorafgaand aan de projecten die ernaar verwijzen, afwijkt van de traditionele MSBuild-planning. Hiervoor is MSBuild 16 of hoger vereist.
-help

/? of -h
Gebruiksgegevens weergeven. De volgende opdracht is een voorbeeld:

msbuild.exe -?
-ignoreProjectExtensions: {extensions}

-ignore: {extensions}
Negeer de opgegeven extensies bij het bepalen welk projectbestand u wilt bouwen. Gebruik een puntkomma of komma om meerdere extensies te scheiden, zoals in het volgende voorbeeld wordt weergegeven:

-ignoreprojectextensions:.vcproj,.sln
-inputResultsCaches[:{cacheFile; ...}]

-irc[:{cacheFile; ...}]
Door puntkomma's gescheiden lijst met invoercachebestanden waaruit MSBuild buildresultaten leest. Als -isolateProjects is ingesteld op False, wordt deze ingesteld op True.
-interactive[:{True or False}] Geeft aan dat acties in de build mogen communiceren met de gebruiker. Gebruik dit argument niet in een geautomatiseerd scenario waarbij interactiviteit niet wordt verwacht. Het opgeven van -interactive is hetzelfde als het opgeven van -interactive:true. Gebruik de parameter om een waarde te overschrijven die afkomstig is van een antwoordbestand.
-isolateProjects[:{True, MessageUponIsolationViolation, False}]

-isolate[:{True, MessageUponIsolationViolation, False}]
Zorgt ervoor dat MSBuild elk project in isolatie bouwt. Wanneer deze optie is ingesteld op MessageUponIsolationViolation (of de korte vorm Message), worden alleen de resultaten van doelen op het hoogste niveau geserialiseerd als de -outputResultsCache switch wordt opgegeven. Deze optie is om de kans te beperken dat een isolatie-schendend doel voor een afhankelijkheidsproject een onjuiste status gebruikt vanwege de afhankelijkheid van een doel in de cache waarvan de bijwerkingen niet in aanmerking zouden worden genomen. (Bijvoorbeeld de definitie van een eigenschap.) Deze modus is restrictiever, omdat het vereist dat de projectgrafiek statisch kan worden gedetecteerd tijdens de evaluatie, maar kan de planning verbeteren en de geheugenoverhead verminderen bij het bouwen van een grote set projecten.
-lowPriority[:{True or False}]

-low[:{True or False}]
Zorgt ervoor dat MSBuild wordt uitgevoerd met een lage procesprioriteit. Het opgeven van -lowPriority is hetzelfde als het opgeven van -lowPriority:True.
-maxCpuCount[:{number}]

-m[:{number}]
Hiermee geeft u het maximum aantal gelijktijdige processen dat moet worden gebruikt bij het bouwen. Als u deze schakeloptie niet opneemt, is de standaardwaarde 1. Als u deze switch opneemt zonder een waarde op te geven, gebruikt MSBuild maximaal het aantal processors in de computer. Zie Meerdere projecten parallelbouwen voor meer informatie.

In het volgende voorbeeld wordt MSBuild geïnstrueerd om te bouwen met behulp van drie MSBuild-processen, waardoor drie projecten tegelijkertijd kunnen worden gebouwd:

msbuild myproject.proj -maxcpucount:3
-noAutoResponse

-noautorsp
Neem geen MSBuild.rsp-- of Directory.Build.rsp-bestanden automatisch op.
-nodeReuse:{value}

-nr:{value}
Het hergebruik van MSBuild-knooppunten in- of uitschakelen. U kunt de volgende waarden opgeven:

- Waar. Knooppunten blijven behouden nadat de build is voltooid, zodat volgende builds deze kunnen gebruiken (standaard).
- Onwaar. Knooppunten blijven niet behouden nadat de build is voltooid.

Een knooppunt komt overeen met een project dat wordt uitgevoerd. Als u de -maxcpucount-switch opneemt, kunnen meerdere knooppunten gelijktijdig worden uitgevoerd.
-nologo Geef de opstartbanner of het copyrightbericht niet weer.
-preprocess[:{filepath}]

-pp[:{filepath}]
Maak één samengevoegd projectbestand door alle bestanden die tijdens een build zouden worden geïmporteerd, in een overzicht te plaatsen, met de bijbehorende grenzen gemarkeerd. U kunt deze schakeloptie gebruiken om gemakkelijker te bepalen welke bestanden worden geïmporteerd, van waaruit de bestanden worden geïmporteerd en welke bestanden bijdragen aan de build. Wanneer u deze switch gebruikt, wordt het project niet gebouwd.

Als u een filepathopgeeft, wordt het samengevoegde projectbestand uitgevoerd naar het bestand. Anders wordt de uitvoer weergegeven in het consolevenster.

Zie voor informatie over het gebruik van het element Import om een projectbestand in te voegen in een ander projectbestand Import element (MSBuild) en Instructies: Hetzelfde doel gebruiken in meerdere projectbestanden.
-outputResultsCache[:{cacheFile}]

-orc[:{cacheFile}]
Uitvoercachebestand waarin MSBuild de inhoud van de buildresultaatcaches aan het einde van de build schrijft. Als -isolateProjects is ingesteld op False, wordt deze ingesteld op True.
profileEvaluation:{file} Profielen MSBuild-evaluatie en schrijft het resultaat naar het opgegeven bestand. Als de extensie van het opgegeven bestand '.md' is, wordt het resultaat gegenereerd in Markdown-indeling. Anders wordt er een door tabs gescheiden bestand geproduceerd.
-property:{name}={value}

-p:{name}={value}
Stel de opgegeven eigenschappen op projectniveau in of overschrijf deze, waarbij name de naam van de eigenschap is en value de eigenschapswaarde is. Geef elke eigenschap afzonderlijk op of gebruik een puntkomma of komma om meerdere eigenschappen te scheiden, zoals in het volgende voorbeeld wordt weergegeven:

-property:WarningLevel=2;OutDir=bin\Debug

Zie Common MSBuild-projecteigenschappen voor een lijst met veelgebruikte eigenschappen. De volledige set beschikbare eigenschappen is afhankelijk van het projecttype, de SDK en de geïmporteerde bestanden.
-restore

-r
Hiermee wordt het Restore doel uitgevoerd voordat de werkelijke doelen worden gebouwd.
-restoreProperty:{name}={value}

-rp:{name}={value}
Stel deze eigenschappen op projectniveau alleen in of over tijdens het herstellen en gebruik geen eigenschappen die zijn opgegeven met het argument -property. name de eigenschapsnaam is en value de eigenschapswaarde is. Gebruik een puntkomma of een komma om meerdere eigenschappen te scheiden of geef elke eigenschap afzonderlijk op.
-target:{targets}

-t:{targets}
Bouw de opgegeven doelen in het project. Geef elk doel afzonderlijk op of gebruik een puntkomma of komma om meerdere doelen te scheiden, zoals in het volgende voorbeeld wordt weergegeven:

-target:PrepareResources;Compile

Als u doelen opgeeft met deze schakeloptie, worden ze uitgevoerd in plaats van doelen in het kenmerk DefaultTargets in het projectbestand. Zie voor meer informatie buildvolgorde van doel en Procedure: opgeven welk doel u als eerstewilt bouwen.

Een doel is een groep taken. Zie Doelenvoor meer informatie.
-targets[:{file}]

-ts[:{file}]
Schrijf de lijst met beschikbare doelen naar het opgegeven bestand (of het uitvoerapparaat, als er geen bestand is opgegeven), zonder daadwerkelijk het buildproces uit te voeren.
-toolsVersion:{version}

-tv:{version}
Hiermee geeft u een aangepaste toolset. Een hulpprogrammaset bestaat uit taken, doelen en hulpprogramma's die worden gebruikt om een toepassing te bouwen. Zie Toolset (ToolsVersion) en Standard- en aangepaste toolsetconfiguraties.
-validate:[{schema}]

-val[{schema}]
Valideer het projectbestand en bouw het project als de validatie slaagt.

Als u geen schemaopgeeft, wordt het project gevalideerd op basis van het standaardschema.

Als u schemaopgeeft, wordt het project gevalideerd op basis van het schema dat u opgeeft.

De volgende instelling is een voorbeeld: -validate:MyExtendedBuildSchema.xsd
-verbosity:{level}

-v:{level}
Hiermee geeft u de hoeveelheid informatie op die moet worden weergegeven in het buildlogboek. Elke logboekregistratie geeft gebeurtenissen weer op basis van het uitgebreidheidsniveau dat u voor die logger hebt ingesteld.

U kunt de volgende uitgebreidheidsniveaus opgeven: q[uiet], m[inimal], n[ormal] (standaard), d[etailed]en diag[nostic].

De volgende instelling is een voorbeeld: -verbosity:quiet
-version

-ver
Alleen versie-informatie weergeven. Het project is niet gebouwd.
@{file} Schakelopties van een tekstbestand invoegen. Als u meerdere bestanden hebt, geeft u deze afzonderlijk op. Zie Antwoordbestandenvoor meer informatie.
-warnAsError[:{code; ...}]

-err[:{code; ...}]
Lijst met waarschuwingscodes die als fouten moeten worden behandeld. Gebruik een puntkomma of komma om meerdere waarschuwingscodes te scheiden. Als u alle waarschuwingen als fouten wilt behandelen, gebruikt u de schakeloptie zonder waarden. Wanneer een waarschuwing wordt behandeld als een fout, blijft het doel uitvoeren alsof het een waarschuwing was, maar de algehele build mislukt.

Voorbeeld: -err:MSB4130
-warnNotAsError[:{code; ...}]

-noerr[:{code; ...}]
MSBuild 17.0 en hoger. Lijst met waarschuwingscodes die niet moeten worden gepromoveerd naar fouten. Als de warnAsError-switch is ingesteld om alle waarschuwingen op fouten te promoten, worden foutcodes die zijn opgegeven met warnNotAsError, niet gepromoveerd. Dit heeft geen effect als warnAsError niet is ingesteld om alle waarschuwingen op fouten te promoten. Gebruik een puntkomma of komma om meerdere waarschuwingscodes te scheiden.

Voorbeeld: -noerr:MSB4130
-warnAsMessage[:{code}; ...}]

-noWarn[:{code; ...}]
Lijst met waarschuwingscodes voor het behandelen van berichten met een lage urgentie. Gebruik een puntkomma of komma om meerdere waarschuwingscodes te scheiden.

Voorbeeld: -noWarn:MSB3026

Schakelopties voor loggers

Schakelaar Beschrijving
-binaryLogger[:[LogFile=]{output.binlog}
[;ProjectImports=None,Embed,ZipFile]]

-bl[:[LogFile=]{output.binlog}
[;ProjectImports=None,Embed,ZipFile]]
Serialiseert alle buildgebeurtenissen naar een gecomprimeerd binair bestand. Het bestand bevindt zich standaard in de huidige map en heeft de naam msbuild.binlog. Het binaire logboek is een gedetailleerde beschrijving van het buildproces dat later kan worden gebruikt om tekstlogboeken te reconstrueren en gebruikt door andere analysehulpprogramma's. Een binair logboek is meestal 10-20x kleiner dan het meest gedetailleerde logboek op diagnostisch tekstniveau, maar bevat meer informatie.

De binaire logboekregistratie verzamelt standaard de brontekst van projectbestanden, inclusief alle geïmporteerde projecten en doelbestanden die tijdens de build zijn aangetroffen. De optionele ProjectImports parameter bepaalt dit gedrag:

- ProjectImports=None. Verzamel de projectimport niet.
- ProjectImports=Embed. Projectimports insluiten in het logboekbestand (standaard).
- ProjectImports=ZipFile. Sla projectbestanden op in {output}.projectimports.zip waarbij <uitvoer> dezelfde naam heeft als de naam van het binaire logboekbestand.

De standaardinstelling voor ProjectImports is Insluiten.
Opmerking: de logger verzamelt geen niet-MSBuild-bronbestanden zoals .cs, .cppenzovoort.
Een .binlog-bestand kan worden 'afgespeeld' door het als argument door te geven aan msbuild.exe in plaats van een project/oplossing. Andere logboekregistraties ontvangen de informatie in het logboekbestand alsof de oorspronkelijke build plaatsvindt. Meer informatie over het binaire logboek en het gebruik ervan vindt u op: https://github.com/dotnet/msbuild/blob/main/documentation/wiki/Binary-Log.md

voorbeelden:
- -bl
- -bl:output.binlog
- -bl:output.binlog;ProjectImports=None
- -bl:output.binlog;ProjectImports=ZipFile
- -bl:..\..\custom.binlog
- -binaryLogger
-consoleLoggerParameters:{parameters}

-clp:{parameters}
Geef de parameters die u opgeeft door aan de consolelogger, waarin de build-informatie in het consolevenster wordt weergegeven. U kunt de volgende parameters opgeven:

- PerformanceSummary-. De tijd weergeven die is besteed aan taken, doelen en projecten.
- Samenvatting. Geef de fout- en waarschuwingssamenvatting aan het einde weer.
- NoSummary-. Geef de fout- en waarschuwingssamenvatting aan het einde niet weer.
- ErrorsOnly. Alleen fouten weergeven.
- WarningsOnly. Alleen waarschuwingen weergeven.
- NoItemAndPropertyList. De lijst met items en eigenschappen die aan het begin van elke projectbuild worden weergegeven, wordt niet weergegeven als het uitgebreidheidsniveau is ingesteld op diagnostic.
- ShowCommandLine. TaskCommandLineEvent berichten weergeven.
- ShowProjectFile-. Het pad naar het projectbestand weergeven in diagnostische berichten. Deze instelling is standaard ingeschakeld.
- ShowTimestamp. De tijdstempel weergeven als een voorvoegsel voor een bericht.
- ShowEventId. Geef de gebeurtenis-id weer voor elke gestarte gebeurtenis, voltooide gebeurtenis en bericht.
- ForceNoAlign-. Lijn de tekst niet uit op de grootte van de consolebuffer.
- DisableConsoleColor-. Gebruik de standaardconsolekleuren voor alle logboekberichten.
- DisableMPLogging-. Schakel de logboekregistratiestijl van de multiprocessor uit wanneer deze wordt uitgevoerd in de modus niet-multiprocessor.
- EnableMPLogging-. Schakel de logboekregistratiestijl voor meerdere processors in, zelfs wanneer deze wordt uitgevoerd in de modus niet-multiprocessor. Deze stijl voor logboekregistratie is standaard ingeschakeld.
- ForceConsoleColor-. Gebruik ANSI-consolekleuren, zelfs als de console deze niet ondersteunt.
- uitgebreidheid. Overschrijf de -verbosity-instelling voor deze logger.

Gebruik een puntkomma om meerdere parameters te scheiden, zoals in het volgende voorbeeld wordt weergegeven:

-consoleLoggerParameters:PerformanceSummary;NoSummary -verbosity:minimal

De standaardconsolelogger is normaal uitgebreid en bevat een Summary.
-distributedFileLogger

-dfl
Registreer de build-uitvoer van elk MSBuild-knooppunt in een eigen bestand. De oorspronkelijke locatie voor deze bestanden is de huidige map. De bestanden hebben standaard de naam MSBuild{NodeId}.log. U kunt de -fileLoggerParameters switch gebruiken om de locatie van de bestanden en andere parameters voor de fileLogger op te geven.

Als u een logboekbestand een naam krijgt met behulp van de -fileLoggerParameters-switch, gebruikt de gedistribueerde logboekregistratie die naam als sjabloon en voegt u de knooppunt-id toe aan die naam bij het maken van een logboekbestand voor elk knooppunt.
-distributedLogger:{central logger},{forwarding logger}, ...

-dl:{central logger},{forwarding logger, ...}
Logboeken van MSBuild, waarbij een ander logboekexemplaren aan elk knooppunt worden gekoppeld. Als u meerdere logboekregistraties wilt opgeven, geeft u elke logboekregistratie afzonderlijk op.

U gebruikt de syntaxis van de logboekregistratie om een logboekregistratie op te geven, behalve dat u een extra klasse opgeeft voor de doorstuurlogboekregistratie. Zie de -logger switch voor de syntaxis van de logboekregistratie.

In de volgende voorbeelden ziet u hoe u deze switch gebruikt:

-dl:XMLLogger,MyLogger,Version=1.0.2,Culture=neutral

-dl:MyLogger,C:\My.dll*ForwardingLogger,C:\Logger.dll
-fileLogger[{number}]

-fl[{number}]
Registreer de build-uitvoer naar één bestand in de huidige map. Als u geen numberopgeeft, heeft het uitvoerbestand de naam msbuild.log. Als u numberopgeeft, heeft het uitvoerbestand de naam msbuild<n>.log, waarbij <n> is number. Number kan een cijfer tussen 1 en 9 zijn.

U kunt de schakeloptie -fileLoggerParameters gebruiken om de locatie van het bestand en andere parameters voor de fileLogger op te geven.
-fileLoggerParameters[{number}]:

parameters

-flp[{number}]: {parameters}
Hiermee geeft u eventuele extra parameters voor de bestandslogger en de gedistribueerde bestandslogger. De aanwezigheid van deze switch impliceert dat de bijbehorende -filelogger[number] switch aanwezig is. Number kan een cijfer tussen 1 en 9 zijn.

U kunt alle parameters gebruiken die worden vermeld voor -consoleloggerparameters. U kunt ook een of meer van de volgende parameters gebruiken:

- LogFile-. Het pad naar het logboekbestand waarin het buildlogboek is geschreven. De gedistribueerde bestandslogger voorvoegt dit pad naar de namen van de logboekbestanden.
- Toevoegen. Bepaalt of het buildlogboek wordt toegevoegd aan het logboekbestand of wordt overschreven. Wanneer u de switch instelt, wordt het buildlogboek toegevoegd aan het logboekbestand. Wanneer de schakeloptie niet aanwezig is, wordt de inhoud van een bestaand logboekbestand overschreven.
Voorbeeld: msbuild myfile.proj -flp:FileLogger,Microsoft.Build;logfile=MyLog.log;append
Als u een expliciete true of false instelling opneemt, wordt het logboek toegevoegd, ongeacht de instelling. Als u de toevoegswitch niet opneemt, wordt het logboek overschreven.
In dit geval wordt het bestand overschreven: msbuild myfile.proj -flp:FileLogger,Microsoft.Build;logfile=MyLog.log
In dit geval wordt het bestand toegevoegd: msbuild myfile.proj -flp:FileLogger,Microsoft.Build;logfile=MyLog.log;append=true
In dit geval wordt het bestand toegevoegd: msbuild myfile.proj -flp:FileLogger,Microsoft.Build;logfile=MyLog.log;append=false
- coderen. Hiermee geeft u de codering voor het bestand (bijvoorbeeld UTF-8, Unicode of ASCII).

In het volgende voorbeeld worden afzonderlijke logboekbestanden gegenereerd voor waarschuwingen en fouten:

-flp1:logfile=errors.txt;errorsonly -flp2:logfile=warnings.txt;warningsonly

In de volgende voorbeelden ziet u andere mogelijkheden:

-fileLoggerParameters:LogFile=MyLog.log;Append; Verbosity=diagnostic;Encoding=UTF-8

-flp:Summary;Verbosity=minimal;LogFile=msbuild.sum

-flp1:warningsonly;logfile=msbuild.wrn

-flp2:errorsonly;logfile=msbuild.err
-logger:logger

-l:logger
Hiermee geeft u de logboekregistratie die moet worden gebruikt voor het vastleggen van gebeurtenissen van MSBuild. Als u meerdere logboekregistraties wilt opgeven, geeft u elke logboekregistratie afzonderlijk op.

Gebruik de volgende syntaxis voor logger: [LoggerClass,]LoggerAssembly[;LoggerParameters]

Gebruik de volgende syntaxis voor LoggerClass: [PartialOrFullNamespace.]LoggerClassName

U hoeft de loggerklasse niet op te geven als de assembly precies één logger bevat.

Gebruik de volgende syntaxis voor LoggerAssembly: AssemblyName[,StrongName] \| AssemblyFile

Loggerparameters zijn optioneel en worden exact naar de logger doorgegeven wanneer u ze invoert.

In de volgende voorbeelden wordt de -logger switch gebruikt.

-logger:XMLLogger,MyLogger,Version=1.0.2,Culture=neutral

-logger:XMLLogger,C:\Loggers\MyLogger.dll;OutputAsHTML
-noConsoleLogger

-noconlog
Schakel de standaardconsolelogboekregistratie uit en meld geen gebeurtenissen aan bij de console.
-terminalLogger[:auto,on,off]

-tl[:auto,on,off]
Schakel de terminallogger in of uit. Terminallogger biedt verbeterde build-uitvoer op de console in realtime, logisch georganiseerd op project en ontworpen om bruikbare informatie te markeren. Geef auto op (of gebruik de optie zonder argumenten) om de terminallogger alleen te gebruiken als de standaarduitvoer niet wordt omgeleid. Parseert de uitvoer niet of vertrouw er anders op dat deze ongewijzigd blijft in toekomstige versies. Deze optie is beschikbaar in MSBuild 17.8 en hoger.

Voorbeeld

In het volgende voorbeeld wordt het rebuild doel van het project MyProject.proj gebouwd.

MSBuild.exe MyProject.proj -t:rebuild

Zie ook