Восстановление рабочей нагрузки DotNetCoreCLI@2

После добавления #Aspire в мой проект мне нужно было добавить рабочую нагрузку к размещенному в Azure агенту. Изначально, согласно документации я добавил следующее:

- task: DotNetCoreCLI@2
displayName: "dotnet workload restore"
# dotnet workload restore [<PROJECT | SOLUTION>...] [options]
inputs:
    command: 'custom'
    custom: 'workload restore'
    projects: '$(solution)'

Результат:

Starting: dotnet workload restore
==============================================================================
Task         : .NET Core
Description  : Build, test, package, or publish a dotnet application, or run a custom dotnet command
Version      : 2.240.0
Author       : Microsoft Corporation
Help         : https://docs.microsoft.com/azure/devops/pipelines/tasks/build/dotnet-core-cli
==============================================================================
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.
/usr/bin/dotnet workload restore /home/vsts/work/1/s/Solution.sln
Could not execute because the specified command or file was not found.
Possible reasons for this include:
  * You misspelled a built-in dotnet command.
  * You intended to execute a .NET program, but dotnet-workload restore does not exist.
  * You intended to run a global tool, but a dotnet-prefixed executable with this name could not be found on the PATH.
##[error]Error: The process '/usr/bin/dotnet' failed with exit code 1
Info: Azure Pipelines hosted agents have been updated and now contain .Net 5.x SDK/Runtime along with the older .Net Core version which are currently lts. Unless you have locked down a SDK version for your project(s), 5.x SDK might be picked up which might have breaking behavior as compared to previous versions. You can learn more about the breaking changes here: https://docs.microsoft.com/en-us/dotnet/core/tools/ and https://docs.microsoft.com/en-us/dotnet/core/compatibility/ . To learn about more such changes and troubleshoot, refer here: https://docs.microsoft.com/en-us/azure/devops/pipelines/tasks/build/dotnet-core-cli?view=azure-devops#troubleshooting
##[error]Dotnet command failed with non-zero exit code on the following projects : [ '/home/vsts/work/1/s/Solution.sln' ]
Finishing: dotnet workload restore

Я пробовал другие варианты, но ни один из них не работает. Есть ли способ заставить это работать с помощью задачи DotNetCoreCLI@2?

В настоящее время возвращаюсь к использованию:

       - task: CmdLine@2
        displayName: "dotnet workload restore"
        inputs:
          script: 'dotnet workload restore'
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
0
109
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Есть ли способ заставить это работать с помощью задачи DotNetCoreCLI@2?

Я проверил проблему и обнаружил, что мы можем использовать задачу DotNetCoreCLI@2, чтобы выполнить dotnet workload restore как следующий yaml.

- task: DotNetCoreCLI@2
  displayName: "dotnet workload restore"
  inputs:
    command: 'custom'
    custom: 'workload'
    arguments: 'restore $(solution)'

Результат испытаний:

Обновлять:

Я пробовал это раньше, и я получаю это исключение:

/usr/bin/dotnet workload restore **/*.sln 
Unhandled exception: Microsoft.Build.Exceptions.InvalidProjectFileException: The project file could not be loaded. Could not find a part of the path '/home/vsts/work/1/s/**/*.sln'. /home/vsts/work/1/s/**/*.sln` 

Ошибка указывает на то, что использование подстановочных знаков (**) в путях может не поддерживаться командой dotnet workload restore. Вы можете использовать прямой путь решения. Например, если мой файл решения находится в папке code, используйте следующий код yaml.

variables:
  solution: "code/AspireSample.sln"
steps:
- task: DotNetCoreCLI@2
  displayName: "dotnet workload restore"
  inputs:
    command: 'custom'
    custom: 'workload'
    arguments: 'restore $(solution)'

Однако удаление «$(решение)» работает.

Из аргумент ПРОЕКТ | РЕШЕНИЕ, если файл не указан, команда ищет его в текущем каталоге.

Когда я помещаю файл решения в корень каталога и удаляю $(solution), все работает. Если файл решения находится не в корневом каталоге, удаление $(solution) приведет к следующей ошибке: Couldn't find a project.

Я пробовал это раньше и получаю следующее исключение: /usr/bin/dotnet workload rest */.sln Необработанное исключение: Microsoft.Build.Exceptions.InvalidProjectFileException: файл проекта не удалось загрузить. Не удалось найти часть пути «/home/vsts/work/1/s/**/*.sln». /home/vsts/work/1/s/**/*.sln Однако удаление «$(solution)» работает ;-)

Rudi 24.06.2024 09:07

Привет @Rudi, ошибка указывает на то, что использование подстановочных знаков (**) в путях может не поддерживаться командой восстановления рабочей нагрузки dotnet. Вы можете использовать прямой путь решения. Я обновил более подробную информацию в ответе.

Miao Tian-MSFT 24.06.2024 09:51

Другие вопросы по теме