Visual Studio Azure 中的团队服务构建服务器

Visual Studio Team Services build server in Azure

我正在尝试为 Azure 中的 Visual Studio Team Services 创建自定义构建服务器。我已经在 运行ning 虚拟机上安装了构建代理和 Visual Studio Express,并作为 "Default" 池中的构建代理连接到我在 visualstudio.com 上的项目。

然而,当我尝试 运行 构建时,出现以下错误:

No agent found in pool 1 which satisfies the specified demands:
msbuild
visualstudio
vstest
Agent.Version -gtVersion 1.98.1

MSBuild 已经在 visualstudio.com 的功能列表中,但不在其他两个功能列表中,因此我深入研究 C:\Program Files (x86) 并将这两个功能添加到列表中:

vstest: C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\CommonExtensions\Microsoft\TestWindow
visualstudio: C:\Program Files (x86)\Microsoft Visual Studio 14.0

然后构建至少 运行s 但我在 "Test Assemblies" 步骤中遇到另一个错误。我认为错误消息中最重要的部分是 Unable to determine the location of vstest.console.exe,这里是完整的:

System.Management.Automation.CmdletInvocationException: Unable to determine the location of vstest.console.exe ---> System.IO.FileNotFoundException: Unable to determine the location of vstest.console.exe
at Microsoft.TeamFoundation.DistributedTask.Task.Internal.PowerShell.InvokeVSTestCmdlet.GetVsTestLocation()
at Microsoft.TeamFoundation.DistributedTask.Task.Internal.PowerShell.InvokeVSTestCmdlet.ProcessRecord()
at System.Management.Automation.CommandProcessor.ProcessRecord()
--- End of inner exception stack trace ---
at System.Management.Automation.Runspaces.PipelineBase.Invoke(IEnumerable input)
at System.Management.Automation.PowerShell.Worker.ConstructPipelineAndDoWork(Runspace rs, Boolean performSyncInvoke)
at System.Management.Automation.PowerShell.Worker.CreateRunspaceIfNeededAndDoWork(Runspace rsToUse, Boolean isSync)
at System.Management.Automation.PowerShell.CoreInvokeHelper[TInput,TOutput](PSDataCollection`1 input, PSDataCollection`1 output, PSInvocationSettings settings)
at System.Management.Automation.PowerShell.CoreInvoke[TInput,TOutput](PSDataCollection`1 input, PSDataCollection`1 output, PSInvocationSettings settings)
at Microsoft.TeamFoundation.DistributedTask.Handlers.PowerShellHandler.Execute(ITaskContext context, CancellationToken cancellationToken, Int32 timeoutInMinutes)
at Microsoft.TeamFoundation.DistributedTask.Worker.JobRunner.RunTask(ITaskContext context, TaskWrapper task, CancellationTokenSource tokenSource)

我看过 vstest.console.exe 位于我上面指定的 vstest 文件夹中,我也尝试将此文件夹添加到系统 PATH 但这没有什么区别。

如何在 Azure 中设置工作生成代理?

您需要在构建服务器上安装 Visual Studio。那时,构建代理将识别可用的功能,如 msbuild, visualstudio, and vstest.

Visual Studio Express 没有测试工具。安装 Visual Studio 社区(假设您有资格根据许可条款使用社区),或您或您的组织获得许可的 Visual Studio 版本 (professional/enterprise)。

I found a solution,你只需要让你的构建机器相信它确实安装了 VS。来自 link:

What worked for me was to create the following registry key: HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\VisualStudio.0

and within that key, create a new value of type string with name ShellFolder and value C:\Program Files (x86)\Microsoft Visual Studio 14.0.

Hope it helps

在测试程序集下的 TFS 构建日志中,我看到错误:

System.Management.Automation.CmdletInvocationException: Unable to determine the location of vstest.console.exe

我将 VSTest 设置为 Visual Studio 2015,我正在使用 VS/TFS2017 所以切换到最新解决了问题: