安装 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。
现在我有两个问题:
检测功能的 Azure Pipelines 代理的扫描部分没有 find/add "vstest" 功能,但它似乎存在,因为我确实找到了 vstest.console.exe
在容器内。有什么想法可能遗漏了什么或者为什么没有被正确检测到吗?
尚未安装SSDT。在容器中搜索它 - 没有。使用 --all
时怎么会这样?它应该是包的一部分,因为它在安装向导中显示了数据工作负载。 ##[error]The nuget command failed with exit code(1) and error(C:\azp\agent\_work\s\src\Something.Database\Something.Database.sqlproj(52,57): 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. Also, tried to find "Microsoft\VisualStudio\v11.0\SSDT\Microsoft.Data.Tools.Schema.SqlTasks.targets" in the fallback search path(s) for $(MSBuildExtensionsPath) - "C:\Program Files (x86)\MSBuild" . These search paths are defined in "C:\Program Files (x86)\Microsoft Visual Studio19\BuildTools\MSBuild\Current\Bin\msbuild.exe.Config". Confirm that the path in the <Import> declaration is correct, and that the file exists on disk in one of the search paths.
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-lansky
s 命令行调用 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。
在 this guide 之后,我使用 --all
选项将构建工具安装到容器中。
此外,我在启动时安装 Azure Pipelines Agent service into the container。
现在我有两个问题:
检测功能的 Azure Pipelines 代理的扫描部分没有 find/add "vstest" 功能,但它似乎存在,因为我确实找到了
vstest.console.exe
在容器内。有什么想法可能遗漏了什么或者为什么没有被正确检测到吗?尚未安装SSDT。在容器中搜索它 - 没有。使用
--all
时怎么会这样?它应该是包的一部分,因为它在安装向导中显示了数据工作负载。##[error]The nuget command failed with exit code(1) and error(C:\azp\agent\_work\s\src\Something.Database\Something.Database.sqlproj(52,57): 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. Also, tried to find "Microsoft\VisualStudio\v11.0\SSDT\Microsoft.Data.Tools.Schema.SqlTasks.targets" in the fallback search path(s) for $(MSBuildExtensionsPath) - "C:\Program Files (x86)\MSBuild" . These search paths are defined in "C:\Program Files (x86)\Microsoft Visual Studio19\BuildTools\MSBuild\Current\Bin\msbuild.exe.Config". Confirm that the path in the <Import> declaration is correct, and that the file exists on disk in one of the search paths.
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-lansky
s 命令行调用 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。