团队城市未满足要求:MSBuildTools12.0_x86_Path存在。

117

我在一台安装了x32 Server2008 windows操作系统的机器上安装了TeamCity。我已经运行了.net 4.5 web安装程序。根据这篇文章,我还将文件从我的基于x64的机器复制到了这台机器上,这样我就不需要安装VS2012了(尽管我确实必须更改路径以删除32位机器上的x86):

MSBuild in TeamCity of Visual Studio 2012 solution

我似乎无法让本地代理运行我为vs2012或vs2010项目设置的msbuild构建。我一直收到以下错误消息:

未满足的要求:MSBuildTools12.0_x86_Path存在

我已经多次重启了服务器,并重新启动了代理。我尝试过略微调整路径变量,但无法弄清楚我缺少什么。我还在配置参数中查看了这些内容:

MSBuildTools2.0_x86_Path C:\Windows\Microsoft.NET\Framework\v2.0.50727

MSBuildTools3.5_x86_Path C:\Windows\Microsoft.NET\Framework\v3.5

MSBuildTools4.0_x86_Path C:\Windows\Microsoft.NET\Framework\v4.0.30319

我该如何将12.0加入其中?


你还在使用TeamCity时遇到问题吗? - Daniel Hollinrake
我花费了很长时间才弄清楚这个问题,不得不暂停项目。希望在春季能够回到它。 - archangel76
我花了一些时间才让所有东西都正常工作。我认为关键是安装MSBuild并更新Web Deploy。 - Daniel Hollinrake
11个回答

148

我需要单独安装MSBuild,然后重新启动代理程序,变量就会出现。

(来自MSDN文章) MSBuild现在作为Visual Studio的一部分而不是.NET Framework的一部分安装。当前的MSBuild版本号为12.0。如果您想单独安装MSBuild,则可以从MSBuild Download下载安装包。

编辑:答案链接已经失效。这是Microsoft Build Tools 2015的链接(截至今天最近发布的): https://www.microsoft.com/en-us/download/details.aspx?id=48159


8
需要注意的是,在安装 MSBuild12.0 之前,您需要 .NET Framework 4.5.1 版本(可在此处找到:http://www.microsoft.com/en-ca/download/details.aspx?id=40779)。 - Brandon
37
重新启动代理程序:
  1. 进入构建服务器。
  2. 从开始菜单中运行 services.msc。
  3. 找到 TeamCity 代理程序,停止服务,然后重新启动。
这对于经验丰富的TeamCity老手来说可能很明显,但对像我这样第一次使用的用户来说可能不太清楚。 :)
- Chaim Eliyah
5
虽然我已经安装了MS Build Tools 2013,但MSBuildTools12.0_x86_Path变量仍未设置,代理无法运行。有没有办法手动设置它? - bdaniel7
需要进入以下目录,运行vcvars64.bat文件:C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\amd64,然后msbuild就可以正常工作了。 - user8128167
5
默认情况下,当我使用sln文件的自动检测时,我的解决方案被设置为Visual Studio 2013。我改为在代理上安装的Visual Studio 2015。 - ptittof57

33

有点晚的回答,但如果你的项目来自VS 2012,并且你正在使用自动检测的解决方案文件构建步骤,则编辑该步骤并从“Visual Studio”下拉菜单中选择“Microsoft Visual Studio 2012”也可以修复此问题(而且在我看来更正确)。


2
一点也不晚!我今天遇到了这个问题,将VS版本更改为VS 2015就消除了未满足要求的消息。 - Sudhanshu Mishra
这对我来说有效,新的服务器TeamCity 10 VS2015(是旧的2013项目)。 - Rippo
2
是的,我的问题是当选择从“从URL创建项目”选项自动检测构建步骤时,Team City会“自动选择”错误版本的Visual Studio,所以我只需转到构建步骤并更改Visual Studio版本即可解决此问题。我希望人们在尝试安装可能不需要的东西之前先检查您的答案。 - starmandeluxe

18

我曾经遇到过同样的问题,最终发现我的定义的运行MSBuild的构建步骤配置错了。

在我的MSBuild构建步骤中,“MSBuild ToolsVersion”设置为12.0(默认值),导致在我的系统上出现“未满足要求:MSBuildTools12.0_x86_Path存在”的错误。因为我不需要新的MSBuild 12.0来运行我的构建,所以我将此设置改为4.0。这个MSBuild版本已经正确安装在我的系统上。这解决了我的问题。


10

虽然我来晚了,但我想分享以下内容,以便帮助任何需要的人。

  • 在新的Windows Server 2012 R2上进行了全新安装的TeamCity 8.1.4,出现了上述错误。
  • 按照此主题中的说明操作,尽管重启和重新安装多次仍出现错误。
  • 我注意到代理程序详细信息(如操作系统和 CPU)未显示在代理程序详细信息页面上。这表明问题不是.NET和MSBUILD先决条件,而是与代理服务无法读取有关计算机的信息相关。
  • 代理正在以用户帐户身份运行(根据TeamCity文档所述,该用户具有所有必要的权限)。但我想看看如果我进入"管理工具">"服务"并将登录方式更改为"本地系统账户",会发生什么。
  • 重新启动代理服务。
  • 大功告成。

将代理更改为本地服务也解决了我的问题。虽然我不明白为什么会这样。我尝试将我使用的用户添加到本地管理员组中,以查看是否存在权限问题,但这并没有帮助; - user381624

8

1
参见:Build Tools 2015版本的链接(上述链接为2013工具)。 - Jeroen
这里是2017版本(Visual Studio 2017的工具-> Visual Studio 2017构建工具)。请点击链接下载:https://visualstudio.microsoft.com/downloads/ - fuglede

4

2

我在我的次要构建代理上遇到了这个问题。

我将MSBuild文件夹从主构建代理电脑复制到次要构建代理电脑(就像我按照此处所述的方法复制了一些Visual Studio文件一样),而不是安装MSBuild。

然而,当TeamCity代理服务启动时,它似乎会检查注册表中的MSBuild条目(它似乎不会对我上面提到的Visual Studio文件进行检查)。由于我只是从其他电脑复制了文件,因此没有v.12.0的MSBuild条目存在,因此即使这些文件存在于Program Files(x86)\ MSBuild文件夹中,TeamCity也无法发现MSBuild文件。

当我从上面的链接http://www.microsoft.com/en-us/download/details.aspx?id=40760安装Microsoft Build Tools后,TeamCity在注册表中找到了v.12.0条目,代理程序能够像主代理程序一样构建相同的项目。

请记得在安装MS Build工具后重新启动TeamCity代理服务。


1
在我的情况下,我在Windows 2016服务器上使用TeamCity Professional 2018.1。 我从这里下载了Visual Studio 2017的构建工具https://visualstudio.microsoft.com/downloads/并选择了所有构建工具选项。安装后,我将MSBuild添加到全局PATH环境变量中。 在我的情况下,路径为C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\MSBuild\15.0\Bin。

0
在我的情况下,这是一台没有安装Visual Studio的新机器,我只是从另一台机器上恢复了Teamcity。所以我安装了Visual Studio 2013并解决了Teamcity代理的问题。

0
如上所述,自动检测的构建步骤可能选择了错误的 Visual Studio 版本。请在“构建配置”设置页面的“构建步骤”部分下使用“Visual Studio”下拉菜单进行更改:

enter image description here


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