MSbuild是否需要在构建服务器上安装Visual Studio?

59

我们可以在没有安装Visual Studio 2012的情况下使用MSBuild吗?

目前,我们有一个构建服务器用于编译和创建我们其中一个项目的部署副本,该服务器上已安装Visual Studio专业版。我们现在正在设置一个新的构建服务器。我们是否真的需要在新的构建服务器上安装Visual Studio 2012?

如果是,那么如何操作呢?我尝试搜索了一下,但是没有找到答案。


3
由于某些原因,您的搜索未返回您想要的结果。也就是说,是否可以在没有Visual Studio的情况下进行构建完全取决于您的项目。微软确实提供了单独的MSBuild(甚至是MSBuild 12),以及许多其他组件(各种SDK,如Silverlight SDK)可供使用。然而,仍有一些组件仅在VS中可用(如MSTest)。因此,任何人都无法得出结论。您可能会遵循这些答案,但很快您的项目可能会给您带来麻烦。 - Lex Li
4
绝大部分情况下,您可以在未安装Visual Studio的情况下使用MSBuild进行构建。我说“绝大部分”是因为有时会遇到奇怪的情况。我不喜欢在构建机器上安装Visual Studio(任何版本),因为它会向GAC中安装许多东西,有时会导致构建工作正常,但打包分发时不正确。尽管如此,有时也难以在没有Visual Studio的情况下使其正常工作。以下是一个例子:https://dev59.com/I2Up5IYBdhLWcg3wEEM6 - granadaCoder
其中1%的情况之一是IBM规则引擎,他们只能使用devenv.exe(在其网站上有记录)构建自定义dotnet应用程序类型。他们此后已弃用该产品......但只是表明每隔一段时间,您会遇到对msbuild“唯一”的异常。 - granadaCoder
7个回答

