【问题标题】:Visual Studio 2015 Express not recognised by private build agent私有构建代理无法识别 Visual Studio 2015 Express
【发布时间】:2017-08-09 21:55:24
【问题描述】:

如果我在机器上安装 Visual Studio 2017 社区版并将其注册为构建代理,则代理注册的“功能”选项卡会显示以下环境变量:

VisualStudio            C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\
VisualStudio_15.0       C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\
VisualStudio_IDE        C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\
VisualStudio_IDE_15.0   C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\

但是,如果我安装 Visual Studio 2015 Express 并将其注册为构建代理,我不会得到等效的变量。这是为什么呢?

更新

@starain-MSFT 没有解决这个问题; VS2015 Express 不会为代理配置脚本安装所有必需的注册表项来进行安装。手动注册上面的环境变量会欺骗代理池来识别msbuild, visualstudio 的功能,所以现在我可以愉快地在该代理上触发构建了。

但是,它不会欺骗 Visual Studio 构建任务。我在执行时收到以下日志警告;

##[warning]Visual Studio was not found. Try installing a supported version of Visual Studio. See the task definition for a list of supported versions.

然后它会返回到 MSBuild 以执行工作流。幸运的是,就我而言,它成功完成了,因为我正在构建一个.sln。我只是想警告其他人,他们可能会遇到类似的问题。

【问题讨论】:

    标签: visual-studio-2015 azure-devops azure-pipelines azure-devops-self-hosted-agent


    【解决方案1】:

    [agent folder]\bin\powershell文件夹中有一些PowerShell文件是用来添加能力的,你可以查看它们的源代码。

    根据Add-VisualStudioCapabilities.ps1 中的代码,它检查HKEY_LOCAL_MACHINE\SOFTWARE\[WOW6432Node]\Microsoft\VisualStudio\[14.0]\ShellFolder and InstallDir。这样您就可以检查注册表中的键和值。

    【讨论】:

    • 就是这样!出于某种原因,VS2015 Express 没有安装 ShellFolderInstallDir 键!我担心代理脚本会识别它但拒绝注册它,因为我们不允许将它用于自动构建。我现在感觉更舒服了。
    • 事实证明这不是全部。当我将“Visual Studio Build”任务添加到进程中时,它现在会执行,但如果我更仔细地查看日志,我会看到以下消息:“##[warning]Visual Studio was not found. Try install a受支持的 Visual Studio 版本。有关受支持版本的列表,请参阅任务定义。”然后它回退到使用 MSBuild 进行构建。它之所以有效,是因为我正在构建一个.sln;希望我不必建立.proj
    • VS 2017 的正确键和值是什么?我在注册表中看不到任何 shellFolder 或 InstallDir 文件夹?
    【解决方案2】:

    在构建代理上安装新软件后,必须重新启动代理才能发现新功能。

    【讨论】:

    • 我没有说清楚。机器1:安装VS2017 Community,注册为构建代理,功能选项卡显示为构建能力。机器 2:安装 VS2015 Express,注册为构建代理,功能选项卡不显示为构建能力。它们是不同的机器,都在安装 Visual Studio 后注册为构建代理。
    • 试试 VS 2015 Community 而不是 Express。 Express 可能没有安装所有必要的组件。
    • 恐怕不行。许可条件禁止拥有超过 300 名员工的组织安装社区版。我的问题专门针对 VS 2015 Express。 Express 确实安装了必要的组件,因为我可以通过将这些变量设置为系统环境变量来破解系统,并且构建工作正常。我在问为什么代理不将 VS 2015 Express 识别为合法的 VS 安装。是设计使然还是代理配置脚本中的错误?
    猜你喜欢
    • 2016-01-21
    • 2016-10-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-14
    • 1970-01-01
    • 1970-01-01
    • 2018-03-08
    相关资源
    最近更新 更多