安装 Visual Studio 构建工具时容器中缺少 SSDT 和 vstest 功能

SSDT and vstest capability missing in container when installing Visual Studio Build Tools

this guide 之后,我使用 --all 选项将构建工具安装到容器中。

此外,我在启动时安装 Azure Pipelines Agent service into the container

现在我有两个问题:

what may be missing or why it is not detected correctly?

由于对你的自代理的配置了解不多,而且任务实际上不考虑capability值,所以会尝试自动寻找工具。

您可以手动添加一些脚本使其被检测到。

去你代理的bin文件,然后在powershell文件夹下添加一个名为Add-VisualStudioTestCapabilities.ps1的文件:(请替换你这边对应的路径)

[CmdletBinding()]
param()

if (Test-Path ":\Program Files (x86)\Microsoft Visual Studio19\Enterprise\Common7\IDE\CommonExtensions\Microsoft\TestWindow") {
    Write-Capability -Name 'VSTest' -Value ":\Program Files (x86)\Microsoft Visual Studio19\Enterprise\Common7\IDE\CommonExtensions\Microsoft\TestWindow"
}

并重启代理。


error MSB4226: The imported project "C:\Program Files (x86)\Microsoft Visual Studio19\BuildTools\MSBuild\Microsoft\VisualStudio\v11.0\SSDT\Microsoft.Data.Tools.Schema.SqlTasks.targets" was not found

当SSDT 不存在时,这是一个非常正常的消息。

看到这个blog

SSDT only support VS Community, Professional and Enterprise. VS Build Tools lacks some necessary components.

我以 lukas-lansky 作为起点进入 this direction, so I used this Dockerfile

正如我已经提到的,我在上面添加了 Azure Pipelines Agent part

由于我需要使用 Web 部署打包构建一个完整的解决方案,包括数据库项目 (SSDT) 并且必须 运行 测试,我需要调整 lukas-lanskys 命令行调用 vs_community.exe略:

RUN & "$env:TEMP\vs_community.exe" --add Microsoft.VisualStudio.Workload.NetWeb --includeRecommended --quiet --wait --norestart --noUpdateInstaller | Out-Default

您必须知道,默认情况下仅安装工作负载 (ID) 的 必需 组件。安装程序支持的工作负载和组件 ID 记录在案 here。由于这种行为,Web Deploy 丢失了。所以我添加了 --includeRecommended 选项来引入 Web Deploy。