Сбой конвейеров Azure на этапе восстановления NuGet

#azure-devops #nuget #azure-pipelines

Вопрос:

Я использую образ vs2017-win2016 для сборки, и в рамках сборки у меня есть задача восстановления Nuget, которая не выполняется с приведенным ниже сообщением об ошибке. Может кто-нибудь сказать мне, что здесь пошло не так и как мы можем это исправить? Это простое Asp.Net Веб-приложение.

 2021-06-25T09:01:16.6036745Z ##[section]Starting: NuGet restore
2021-06-25T09:01:16.6136450Z ==============================================================================
2021-06-25T09:01:16.6136733Z Task         : NuGet
2021-06-25T09:01:16.6137224Z Description  : Restore, pack, or push NuGet packages, or run a NuGet command. Supports NuGet.org and authenticated feeds like Azure Artifacts and MyGet. Uses NuGet.exe and works with .NET Framework apps. For .NET Core and .NET Standard apps, use the .NET Core task.
2021-06-25T09:01:16.6137701Z Version      : 2.179.0
2021-06-25T09:01:16.6138100Z Author       : Microsoft Corporation
2021-06-25T09:01:16.6138522Z Help         : https://docs.microsoft.com/azure/devops/pipelines/tasks/package/nuget
2021-06-25T09:01:16.6138831Z ==============================================================================
2021-06-25T09:01:17.3136968Z SYSTEMVSSCONNECTION exists true
2021-06-25T09:01:17.4377830Z SYSTEMVSSCONNECTION exists true
2021-06-25T09:01:17.8046121Z [command]C:Windowssystem32chcp.com 65001
2021-06-25T09:01:17.8104107Z Active code page: 65001
2021-06-25T09:01:17.8631847Z Detected NuGet version 4.4.1.4656 / 4.4.1
2021-06-25T09:01:17.8642220Z SYSTEMVSSCONNECTION exists true
2021-06-25T09:01:17.8812714Z [command]C:hostedtoolcachewindowsNuGet4.4.1x64nuget.exe sources Add -NonInteractive -Name NuGetOrg -Source https://api.nuget.org/v3/index.json -ConfigFile D:a1NugettempNuGet_31.config
2021-06-25T09:01:19.1590360Z Package Source with Name: NuGetOrg added successfully.
2021-06-25T09:01:19.1660433Z [command]C:hostedtoolcachewindowsNuGet4.4.1x64nuget.exe restore D:a1sVSDemoPipeline.sln -Verbosity Detailed -NonInteractive -ConfigFile D:a1NugettempNuGet_31.config
2021-06-25T09:01:47.4269841Z C:Program Filesdotnetsdk2.1.524SdksMicrosoft.NET.SdktargetsMicrosoft.NET.TargetFrameworkInference.targets(137,5): error NETSDK1045: The current .NET SDK does not support targeting .NET Core 3.1.  Either target .NET Core 2.1 or lower, or use a version of the .NET SDK that supports .NET Core 3.1. [D:a1sVSDemoPipelineVSDemoPipeline.csproj]
2021-06-25T09:01:47.4271151Z 
2021-06-25T09:01:47.4279527Z NuGet Version: 4.4.1.4656
2021-06-25T09:01:47.4280682Z MSBuild auto-detection: using msbuild version '15.9.21.664' from 'C:Program Files (x86)Microsoft Visual Studio2017EnterpriseMSBuild15.0bin'. Use option -MSBuildVersion to force nuget to use a specific version of MSBuild.
2021-06-25T09:01:47.4281803Z MSBuild P2P timeout [ms]: 120000
2021-06-25T09:01:47.4283437Z C:Program Files (x86)Microsoft Visual Studio2017EnterpriseMSBuild15.0binmsbuild.exe "C:UsersVssAdministratorAppDataLocalTempNuGetScratch4rucjvrx.krk.nugetinputs.targets" /t:GenerateRestoreGraphFile /nologo /nr:false /v:q /p:NuGetRestoreTargets="C:UsersVssAdministratorAppDataLocalTempNuGetScratchopqnszhe.dir.nugetrestore.targets" /p:RestoreTaskAssemblyFile="C:hostedtoolcachewindowsNuGet4.4.1x64nuget.exe" /p:RestoreSolutionDirectory="D:a1s" /p:RestoreConfigFile="D:a1NugettempNuGet_31.config" /p:SolutionDir="D:a1s"
2021-06-25T09:01:47.4289820Z NuGet.CommandLine.ExitCodeException: Exception of type 'NuGet.CommandLine.ExitCodeException' was thrown.
2021-06-25T09:01:47.4334578Z    at NuGet.CommandLine.MsBuildUtility.<GetProjectReferencesAsync>d__6.MoveNext()
2021-06-25T09:01:47.4335343Z --- End of stack trace from previous location where exception was thrown ---
2021-06-25T09:01:47.4335807Z    at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
2021-06-25T09:01:47.4336289Z    at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
2021-06-25T09:01:47.4336788Z    at NuGet.CommandLine.RestoreCommand.<GetDependencyGraphSpecAsync>d__48.MoveNext()
2021-06-25T09:01:47.4337172Z --- End of stack trace from previous location where exception was thrown ---
2021-06-25T09:01:47.4337555Z    at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
2021-06-25T09:01:47.4337950Z    at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
2021-06-25T09:01:47.4339708Z    at NuGet.CommandLine.RestoreCommand.<DetermineInputsFromMSBuildAsync>d__43.MoveNext()
2021-06-25T09:01:47.4855912Z ##[error]The nuget command failed with exit code(1) and error(C:Program Filesdotnetsdk2.1.524SdksMicrosoft.NET.SdktargetsMicrosoft.NET.TargetFrameworkInference.targets(137,5): error NETSDK1045: The current .NET SDK does not support targeting .NET Core 3.1.  Either target .NET Core 2.1 or lower, or use a version of the .NET SDK that supports .NET Core 3.1. [D:a1sVSDemoPipelineVSDemoPipeline.csproj])
2021-06-25T09:01:47.4866755Z ##[error]Packages failed to restore
2021-06-25T09:01:47.4877131Z ##[section]Finishing: NuGet restore
 

Ответ №1:

Чтобы иметь APS.NET приложение, построенное на NET Core 3.1 или выше, использует windows-latest агент в Azure DevOps.

Более старые версии агентов не поддерживают его, и это также видно из ошибки, если вы заметили.

Команда nuget завершилась ошибкой с кодом выхода(1) и ошибкой(C:Program Filesdotnetsdk2.1.524SdksMicrosoft.NET.SdktargetsMicrosoft.NET.TargetFrameworkInference.targets(137,5): ошибка NETSDK1045: Текущий пакет SDK для .NET не поддерживает таргетинг на .NET Core 3.1. Либо на цель .NET Core 2.1 или ниже или используйте версию .NET SDK, поддерживающую .NET Core 3.1. [D:a1sVSDemoPipelineVSDemoPipeline.csproj]) 2021-06-25T09:01:47.4866755 Z ##[ошибка]Пакеты не удалось восстановить

В конвейере убедитесь, что у вас есть задача «Использовать ядро Dotnet» с соответствующей версией:

Использование основной задачи Dotnet

Комментарии:

1. Спасибо за обновление. Я использую классический конвейер, и в спецификации агента я не нахожу «последнюю версию Windows», я нахожу только Windows-2019, но это также не работает. Есть идеи, почему я не вижу последнюю версию Windows в спецификации агента?

2. Да, действительно, в классических трубопроводах, похоже, есть windows-2019. В вашем конвейере вы добавили задачу «Использовать .NET core» с правильной версией?