Informazioni di riferimento sulla riga di comando di MSBuild
Quando si usa MSBuild.exe per compilare un progetto o un file di soluzione, è possibile includere diverse opzioni per specificare vari aspetti del processo.
Ogni opzione è disponibile in due forme: -switch
e /switch
. La documentazione mostra solo il modulo -switch
. Le opzioni non fanno distinzione tra maiuscole e minuscole. Se si esegue MSBuild da una shell diversa dal prompt dei comandi di Windows, gli elenchi di argomenti a un'opzione (separati da punti e virgola o virgole) potrebbero richiedere virgolette singole o doppie per assicurarsi che gli elenchi vengano passati a MSBuild anziché interpretati dalla shell.
I comandi dell'interfaccia della riga di comando di .NET dotnet build, dotnet publish, dotnet msbuild e i comandi correlati passano queste opzioni a MSBuild, quindi questo riferimento è applicabile quando si usano tali comandi; tuttavia dotnet run
non lo fa.
Sintassi
MSBuild.exe [Switches] [ProjectFile]
Argomenti
Discussione | Descrizione |
---|---|
ProjectFile |
Compila le destinazioni nel file di progetto specificato. Se non si specifica un file di progetto, MSBuild cerca nella directory di lavoro corrente un'estensione del nome di file che termina in proj e usa tale file. È anche possibile specificare un file di soluzione di Visual Studio per questo argomento. |
Interruttori
La prima colonna della tabella seguente mostra una forma lunga e breve di ogni opzione. Entrambi i moduli sono equivalenti.
Le parentesi quadre []
indicano parti facoltative e parentesi graffe {}
indicano valori forniti dall'utente.
Interruttore | Descrizione |
---|---|
-detailedSummary[:{True or False}] -ds[:{True or False}] |
Se True , visualizzare informazioni dettagliate alla fine del log di compilazione sulle configurazioni compilate e su come sono state pianificate nei nodi. |
-getItem:{itemName,...} |
Scrivere il valore dell'elemento o degli elementi dopo la valutazione, senza eseguire la compilazione oppure se viene usata l'opzione -targets o l'opzione -getTargetResult , scrivere i valori dopo la compilazione. |
-getProperty:{propertyName,...} |
Scrivere il valore della proprietà o delle proprietà dopo la valutazione, senza eseguire la compilazione oppure se viene usata l'opzione -targets o l'opzione -getTargetResult , scrivere i valori dopo la compilazione. |
-getTargetResult:{targetName,...} |
Scrivere i valori di output delle destinazioni specificate. |
-graphBuild[:{True or False}] -graph[:{True or False}] |
Determina la creazione e la compilazione di un grafo di progetto in MSBuild. La creazione di un grafico implica l'identificazione dei riferimenti di progetto alle dipendenze dei moduli. La compilazione del grafico implica il tentativo di compilare riferimenti al progetto prima dei progetti che vi fanno riferimento, a differenza della pianificazione tradizionale di MSBuild. Richiede MSBuild 16 o versione successiva. |
-help /? o -h |
Visualizzare le informazioni sull'utilizzo. Il comando seguente è un esempio:msbuild.exe -? |
-ignoreProjectExtensions: {extensions} -ignore: {extensions} |
Ignorare le estensioni specificate quando si determina il file di progetto da compilare. Usare un punto e virgola o una virgola per separare più estensioni, come illustrato nell'esempio seguente:-ignoreprojectextensions:.vcproj,.sln |
-inputResultsCaches[:{cacheFile; ...}] -irc[:{cacheFile; ...}] |
Elenco separato da punto e virgola dei file della cache di input da cui MSBuild leggerà i risultati della compilazione. Se -isolateProjects è impostato su False , viene impostato su True . |
-interactive[:{True or False}] |
Indica che le azioni nella compilazione possono interagire con l'utente. Non usare questo argomento in uno scenario automatizzato in cui l'interattività non è prevista. Specificare -interactive equivale a specificare -interactive:true . Usare il parametro per eseguire l'override di un valore proveniente da un file di risposta. |
-isolateProjects[:{True, MessageUponIsolationViolation, False}] -isolate[:{True, MessageUponIsolationViolation, False}] |
Fa sì che MSBuild compili ogni progetto in isolamento. Se impostato su MessageUponIsolationViolation (o sulla forma breve Message ), vengono serializzati solo i risultati delle destinazioni di primo livello se viene fornita l'opzione -outputResultsCache . Questa opzione consiste nel ridurre le probabilità di una destinazione di isolamento che viola un progetto di dipendenza usando uno stato non corretto a causa della dipendenza da una destinazione memorizzata nella cache i cui effetti collaterali non vengono presi in considerazione. Ad esempio, la definizione di una proprietà. Questa modalità è più restrittiva, perché richiede che il grafico del progetto sia individuabile in modo statico in fase di valutazione, ma può migliorare la pianificazione e ridurre il sovraccarico di memoria durante la compilazione di un set di progetti di grandi dimensioni. |
-lowPriority[:{True or False}] -low[:{True or False}] |
Determina l'esecuzione di MSBuild con priorità bassa del processo. Specificare -lowPriority equivale a specificare -lowPriority:True . |
-maxCpuCount[:{number}] -m[:{number}] |
Specifica il numero massimo di processi simultanei da utilizzare durante la compilazione. Se non si include questa opzione, il valore predefinito è 1. Se si include questa opzione senza specificare un valore, MSBuild usa fino al numero di processori nel computer. Per altre informazioni, vedere Compilazione di più progetti in parallelo. L'esempio seguente indica a MSBuild di compilare usando tre processi MSBuild, che consente la compilazione contemporaneamente di tre progetti: msbuild myproject.proj -maxcpucount:3 |
-noAutoResponse -noautorsp |
Non includere alcun file MSBuild.rsp o Directory.Build.rsp automaticamente. |
-nodeReuse:{value} -nr:{value} |
Abilitare o disabilitare il riutilizzo dei nodi MSBuild. È possibile specificare i valori seguenti: - True. I nodi rimangono al termine della compilazione in modo che le compilazioni successive possano usarle (impostazione predefinita). - False. I nodi non rimangono al termine della compilazione. Un nodo corrisponde a un progetto in esecuzione. Se si include l'opzione -maxcpucount , più nodi possono essere eseguiti simultaneamente. |
-nologo |
Non visualizzare il banner di avvio o il messaggio di copyright. |
-preprocess[:{filepath}]
-pp[:{filepath}] |
Creare un singolo file di progetto aggregato inlining di tutti i file che verrebbero importati durante una compilazione, con i relativi limiti contrassegnati. È possibile usare questa opzione per determinare più facilmente quali file vengono importati, da dove vengono importati i file e quali file contribuiscono alla compilazione. Quando si usa questa opzione, il progetto non viene compilato. Se si specifica un filepath , il file di progetto aggregato viene restituito al file. In caso contrario, l'output viene visualizzato nella finestra della console.Per informazioni su come usare l'elemento Import per inserire un file di progetto in un altro file di progetto, vedere elemento Import (MSBuild) e Procedura: Usare la stessa destinazione in più file di progetto. |
-outputResultsCache[:{cacheFile}] -orc[:{cacheFile}] |
File della cache di output in cui MSBuild scrive il contenuto delle cache dei risultati di compilazione alla fine della compilazione. Se -isolateProjects è impostato su False , viene impostato su True . |
profileEvaluation:{file} |
Profila la valutazione di MSBuild e scrive il risultato nel file specificato. Se l'estensione del file specificato è '.md', il risultato viene generato in formato Markdown. In caso contrario, viene generato un file separato da tabulazioni. |
-property:{name}={value} -p:{name}={value} |
Impostare o eseguire l'override delle proprietà a livello di progetto specificate, dove name è il nome della proprietà e value è il valore della proprietà. Specificare ogni proprietà separatamente oppure usare un punto e virgola o una virgola per separare più proprietà, come illustrato nell'esempio seguente:-property:WarningLevel=2;OutDir=bin\Debug Vedere proprietà comuni del progetto MSBuild per un elenco delle proprietà di uso comune. Il set completo di proprietà disponibili dipende dal tipo di progetto, dall'SDK e dai file importati. |
-restore -r |
Esegue la destinazione Restore prima di compilare le destinazioni effettive. |
-restoreProperty:{name}={value} -rp:{name}={value} |
Impostare o eseguire l'override di queste proprietà a livello di progetto solo durante il ripristino e non utilizzare le proprietà specificate con l'argomento -property .
name è il nome della proprietà e value è il valore della proprietà. Usare un punto e virgola o una virgola per separare più proprietà o specificare ogni proprietà separatamente. |
-target:{targets} -t:{targets} |
Compilare le destinazioni specificate nel progetto. Specificare ogni destinazione separatamente oppure usare un punto e virgola o una virgola per separare più destinazioni, come illustrato nell'esempio seguente:-target:PrepareResources;Compile Se si specificano destinazioni usando questa opzione, vengono eseguite invece di qualsiasi destinazione nell'attributo DefaultTargets nel file di progetto. Per altre informazioni, vedere ordine di compilazione di destinazione e Procedura: Specificare la destinazione da compilare per la prima.Una destinazione è un gruppo di attività. Per altre informazioni, vedere Destinazioni. |
-targets[:{file}] -ts[:{file}] |
Scrivere l'elenco delle destinazioni disponibili nel file specificato (o nel dispositivo di output, se non è specificato alcun file), senza eseguire effettivamente il processo di compilazione. |
-toolsVersion:{version} -tv:{version} |
Specifica un set di strumenti personalizzato. Un set di strumenti è costituito da attività, destinazioni e strumenti usati per compilare un'applicazione. Vedere Set di strumenti (ToolsVersion) e configurazioni standard e personalizzate del set di strumenti. |
-validate:[{schema}] -val[{schema}] |
Convalidare il file di progetto e, se la convalida ha esito positivo, compilare il progetto. Se non si specifica schema , il progetto viene convalidato rispetto allo schema predefinito.Se si specifica schema , il progetto viene convalidato rispetto allo schema specificato.L'impostazione seguente è un esempio: -validate:MyExtendedBuildSchema.xsd |
-verbosity:{level} -v:{level} |
Specifica la quantità di informazioni da visualizzare nel log di compilazione. Ogni logger visualizza gli eventi in base al livello di dettaglio impostato per il logger. È possibile specificare i livelli di dettaglio seguenti: q[uiet] , m[inimal] , n[ormal] (impostazione predefinita), d[etailed] e diag[nostic] .L'impostazione seguente è un esempio: -verbosity:quiet |
-version -ver |
Visualizza solo le informazioni sulla versione. Il progetto non viene compilato. |
@{file} |
Inserire opzioni della riga di comando da un file di testo. Se sono presenti più file, è necessario specificarli separatamente. Per altre informazioni, vedere File di risposta. |
-warnAsError[:{code; ...}] -err[:{code; ...}] |
Elenco di codici di avviso da considerare come errori. Usare un punto e virgola o una virgola per separare più codici di avviso. Per considerare tutti gli avvisi come errori, usare l'opzione senza valori. Quando un avviso viene considerato come un errore, la destinazione continua a essere eseguita come se fosse un avviso, ma la compilazione complessiva non riesce. Esempio: -err:MSB4130 |
-warnNotAsError[:{code; ...}] -noerr[:{code; ...}] |
MSBuild 17.0 e versioni successive. Elenco di codici di avviso che non devono essere promossi a errori. In particolare, se l'opzione warnAsError è impostata per alzare di livello tutti gli avvisi agli errori, i codici di errore specificati con warnNotAsError non vengono alzati di livello. Questo non ha alcun effetto se warnAsError non è impostato per alzare di livello tutti gli avvisi agli errori. Usare un punto e virgola o una virgola per separare più codici di avviso. Esempio: -noerr:MSB4130 |
-warnAsMessage[:{code}; ...}] -noWarn[:{code; ...}] |
Elenco di codici di avviso da considerare come messaggi di importanza bassa. Usare un punto e virgola o una virgola per separare più codici di avviso. Esempio: -noWarn:MSB3026 |
Commutatori per logger
Interruttore | Descrizione |
---|---|
-binaryLogger[:[LogFile=]{output.binlog} [;ProjectImports=None ,Embed ,ZipFile]] -bl[:[LogFile=]{output.binlog} [;ProjectImports=None ,Embed ,ZipFile]] |
Serializza tutti gli eventi di compilazione in un file binario compresso. Per impostazione predefinita, il file si trova nella directory corrente e denominato msbuild.binlog. Il log binario è una descrizione dettagliata del processo di compilazione che può essere usato in un secondo momento per ricostruire i log di testo e usato da altri strumenti di analisi. Un log binario è in genere inferiore a 10-20 volte rispetto al log di diagnostica del testo più dettagliato, ma contiene altre informazioni. Il logger binario per impostazione predefinita raccoglie il testo di origine dei file di progetto, inclusi tutti i progetti importati e i file di destinazione rilevati durante la compilazione. Il parametro facoltativo ProjectImports controlla questo comportamento:- ProjectImports=None. Non raccogliere le importazioni del progetto. - ProjectImports=Embed. Incorporare le importazioni del progetto nel file di log (impostazione predefinita). - ProjectImports=ZipFile. Salvare i file di progetto in {output}.projectimports.zip in cui <> output corrisponde al nome del file di log binario. L'impostazione predefinita per ProjectImports è Incorpora. Nota: il logger non raccoglie file di origine non MSBuild, ad esempio .cs , .cpp e così via.Un file con estensione binlog può essere "riprodotto" passandolo a msbuild.exe come argomento anziché come progetto/soluzione. Altri logger ricevono le informazioni contenute nel file di log come se fosse in corso la compilazione originale. Per altre informazioni sul log binario e sui relativi utilizzi, vedere: https://github.com/dotnet/msbuild/blob/main/documentation/wiki/Binary-Log.md esempi: - -bl - -bl:output.binlog - -bl:output.binlog;ProjectImports=None - -bl:output.binlog;ProjectImports=ZipFile - -bl:..\..\custom.binlog - -binaryLogger |
-consoleLoggerParameters:{parameters} -clp:{parameters} |
Passare i parametri specificati al logger della console, che visualizza le informazioni di compilazione nella finestra della console. È possibile specificare i parametri seguenti: - PerformanceSummary. Mostra il tempo dedicato a attività, destinazioni e progetti. - Riepilogo. Visualizzare il riepilogo degli errori e degli avvisi alla fine. - NoSummary. Non visualizzare il riepilogo degli errori e degli avvisi alla fine. - ErrorsOnly. Mostra solo errori. - WarningsOnly. Mostra solo avvisi. - NoItemAndPropertyList. Non visualizzare l'elenco di elementi e proprietà visualizzati all'inizio di ogni compilazione del progetto se il livello di dettaglio è impostato su diagnostic .- ShowCommandLine. Mostra TaskCommandLineEvent messaggi.- ShowProjectFile. Visualizzare il percorso del file di progetto nei messaggi di diagnostica. Questa impostazione è attivata per impostazione predefinita. - ShowTimestamp. Mostra il timestamp come prefisso a qualsiasi messaggio. - ShowEventId. Mostra l'ID evento per ogni evento avviato, evento completato e messaggio. - ForceNoAlign. Non allineare il testo alle dimensioni del buffer della console. - DisableConsoleColor. Usare i colori della console predefiniti per tutti i messaggi di registrazione. - DisableMPLogging. Disabilitare lo stile di registrazione multiprocessore di output durante l'esecuzione in modalità non multiprocessore. - EnableMPLogging. Abilitare lo stile di registrazione multiprocessore anche quando è in esecuzione in modalità non multiprocessore. Questo stile di registrazione è attivato per impostazione predefinita. - ForceConsoleColor. Usare i colori della console ANSI anche se la console non la supporta. - dettaglio. Eseguire l'override dell'impostazione -verbosity per questo logger.Usare un punto e virgola per separare più parametri, come illustrato nell'esempio seguente: -consoleLoggerParameters:PerformanceSummary;NoSummary -verbosity:minimal Il logger della console predefinito è al livello di dettaglio normale e include un Summary . |
-distributedFileLogger -dfl |
Registrare l'output di compilazione di ogni nodo MSBuild nel proprio file. Il percorso iniziale per questi file è la directory corrente. Per impostazione predefinita, i file sono denominati MSBuild{NodeId}.log. È possibile usare l'opzione -fileLoggerParameters per specificare il percorso dei file e altri parametri per fileLogger.Se si assegna un nome a un file di log usando l'opzione -fileLoggerParameters , il logger distribuito usa tale nome come modello e aggiunge l'ID del nodo a tale nome durante la creazione di un file di log per ogni nodo. |
-distributedLogger:{central logger},{forwarding logger}, ... -dl:{central logger},{forwarding logger, ...} |
Registrare gli eventi da MSBuild, collegando un'istanza del logger diversa a ogni nodo. Per specificare più logger, specificare ogni logger separatamente. Usare la sintassi del logger per specificare un logger, ad eccezione del fatto che si fornisce e una classe aggiuntiva per il logger di inoltro. Per la sintassi del logger, vedere l'opzione -logger .Gli esempi seguenti illustrano come usare questa opzione: -dl:XMLLogger,MyLogger,Version=1.0.2,Culture=neutral -dl:MyLogger,C:\My.dll*ForwardingLogger,C:\Logger.dll |
-fileLogger[{number}] -fl[{number}] |
Registrare l'output della compilazione in un singolo file nella directory corrente. Se non si specifica number , il file di output viene denominato msbuild.log. Se si specifica number , il file di output viene denominato msbuild<n>.log, dove <n> è number .
Number può essere una cifra compresa tra 1 e 9.È possibile usare l'opzione -fileLoggerParameters per specificare il percorso del file e altri parametri per fileLogger. |
-fileLoggerParameters[{number}]: parameters -flp[{number}]: {parameters} |
Specifica eventuali parametri aggiuntivi per il logger di file e il logger di file distribuito. La presenza di questa opzione implica che è presente l'opzione -filelogger[number] corrispondente.
Number può essere una cifra compresa tra 1 e 9.È possibile usare tutti i parametri elencati per -consoleloggerparameters . È anche possibile usare uno o più dei parametri seguenti:- LogFile. Percorso del file di log in cui viene scritto il log di compilazione. Il logger di file distribuito antepone questo percorso ai nomi dei relativi file di log. - Accoda. Determina se il log di compilazione viene aggiunto al file di log o lo sovrascrive. Quando si imposta l'opzione, il log di compilazione viene aggiunto al file di log. Quando l'opzione non è presente, il contenuto di un file di log esistente viene sovrascritto. Esempio: msbuild myfile.proj -flp:FileLogger,Microsoft.Build;logfile=MyLog.log;append Se si include un'impostazione esplicita di true o false , il log viene aggiunto indipendentemente dall'impostazione. Se non si include l'opzione di accodamento, il log viene sovrascritto.In questo caso, il file viene sovrascritto: msbuild myfile.proj -flp:FileLogger,Microsoft.Build;logfile=MyLog.log In questo caso, il file viene aggiunto: msbuild myfile.proj -flp:FileLogger,Microsoft.Build;logfile=MyLog.log;append=true In questo caso, il file viene aggiunto: msbuild myfile.proj -flp:FileLogger,Microsoft.Build;logfile=MyLog.log;append=false - codifica. Specifica la codifica per il file , ad esempio UTF-8, Unicode o ASCII. L'esempio seguente genera file di log separati per avvisi ed errori: -flp1:logfile=errors.txt;errorsonly -flp2:logfile=warnings.txt;warningsonly Gli esempi seguenti mostrano altre possibilità: -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 |
Specifica il logger da usare per registrare gli eventi da MSBuild. Per specificare più logger, specificare ogni logger separatamente. Usare la sintassi seguente per logger : [LoggerClass,]LoggerAssembly[;LoggerParameters] Usare la sintassi seguente per LoggerClass : [PartialOrFullNamespace.]LoggerClassName Non è necessario specificare la classe logger se l'assembly contiene esattamente un logger. Usare la sintassi seguente per LoggerAssembly : AssemblyName[,StrongName] \| AssemblyFile I parametri del logger sono facoltativi e vengono passati al logger esattamente come vengono immessi. Negli esempi seguenti viene usata l'opzione -logger .-logger:XMLLogger,MyLogger,Version=1.0.2,Culture=neutral -logger:XMLLogger,C:\Loggers\MyLogger.dll;OutputAsHTML |
-noConsoleLogger -noconlog |
Disabilitare il logger di console predefinito e non registrare gli eventi nella console. |
-terminalLogger[:auto ,on ,off] -tl[:auto ,on ,off] |
Abilitare o disabilitare il logger del terminale . Il logger del terminale fornisce un output di compilazione avanzato nella console in tempo reale, organizzato logicamente per progetto e progettato per evidenziare informazioni interattive. Specificare auto (o usare l'opzione senza argomenti) per usare il logger del terminale solo se l'output standard non viene reindirizzato. Non analizzare l'output o basarsi su di esso rimane invariato nelle versioni future. Questa opzione è disponibile in MSBuild 17.8 e versioni successive. |
Esempio
Nell'esempio seguente viene compilata la destinazione rebuild
del progetto MyProject.proj.
MSBuild.exe MyProject.proj -t:rebuild
Vedere anche
- di riferimento di MSBuild
- proprietà comuni del progetto MSBuild