Можно ли установить Visual Studio в Контейнер Windows?
Можно ли установить любую версию Visual Studio в Контейнер Windows на Windows Server?
Мотивация заключается в том, чтобы использовать Контейнеры Windows для создания программного обеспечения в системах непрерывной интеграции, так что среда сборки стандартизирована.
Ответы
Ответ 1
Visual Studio, по-видимому, официально не поддерживается на Core Server, но я согласен, что было бы неплохо сделать это. Давай попробуем:
FROM mcr.microsoft.com/windows/servercore:ltsc2019
SHELL ["powershell"]
RUN Invoke-WebRequest "https://aka.ms/vs/15/release/vs_community.exe" -OutFile "$env:TEMP\vs_community.exe" -UseBasicParsing
RUN & "$env:TEMP\vs_community.exe" --add Microsoft.VisualStudio.Workload.NetWeb --quiet --wait --norestart --noUpdateInstaller | Out-Default
RUN & 'C:/Program Files (x86)/Microsoft Visual Studio/2017/Community/MSBuild/15.0/Bin/MSBuild.exe' /version
CMD ["powershell"]
(Я помещаю это изображение в lukaslansky/visualstudio-netwebworkload, используйте с осторожностью.)
Выход сборки:
[...]
Microsoft (R) Build Engine version 15.3.409.57025 for .NET Framework
Copyright (C) Microsoft Corporation. All rights reserved.
Так что это похоже на работу! Вы должны поиграть с этими аргументами --add
чтобы указать, какие компоненты вам нужны именно для вашей сборки, они соответствуют --add
нагрузкам и компонентам, которые вы видите в GUI. Смотрите документацию.
Ответ 2
Имеет смысл запускать IDE внутри контейнера, если вы хотите упростить настройку рабочих сред для разработчиков.
Вы можете запустить код Visual Studio внутри контейнера (https://grigio.org/visual_studio_code_docker/) или Eclipse (https://rgrunber.wordpress.com/2016/01/26/eclipse-inside-a-docker-container/). Визуальная студия должна работать довольно похоже
Ответ 3
Контейнеры Windows в настоящее время не включают графические приложения. Ограничение на Microsoft, а не на Docker.
Например, попробуйте что-то простое, например, запустить "Блокнот" (в контейнере Windows Server Core). Процесс запускается, но графический интерфейс не отображается.
![Запущен Notepad, но не отображается GUI]()
Ответ 4
Просто для записи MS не планирует поддержку VS внутри контейнеров, лучшая альтернатива, которую вы имеете, это MsBuild. Несколько месяцев назад было возможно, но с последней версией от VS не возможно. Источник: всц-агенты
Ответ 5
На данный момент лучше всего использовать инструменты сборки Visual Studio.
Ответ 6
Способ установки цепочки визуальных сборок в контейнере Windows может заключаться в использовании шоколадного пакета visualstudio2017buildtools.
Запуск Dockerfile с чем-то вроде:
FROM microsoft/windowsservercore
RUN powershell.exe -NoProfile -InputFormat None -ExecutionPolicy Bypass -Command "iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))" && SETX PATH "%PATH%;%ALLUSERSPROFILE%\chocolatey\bin"
RUN choco install -y visualstudio2017buildtools --package-parameters "--add Microsoft.VisualStudio.Workload.VCTools --installPath C:\BuildTools" || IF "%ERRORLEVEL%"=="3010" EXIT 0
RUN call "C:\BuildTools\VC\Auxiliary\Build\vcvars64.bat"