Rozšířený příklad pro kontejnery
Ukázkový soubor Dockerfile v nástroji Install Build Tools do kontejneru vždy používá image microsoft/dotnet-framework:4.8 založenou na nejnovější imagi microsoft/windowsservercore a nejnovější instalačním programu nástroje Visual Studio Build Tools. Pokud tuto image publikujete do registru Dockeru, aby ji mohli stáhnout jiní uživatelé, může být tato image v mnoha scénářích v pořádku. V praxi je ale běžnější, co základní image používáte, jaké binární soubory si stáhnete a které verze nástrojů instalujete.
Následující příklad souboru Dockerfile používá konkrétní značku verze image microsoft/dotnet-framework. Použití konkrétní značky pro základní image je běžné a usnadňuje zapamatovat si, že sestavení nebo opětovné sestavení imagí má vždy stejný základ.
Poznámka:
Visual Studio nelze nainstalovat do microsoft/windowsservercore:10.0.14393.1593 nebo jakékoli image založené na ní, což má známé problémy se spuštěním instalačního programu v kontejneru. Další informace najdete v tématu Známé problémy s kontejnery.
Následující příklad stáhne nejnovější verzi buildových nástrojů. Pokud chcete použít starší verzi nástrojů sestavení, kterou můžete později nainstalovat do kontejneru, musíte nejprve vytvořit a udržovat rozložení.
Instalace skriptu
Pokud chcete shromáždit protokoly, když dojde k chybě instalace, vytvořte v pracovním adresáři dávkový skript s názvem Install.cmd, který obsahuje následující obsah:
@if not defined _echo echo off
setlocal enabledelayedexpansion
call %*
if "%ERRORLEVEL%"=="3010" (
exit /b 0
) else (
if not "%ERRORLEVEL%"=="0" (
set ERR=%ERRORLEVEL%
call C:\TEMP\collect.exe -zip:C:\vslogs.zip
exit /b !ERR!
)
)
exit /b 0
Dockerfile
V pracovním adresáři vytvořte soubor Dockerfile s následujícím obsahem:
# escape=`
# Use a specific tagged image. Tags can be changed, though that is unlikely for most images.
# You could also use the immutable tag @sha256:324e9ab7262331ebb16a4100d0fb1cfb804395a766e3bb1806c62989d1fc1326
ARG FROM_IMAGE=mcr.microsoft.com/windows/servercore:ltsc2019
FROM ${FROM_IMAGE}
# Restore the default Windows shell for correct batch processing.
SHELL ["cmd", "/S", "/C"]
# Copy our Install script.
COPY Install.cmd C:\TEMP\
# Download collect.exe in case of an install failure.
ADD https://aka.ms/vscollect.exe C:\TEMP\collect.exe
# Use the latest release channel. For more control, specify the location of an internal layout.
ARG CHANNEL_URL=https://aka.ms/vs/16/release/channel
ADD ${CHANNEL_URL} C:\TEMP\VisualStudio.chman
RUN `
# Download the Build Tools bootstrapper.
curl -SL --output vs_buildtools.exe https://aka.ms/vs/16/release/vs_buildtools.exe `
`
# Install Build Tools with the Microsoft.VisualStudio.Workload.AzureBuildTools workload, excluding workloads and components with known issues.
&& (call C:\TEMP\Install.cmd vs_buildtools.exe --quiet --wait --norestart --nocache install `
--installPath "%ProgramFiles(x86)%\Microsoft Visual Studio\2019\BuildTools" `
--channelUri C:\TEMP\VisualStudio.chman `
--installChannelUri C:\TEMP\VisualStudio.chman `
--add Microsoft.VisualStudio.Workload.AzureBuildTools `
--remove Microsoft.VisualStudio.Component.Windows10SDK.10240 `
--remove Microsoft.VisualStudio.Component.Windows10SDK.10586 `
--remove Microsoft.VisualStudio.Component.Windows10SDK.14393 `
--remove Microsoft.VisualStudio.Component.Windows81SDK) `
`
# Cleanup
&& del /q vs_buildtools.exe
# Define the entry point for the Docker container.
# This entry point starts the developer command prompt and launches the PowerShell shell.
ENTRYPOINT ["C:\\Program Files (x86)\\Microsoft Visual Studio\\2019\\BuildTools\\Common7\\Tools\\VsDevCmd.bat", "&&", "powershell.exe", "-NoLogo", "-ExecutionPolicy", "Bypass"]
# escape=`
# Use the latest Windows Server Core 2019 image.
ARG FROM_IMAGE=mcr.microsoft.com/windows/servercore:ltsc2019
FROM ${FROM_IMAGE}
# Restore the default Windows shell for correct batch processing.
SHELL ["cmd", "/S", "/C"]
# Copy our Install script.
COPY Install.cmd C:\TEMP\
# Download collect.exe in case of an install failure.
ADD https://aka.ms/vscollect.exe C:\TEMP\collect.exe
# Use the latest release channel. For more control, specify the location of an internal layout.
ARG CHANNEL_URL=https://aka.ms/vs/17/release/channel
ADD ${CHANNEL_URL} C:\TEMP\VisualStudio.chman
RUN `
# Download the Build Tools bootstrapper.
curl -SL --output vs_buildtools.exe https://aka.ms/vs/17/release/vs_buildtools.exe `
`
# Install Build Tools with the Microsoft.VisualStudio.Workload.AzureBuildTools workload, excluding workloads and components with known issues.
&& (call C:\TEMP\Install.cmd vs_buildtools.exe --quiet --wait --norestart --nocache install `
--installPath "%ProgramFiles(x86)%\Microsoft Visual Studio\2022\BuildTools" `
--channelUri C:\TEMP\VisualStudio.chman `
--installChannelUri C:\TEMP\VisualStudio.chman `
--add Microsoft.VisualStudio.Workload.AzureBuildTools `
--remove Microsoft.VisualStudio.Component.Windows10SDK.10240 `
--remove Microsoft.VisualStudio.Component.Windows10SDK.10586 `
--remove Microsoft.VisualStudio.Component.Windows10SDK.14393 `
--remove Microsoft.VisualStudio.Component.Windows81SDK) `
`
# Cleanup
&& del /q vs_buildtools.exe
# Define the entry point for the Docker container.
# This entry point starts the developer command prompt and launches the PowerShell shell.
ENTRYPOINT ["C:\\Program Files (x86)\\Microsoft Visual Studio\\2022\\BuildTools\\Common7\\Tools\\VsDevCmd.bat", "&&", "powershell.exe", "-NoLogo", "-ExecutionPolicy", "Bypass"]
Spuštěním následujícího příkazu sestavte image v aktuálním pracovním adresáři:
docker build -t buildtools2019:16.0.28714.193 -t buildtools2019:latest -m 2GB .
docker build -t buildtools2022:17.0 -t buildtools2022:latest -m 2GB .
Volitelně můžete předat buď nebo oba FROM_IMAGE
nebo CHANNEL_URL
argumenty pomocí přepínače příkazového --build-arg
řádku k určení jiného základního obrázku nebo umístění interního rozložení pro zachování pevného obrázku.
Tip
Seznam úloh a komponent najdete v adresáři součástí nástroje Visual Studio Build Tools.
Diagnostika selhání instalace
Tento příklad stáhne konkrétní nástroje a ověří, že hodnoty hash odpovídají. Stáhne také nejnovější nástroj pro shromažďování protokolů sady Visual Studio a .NET, takže pokud dojde k selhání instalace, můžete protokoly zkopírovat do hostitelského počítače a analyzovat selhání.
> docker build -t buildtools2019:16.0.28714.193 -t buildtools2019:latest -m 2GB .
Sending build context to Docker daemon
...
Step 8/10 : RUN C:\TEMP\Install.cmd C:\TEMP\vs_buildtools.exe --quiet --wait --norestart --nocache ...
---> Running in 4b62b4ce3a3c
The command 'cmd /S /C C:\TEMP\Install.cmd C:\TEMP\vs_buildtools.exe ...' returned a non-zero code: 1603
> docker cp 4b62b4ce3a3c:C:\vslogs.zip "%TEMP%\vslogs.zip"
> docker build -t buildtools2022:17.0 -t buildtools2022:latest -m 2GB .
Sending build context to Docker daemon
...
Step 8/10 : RUN C:\TEMP\Install.cmd C:\TEMP\vs_buildtools.exe --quiet --wait --norestart --nocache ...
---> Running in 4b62b4ce3a3c
The command 'cmd /S /C C:\TEMP\Install.cmd C:\TEMP\vs_buildtools.exe ...' returned a non-zero code: 1603
> docker cp 4b62b4ce3a3c:C:\vslogs.zip "%TEMP%\vslogs.zip"
Po dokončení posledního řádku otevřete na svém počítači soubor %TEMP%\vslogs.zip nebo odešlete problém na webu komunity vývojářů.
Podpora nebo řešení potíží
Někdy se věci můžou pokazit. Pokud se instalace sady Visual Studio nezdaří, pokyny najdete v tématu Řešení potíží s instalací a upgradem sady Visual Studio.
Tady je několik dalších možností podpory:
- Pro problémy související s instalací nabízíme možnost podpory instalačního chatu (pouze v angličtině).
- Nahlašte problémy s produktem prostřednictvím nástroje Nahlásit problém, který se zobrazuje jak v Instalační program pro Visual Studio, tak v integrovaném vývojovém prostředí sady Visual Studio. Pokud jste IT Správa istrator a nemáte nainstalovanou sadu Visual Studio, můžete sem odeslat svůj názor na IT Správa.
- Navrhněte funkci, sledujte problémy s produktem a najděte odpovědi v komunitě vývojářů sady Visual Studio.
Související obsah
Váš názor
https://aka.ms/ContentUserFeedback.
Připravujeme: V průběhu roku 2024 budeme postupně vyřazovat problémy z GitHub coby mechanismus zpětné vazby pro obsah a nahrazovat ho novým systémem zpětné vazby. Další informace naleznete v tématu:Odeslat a zobrazit názory pro