我有一堆从Internet下载的解决方案(codeplex等),我想构建它们并在DLL上运行一个工具。我想通过自动化做到这一点。
建议使用 MSBuild API ,因为它可以让您轻松获取错误信息并操作MsBuild进一步获取其他信息。不幸的是,很难记录下来:
谢谢!
答案 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。