Est-il possible d'installer n'importe quelle version de Visual Studio dans un conteneur Windows sur un serveur Windows?
La motivation est d'utiliser des conteneurs Windows pour créer des logiciels dans des systèmes à intégration continue, afin que l'environnement de construction soit normalisé.
Visual Studio semble ne pas être officiellement pris en charge sur Core Server, mais je conviens que ce serait vraiment agréable de pouvoir le faire. Essayons:
FROM Microsoft/windowsservercore:10.0.14393.1715
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"]
(J'insère cette image dans lukaslansky/visualstudio-netwebworkload , à utiliser avec prudence.)
La sortie de la construction est:
[...]
Microsoft (R) Build Engine version 15.3.409.57025 for .NET Framework
Copyright (C) Microsoft Corporation. All rights reserved.
Donc, cela semble fonctionner! Vous devez utiliser ces arguments --add
installator pour spécifier les composants dont vous avez besoin pour votre construction, ils correspondent aux charges de travail et aux composants que vous voyez dans l'interface graphique. Voir la documentation.
Il est judicieux d’exécuter IDE dans un conteneur si vous souhaitez faciliter la configuration des environnements de travail des développeurs.
Vous pouvez exécuter Visual Studio Code dans un conteneur ( https://grigio.org/visual_studio_code_docker/ ) ou Eclipse ( https://rgrunber.wordpress.com/2016/01/26/Eclipse-inside- a-docker-container/ ). Visual studio devrait fonctionner assez similaire
Les conteneurs Windows n'incluent pas actuellement les applications graphiques. La limitation est sur Microsoft, pas sur Docker.
Par exemple, essayez quelque chose de simple, comme l'exécution du bloc-notes (dans le conteneur Windows Server Core). Le processus est lancé mais aucune interface graphique ne s'affiche.
Pour mémoire, MS n’envisage pas de prendre en charge les VS à l’intérieur des conteneurs. La meilleure alternative que vous puissiez utiliser est MsBuild. Il y a quelques mois, c'était possible, mais avec la dernière version de VS, ce n'est pas possible. Source: vsts-agents
Un moyen d'installer Visual Build Corporation dans un conteneur Windows pourrait être d'utiliser chocolatey package visualstudio2017buildtools .
Démarrer Dockerfile avec quelque chose comme:
FROM Microsoft/dotnet-framework
Shell ["powershell"]
RUN Set-ExecutionPolicy Bypass -Scope Process -Force; iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))
RUN choco install -y --no-progress visualstudio2017buildtools
RUN choco install -y --no-progress visualstudio2017-workload-vctools
Shell ["cmd", "/S", "/C"]
RUN call C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\VC\Auxiliary\Build\vcvars64.bat
Votre meilleur pari à ce stade est d’utiliser Visual Studio Build Tools .