为啥 TFS 代理没有发现 VSTEST 功能

Posted

技术标签:

【中文标题】为啥 TFS 代理没有发现 VSTEST 功能【英文标题】:Why does TFS agent doesn't discover a VSTEST capability为什么 TFS 代理没有发现 VSTEST 功能 【发布时间】:2018-01-07 04:08:20 【问题描述】:

我们有 TFS 2015 服务器和一个带有 Visual Studio 2017 Ultimate 的构建服务器。 TFS 代理无法检测到 VisualStudio 或 VsTest 功能(应该如此),但是当手动添加时,仍然存在问题。

当涉及到 Visual Studio 测试步骤时,控制台显示以下错误并失败:

c:\AgentTest\tasks\VSTest\1.0.30\VSTest.ps1 
Unable to determine the location of vstest.console.exe

我手动添加了以下功能:

VisualStudio C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise VisualStudio_15.0 C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise

VisualStudio_IDE C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE

VisualStudio_IDE_15.0 C:\Program 文件 (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE

VS150COMNTOOLS C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\Tools\

VSTest C:\Program Files (x86)\微软视觉 Studio\2017\Enterprise\Common7\IDE\CommonExtensions\Microsoft\TestWindow

VSTest_15.0 C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\CommonExtensions\Microsoft\TestWindow

这是我的 Visual Studio 测试设置:

【问题讨论】:

【参考方案1】:

我可以重现此问题,TFS 2015 代理无法识别 VStest 和其他一些 2017 相关功能。

根据测试,TFS 2015 应该不支持 2017 VStest。

根据这个Github discussion,似乎核心问题是Visual Studio Test任务需要更新以支持VS 2017。

在 TFS 2017 和 VSTS 中,我们可以指定vstest.console.exe 的绝对路径来让它工作(详见this article),但在 TFS 2015 中我们不能在任务中指定路径,不支持.

所以,如果你想使用 Vstest,你可以安装 VS 2015,或者升级到 TFS 2017 或更高版本。

类似的帖子供您参考:https://social.msdn.microsoft.com/Forums/vstudio/en-US/1f9992f3-20b6-437a-855d-ccd67ff2298e/using-tfs-2015-with-build-agent-and-visual-studio-2017?forum=tfsadmin

【讨论】:

如果您在运行 TFS 2015 和 VS 2017 时遇到此问题,只需安装 VS 2015 并重新启动服务 这个问题困扰我很久了。自 2015 年以来的每个版本的 TFS 都无法检测到最新视觉工作室的 VSTest 功能。每次添加新测试盒或升级现有测试盒时,我都必须手动添加该功能。

以上是关于为啥 TFS 代理没有发现 VSTEST 功能的主要内容,如果未能解决你的问题,请参考以下文章

没有 TFS 的 Visual Studio 测试代理? (2010)

为啥添加 Microsoft.CodeAnalysis.NetAnalyzers 时 TFS 2015 SP3 构建代理会失败?

TFS 构建成功,但为啥没有将任何内容部署到目标系统文件夹

Yaml:如何排除 VSTest@2 中的一些测试

vs2010 tfs个别文件为啥没有签入签出了

TFS 2017 - 从 TFS 服务器而不是代理运行 powershell 脚本