При установке Visual Studio Build Tools в контейнере отсутствуют возможности SSDT и vstest. - PullRequest
1 голос
/ 09 февраля 2020

Следуя этому руководству Я установил Build Tools в контейнер, используя опцию --all.

Кроме того, я устанавливаю в контейнер службу Azure Agent Pipelines Agent. при запуске.

Теперь у меня 2 проблемы:

  • Сканирующая часть агента Azure Pipelines, который обнаруживает возможности, не находит / добавить возможность "vstest", но, похоже, она есть, поскольку я нахожу vstest.console.exe внутри контейнера. Есть идеи, что может отсутствовать или почему оно не определяется правильно?

  • SSDT не был установлен. Искал его в контейнере - ничего. Как это может быть при использовании --all? Он должен быть частью пакета, так как он показывает рабочие нагрузки данных в мастере установки. ##[error]The nuget command failed with exit code(1) and error(C:\azp\agent\_work\2\s\src\Something.Database\Something.Database.sqlproj(52,57): error MSB4226: The imported project "C:\Program Files (x86)\Microsoft Visual Studio\2019\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 Studio\2019\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.

Ответы [ 2 ]

1 голос
/ 12 февраля 2020

Я пошел в в этом направлении , поэтому я использовал это Dockerfile на lukas-lansky в качестве отправной точки.

Как я уже упоминал, я добавил Azure Часть конвейера поверх него.

Поскольку мне нужно было создать полное решение с использованием пакета Web Deploy, включая проекты баз данных (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) установлены по умолчанию. Рабочие нагрузки и идентификаторы компонентов, поддерживаемые установщиком, задокументированы здесь . Из-за этого поведения Web Deploy отсутствовал. Поэтому я добавил опцию --includeRecommended, чтобы запустить Web Deploy.

1 голос
/ 10 февраля 2020

что может отсутствовать или почему оно не определяется правильно?

Поскольку не слишком много известно о конфигурации вашего агента, и фактически задача не учитывает возможности значение, оно будет пытаться найти инструмент автоматически.

Вы можете добавить некоторые сценарии вручную, чтобы они были обнаружены.

Просто go файл bin вашего агента, затем добавьте файл с именем Add-VisualStudioTestCapabilities.ps1 в папку powershell: (Пожалуйста, замените его соответствующим путем на вашем сторона)

enter image description here

[CmdletBinding()]
param()

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

И перезапустите агент.


ошибка MSB4226: импортированный проект "C: \ Program Files (x86) \ Microsoft Visual Studio \ 2019 \ BuildTools \ MSBuild \ Microsoft \ VisualStudio \ v11.0 \ SSDT \ Microsoft.Data.Tools.Schema.SqlTasks.targets "не найден

Это очень обычное сообщение, когда SSDT не существует.

Смотрите этот блог .

SSDT поддерживает только VS Community, Professional и Enterprise. В VS Build Tools отсутствуют некоторые необходимые компоненты.

...