简体   繁体   中英

Building .NET 5.0 project Azure DevOps pipeline

I'm trying to build a project in .NET 5.0 using Azure DevOps pipeline Build and I'm received this error

错误图片

2020-11-14T01:59:45.8238544Z [command]"C:\Program Files\dotnet\dotnet.exe" build D:\a\1\s\XXX.csproj "-dl:CentralLogger,\"D:\a\_tasks\DotNetCoreCLI_5541a522-603c-47ad-91fc-a4b1d163081b\2.178.0\dotnet-build-helpers\Microsoft.TeamFoundation.DistributedTask.MSBuild.Logger.dll\"*ForwardingLogger,\"D:\a\_tasks\DotNetCoreCLI_5541a522-603c-47ad-91fc-a4b1d163081b\2.178.0\dotnet-build-helpers\Microsoft.TeamFoundation.DistributedTask.MSBuild.Logger.dll\""
2020-11-14T01:59:46.1472016Z Microsoft (R) Build Engine version 16.7.0+7fb82e5b2 for .NET
2020-11-14T01:59:46.1473316Z Copyright (C) Microsoft Corporation. All rights reserved.
2020-11-14T01:59:46.1473902Z 
2020-11-14T01:59:46.6006398Z   Determining projects to restore...
2020-11-14T01:59:47.2059773Z   Restored D:\a\1\s\XXX.csproj (in 234 ms).
2020-11-14T01:59:47.2119638Z   1 of 2 projects are up-to-date for restore.

    2020-11-14T01:59:47.3209350Z ##[error]C:\Program Files\dotnet\sdk\3.1.403\Microsoft.Common.CurrentVersion.targets(1177,5): Error MSB3644: The reference assemblies for .NETFramework,Version=v5.0 were not found. To resolve this, install the Developer Pack (SDK/Targeting Pack) for this framework version or retarget your application. You can download .NET Framework Developer Packs at https://aka.ms/msbuild/developerpacks

2020-11-14T01:59:47.3261839Z C:\Program Files\dotnet\sdk\3.1.403\Microsoft.Common.CurrentVersion.targets(1177,5): error MSB3644: The reference assemblies for .NETFramework,Version=v5.0 were not found. To resolve this, install the Developer Pack (SDK/Targeting Pack) for this framework version or retarget your application. You can download .NET Framework Developer Packs at https://aka.ms/msbuild/developerpacks [D:\a\1\s\XXX.csproj]
2020-11-14T01:59:47.3270768Z 
2020-11-14T01:59:47.3274231Z Build FAILED.
2020-11-14T01:59:47.3275925Z 
2020-11-14T01:59:47.3277393Z C:\Program Files\dotnet\sdk\3.1.403\Microsoft.Common.CurrentVersion.targets(1177,5): error MSB3644: The reference assemblies for .NETFramework,Version=v5.0 were not found. To resolve this, install the Developer Pack (SDK/Targeting Pack) for this framework version or retarget your application. You can download .NET Framework Developer Packs at https://aka.ms/msbuild/developerpacks [D:\a\1\s\XXX.csproj]
2020-11-14T01:59:47.3279484Z     0 Warning(s)
2020-11-14T01:59:47.3279860Z     1 Error(s)
2020-11-14T01:59:47.3280170Z 
2020-11-14T01:59:47.3280537Z Time Elapsed 00:00:01.09
2020-11-14T01:59:47.3624731Z ##[error]Error: The process 'C:\Program Files\dotnet\dotnet.exe' failed with exit code 1

Does someone know if Azure DevOps pipelines have support for building .NET 5.0 code?

Yes, Azure DevOps Pipelines can build net5.0 apps.

If you are building with " .Net Core " ( DotNetCoreCLI in yaml) task - add " Use .NET Core " ( UseDotNet in yaml) task before it, with correct version:

- task: UseDotNet@2
  inputs:
    packageType: 'sdk'
    version: '5.0.x'

- task: DotNetCoreCLI@2
  displayName: 'dotnet build'
  inputs:
    command: 'build'

It's supported.

Since you are using .Net 5, instead of using Nuget restore, try to use Use .net core task and Dotnet core task with restore command.

- task: UseDotNet@2
  displayName: 'Use .NET Core sdk 5.0.100'
  inputs:
    packageType: 'sdk'
    version: '5.0.100'
    includePreviewVersions: true

- task: DotNetCoreCLI@2
  displayName: 'dotnet restore'
  inputs:
    command: restore
    projects: '**/*.csproj'

It's strongly recommended to use dotnet restore and dotnet build tasks for projects that target .net core . See this statement from Nuget task :

Also take a look at this similar question here: Azure CI pipeline for Blazor .NET 5 doesn't work

I needed to use both framework version to build my function in .net 5

steps:

- task: UseDotNet@2
  inputs:
    version: '5.0.x'
    packageType: sdk
    includePreviewVersions: false

- task: UseDotNet@2
  inputs:
    version: '3.1.x'
    packageType: sdk
    includePreviewVersions: false

Hope this answer will help people who are still using "Classic Pipelines" (not yaml) in Azure DevOps.

There is exactly the same task template to set the specific version of .net core sdk, that can be added through the search dialog:

使用 .Net 核心

Include it in your pipeline and set the correct version through the UI. Also make sure it runs before the actual build/publish steps.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM