Это сводит меня с ума, и я не уверен, сбивает ли меня с пути диагностика, или я действительно использую неправильные версии.
У меня есть конвейер сборки в Azure, он создает минимальный API .NET Core. У этой штуки есть одна конечная точка. Это работает чудесно - когда я объединяюсь с Main, начинается конвейер - у него много шагов - но в интересах этого вопроса давайте предположим, что его два. Эти двое:
Шаг 1. Установите пакет SDK для .NET Core.
Шаг 2. Создайте проект
Итак, учитывая:
steps:
- task: UseDotNet@2
displayName: 'Install SDK'
inputs:
version: 8.x
.... который производит
Successfully installed .NET Core sdk version 8.0.401.
Creating global tool path and pre-pending to PATH.
Finishing: Install .NET Core SDK
... на следующем этапе я вызываю:
inputs:
command: 'build'
... почему диагностический вывод показывает
Description : Build, test, package, or publish a dotnet application, or run a custom dotnet command
Version : 2.244.1
Author : Microsoft Corporation
Help : https://docs.microsoft.com/azure/devops/pipelines/tasks/build/dotnet-core-cli
==============================================================================
##[warning]Resource file has already set to: /home/vsts/work/_tasks/DotNetCoreCLI_5541a522-603c-47ad-91fc-a4b1d163081b/2.244.1/node_modules/azure-pipelines-tasks-packaging-common/module.json
Info: .NET Core SDK/runtime 2.2 and 3.0 are now End of Life(EOL) and have been removed from all hosted agents. If you're using these SDK/runtimes on hosted agents, kindly upgrade to newer versions which are not EOL, or else use UseDotNet task to install the required version.
1.) как это могло быть основано на 2.2/3, а потом предупреждать меня, чтобы я не использовал эти вещи?
2.) почему он не использует то, что я просил на шаге 1?
Здесь действительно не использовался .NET 8? Информационное сообщение присутствует у всех? Я что-то упускаю?
Пожалуйста, спаси меня от безумия...
Да, это просто предупреждение, отображаемое при использовании агентов, размещенных в Microsoft. Вы можете дважды проверить версию .NET, которая в данный момент используется в конвейере, добавив задачу сценария с помощью команды dotnet --version
после задачи UseDotNet@2
.
Также используйте dotnet --list-sdks
до и/или после установки SDK, чтобы узнать, какие SDK доступны.
Информация: Срок службы .NET Core SDK/среды выполнения 2.2 и 3.0 истек (EOL) и удален из всех размещенных агентов.
Это информационное сообщение, встроенное в задачу dotnet версии 2 в Azure DevOps. И он был добавлен в задачу dotnet с 2020 года. Все пользователи, использующие задачу dotnet версии 2, увидят это информационное сообщение.
См. этот коммит задачи, связанный с изменением: [DotnetCoreCLIV2]удаление предупреждения об устаревании версий и создание информационного сообщения
Это информационное сообщение предназначено для напоминания проектам, использующим .net 2.2 и 3.0, о том, что им необходимо использовать основную задачу «Использовать dotnet» для установки необходимого старого пакета SDK. Он не используется для отображения версии .net SDK, используемой текущим конвейером.
Это не влияет на вашу текущую сборку и может полностью игнорировать этот информационный журнал.
почему он не использует то, что я просил на шаге 1?
В соответствии с вашим определением конвейера при сборке dotnet должна была использоваться установленная вами версия dotnet.
Вы можете добавить дополнительную задачу сценария перед задачей сборки dotnet, чтобы выполнить команду: dotnet --version
для подтверждения версии dotnet.
Например:
steps:
- task: UseDotNet@2
displayName: 'Use .NET Core sdk 8.x'
inputs:
version: 8.x
- script: 'dotnet --version'
displayName: 'Check dotnet version'
- task: DotNetCoreCLI@2
displayName: Build
inputs:
projects: '**/*.csproj'
arguments: '--configuration $(BuildConfiguration)'
Когда вы проверите задачу сценария, она покажет текущую версию dotnet, используемую в конвейере.
Например:
В настоящее время это информационное сообщение не поддерживает скрытие в задаче dotnet версии 2.
Если вы не хотите видеть информационные сообщения в журнале, вы можете рассмотреть следующие методы:
Перейдите на использование старой версии задачи dotnet: DotNetCoreCLI@1 — задача .NET Core v1
Измените использование задачи сценария (powershell/bash/cmd) для прямого запуска команды dotnet в Azure Pipelines.
Спасибо, Кевин. Именно номер версии в выходной диагностике, показывающий «2.237.1», действительно привел меня сюда. На мой взгляд, это выглядело так, будто среда выполнения .NET или SDK сообщает мне номер своей версии, но, как вы ясно дали понять, это не так. Буду признателен за развернутый ответ!
@SpaceBison Это версия задачи конвейера: 2.237.1. Не версия .net SDK. Из вашего образца YAML я могу подтвердить, что задача сборки dotnet будет использовать правильный SDK .net 8.
Да, я понимаю, но в сочетании с не относящимся к делу информационным сообщением это создает запутанный сценарий диагностики.
Ой. Теперь я могу понять вашу точку зрения (версия задачи 2.2xx и информационное сообщение: .net2.2). Это действительно немного сбивает с толку. Но эти информационные сообщения можно игнорировать. Они не повлияют на вашу сборку. Вы можете продолжить разработку в Pipeline. Приятного кодирования!
Это просто информация, которая говорит о том, что эти версии устарели. Не потому, что они используются вашей командой сборки. Сборка завершилась бы неудачей, если бы на машине, на которой работает конвейер, была установлена только .NET Core 2.2/3.