使用MSBuild以编程方式构建解决方案

时间:2012-09-30 01:09:02

标签: c# visual-studio msbuild

我正在为我的公司编写一个实用程序,它将以一键式方式批量构建多个解决方案。总共有大约8个解决方案,每个解决方案平均有20个项目。该实用程序需要能够捕获构建日志和每个解决方案的错误总数,就像在命令行构建时一样。我知道我这是完成那个的命令

msbuild mysolution.sln /t:build /verbosity:minimal /maxcpucount:xx

但是,如果可能的话,我想使用Microsoft.Build.Evaluation API。我知道Project对象可以加载一个项目,但无论如何都要构建一个完整的解决方案?我打算构建这个实用程序以利用系统上的所有cpus / cores并同时构建多个解决方案。我查看了Microsoft.Build.Evaluation的MSDN页面,虽然文档(仍然)非常糟糕。

感谢您提供的任何帮助!

杰森

1 个答案:

答案 0 :(得分:2)

您不需要Visual Studio解决方案文件(sln)来构建多个项目。您可能知道,Visual Studio项目文件只是MSBuild XML文件,它们可能属于其他项目文件。因此,构建一个项目文件,根据需要构建其他项目。这可以通过两种方式之一完成。

首先,解决方案文件只是MSBuild XML,因此任何可以生成XML的东西都可以生成解决方案。有关详细信息,请参阅MSBuild XML Schema

其次,使用构造函数以编程方式构造Microsoft.Build.Evaluation.Project,该构造函数接受Microsoft.Build.Construction.ProjectRootElement实例,然后调用Project.Build()ProjectRootElement具有添加常见元素类型的方法,例如CreateTaskElement()CreatePropertyElement()CreateTargetElement()

另见: