Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Visual Studio Build Tools můžete nainstalovat do kontejneru Windows, který podporuje pracovní postupy kontinuální integrace a průběžného doručování (CI/CD). Tento článek vás provede požadovanými změnami konfigurace Dockeru a také tím, jaké úlohy a komponenty můžete nainstalovat do kontejneru.
Kontejnery představují skvělý způsob, jak zabalit konzistentní systém sestavení, který můžete použít, a to nejen v prostředí serveru CI/CD, ale i pro vývojová prostředí. Zdrojový kód můžete například připojit ke kontejneru, který bude sestaven přizpůsobeným prostředím, zatímco k psaní kódu budete dál používat Visual Studio nebo jiné nástroje. Pokud váš pracovní postup CI/CD používá stejnou image kontejneru, můžete mít jistotu, že se váš kód konzistentně sestaví. Kontejnery můžete použít také pro konzistenci modulu runtime, což je běžné pro mikroslužby využívající více kontejnerů se systémem orchestrace; to je však nad rámec tohoto článku.
Pokud visual Studio Build Tools nemá to, co potřebujete k sestavení zdrojového kódu, můžete použít stejný postup pro jiné produkty sady Visual Studio. Upozorňujeme ale, že kontejnery Windows nepodporují interaktivní uživatelské rozhraní, takže všechny příkazy musí být automatizované.
Než začnete
Předpokládá se některá znalost Dockeru . Pokud to neznáte, přečtěte si, jak nainstalovat a nakonfigurovat modul Docker ve Windows.
Následující základní image je ukázka a nemusí fungovat pro váš systém. Přečtěte si kompatibilitu verzí kontejneru Windows a zjistěte, jakou základní image byste měli použít pro své prostředí.
Vytvoření a sestavení souboru Dockerfile
Uložte následující příklad souboru Dockerfile do nového souboru na disku. Pokud se soubor jmenuje jednoduše Dockerfile, rozpozná se ve výchozím nastavení.
Výstraha
Tento příklad dockerfile vylučuje pouze starší sady Windows SDK, které nelze nainstalovat do kontejnerů. Dřívější verze způsobují selhání příkazu sestavení.
Otevřete příkazový řádek.
Vytvořte nový adresář (doporučeno):
mkdir C:\BuildToolsZměňte adresáře na tento nový adresář:
cd C:\BuildToolsUložte následující obsah do souboru C:\BuildTools\Dockerfile.
# escape=` # Use the latest .NET Framework runtime image. FROM mcr.microsoft.com/dotnet/framework/runtime:4.8.1-windowsservercore-ltsc2025 # Restore the default Windows shell for correct batch processing. SHELL ["cmd", "/S", "/C"] RUN ` # Download the Build Tools bootstrapper. curl -SL --output vs_buildtools.exe https://aka.ms/vs/stable/vs_buildtools.exe ` ` # Install Build Tools with the Microsoft.VisualStudio.Workload.AzureBuildTools workload, excluding workloads and components with known issues. && (start /w vs_buildtools.exe --quiet --wait --norestart --nocache ` --installPath "%ProgramFiles(x86)%\Microsoft Visual Studio\BuildTools" ` --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 ` || IF "%ERRORLEVEL%"=="3010" EXIT 0) ` ` # 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\\BuildTools\\Common7\\Tools\\VsDevCmd.bat", "&&", "powershell.exe", "-NoLogo", "-ExecutionPolicy", "Bypass"]Návod
Pokud chcete cílit na 64bitovou verzi, zadejte
-arch=amd64vENTRYPOINTpříkazu možnost pro spuštění příkazového řádku pro vývojáře pro Visual Studio (VSDevCmd.bat).Příklad:
ENTRYPOINT ["C:\\Program Files (x86)\\Microsoft Visual Studio\\BuildTools\\Common7\\Tools\\VsDevCmd.bat", "-arch=amd64", "&&", "powershell.exe", "-NoLogo", "-ExecutionPolicy", "Bypass"]Výstraha
Pokud image založíte přímo na microsoft/windowsservercore, nemusí se rozhraní .NET Framework správně nainstalovat a není uvedena žádná chyba instalace. Spravovaný kód se nemusí spustit po dokončení instalace. Místo toho použijte image založený na microsoft/dotnet-framework:4.8 nebo novější. Všimněte si také, že image s verzí 4.8 nebo novější můžou použít PowerShell jako výchozí prostředí
SHELL, což způsobí selháníRUNa neprovedení pokynůENTRYPOINT.Chcete-li zjistit, které verze operačního systému kontejneru jsou podporovány na kterých verzích hostitelského operačního systému, přečtěte si Kompatibilita verzí kontejneru Windows. Podívejte se na známé problémy s kontejnery Windows a Build Tools.
# escape=` # Use the latest Windows Server Core 2022 image. FROM mcr.microsoft.com/windows/servercore:ltsc2022 # Restore the default Windows shell for correct batch processing. SHELL ["cmd", "/S", "/C"] 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. && (start /w vs_buildtools.exe --quiet --wait --norestart --nocache ` --installPath "%ProgramFiles(x86)%\Microsoft Visual Studio\2022\BuildTools" ` --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 ` || IF "%ERRORLEVEL%"=="3010" EXIT 0) ` ` # 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"]Návod
Pokud chcete cílit na 64bitovou verzi, zadejte
-arch=amd64vENTRYPOINTpříkazu možnost pro spuštění příkazového řádku pro vývojáře pro Visual Studio (VSDevCmd.bat).Příklad:
ENTRYPOINT ["C:\\Program Files (x86)\\Microsoft Visual Studio\\2022\\BuildTools\\Common7\\Tools\\VsDevCmd.bat", "-arch=amd64", "&&", "powershell.exe", "-NoLogo", "-ExecutionPolicy", "Bypass"]Výstraha
Pokud image založíte přímo na microsoft/windowsservercore, nemusí se rozhraní .NET Framework správně nainstalovat a není uvedena žádná chyba instalace. Spravovaný kód se nemusí spustit po dokončení instalace. Místo toho použijte image založený na microsoft/dotnet-framework:4.8 nebo novější. Všimněte si také, že image s verzí 4.8 nebo novější můžou použít PowerShell jako výchozí prostředí
SHELL, což způsobí selháníRUNa neprovedení pokynůENTRYPOINT.Chcete-li zjistit, které verze operačního systému kontejneru jsou podporovány na kterých verzích hostitelského operačního systému, přečtěte si Kompatibilita verzí kontejneru Windows. Podívejte se na známé problémy s kontejnery Windows a Build Tools.
Poznámka:
Kód
3010se používá k označení úspěchu, pokud je vyžadováno restartování. Další informace viz chybové zprávy MsiExec.exe.V tomto adresáři spusťte následující příkaz.
docker build -t buildtools:latest -m 2GB .Tento příkaz sestaví soubor Dockerfile v aktuálním adresáři pomocí 2 GB paměti. Výchozí 1 GB není dostačující, když jsou některé úlohy nainstalovány; V závislosti na požadavcích na sestavení ale můžete být schopni sestavovat pouze s 1 GB paměti.
Poslední image je označená buildtools:latest , takže ji můžete snadno spustit v kontejneru jako buildtools , protože nejnovější značka je výchozí, pokud není zadána žádná značka. Pokud chcete použít konkrétní verzi nástrojů Visual Studio Build Tools v pokročilejším scénáři, můžete místo toho kontejner označit určitým číslem sestavení sady Visual Studio a nejnovějším , aby kontejnery mohly konzistentně používat konkrétní verzi.
Použijte vytvořený obraz
Teď, když jste vytvořili image, můžete ji spustit v kontejneru a provádět interaktivní i automatizované sestavení. V příkladu se používá příkazový řádek pro vývojáře, takže vaše cesta a další proměnné prostředí jsou už nakonfigurované.
Otevřete příkazový řádek.
Spuštěním kontejneru spusťte prostředí PowerShell se všemi sadami proměnných vývojového prostředí:
docker run -it buildtools
Pokud chcete tuto image použít pro pracovní postup CI/CD, můžete ji publikovat do vlastního registru Azure Container Registry nebo jiného interního registru Dockeru, aby je servery potřebovaly jen načíst.
Poznámka:
Pokud se kontejner Dockeru nepodaří spustit, pravděpodobně dojde k problému s instalací sady Visual Studio. Soubor Dockerfile můžete aktualizovat tak, abyste odstranili krok, který volá batch příkaz aplikace Visual Studio. To vám umožní spustit kontejner Dockeru a číst protokoly chyb instalace.
V souboru Dockerfile odeberte parametry C:\\BuildTools\\Common7\\Tools\\VsDevCmd.bat a && z příkazu ENTRYPOINT. Příkaz by teď měl být ENTRYPOINT ["powershell.exe", "-NoLogo", "-ExecutionPolicy", "Bypass"]. Dále znovu sestavte soubor Dockerfile a spusťte run příkaz pro přístup k souborům kontejneru. Pokud chcete najít protokoly chyb instalace, přejděte do $env:TEMP adresáře a vyhledejte dd_setup_<timestamp>_errors.log soubor.
Po identifikaci a opravě problému s instalací můžete přidat parametry C:\\BuildTools\\Common7\\Tools\\VsDevCmd.bat a && zpět do příkazu ENTRYPOINT a znovu sestavit soubor Dockerfile.
Další informace najdete v tématu Řešení potíží s kontejnery Nástrojů systému Windows a Build Tools.
Řešení potíží s kontejnery Windows a nástroji pro sestavování
Při instalaci sady Visual Studio do kontejneru Dockeru dochází k několika problémům.
Řešení potíží s kontejnery Windows
Při instalaci nástrojů Visual Studio Build Tools do kontejneru Windows dochází k následujícím známým problémům.
Předat
-m 2GB(nebo více) při vytváření obrazu. Některé úlohy vyžadují při instalaci více paměti než výchozí 1 GB.Nakonfigurujte Docker tak, aby používal disky větší než výchozí 20 GB.
Předejte
--norestartna příkazovém řádku. V době psaní se pokus o restartování kontejneru Windows zevnitř kontejneru vrátíERROR_TOO_MANY_OPEN_FILEShostiteli.Pokud image založíte přímo na mcr.microsoft.com/windows/servercore, nemusí se rozhraní .NET Framework správně nainstalovat a není uvedena žádná chyba instalace. Spravovaný kód se nemusí spustit po dokončení instalace. Místo toho založte image na platformě microsoft/dotnet-framework:4.7.1 nebo novější. Například při sestavování pomocí nástroje MSBuild se může zobrazit chyba podobná této:
C:\BuildTools\MSBuild\15.0\bin\Roslyn\Microsoft.CSharp.Core.targets(84;5): chyba MSB6003: Zadaný spustitelný soubor úlohycsc.exenelze spustit. Nelze načíst soubor nebo sestavení System.IO.FileSystem, Version=4.0.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a nebo jednu z jejích závislostí. Systém nemůže najít zadaný soubor.
Řešení potíží s kontejnery Build Tools
Při použití kontejneru Build Tools se mohou vyskytnout následující známé problémy. Pokud chcete zjistit, jestli byly problémy opravené nebo jestli existují další známé problémy, navštivte komunitu vývojářů.
- IntelliTrace nemusí v některých scénářích v kontejneru fungovat.
- Ve starších verzích Dockeru pro Windows je výchozí velikost image kontejneru pouze 20 GB a nevyhovuje nástrojům buildu. Podle pokynů změňte velikost obrázku na 127 GB nebo více.
Pokud chcete ověřit problém s místem na disku, vyhledejte další informace v souborech protokolu. Soubor
vslogs\dd_setup_<timestamp>_errors.logobsahuje následující informace, pokud vám dojde místo na disku:
Pre-check verification: Visual Studio needs at least 91.99 GB of disk space. Try to free up space on C:\ or change your target drive.
Pre-check verification failed with error(s) : SizePreCheckEvaluator.