Не удается установить инструменты Visual Studio 2017 в контейнере Docker - PullRequest
0 голосов
/ 11 сентября 2018

Я пытаюсь создать образ Docker с помощью Visual Studio Code Analysis, который является частью Visual Studio 2017 Build Tools. Следующий Dockerfile работает, и инструменты установлены в C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\Team Tools\Static Analysis Tools:

# escape=`

FROM microsoft/dotnet-framework:4.7.1

# Restore the default Windows shell for correct batch processing below.
SHELL ["cmd", "/S", "/C"]

# Download the Build Tools bootstrapper.
ADD https://aka.ms/vs/15/release/vs_buildtools.exe C:\TEMP\vs_buildtools.exe

# Install VS Build Tools
RUN C:\TEMP\vs_buildtools.exe --quiet --wait --norestart --nocache `
    --add Microsoft.VisualStudio.Component.Static.Analysis.Tools `
 || IF "%ERRORLEVEL%"=="3010" EXIT 0

ENTRYPOINT powershell
CMD ["powershell.exe", "-NoLogo", "-ExecutionPolicy", "Bypass"]

Пока все хорошо. Однако на самом деле мне нужно основать образ на microsoft/dotnet-framework:4.7.2-sdk-windowsservercore-ltsc2016, так как он в конечном итоге станет частью образа агента сборки TeamCity, и именно на этом образе основан . Итак, я изменил свою строку ОТ:

FROM microsoft/dotnet-framework:4.7.2-sdk-windowsservercore-ltsc2016

Когда я собираю это, образ строится, и я не иду без ошибок. Кажется, он работает и занимает примерно столько же времени. Тем не менее, каталог C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\Team Tools\ отсутствует. Возможно, это какая-то проблема с 4.7.2, поэтому я попробовал microsoft/dotnet-framework:4.7.1-sdk-windowsservercore-ltsc2016. Та же ошибка. Я тоже попробовал microsoft/dotnet-framework:4.7.2-sdk-windowsservercore-1803 тоже без удачи. Я также пытался использовать Chocolatey для установки VS Build Tools, но это точно такое же поведение.

Что в мире такого особенного в этом microsoft/dotnet-framework:4.7.1 образе, где это единственный образ, на который будут устанавливаться VS Build Tools? Я не смог найти Dockerfile для него, поэтому я не могу точно сказать, на чем он основан (они просто говорят «Windows Server Core», которая не помогает), или если этот образ устанавливается или делает что-то особенное.

Кто-нибудь заставил VS Build Tools работать в контейнере на основе чего угодно, кроме microsoft/dotnet-framework:4.7.1?

Ответы [ 2 ]

0 голосов
/ 18 декабря 2018

Visual Studio 2017 версии 15.9 требует Windows Server 2019 или Windows 10 «RS5». Смотри https://aka.ms/setup/containers/servercore1809.

0 голосов
/ 11 сентября 2018

Я нашел решение, которое, кажется, работает. Это скорее обходной путь, пока Microsoft не исправит ошибку, из-за которой установщик VS Build Tools не работает с определенными образами Windows.

Вы можете создать многоступенчатую сборку, а затем скопировать обе папки Team Tools и необходимый файл .targets. Если вы устанавливаете другие вещи, помимо статического анализа кода, вам может потребоваться найти, какие целевые файлы вам также нужно скопировать.

Пример:

# escape=`

FROM microsoft/dotnet-framework:4.7.1 as vsbuild

# Restore the default Windows shell for correct batch processing below.
SHELL ["cmd", "/S", "/C"]

# Download the Build Tools bootstrapper
ADD https://aka.ms/vs/15/release/vs_buildtools.exe C:\TEMP\vs_buildtools.exe

# Install Static Analysis Tools
RUN C:\TEMP\vs_buildtools.exe --quiet --wait --norestart --nocache `
    --add Microsoft.VisualStudio.Component.Static.Analysis.Tools `
 || IF "%ERRORLEVEL%"=="3010" EXIT 0

FROM jetbrains/teamcity-agent:2018.1.2-windowsservercore-ltsc2016

COPY --from=vsbuild ["C:/Program Files (x86)/Microsoft Visual Studio/2017/BuildTools/Team Tools", "C:/Program Files (x86)/Microsoft Visual Studio/2017/BuildTools/Team Tools"]
COPY --from=vsbuild ["C:/Program Files (x86)/Microsoft Visual Studio/2017/BuildTools/MSBuild/Microsoft/VisualStudio/v15.0/CodeAnalysis", "C:/Program Files (x86)/Microsoft Visual Studio/2017/BuildTools/MSBuild/Microsoft/VisualStudio/v15.0/CodeAnalysis"]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...