Ошибка сборки 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>

person DrGriff    schedule 16.11.2020    source источник
comment
Возможно дубликат: stackoverflow.com/questions/64842484/   -  person vernou    schedule 16.11.2020


Ответы (2)


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

Вы можете загрузить SDK .NET 5.0, используя Использовать задачу .NET Core:

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

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

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

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

  1. Загрузите конкретную версию SDK, которая не установлена.
  2. Укажите, какая версия SDK будет использоваться для следующих задач.
person Jane Ma-MSFT    schedule 18.11.2020
comment
То же самое происходит и со мной. похоже, у них недавно появились агенты обновлений с .NET 5. из-за сбоя сборки. - person CodeMind; 19.11.2020

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

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

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

person Dmitriy Grebennikov    schedule 16.11.2020
comment
Это облачная лазурь. Мне это кажется странным. По поводу полного выпуска .Net 5 была большая помеха, и я подумал, что (облачные) агенты Azure будут обновлены вместе с этим. Если не раньше ... он был предположительно готов к производству, когда RC2 был выпущен ... - person DrGriff; 17.11.2020
comment
Опубликовано: developercommunity.visualstudio.com/content/problem/1258239/ (не стесняйтесь голосовать, если вы тоже сталкиваетесь с этим) - person DrGriff; 17.11.2020