@@ -64,24 +64,80 @@ if (!(Test-Path $InstallPath)) {
6464 New-Item - Path $InstallPath - ItemType Directory - Force | Out-Null ;
6565}
6666
67+ [bool ]$InstallSupportedSdks = $env: CAKE_INSTALL_SUPPORTED_SDKS -eq " true" -or [string ]::IsNullOrWhiteSpace($env: TEAMCITY_VERSION ) -eq $false
68+ [string ]$InstallSdkVersion = $env: CAKE_INSTALL_SDK_VERSION
69+ [bool ]$InstallSpecificSdkVersion = [string ]::IsNullOrWhiteSpace($InstallSdkVersion ) -eq $false
70+
6771if ($IsMacOS -or $IsLinux ) {
6872 $ScriptPath = Join-Path $InstallPath ' dotnet-install.sh'
6973 (New-Object System.Net.WebClient).DownloadFile($DotNetUnixInstallerUri , $ScriptPath );
74+
75+ # Install additional SDK channels if CAKE_INSTALL_SUPPORTED_SDKS is set to true
76+ if ($InstallSupportedSdks ) {
77+ Write-Host " Installing additional supported SDK channels..."
78+
79+ # Install .NET 8.0 SDK
80+ Write-Host " Installing .NET 8.0 SDK..."
81+ & bash $ScriptPath -- channel 8.0 -- install-dir " $InstallPath " -- no- path
82+
83+ # Install .NET 9.0 SDK
84+ Write-Host " Installing .NET 9.0 SDK..."
85+ & bash $ScriptPath -- channel 9.0 -- install-dir " $InstallPath " -- no- path -- skip-non - versioned- files
86+
87+ # Install .NET 10.0 SDK (preview quality)
88+ Write-Host " Installing .NET 10.0 SDK (preview)..."
89+ & bash $ScriptPath -- channel 10.0 -- quality preview -- install-dir " $InstallPath " -- no- path -- skip-non - versioned- files
90+ }
91+
92+ # Install SDK from global.json
7093 & bash $ScriptPath -- jsonfile " $GlobalJsonPath " -- install-dir " $InstallPath " -- no- path
7194
95+ # Install specific SDK version if CAKE_INSTALL_SDK_VERSION is set
96+ if ($InstallSpecificSdkVersion ) {
97+ Write-Host " Installing .NET $InstallSdkVersion SDK..."
98+ & bash $ScriptPath -- version $InstallSdkVersion -- install-dir " $InstallPath " -- no- path
99+ }
100+
72101 Remove-PathVariable " $InstallPath "
73102 $env: PATH = " $ ( $InstallPath ) :$env: PATH "
74103}
75104else {
76105 $ScriptPath = Join-Path $InstallPath ' dotnet-install.ps1'
77106 (New-Object System.Net.WebClient).DownloadFile($DotNetInstallerUri , $ScriptPath );
107+
108+ # Install additional SDK channels if CAKE_INSTALL_SUPPORTED_SDKS is set to true
109+ if ($InstallSupportedSdks ) {
110+ Write-Host " Installing additional supported SDK channels..."
111+
112+ # Install .NET 8.0 SDK
113+ Write-Host " Installing .NET 8.0 SDK..."
114+ & $ScriptPath - Channel 8.0 - InstallDir $InstallPath - NoPath
115+
116+ # Install .NET 9.0 SDK
117+ Write-Host " Installing .NET 9.0 SDK..."
118+ & $ScriptPath - Channel 9.0 - InstallDir $InstallPath - NoPath - SkipNonVersionedFiles
119+
120+ # Install .NET 10.0 SDK (preview quality)
121+ Write-Host " Installing .NET 10.0 SDK (preview)..."
122+ & $ScriptPath - Channel 10.0 - Quality preview - InstallDir $InstallPath - NoPath - SkipNonVersionedFiles
123+ }
124+
125+ # Install SDK from global.json
78126 & $ScriptPath - JSonFile $GlobalJsonPath - InstallDir $InstallPath ;
79127
128+ # Install specific SDK version if CAKE_INSTALL_SDK_VERSION is set
129+ if ($InstallSpecificSdkVersion ) {
130+ Write-Host " Installing .NET $InstallSdkVersion SDK..."
131+ & $ScriptPath - Version $InstallSdkVersion - InstallDir $InstallPath - NoPath
132+ }
133+
80134 Remove-PathVariable " $InstallPath "
81135 $env: PATH = " $InstallPath ;$env: PATH "
82136}
83137$env: DOTNET_ROOT = $InstallPath
84138
139+ & dotnet -- info
140+
85141# ##########################################################################
86142# INSTALL CAKE
87143# ##########################################################################
0 commit comments