Aracılığıyla paylaş


Kapsayıcılar için gelişmiş örnek

derleme araçlarını kapsayıcıya yükleme örnek Dockerfile her zaman en son microsoft/windowsservercore görüntüsünü ve en son Visual Studio Derleme Araçları yükleyicisini temel alan microsoft/dotnet-framework:4.8 görüntüsünü kullanır. Bu görüntüyü başkalarının indirebilmesi için bir Docker kayıt defterinde paylaşırsanız, bu görüntü birçok senaryo için uygun olabilir. Uygulamada, kullandığınız temel görüntü, indirdiğiniz ikili dosyalar ve yüklediğiniz araç sürümleri konusunda spesifik olmak daha yaygındır.

Aşağıdaki örnek Dockerfile, microsoft/dotnet-framework görüntüsünün belirli bir sürüm etiketini kullanır. Temel görüntü için belirli bir etiketin kullanılması yaygın bir durumdur ve görüntüleri oluşturmanın veya yeniden derlemenin her zaman aynı temele sahip olduğunu hatırlamayı kolaylaştırır.

Dikkat

Visual Studio'yu microsoft/windowsservercore:10.0.14393.1593 veya bu görüntüye dayalı herhangi bir imaj üzerine yükleyemezsiniz, çünkü bu, yükleyiciyi bir kapsayıcıda başlatma sırasında bilinen sorunlar yaşatır. Daha fazla bilgi için bkz. kapsayıcılar için bilinen sorunlar.

Aşağıdaki örnek, Derleme Araçları'nın en son sürümünü indirir. Derleme Araçları'nın daha sonra kapsayıcıya yükleyebileceğiniz önceki bir sürümünü kullanmak istiyorsanız, önce oluşturup oluşturmanız gerekir.

Betik yükle

Yükleme hatası oluştuğunda günlükleri toplamak için, çalışma dizininde aşağıdaki içeriği içeren "Install.cmd" adlı bir toplu iş betiği oluşturun:

@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

Çalışma dizininde aşağıdaki içeriğe sahip "Dockerfile" dosyasını oluşturun:

# 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"]

Görüntüyü geçerli çalışma dizininde oluşturmak için aşağıdaki komutu çalıştırın:

docker build -t buildtools2022:17.0 -t buildtools2022:latest -m 2GB .

İsteğe bağlı olarak, farklı bir temel görüntüyü veya iç düzenin konumunu belirtmek için sabit bir görüntüyü koruyarak FROM_IMAGE veya CHANNEL_URL ya da her iki bağımsız değişkeni de --build-arg komut satırı anahtarı ile geçebilirsiniz.

Bahşiş

İş yüklerinin ve bileşenlerin listesi için bkz. Visual Studio Derleme Araçları bileşen dizini.

Yükleme hatalarını tanılama

Bu örnek, belirli araçları indirir ve karmaların doğru olup olmadığını doğrular. Ayrıca en son Visual Studio ve .NET günlük toplama yardımcı programını indirir, böylece bir yükleme hatası oluşursa, hatayı analiz etmek için günlükleri konak makinenize kopyalayabilirsiniz.

> 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"

Son satırın yürütülmesi tamamlandıktan sonra makinenizde "%TEMP%\vslogs.zip" açın veya Geliştirici Topluluğu web sitesinde bir sorun gönderin.

Destek veya sorun giderme

Bazen işler ters gidebilir. Visual Studio yüklemeniz başarısız olursa, adım adım yönergeler için bkz. Visual Studio yükleme ve yükseltme sorunlarını giderme .

İşte birkaç destek seçeneği daha:

  • Yüklemeyle ilgili sorunlar için yükleme sohbeti (yalnızca İngilizce) destek seçeneğini kullanın.
  • Hem Visual Studio Yükleyicisi'nde hem de Visual Studio IDE'de görünen Sorun Bildir aracını kullanarak ürün sorunlarını bize bildirin. BT Yöneticisiyseniz ve Visual Studio yüklü değilse, BT Yöneticisi geri bildirimi gönderebilirsiniz.
  • Visual Studio Geliştirici Topluluğu bir özellik önerin, ürün sorunlarını izleyin ve yanıtlar bulun.