Ошибка сборки 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
- Документация пакетов разработчика относится только к старой.Net Framework, поэтому я подозреваю, что это неактуально / устарело.
- Это нормально работает, если я изменю.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 вы будете использовать в следующих задачах.
Другими словами, эта задача выполняет две функции:
- Загрузите конкретную версию SDK, которая не установлена.
- Укажите, какая версия SDK будет использоваться для следующих задач.
Я думаю, что есть проблема с машинами с агентами сборки.
Если вы используете Cloud Azure DevOps, вам нужно подождать, когда они обновят свои машины сборки.
Если вы используете локальную версию azure DevOps, попробуйте самостоятельно обновить машины сборки.