Visual Studioの任意のバージョンをWindowsサーバーの Windows Container にインストールすることはできますか?
動機は、継続的な統合システムでソフトウェアを構築するためにWindowsコンテナを使用して、ビルド環境を標準化することです。
Visual Studioは 公式にはサポートされていません のように見えますが、これを行うことができるのは本当に素晴らしいことです。やってみよう:
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
installator引数を使用して、ビルドに正確に必要なコンポーネントを指定する必要があります。これらはGUIに表示されるワークロードとコンポーネントに対応します。 ドキュメントを参照してください。
開発者が作業環境を簡単にセットアップできるようにする場合は、コンテナ内でIDEを実行するのが理にかなっています。
コンテナ( https://grigio.org/visual_studio_code_docker/ )またはEclipse( https://rgrunber.wordpress.com/2016/01/26/Eclipse-inside-a-docker-container / )。 Visual Studioはかなり似た動作をするはずです
ビジュアルビルドチェーンを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"
MSがコンテナ内のVSのサポートを計画していないという記録のために、あなたが持っている最良の代替手段はMsBuildです。数か月前は可能でしたが、VSの最新バージョンでは不可能です。ソース: vsts-agents
この時点で最善の策は、 Visual Studioビルドツール を使用することです。