Ошибка сборки Azure Devops для .Net 5 при использовании нескольких платформ

У меня есть проект, который строится с использованием следующих фреймворков:

<TargetFrameworks>netstandard2.0;netstandard2.1;net5.0</TargetFrameworks>

Это прекрасно компилируется на моем локальном компьютере, но когда я отправляю его в Azure, он терпит неудачу.

Когда в моем YAML-файле есть следующее:

variables:
  solution: '**/*.sln'
  buildConfiguration: 'Release'
  buildPlatform: 'Any CPU'
  platform: x64

- task: DotNetCoreCLI@2
  inputs:
    command: 'build'
    projects: '**/*.csproj'
    arguments: '--configuration $(buildConfiguration)'

Тогда я получаю:

##[ошибка]C:\Program Files\dotnet\sdk\3.1.403\Microsoft.Common.CurrentVersion.targets(1177,5): ошибка MSB3644: эталонные сборки для.NETFramework,Version=v5.0 не найдены. Чтобы решить эту проблему, установите Developer Pack (SDK/Targeting Pack) для этой версии платформы или перенацелите свое приложение. Вы можете загрузить пакеты разработчика.NET Framework по адресу https://aka.ms/msbuild/developerpacks

И если я попробую

- task: VSBuild@1
  displayName: 'Build all'
  inputs:
    solution: '$(solution)'
    platform: '$(buildPlatform)'
    configuration: '$(buildConfiguration)'
    maximumCpuCount: true

Я получил:

##[ошибка]C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\MSBuild\Current\Bin\Microsoft.Common.CurrentVersion.targets(1177,5): ошибка MSB3644: эталонные сборки для.NETFramework, Версия =v5.0 не найдены. Чтобы решить эту проблему, установите Developer Pack (SDK/Targeting Pack) для этой версии платформы или перенацелите свое приложение. Вы можете загрузить пакеты разработчика.NET Framework по адресу https://aka.ms/msbuild/developerpacks

  1. Документация пакетов разработчика относится только к старой.Net Framework, поэтому я подозреваю, что это неактуально / устарело.
  2. Это нормально работает, если я изменю.Net 5 на.Net Core 3.1, т.е. <TargetFrameworks>netstandard2.0;netstandard2.1;netcoreapp3.1</TargetFrameworks>

2 ответа

Решение

Причина, по которой ваш проект не создается успешно, заключается в том, что агент Microsoft-Hosted не имеет установленного пакета SDK для.NET 5.0.

Вы можете скачать.NET 5.0 SDK, используя Use.NET Core Task:

- task: UseDotNet@2
inputs:
packageType: 'sdk'
Version: '{version}'
includePreviewVersions: {true/false}

Эта задача может загрузить определенную версию.Net SDK из сети и добавить ее в PATH.

Кроме того, поскольку вы используете несколько версий.NET в своем проекте, вы можете использовать эту задачу, чтобы указать, какую версию.NET вы будете использовать в следующих задачах.

Другими словами, эта задача выполняет две функции:

  1. Загрузите конкретную версию SDK, которая не установлена.
  2. Укажите, какая версия SDK будет использоваться для следующих задач.

Я думаю, что есть проблема с машинами с агентами сборки.

Если вы используете Cloud Azure DevOps, вам нужно подождать, когда они обновят свои машины сборки.

Если вы используете локальную версию azure DevOps, попробуйте самостоятельно обновить машины сборки.

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