2017-09-15 169 views
2

我们有一个内部部署TFS 2012服务器和构建服务器。我们正在升级到VS和TFS 2017.现在,有人要求建立另一个构建服务器,这将允许我们从现有的TFS服务器构建新的2017项目。我创建了一个新的构建服务器,并在其上安装了TFS 2012构建服务以及VS2017。我创建了一个新的构建定义,但未能编译,并且错误显示了2012年的语法更改,这些更改在2012年无效。如何将此配置为针对安装的VS2017构建项目?使用TFS 2012构建服务器构建VS2017项目

+0

我们使用的是DefaultTemplate11.1xaml。我读过有新版本会从新路径获取MSBuild版本,但我不知道从哪里获取这些新模板。 – Sam

+0

TFS2017中的构建模板完全不同。您可能需要权衡解决此问题需要多长时间。升级会更容易。我最近做了,因为你在2012年,你必须升级到2013年,或者像我2017年之前的2015年一样。我也必须稍微修改流程模板。 –

+0

因此TFS 2012不能直接进入2017?我们并没有意识到这一点。你知道为什么吗?我看到一些地方说DefaultTemplate.11.xaml可以修改为指向新的MSBuild版本,但提到的部分似乎并不存在于我的文件中。 – Sam

回答

1

旧的Visual Studio版本将msbuild安装到C:\Program Files (x86)\MSBuild\<version>\bin中,显然RunMSBuild活动使用ToolVersion + ToolArchitecture来计算此路径。

VS 2017会安装它C:\ Program Files(x86)\ Microsoft Visual Studio \ 2017 \ Enterprise \ MSBuild \ 15.0 \ bin并且RunMSBuild无法再计算正确的路径。您不能使用旧的DefaultTemplate11.1xaml与VS2017集成。

为了完成这项工作,您可以尝试修改TFSBuildServiceHost.exe.config,并且必须在构建服务器上安装VS 2013或VS 2015版本才能使其工作。更详细的步骤请按照Jonesy2488的答案在此链接:How to get VS 2017 working with TFS 2017 XAML Builds


此外,XAML构建在TFS 2017年弃用,在TFS的TGE下一个版本(2018)将不可用。 VSTS已不再支持它们。

我正在寻找托管的XAML构建控制器。它去了哪里?

不再支持托管的XAML构建控制器。在2016年4月或之后创建的账户 无权访问它。我们计划 所有账目 除去托管XAML编译器,可能是尽快2017年三月

Source

既然你要升级并使用TFS2017。强烈建议您将您的版本转换为vNext Build以访问某些新技术和支持。更多请参考Why Should I Leave XAML Builds?

+0

是的,今天早上我意识到了。我读了它。我想我正要转向新的构建平台。 – Sam

+0

好主意Sam,最好的做法是让应用程序保持在组织中的同一版本和sp级别上。 –

2

感谢这篇文章,我能够使用Visual Studio 2017使用TFS 2012与构建服务器构建C#6语法的持续集成。希望这可以节省下一个人一些时间来解决这个问题。

以下是我为了让TFS 2012构建C#6语法而更改的内容列表。在与生成代理的机器上安装VS 2017年的企业,安装设置页面上,确保MS构建选择 enter image description here

编辑构建定义,并确保MSBuild的参数是/tv:15.0 /p:GenerateBuildInfoConfigFile=false /p:VisualStudioVersion=15.0

enter image description here

检查您的构建定义正在使用的模板,并通过转到源代码管理资源管理器并进入团队项目并进入BuildProcessTemplate对其进行修改,它应该具有。xaml文件,通过双击修改它enter image description here

应该有两个操作,说运行MSBuild项目。您需要将两个toolpath属性都更改为指向构建服务器上的msbuild.exe父文件夹。在我的情况下,构建服务器是32位机器,因此Bin文件夹的路径在Program Files旁边没有(x86),您需要检查构建服务器以在此处输入正确的路径。 enter image description here 做出更改后,您需要保存xaml并将其签入。

+0

嗨,@ gavin,xaml不是最大的搜索,请问,请告诉它的结构是ToolPath变量的位置? –