如何使用MsBuild API 4.0自动构建解决方案?

时间:2012-03-13 23:12:45

标签: msbuild automation solution

我有一堆从Internet下载的解决方案(codeplex等),我想构建它们并在DLL上运行一个工具。我想通过自动化做到这一点。

建议使用 MSBuild API ,因为它可以让您轻松获取错误信息并操作MsBuild进一步获取其他信息。不幸的是,很难记录下来:

  1. 如何构建.sln文件(通过MSBuild API 4.0)?
  2. 如何捕获错误信息? (我看到了一个关于如何将日志输出到控制台的示例,但没有找到文件的smth)
  3. 谢谢!

3 个答案:

答案 0 :(得分:4)

我在stackoverflow上找到了一个提供解决方案的相关问题:

running msbuild programmatically

接受的答案提供了良好的资源:

http://social.msdn.microsoft.com/Forums/en-US/msbuild/thread/ec95c513-f972-45ad-b108-5fcfd27f39bc/ 使用MSBuild 4.0记录构建消息: http://www.go4answers.com/Example/building-solution-programatically-vs-5395.aspx

此外,还有msdn上的日志使用示例:http://msdn.microsoft.com/en-us/library/microsoft.build.framework.ilogger.aspx

答案 1 :(得分:3)

也许我错过了一些东西,但为什么这样的简单任务必须是MSBuild API

根据您在问题中所写的内容,我认为不需要仅使用API​​来构建解决方案并将输出捕获到文本文件中。
您可以使用MSBuild命令行工具。

使用MSBuild构建解决方案非常简单:

%windir%\Microsoft.net\Framework\v4.0.30319\msbuild.exe MySolution.sln

capture the output in a text file,您只需添加以下内容:
(从链接中复制的示例)

/l:FileLogger,Microsoft.Build;logfile=MyLog.log

所以最后的陈述如下:

%windir%\Microsoft.net\Framework\v4.0.30319\msbuild.exe MySolution.sln /l:FileLogger,Microsoft.Build;logfile=MyLog.log

这将构建解决方案并将MSBuild的输出保存在当前目录中名为MyLog.log的文本文件中。

答案 2 :(得分:1)

您所描述的任何内容都不需要使用MSBuild API。如果要扩展自定义构建任务的构建过程,则使用MS Build API是值得的,但如果您只想自动化构建,则无用。 API有很好的文档记录。这是与MSDN文档类似的内容。 MSBuild API

直接回答您的问题: 1)MSBuild不了解解决方案文件。这些是视觉工作室的概念。如果从命令行构建,MSBuild将“运行”解决方案文件,但它通过从解决方案文件生成msbuild文件来执行此操作。通过直接运行顶层项目文件可以获得相同的效果。

2)正如我所说的基督徒,你可以用记录器做到这一点。这是文档:Build Logger

如果要自动化构建,请使用已建立的构建自动化环境,如Jenkins或TeamCity。