在 Azure Devops 的 linux 图像中构建 .NET Core 项目时出现 MissingMethodException

MissingMethodException while building .NET Core Project in a linux image in Azure Devops

我们有一个 .net 核心项目的管道,使用 linux 图像。管道工作正常,直到我们在使用蛋糕任务构建应用程序时遇到此错误:

Microsoft (R) Build Engine version 16.0.0.0 for Mono
Copyright (C) Microsoft Corporation. All rights reserved.

    /usr/share/dotnet/sdk/2.2.105/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.Sdk.targets(129,5): error MSB4018: The "GenerateDepsFile" task failed unexpectedly. [/home/vsts/work/1/s/src/bll/TestProject/TestProject.csproj]
    /usr/share/dotnet/sdk/2.2.105/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.Sdk.targets(129,5): error MSB4018: System.MissingMethodException: Method not found: System.Collections.Generic.IList`1<NuGet.Packaging.Core.PackageDependency> NuGet.ProjectModel.LockFileTargetLibrary.get_Dependencies() [/home/vsts/work/1/s/src/bll/TestProject/TestProject.csproj]
    /usr/share/dotnet/sdk/2.2.105/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.Sdk.targets(129,5): error MSB4018:   at Microsoft.NET.Build.Tasks.DependencyContextBuilder+<>c__DisplayClass36_0.<GetLibraries>b__0 (NuGet.ProjectModel.LockFileTargetLibrary export) [0x00000] in <aafa1364e74c4a5ea60cdcaa95f71707>:0  [/home/vsts/work/1/s/src/bll/TestProject/TestProject.csproj]

可能是什么原因? 是否需要更新镜像中的.NET SDK?

MissingMethodException while building .NET Core Project in a linux image in Azure Devops

根据错误信息,msbuild 和 dotnet core 之间的 nuget 版本似乎不匹配。

此问题已在 Github 上报告:

https://github.com/xamarin/xamarin-android/pull/3155#issuecomment-497908500

要解决此问题,您可以尝试将 dotnet 核心安装更新到最新的稳定版本,例如 2.2.300:

https://docs.microsoft.com/en-us/visualstudio/mac/net-core-support?view=vsmac-2019

希望对您有所帮助。