См. введение в API MSBuild для .NET 4.0 для примера с использованием .NET 4.0 MSBuild API:
List<ILogger> loggers = new List<ILogger>();
loggers.Add(new ConsoleLogger());
var projectCollection = new ProjectCollection();
projectCollection.RegisterLoggers(loggers);
var project = projectCollection.LoadProject(buildFileUri); // Needs a reference to System.Xml
try
{
project.Build();
}
finally
{
projectCollection.UnregisterAllLoggers();
}
Более простой пример:
var project = new Project(buildFileUri, null, "4.0");
var ok = project.Build(); // Or project.Build(targets, loggers)
return ok;
Не забудьте использовать профиль .NET 4 (а не клиентский профиль).
Добавьте следующие ссылки: System.XML, Microsoft.Build, Microsoft.Build.Framework и, при необходимости, Microsoft.Build.Utilities.v4.0.
Также посмотрите вопрос о переполнении стека Программный запуск MSBuild.
Чтобы построить решение, сделайте следующее:
var props = new Dictionary<string, string>();
props["Configuration"] = "Release";
var request = new BuildRequestData(buildFileUri, props, null, new string[] { "Build" }, null);
var parms = new BuildParameters();
// parms.Loggers = ...;
var result = BuildManager.DefaultBuildManager.Build(parms, request);
return result.OverallResult == BuildResultCode.Success;
person
W1M0R
schedule
23.05.2012