У меня есть global.json
, который выглядит так:
{
"sdk": {
"version": "8.0.301",
"rollForward": "latestFeature"
}
}
Насколько я знаю, это означает, что я хочу, чтобы он принимал 8.0.xxx
, если он не ниже 8.0.301. Например, и 8.0.302
, и 8.0.400
будут работать, а 8.1.x
или x.x.x
— нет.
Проблема в том, что мой Azure Pipeline хочет установить только 8.0.301
. На момент написания доступен 8.0.302 , который поддерживается официальной страницей загрузки Microsoft.
Моя задача конвейера Azure, которая устанавливает .NET SDK, выглядит следующим образом:
- task: UseDotNet@2
displayName: "Install .NET SDK"
inputs:
packageType: sdk
useGlobalJson: true
Но когда это запускается, я вижу следующие журналы:
Found version 8.0.301 in channel 8.0 for user specified version spec: 8.0.301
Getting URL to download .NET Core sdk version: 8.0.301.
Detecting OS platform to find correct download package for the OS.
C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -NoLogo -Sta -NoProfile -NonInteractive -ExecutionPolicy Unrestricted -Command "& 'D:\a\_tasks\UseDotNet_b0ce7256-7898-45d3-9cb5-176b752bfea6\2.238.1\externals\get-os-platform.ps1'"
Primary:win-x64
Detected platform (Primary): win-x64
Version 8.0.301 was not found in cache.
Downloading: https://download.visualstudio.microsoft.com/download/pr/7ac2d880-2d57-4008-850e-4b42b829c354/e1c92cb3b6a85f53cab6fa55b14b49e3/dotnet-sdk-8.0.301-win-x64.zip
Extracting downloaded package D:\a\_temp\7024317f-ea64-4710-afa8-0435e0f177ed.
Extracting archive
C:\Windows\system32\chcp.com 65001
Active code page: 65001
C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -NoLogo -Sta -NoProfile -NonInteractive -ExecutionPolicy Unrestricted -Command "$ErrorActionPreference = 'Stop' ; try { Add-Type -AssemblyName System.IO.Compression.FileSystem } catch { } ; [System.IO.Compression.ZipFile]::ExtractToDirectory('D:\a\_temp\7024317f-ea64-4710-afa8-0435e0f177ed', 'D:\a\_temp\9404')"
Successfully installed .NET Core sdk version 8.0.301.
Creating global tool path and pre-pending to PATH.
Finishing: Install .NET SDK
Зачем ему устанавливаться 8.0.301
, хотя 8.0.302
нужно загрузить?
Для получения дополнительной информации: https://github.com/microsoft/azure-pipelines-tasks/issues/20065
global.json и особенно rollForward
служат своей цели:
Файл global.json позволяет определить, какая версия .NET SDK является актуальной. используется при запуске команд .NET CLI.
Это среди уже установленных версий.
Задача Использовать .NET V2 использует global.json по-другому:
Использовать глобальный json. Этот флажок указывает, что все версии из всех Файлы global.json будут использоваться для установки версий SDK. Ты можешь установите корневой путь поиска с помощью рабочего каталога.
Скорее всего, он просто ищет номера версий и не использует повторно политику версий, например rollForward
.
Фактически, поскольку вы устанавливаете .NET SDK, а не выбираете, какой из установленных использовать для CLI, все это имеет смысл.
Возможно, вам следует использовать параметр «Версия» задачи, как предложено в документации
Версия*: укажите версию .NET Core SDK или среды выполнения для установки. Это также позволяет вам всегда получать последнюю версию в минорном или мажорном версия. См. примеры ниже. Примеры:
To install 2.2.104 SDK, use 2.2.104 To install 2.2.1 runtime, use 2.2.1 To install 3.0.100-preview3-010431 sdk, use 3.0.100-preview3-010431 To install latest patch version of 2.1 sdk, use 2.1.x To install latest minor version of 2. sdk, use 2.x For getting more details about exact version, refer this link.
Итак, для вашего варианта использования, возможно, используйте 8.0.3x
. Эксперименты уместны, поскольку в документации версия группы не так ясна.
Привет, Эван, это имеет смысл, но обидно, потому что это означает, что людям придется определять свои версии .NET дважды: как в global.json, так и в задаче конвейера. Хотя я приму ваш ответ. Большое спасибо за ваше время!
@S.tenBrinke np, надеюсь, вы сможете прокомментировать, работает ли синтаксис 8.0.3x для последней версии 8.0.302 (у меня нет возможности проверить себя) для дальнейшего использования.
Можете ли вы попробовать еще раз, если вы установите «версию»: «8.0.302» в вашем global.json? это работает?