Reputation: 868
I'm simply trying to get no output from a build except the error/warning summary at the end. Not exactly a demanding task.
The command line:
msbuild.exe /nologo /verbosity:quiet /consoleloggerparameters:summary project.sln
As described here: http://msdn.microsoft.com/en-us/library/ms164311.aspx It appears MSBuild isn't working as it should - there is no output at all. with /verbosity:normal there is tonnes of output and a useful error/warning summary at the end, is there any way of just not seeing the noise?
MSBuild reports version 12.0.21005.1 as distributed with Studio Express 2013.
Upvotes: 36
Views: 24946
Reputation: 15397
[Obsolete:] Use /verbosity:minimal
instead. This prints much less, but not nothing.
Upvotes: 10
Reputation: 708
Use /consoleloggerparameters:ErrorsOnly
or clp:ErrorsOnly
to solve your problem.
Upvotes: 22
Reputation: 11973
late to the party, but MSBuild has the option /verbosity:quiet
now and it doesn't print out anything beside error and warnings.
You can specify the following verbosity levels:
q[uiet], m[inimal], n[ormal], d[etailed], and diag[nostic]
Documentation source: https://msdn.microsoft.com/en-us/library/ms164311.aspx
Upvotes: 25
Reputation: 35921
I don't think there is a set of options thet matches what you want exactly. But since you're on the commandline anyway, using findstr/grep/tail and the likes is always a good option. Here's an example using powershell to display the summary and what comes after it
powershell -Command "msbuild.exe /nologo project.sln |
Select-String 'Build succeeded|failed' -Context 0, 100"
Another possibility is to use a custom logger, which is not hard as it sounds at first and there are tons of examples on the net. Plus it has the benefit you can get any custom output you want. Here's code to replicate the summary:
using System;
using Microsoft.Build.Utilities;
using Microsoft.Build.Framework;
public class CustomLogger : Logger
{
private int warnings = 0;
private int errors = 0;
public override void Initialize( IEventSource eventSource )
{
eventSource.WarningRaised += ( s, e ) => ++warnings;
eventSource.ErrorRaised += ( s, e ) => ++errors;
eventSource.BuildFinished += ( s, e ) =>
{
Console.WriteLine( errors == 0 ? "Build succeeded." : "Build failed." );
Console.WriteLine( String.Format( " {0} Warning(s)", warnings ) );
Console.WriteLine( String.Format( " {0} Error(s)", errors ) );
};
}
}
Put this in a file CustomLogger.cs and compile it:
csc /t:library CustomLogger.cs /reference:Microsoft.Build.Utilities.v4.0.dll;Microsoft.Build.Framework.dll
which creates a CustomLogger dll file. Now use it like this:
msbuild /nologo /logger:CustomLogger.dll /noconsolelogger project.sln
Upvotes: 13