Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A Visual Studio Build Toolst windowsos tárolóba telepítheti a folyamatos integrációs és folyamatos kézbesítési (CI/CD) munkafolyamatok támogatásához. Ez a cikk útmutatást ad a szükséges Docker konfigurációs módosításokról, valamint arról, hogy milyen számítási feladatokat és összetevőket telepíthet egy tárolóba.
tárolók kiválóan alkalmas egy konzisztens buildrendszer csomagolására, amely nem csak CI-/CD-kiszolgálói környezetben, hanem fejlesztői környezetekben is használható. Például csatlakoztathatja a forráskódot egy olyan tárolóba, amelyet egy testre szabott környezet hoz létre, miközben továbbra is a Visual Studiót vagy más eszközöket használja a kód megírásához. Ha a CI/CD-munkafolyamat ugyanazt a tárolórendszerképet használja, biztos lehet benne, hogy a kód következetesen épül fel. A futtatókörnyezet konzisztenciájához tárolókat is használhat, ami gyakori a több tárolót és vezénylési rendszert használó mikroszolgáltatások esetében; ez azonban meghaladja a jelen cikk hatókörét.
Ha a Visual Studio Build Tools nem rendelkezik a forráskód létrehozásához szükséges lépésekkel, ugyanezek a lépések használhatók más Visual Studio-termékekhez is. Vegye figyelembe azonban, hogy a Windows-tárolók nem támogatják az interaktív felhasználói felületet, ezért minden parancsot automatizálni kell.
Mielőtt hozzákezdene
Feltételezzük a Docker ismeretét. Ha nem ismeri, megtudhatja, hogyan telepítheti és konfigurálhatja a Docker-motort Windows.
Az alábbi alaprendszerkép egy minta, és lehet, hogy nem működik a rendszer számára. Olvassa el Windows-tároló verziókompatibilitási annak megállapításához, hogy melyik alaprendszerképet kell használnia a környezetéhez.
Dockerfile előállítása és megépítése
Mentse a következő példa Dockerfile-t egy új fájlba a lemezen. Ha a fájl neve egyszerűen Dockerfile, a rendszer alapértelmezés szerint felismeri.
Figyelmeztetés
Ez a példa Dockerfile csak azokat a korábbi Windows SDK-kat zárja ki, amelyek nem telepíthetők tárolókba. A korábbi kiadások a buildelési parancs meghiúsulását okozzák.
Nyisson meg egy parancssort.
Új könyvtár létrehozása (ajánlott):
mkdir C:\BuildToolsMódosítsa a könyvtárakat erre az új könyvtárra:
cd C:\BuildToolsMentse a következő tartalmat a C:\BuildTools\Dockerfile fájlba.
# 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"]Borravaló
A 64 bites célzáshoz adja meg a
-arch=amd64beállítást aENTRYPOINTparancsban a Visual Studio fejlesztői parancssorának elindításához.Például:
ENTRYPOINT ["C:\\Program Files (x86)\\Microsoft Visual Studio\\BuildTools\\Common7\\Tools\\VsDevCmd.bat", "-arch=amd64", "&&", "powershell.exe", "-NoLogo", "-ExecutionPolicy", "Bypass"]Figyelmeztetés
Ha közvetlenül a microsoft/windowsservercorerendszerképre alapozza a rendszerképet, előfordulhat, hogy a .NET-keretrendszer nem megfelelően települ, és nem jelez telepítési hibát. Előfordulhat, hogy a felügyelt kód nem fut a telepítés befejezése után. Ehelyett alapozza a képfájlt a microsoft/dotnet-framework:4.8 vagy újabb verzióra. Azt is vegye figyelembe, hogy a 4.8-as vagy újabb verziójú képek alapértelmezés szerint
SHELLa PowerShellt használhatják, ami aRUNésENTRYPOINTutasítások leállásához vezet.Ha tudni szeretné, hogy mely konténer operációs rendszer verziók támogatottak a gazdagép operációs rendszer verzióiban, tekintse meg a Windows konténer verzió-kompatibilitási. Ellenőrizze az ismert problémákat a Windows és a Build Tools tárolók hibaelhárítása , alatt.
# 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"]Borravaló
A 64 bites célzáshoz adja meg a
-arch=amd64beállítást aENTRYPOINTparancsban a Visual Studio fejlesztői parancssorának elindításához.Például:
ENTRYPOINT ["C:\\Program Files (x86)\\Microsoft Visual Studio\\2022\\BuildTools\\Common7\\Tools\\VsDevCmd.bat", "-arch=amd64", "&&", "powershell.exe", "-NoLogo", "-ExecutionPolicy", "Bypass"]Figyelmeztetés
Ha közvetlenül a microsoft/windowsservercorerendszerképre alapozza a rendszerképet, előfordulhat, hogy a .NET-keretrendszer nem megfelelően települ, és nem jelez telepítési hibát. Előfordulhat, hogy a felügyelt kód nem fut a telepítés befejezése után. Ehelyett alapozza a képfájlt a microsoft/dotnet-framework:4.8 vagy újabb verzióra. Azt is vegye figyelembe, hogy a 4.8-as vagy újabb verziójú képek alapértelmezettként a PowerShellt használják, ami miatt a
RUNésENTRYPOINTutasítások nem működnek.Ha tudni szeretné, hogy mely konténer operációs rendszer verziók támogatottak a gazdagép operációs rendszer verzióiban, tekintse meg a Windows konténer verzió-kompatibilitási. Ellenőrizze az ismert problémákat a Windows és a Build Tools tárolók hibaelhárítása , alatt.
Jegyzet
A hibakód
3010az újraindítás sikerességét jelzi. További információ: MsiExec.exe hibaüzenetek.Futtassa a következő parancsot a könyvtáron belül.
docker build -t buildtools:latest -m 2GB .Ez a parancs 2 GB memóriával hozza létre a Dockerfile-t az aktuális könyvtárban. Az alapértelmezett 1 GB nem elegendő bizonyos számítási feladatok telepítésekor; A buildelési követelményektől függően azonban előfordulhat, hogy csak 1 GB memóriával tud buildelést végrehajtani.
A végső kép buildtools:latest címkével rendelkezik, így egyszerűen futtathatja egy tárolóban, buildtoolokként, mivel a legújabb címke az alapértelmezett, ha nincs megadva címke. Ha a Visual Studio Build Tools egy adott verzióját szeretné használni egy speciális forgatókönyvben, a tárolót egy adott Visual Studio-buildszámmal, valamint legújabb, hogy a tárolók konzisztensen használhassák az adott verziót.
Az elkészült képfájl használata
Most, hogy létrehozott egy képfájlt, futtathatja egy tárolóban az interaktív és az automatizált építések végrehajtásához. A példa a fejlesztői parancssort használja, így a PATH és más környezeti változók már konfigurálva vannak.
Nyisson meg egy parancssort.
Futtasson egy konténert egy PowerShell környezet indításához, mely az összes fejlesztői környezeti változóval van beállítva.
docker run -it buildtools
Ha ezt a képet a CI/CD-munkafolyamathoz szeretné használni, közzéteheti a saját Azure Container Registry--ben vagy más belső Docker-registryben, hogy a kiszolgálóknak csak le kelljen húzniuk.
Jegyzet
Ha a Docker-tároló nem indul el, valószínűleg a Visual Studio telepítésével kapcsolatos probléma merül fel. A Dockerfile frissítésével eltávolíthatja a Visual Studio batch parancsot meghívó lépést. Ezzel elindíthatja a Docker-tárolót, és elolvashatja a telepítési hibanaplókat.
A Dockerfile-fájlban távolítsa el a C:\\BuildTools\\Common7\\Tools\\VsDevCmd.bat és && paramétereket a ENTRYPOINT parancsból. A parancsnak most ENTRYPOINT ["powershell.exe", "-NoLogo", "-ExecutionPolicy", "Bypass"]kell lennie. Ezután építse újra a Dockerfile-t, és hajtsa végre a run parancsot a tárolófájlok eléréséhez. A telepítési hibanaplók megkereséséhez lépjen a $env:TEMP könyvtárba, és keresse meg a dd_setup_<timestamp>_errors.log fájlt.
A telepítési probléma azonosítása és megoldása után hozzáadhatja a C:\\BuildTools\\Common7\\Tools\\VsDevCmd.bat és && paramétereket a ENTRYPOINT parancshoz, és újraépítheti a Dockerfile-t.
További információ: Windows- és Build Tools-tárolók hibaelhárítása.
Windows- és buildeszközök tárolóinak hibaelhárítása
A Visual Studio Docker-tárolóba való telepítésekor néhány probléma merül fel.
Windows-tárolók hibaelhárítása
A Visual Studio Build Tools Windows-tárolóba való telepítésekor az alábbi ismert problémák lépnek fel.
Adjon meg
-m 2GB(vagy többet) a kép létrehozása során. Egyes számítási feladatok telepítésekor az alapértelmezett 1 GB-nál több memóriára van szükség.Konfigurálja a Dockert az alapértelmezett 20 GB-nál nagyobb lemezek használatára.
Adja meg a
--norestartértéket a parancssorban. A jelen pillanatban a Windows-tárolókat tárolón belül újraindítani próbáló kísérletekERROR_TOO_MANY_OPEN_FILESvisszaküldenek a gazdagépnek.Ha közvetlenül a mcr.microsoft.com/windows/servercore alapozza a rendszerképet, előfordulhat, hogy a .NET-keretrendszer nem települ megfelelően, és nem jelenik meg telepítési hiba. Előfordulhat, hogy a felügyelt kód nem fut a telepítés befejezése után. Ehelyett alapozza a rendszerképet a microsoft/dotnet-framework:4.7.1 vagy újabb verzióra. Például az MSBuild szolgáltatással való építkezés során a következőhöz hasonló hibaüzenet jelenhet meg:
C:\BuildTools\MSBuild\15.0\bin\Roslyn\Microsoft.CSharp.Core.targets(84,5): hiba MSB6003: A megadott végrehajtható feladat nem futtatható: "csc.exe" nem futtatható. Nem sikerült betölteni a(z) "System.IO.FileSystem, Version=4.0.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" fájlt vagy az egyik függőségét. A rendszer nem találja a megadott fájlt.
Build Tools-tárolók hibaelhárítása
A Build Tools-tároló használatakor az alábbi ismert problémák léphetnek fel. Ha tudni szeretné, hogy kijavították-e a problémákat, vagy más ismert problémákat tapasztal, látogasson el fejlesztői közösség.
- Előfordulhat, hogy az IntelliTrace nem működik tárolón belüli forgatókönyvekben.
- A WindowsHoz készült Docker régebbi verzióiban az alapértelmezett tárolólemezkép mérete csak 20 GB, és nem felel meg a Build Toolsnak. A utasításokat követve módosíthatja a képméretet 127 GB-ra vagy többre.
A lemezterülettel kapcsolatos probléma megerősítéséhez további információt a naplófájlban talál. A
vslogs\dd_setup_<timestamp>_errors.logfájl a következőket tartalmazza, ha elfogy a lemezterület:
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.