如何使用MsBuild API 4.0自动生成解决方案?

如何使用MsBuild API 4.0自动生成解决方案?,msbuild,automation,solution,Msbuild,Automation,Solution,我从互联网上下载了很多解决方案(codeplex等),我想构建它们并在DLL上运行一个工具。我想通过自动化来实现这一点 有人建议使用MSBuild API,因为这样可以很容易地获取错误信息并进一步操作MSBuild以获取其他信息。不幸的是,几乎没有记录,因此: 如何生成.sln文件(通过MSBuild API 4.0) 如何捕获错误信息?(我看到了一个如何将日志输出到控制台的示例,但没有找到文件的smth) 谢谢 也许我遗漏了一些东西,但是对于这样一个简单的任务,为什么它必须是MSBuildAP

我从互联网上下载了很多解决方案(codeplex等),我想构建它们并在DLL上运行一个工具。我想通过自动化来实现这一点

有人建议使用MSBuild API,因为这样可以很容易地获取错误信息并进一步操作MSBuild以获取其他信息。不幸的是,几乎没有记录,因此:

  • 如何生成.sln文件(通过MSBuild API 4.0)
  • 如何捕获错误信息?(我看到了一个如何将日志输出到控制台的示例,但没有找到文件的smth)

  • 谢谢

    也许我遗漏了一些东西,但是对于这样一个简单的任务,为什么它必须是MSBuildAPI

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

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

    %windir%\Microsoft.net\Framework\v4.0.30319\msbuild.exe MySolution.sln
    
    到,您只需添加以下内容:
    (从链接复制的示例)

    因此,最终声明如下所示:

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

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

    您描述的任何内容都不需要使用MSBuild API。如果您想扩展定制构建任务的构建过程,那么使用MS构建API是值得的,但是如果您只是想自动化构建,那么使用MS构建API是没有用的。API有很好的文档记录。下面是一个类似于MSDN文档的示例

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

    2) 正如我的Christian提到的,你可以用记录器来完成。以下是文档:


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

    我在stackoverflow上发现了一个相关问题,该问题提供了解决方案:

    公认的答案提供了良好的资源:

    使用MSBuild 4.0记录生成消息:


    此外,msdn上还有一个日志使用示例:

    很公平,我知道如何通过运行命令行来实现这一点,但出于自动化目的,使用MSBuild API将提供更多的控制—我计划稍后注入一些任务,例如。@Christian Specht—因为对控制台进行任何处理都是可以避免的额外复杂性。
    %windir%\Microsoft.net\Framework\v4.0.30319\msbuild.exe MySolution.sln /l:FileLogger,Microsoft.Build;logfile=MyLog.log