Задача восстановления dotnet в Azure Pipelines внезапно начала использовать .NET core 3.0 SDK вместо 2.2, ломая мой конвейер - PullRequest
2 голосов
/ 01 октября 2019

У меня есть длинный стабильный конвейер Azure DevOps для развертывания основного приложения .NET, и в одном из заданий агента у меня есть несколько задач по развертыванию (удалению и воссозданию) некоторых баз данных с помощью команд dotnet ef. Этот релизный конвейер работает без перебоев уже несколько месяцев. Я явно использую .NET Core SDK 2.2 в задании агента, поэтому первая задача задания агента - установить SDK 2.2.100. Это задание агента выполняется в размещенной операционной системе Windows 2019 с пулом агента VS2019.

enter image description here

Проблема заключается в том, что пару дней назад (27 сентября) проблема *Задача 1009 *, которую я использую до того, как команды dotnet ef, неожиданно начал использовать .NET Core SDK 3.0 , что нарушило мой конвейер, поскольку инструмент командной строки dotnet ef больше не входит в составSDK. Не было никаких изменений ни в коде, связанном с этим, ни в конвейере, поэтому я предполагаю, что что-то изменилось на стороне Microsoft.

До :

enter image description here

После:

enter image description here

Мне удалось исправить проблему, добавив новое задание для установки инструментов EF (dotnet update --global dotnet-ef), но это всего лишь патч. Мне нужно понять основную причину ошибки, чтобы я мог понять, если что-то не так с моим конвейером или с моим решением -

Кто-нибудь знает, что здесь произошло, или кто-нибудь может помочь мне исправить моюконвейер, чтобы заставить его использовать SDK 2.2 вместо SDK 3.0, как это должно быть?

Ответы [ 2 ]

2 голосов
/ 01 октября 2019

В прошлую пятницу я столкнулся с той же проблемой в нашем конвейере. Сборка завершилась неудачно, поскольку SDK не распознал выполняемые команды.

Как вы уже описали, виртуальная машина теперь использует последнюю версию ASP .NET Core -> 3.0. Поэтому я поместил следующий шаг вверху моего лазурного pipe.yml.

- task: UseDotNet@2
  displayName: 'Install .NET Core SDK'
  inputs:
    packageType: 'sdk'
    version: '2.2.*'

Это также возможно, используя следующую опцию в меню Задачи с правильными настройками. (С версией SDK для вашего проекта)

Значок меню задач конфигурация

Это гарантирует, что виртуальная машина установит и использует правильную версию.NET Core SDK. Из-за этого изменения в сборке проекта используется .NET Core 2.2. *, А не .NET Core 3.0 в конвейере.

Надеюсь, это решение работает и ответ на ваш вопрос.

1 голос
/ 02 октября 2019

Кто-нибудь знает, что здесь произошло, или кто-нибудь может помочь мне исправить мой конвейер, чтобы заставить его использовать SDK 2.2 вместо SDK 3.0, как и должно быть?

Я воспроизвелэтот вопрос на моей стороне. Это потому, что вы используете старая версия DotNetCoreInstaller задача (0.*).

Чтобы решить эту проблему, вам нужно использовать последнюю версию (2.*), поэтомуЗадача типа:

- task: UseDotNet@2
  displayName: 'Use .Net Core sdk 2.2.100'
  inputs:
    version: 2.2.100

Детали теста:

Когда я использую старую версию DotNetCoreInstaller@0 на размещенном агенте Хостинг Windows 2019 с VS 2019:

enter image description here

Я получил тот же результат:

enter image description here

Но когда я меняюверсия задачи до UseDotNet@2, работает нормально:

enter image description here

Кроме того,

, так что я думаю, что-то изменилось в Microsoftside.

Да, Microsoft выпустила .NET Core 3.0.0 в 2019-09-23. Затем виртуальная машина использует последнюю версию ASP .NET Core 3.0.100.

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...