Visual Studio(.sln)构建运行器和MSBuild之间的差异

时间:2012-02-14 12:32:40

标签: .net visual-studio msbuild continuous-integration teamcity

我正在尝试将TeamCity设置为使用.Net进行配置并配置我拥有的构建运行器:

  1. Visual Studio(sln)
  2. 的MSBuild
  3. Visual Studio 2003
  4. 有什么区别?为什么三个构建在同一类型的项目上工作? (2003年只有2003年,我相信,为什么?)

    考虑到这个问题,我们为.exe文件提供了这个构建运行器:

    1. .NET Process Runner
    2. 命令行
    3. “命令行”构建运行器不适用于任何.net程序集?为什么选择.Net Process Runner?

4 个答案:

答案 0 :(得分:14)

Visual Studio(sln)
如果您的解决方案是 small 并且您不需要执行花哨的东西,则可以使用Visual Studio(sln)构建运行器。它与您进行Project-> Build(来自VS菜单)完全相同。此选项非常易于配置,只需点击几下,您的CI服务器就可以编译您的解决方案。

<强>的MSBuild
如果您需要执行更多高级方案,除了简单编译之外,例如应用不同的配置文件,将转换后的值插入配置文件,部署二进制文件等,您可以选择MSBuild选项。你会知道什么时候需要使用它,因为sln builder无法做到这一点。此选项需要一些构建脚本语言的知识,这是一种基于任务和类似xml的语言。

答案 1 :(得分:3)

当您使用MSBuild构建.SLN文件(非MSBuild文档)时,它会生成一个内存MSBuild文件,该文件引用要在指定配置中构建的所有项目,然后执行它。当您使用Visual Studio构建时,您正在调用DevEnv.com。

某些项目类型(2005/2008中的C ++和2005/2008/2010中的VDPROJ)不是MSBuild文件,不能仅使用MSBuild构建。您将收到一个构建警告,指出一个或多个项目不是有效的MSBuild项目,无法构建。

在一般情况下,我尝试维护精简和平均构建机器,并且只在需要时才安装Visual Studio。

答案 2 :(得分:0)

我注意到两者之间很少。特别是在我们的实例中,我们需要构建一个.vdproj。现在用谷歌搜索两个跑步者后,Command line runner或Visual Studio(sln)。但是,在执行Visual Studio(sln)运行器类型时,我们收到以下错误: “[警告] C:\ BuildAgent \ work \ 1bd75058d7bca32b \ POS \ PoSWidgetInstaller \ myInstaller.vdproj.metaproj警告MSB4078:MSBuild不支持项目文件”myInstaller \ myInstaller.vdproj“,无法构建。”

在解决方案中构建时,它不会失败。 我认为Visual Studio(sln)运行器类型从sln文件中提取数据,然后将其与MSbuild一起使用。不确定无法确认,只是我的想法。

答案 3 :(得分:-1)

如果您使用解决方案文件(Visual Studio)方式,则意味着您需要为构建服务器许可Visual Studio的副本以及随之附带的安装/维护。如果你使用MSBuild,你不需要任何这些,你只需要.net框架安装。两者之间唯一真正的区别是Visual Studio设置了各种环境变量并利用了构建顺序之类的东西。虽然MSBuild默认情况下没有设置任何环境变量,并且无法识别构建顺序,但它只会重新确定依赖项。虽然在Visual Studio中会稍微容易一些,但是你不会遇到那些依赖visual studio来掩盖一些邋。的情况。