60
我们花了很多时间,试图让我们的构建服务器在没有Visual Studio的情况下工作。 我们不使用TFS进行构建,因此我不确定上面的许可证豁免是否适用于我们。另外,没有安装Visual Studio可以帮助你真正理解你的软件是如何构建的并且正确获取引用。 我们看到过许多解决方案的项目包含对同一软件的引用,其中一些在随解决方案一起提供的NuGet软件包中,而其他引用指向“程序文件”路径中的位置,在没有安装Visual Studio的机器上则不存在。一旦你尝试在没有安装VS的情况下构建软件,你就能够真正看到你的应用程序是多么“自包含”。 在我开始列出通常需要安装的东西之前,让我指出MS Build现在不再被视为.NET Framework的一部分,但它随着Visual Studio一起发布,也可以单独安装。请参见这篇博客文章以了解更多信息:http://blogs.msdn.com/b/visualstudio/archive/2013/07/24/msbuild-is-now-part-of-visual-studio.aspx 对于大多数构建,需要安装以下软件,可能还有其他软件,例如如果你正在创建可移植类库:
  1. Microsoft Build Tools 2013
  2. Web Deploy 3.5(用于打包应用程序)
  3. Microsoft .NET Framework 4.5.1 Developer Pack
  4. Microsoft .NET Framework 4.5.2 Developer Pack
  • Windows 8的Windows软件开发工具包(SDK) (您可以使用该SDK构建面向以下操作系统的应用程序:Windows 8,Windows 7,Windows Vista,Windows Server 2012,Windows Server 2008 R2,Windows Server 2008)
  • 需要复制以下目录:

    1. 参考程序集(需要从运行Visual Studio的计算机复制到/​​从目录C:\ Program Files(x86)\ Reference Assemblies)
    2. 公共程序集(需要从运行Visual Studio的计算机复制到/​​从目录C:\ Program Files(x86)\ Microsoft Visual Studio 12.0 \ Common7 \ IDE \ PublicAssemblies中复制)

    我们还使用Wix,因此我们安装以下内容:

    1. WIX Toolset 3.8

    我有一个类似的测试集,但那不是问题的一部分,所以我会略过。

    希望这对某个人有所帮助。

    更新:2017年3月3日

    微软最近回应了长期用户声音请求 "支持在服务器上无需安装Visual Studio进行.NET构建",以移除需要在构建服务器上安装Visual Studio的要求。

    下载页面上的描述中,“这些构建工具允许您构建本机和托管的MSBuild应用程序,而无需使用Visual Studio IDE。” 尚未测试,但在RTM之后,我将查看此内容并在此提供进一步更新。

    有一篇博客文章承诺这些构建工具可以安装所有先决条件,并可用于构建基于 MS Build 的应用程序。


    2
    你在使用什么进行测试? - bdwakefield
    2
    另一种尝试:http://nickberardi.com/a-net-build-server-without-visual-studio/ - Junle Li
    1
    我尝试了一下并在这里记录了一些内容:https://gist.github.com/lijunle/7cc5c3e5743d3a494b83 希望有人能从中得到帮助。 - Junle Li
    2
    对于那些需要更新版本的人,Microsoft Build Tools 2015 可在以下链接下载:https://www.microsoft.com/en-in/download/details.aspx?id=48159 - X-Cubed
    VS Build Tools 不包括 MS Fakes 生成支持。 - SerG
    我正在使用Build Tools 2017,但是Test Assemblies任务失败了。实际上,在尝试解决这些问题时,我几乎放弃并在服务器上安装完整的IDE,而这实际上是不希望的。 - Alisson Reinaldo Silva

    40
    不需要在构建服务器上安装Visual Studio。如果我没记错的话,msbuild是作为.NET框架的一部分安装的,它确实曾经是这样的。
    根据你正在构建的内容,你可能会发现如果安装Visual Studio,有些东西会更容易工作 - 比如可移植类库配置文件。虽然通常会提供非VS安装程序,但我发现安装Express版本的Visual Studio来获取捆绑的构建目标更简单。

    @user968441:自从.NET 2发布以来,它就成为了框架的一部分。 - Jon Skeet
    5
    MSBuild 12可以从独立包中获取,下载链接为:http://www.microsoft.com/en-us/download/details.aspx?id=40760。需要注意的是,MSTest等其他工具只有在安装Visual Studio时才会一并安装,没有安装Visual Studio的情况下,使用纯的MSBuild完成所有任务可能会比较困难。不幸的是,这些额外的工具并不总是包含在VS Express中。 - Lex Li
    2
    @LexLi:如果MSTest是你的测试框架,那么它只会成为一个问题。很多人使用NUnit、xUnit等。这确实取决于“等等”是什么,以及OP的构建是否需要它。 - Jon Skeet
    @one.beat.consumer:是的,我想是这样。 - Jon Skeet
    4
    新的Visual Studio 2017 RC构建工具减少了安装Visual Studio的要求。 - Giulio Vian
    显示剩余8条评论

    16

    注意: 最简单的构建 Visual Studio 解决方案的方法是在构建服务器上安装 Visual Studio。即使使用Visual Studio Express也足够。

    也就是说,没有安装 Visual Studio 也可以实现构建,但有时需要大量工作来解决问题。您需要安装正确的Windows / .NET平台SDK。您可以并排安装多个SDK。例如,当您依赖于ASP.NET MVC 5Entity Framework 6等内容时,可能需要安装其他SDK才能编译应用程序。这些下载都假定您已安装了Visual Studio,但其中许多负载也可以单独安装。这可能会变得非常麻烦。

    就我个人而言,我已经厌倦了尝试弄清楚哪些安装程序的哪些部分启用了什么功能。但这也是由于Microsoft允许您在构建服务器(TFS)上安装Visual Studio,只要您是MSDN订阅者,就可以使用与开发机器相同的许可证。 查看Visual Studio许可证白皮书以获取更多详细信息

    在构建服务器上使用Visual Studio

    如果您有一位或多位持有Visual Studio Ultimate with MSDN、Visual Studio Premium with MSDN或Visual Studio Professional with MSDN许可证的用户,则可以将Visual Studio软件安装为Team Foundation Server 2013 Build Services的一部分。这样,对于每个启动构建操作的人,您无需购买Visual Studio许可证来覆盖运行Visual Studio的情况。

    如果你和我一样,希望这种情况在未来有所改变,建议你通过提交请求或在 Visual Studio User Voice 投票支持已有的请求,以确保你的声音被听到。

    4
    这就是说,需要在构建服务器上安装一个IDE才能使事情正常运作。这里有些问题。 - demisx

    7

    以下是相关内容的翻译:

    这只是一个简单的看法。

    您的构建机器应该尽可能地将开发工具解耦。正如其他人已经提到的,MSBuild可以独立于Visual Studio运行,并且应该这样做!

    如果您的构建需要使用Visual Studio,则很有可能存在解决方案或项目架构问题,应该加以解决。


    0

    不需要安装Visual Studio。MSBuild是.net SDK的一部分。

    但是,如果您正在使用其他.net依赖项,则需要安装它们。MSTest或任何Team Foundation的组件都需要安装Visual Studio。


    3
    它不再是.NET的一部分。 - Haukman

    0

    我相信你只需要MSBuild(它是你所针对的.NET框架的一部分)。

    确保安装适当的.NET发行版

    以下是一个很好的构建服务器,它具有开发人员工具。

    .NET Framework 4.5.1 Developer Pack安装了.NET Framework 4.5.1的多目标包。开发人员可以使用Visual Studio 2012或第三方IDE构建针对.NET Framework 4.5.1的应用程序。如果您打算重新分发.NET Framework 4.5.1,则需要下载Web安装程序而不是此软件包。

    http://www.microsoft.com/en-us/download/details.aspx?id=40772

    祝你好运。


    0

    C++ :

    有一个 "构建工具" 包含 MSBuild,不需要 Visual Studio。

    来自官方文档:

    这些工具允许您构建针对 Windows 桌面的 C++ 库和应用程序。它们是您在 Visual Studio 2015 中找到的相同工具,以可编写脚本的独立安装程序形式提供。现在,您只需要下载构建 C++ 项目所需的工具即可。

    Managed :

    同样适用:托管构建工具


    我认为上面的链接已经失效了。目前可以在这里找到VS2017的等效版本:https://visualstudio.microsoft.com/downloads/#build-tools-for-visual-studio-2017 - morechilli

    网页内容由stack overflow 提供, 点击上面的
    可以查看英文原文,
    原文链接