public IServiceResult Build(string solutionPath, string buildConfiguration, IEnumerable<KeyValuePair<string, string>> additionalBuildProperties)
{
if (string.IsNullOrWhiteSpace(solutionPath))
{
throw new ArgumentException("solutionPath");
}
if (string.IsNullOrWhiteSpace(buildConfiguration))
{
throw new ArgumentException("buildConfiguration");
}
if (additionalBuildProperties == null)
{
throw new ArgumentNullException("additionalBuildProperties");
}
// prepare build parameters
var buildProperties = this.buildPropertyProvider.GetBuildProperties(
buildConfiguration, DefaultTargetPlatform, this.buildFolder, additionalBuildProperties.ToList());
// prepare build request
var buildLogger = new ConsoleLogger();
var buildRequestData = new BuildRequestData(solutionPath, buildProperties, null, new[] { DefaultBuildTarget }, null);
var buildParameters = new BuildParameters { Loggers = new ILogger[] { buildLogger } };
// build
BuildResult result = BuildManager.DefaultBuildManager.Build(buildParameters, buildRequestData);
if (result.OverallResult == BuildResultCode.Success)
{
return new SuccessResult(
Resources.SolutionBuilder.SuccessMessageTemplate,
solutionPath,
buildConfiguration,
string.Join(",", buildProperties.Select(p => p.Key + "=" + p.Value)));
}
return new FailureResult(
Resources.SolutionBuilder.FailureMessageTemplate,
solutionPath,
buildConfiguration,
string.Join(",", buildProperties.Select(p => p.Key + "=" + p.Value)));
}