Come faccio a tubo mia uscita MSBuild ad un file di log da rake
Domanda
Sto utilizzando la favolosa gemma tonno bianco con il rastrello per costruire un nuovo progetto NET. La mia organizzazione è ancora utilizzando NAnt, e ci sono un sacco di gente che si aspettano di vedere un file di registro quando viene eseguito lo script di build. Come si salva l'output compito msbuild che viene scaricato su STDOUT ad un file di log?
Soluzione
ho capito una soluzione. Non abbiamo davvero bisogno di un file di log di compilazione per il nostro server CI (Hudson), ma sarebbe comunque bello avere i file fisici per verificare quando la compilazione viene eseguito a livello locale, in particolare quando stiamo facendo il check-in danza e la costruzione non riesce.
Per fortuna, i tizi tonno bianco erano abbastanza intelligente per creare un opzione ".parameters", che può essere utilizzato con qualsiasi dei compiti dello strumento da riga di comando per aggiungere i parametri che non sono esplicitamente gestiti da questo compito. Così, per esempio, è possibile aggiungere un parametro al compito MSBuild per specificare un file di log per MSBuild. E si va un po 'qualcosa di simile a questo:
BUILD_REPORTS = 'BuildReports'
MSBUILD_EXE = "C:/Windows/Microsoft.NET/Framework/v4.0.30319/msbuild.exe"
directory BUILD_REPORTS
CLEAN.include BUILD_REPORTS
task :default => [:build]
desc "Build the solution"
msbuild :build => BUILD_REPORTS do |msb|
msb.properties :configuration => :Debug
msb.path_to_command = MSBUILD_EXE
msb.targets :Clean, :Build
msb.solution = "./mysolution.sln"
msb.parameters "/l:FileLogger,Microsoft.Build;logfile=" + log_file("build")
end
def log_file(log_file_name)
BUILD_REPORTS + log_file_name + ".log"
end
La nostra rakefile è un po 'più complessa di quella, perché ha a che fare più cose, ma si ottiene l'idea.