Qual è il percorso predefinito per i log di MSBuild?


101

Utilizzo Visual Studio Express 2012. Dov'è il percorso del file di registro? Ho cercato nella cartella in cui sono archiviati la mia soluzione e i miei progetti, ma non riesco a trovare alcun file .log.

Questa è la configurazione per la registrazione:

inserisci qui la descrizione dell'immagine


1
Non esiste un file .log predefinito. Guarda nella finestra Output.
Hans Passant

13
@ Hans, nel mio caso, la finestra di output ha messaggi che dicono "più informazioni sono disponibili nel registro di compilazione". quindi c'è un registro separato da qualche parte. Non l'ho ancora trovato.
Brandon Kuczenski

Risposte:


106

Il file di registro di Visual Studio è supportato solo per i progetti C ++. Devi solo lavorare con la finestra di output per gli altri.

Vedi questo thread simile: VS2010: log di build minimo nell'output e log dettagliato nel file di log

E nel caso in cui ti capiti di farlo per un progetto C ++, il file si trova in :

... log di compilazione nella directory dei file intermedi ... Il percorso e il nome del log di compilazione è rappresentato dalla macro espressione MSBuild, $(IntDir)\$(MSBuildProjectName).log.


14
Penso che sia solo sciocco da parte di Visual Studio non avere una registrazione dettagliata in un file. Vabbè, una realtà che devo accettare. Grazie per la tua risposta, @Dmitry
Hanxue

8
@hanxue - Ha un registro. Quel registro semplicemente non viene inviato a un file. Se vuoi un file di registro, esegui msbuild dalla riga di comando.
Ritch Melton

43
ALLORA PERCHÉ NON DICE COSÌ :-(
Simon_Weaver,

2
Dio. Accidenti. Perché questa non è solo una proprietà sulla soluzione? Perché la finestra di output ha prestazioni così terribili in ogni caso, quindi sei costretto a mantenerla su un output minimo tutto il tempo, e perché sono come 8 passaggi per passare da un livello di output all'altro? Risolvi uno di questi per favore.
James,

@ James Immagino che potresti essere in grado di scrivere una macro e assegnarla al pulsante della barra degli strumenti. Questi collegamenti potrebbero essere un punto di partenza stackoverflow.com/questions/12062515/... e vlasovstudio.com/visual-commander
Dmitry Pavlov

23

La documentazione di msdn è abbastanza chiara su questo (e non ti piacerà!):

https://msdn.microsoft.com/en-us/library/jj651643.aspx

Dove dice:

Per creare un file di registro della build per un progetto in codice gestito Sulla barra dei menu, scegliere Genera, Genera soluzione.

Nella finestra Output, evidenzia le informazioni dalla build, quindi copiale negli Appunti.

Apri un editor di testo, come Blocco note, incolla le informazioni nel file e quindi salvalo.


15
Il che va bene finché non si utilizza l'output diagnostico e VS decide di lanciare un'eccezione "memoria esaurita" quando si tenta di copiare negli appunti. È davvero una decisione fondamentalmente stupida quella di non supportare l'invio del log di compilazione a un file nell'IDE. Ma hey ho, questa è la vita.
Steve Pettifer

1
Condividere la build in un file di testo? msbuild mysln.sln> output.txt (probabilmente sarà necessario aggiungere parametri a quello per compilare sln, ma dovresti essere in grado di catturarlo dalla finestra di output vs iirc al livello di verbosità corretto)
Daniel M

Di solito quando compilo dalla riga di comando, faccio in modo che i miei sistemi di compilazione inviino informazioni minime alla finestra del terminale, ma un registro dettagliato in un file. MSBuild può farlo.
C Johnson

"E non ti piacerà!" Questo dice tutto in 6 parole, grazie
FIV

23

Usa l'output di build invece di accedere al file. Invece di copiare / incollare, fai semplicemente clic da qualche parte nell'output e premi CTRL + S per salvare. Visual Studio ti chiederà una posizione (testato con Visual Studio 2017, ma presumo che funzioni anche nelle versioni precedenti).

inserisci qui la descrizione dell'immagine


Questo è buono. Dovrebbero metterlo anche nel menu contestuale.
Lucentezza

2

Sebbene sia vero che VS non lo consente direttamente, è comunque possibile compilare con MSBuild "dentro" VS2015 e ottenere sia l'output della finestra di compilazione che il file di registro, come segue: (Probabilmente questo è un po 'un trucco.)

  1. Nella tua soluzione VS Managed, aggiungi un nuovo progetto (chiamiamolo "Make"). un. Il tipo di progetto che desideri è Visual C ++ / NMake project.
  2. Definisci i comandi di MSBuild di cui hai bisogno sulla riga di comando (vedi sotto).
  3. Modificare la configurazione della soluzione per creare il progetto NMake invece dei normali progetti gestiti.

Questo creerà un progetto con righe di comando Build, Rebuild e Clean in cui è possibile eseguire MSBuild direttamente. Per esempio:

Ricostruire: MSBuild.exe /ds /v:diag /property:Configuration=Debug ..\BuildTest\BuildTest.csproj /t:Clean,Build

Costruire: MSBuild.exe /ds /v:diag /property:Configuration=Debug ..\BuildTest\BuildTest.csproj /t:Build

Pulito: MSBuild.exe /ds /v:diag /property:Configuration=Debug ..\BuildTest\BuildTest.csproj /t:Clean

È inoltre possibile specificare più righe di comando MSBuild.EXE per creare più progetti. Per il consueto risultato della creazione dell'intera soluzione è possibile indirizzare solo gli assemblaggi finali finali e lasciare che il grafico delle dipendenze generi i singoli obiettivi.

Questo produrrà un file .log, dove NAME è il nome del progetto NMake che hai usato. Nell'esempio sopra, il registro sarebbe make.log.

Un esempio funzionante è disponibile su GitHub: https://github.com/bitblitz/VS_MsbuildExample (testato con VS2015)

Si noti che la creazione diretta di singoli progetti continuerà a essere compilata con il normale comportamento VS, ma è possibile creare la soluzione completa all'interno di VS e ottenere i log di compilazione.


1
Il collegamento a VS_MsbuildExample è interrotto.
JPaget

Hey @brad, cosa è successo al tuo esempio su GitHub?
Yann Duran

Risolto github, scusa per i problemi. @YannDuran
Brad
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.