Предупреждение NETSDK1071 ПакетСсылка на "Microsoft.AspNetCore.App" указала версию "2.1.6"

У меня есть следующее предупреждение

 Severity   Code    Description Project File    Line    Suppression State
Warning NETSDK1071  A PackageReference to 'Microsoft.AspNetCore.App' specified a Version of '2.1.6'. Specifying the version of this package is not recommended. For more information, see https://aka.ms/sdkimplicitrefs    MyApi   C:\Program Files\dotnet\sdk\2.2.102\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.Sdk.DefaultItems.targets   153 

Я попытался удалить ссылку, отредактировав файл проекта и затем добавив пакет nuget, однако, когда я сделал это, многие ссылки перестали работать правильно.

Я замечаю, что ошибка упоминает SDK\2.2, который я недавно установил на свой компьютер, но в файле проекта нет ссылки на него.

Я использую VS2017 15.9.5

Ответы

Ответ 1

Есть несколько способов обойти это.

  • Если вы включите PackageReference, но удалите атрибут Version, предупреждение должно исчезнуть. Это потому, что это метапакет, который (проще говоря) представляет собой тип пакета, который получает версию, основанную на вашей версии фреймворка, подробнее здесь: https://docs.microsoft.com/en-us/dotnet/core/packages#metapackages
  • Добавьте некоторые метаданные в PackageReference, чтобы отключить предупреждения, подробнее здесь: https://github.com/dotnet/sdk/issues/2602

Ответ 2

Я столкнулся с подобной ситуацией, создав новый тестовый проект xUnit (.NET Core). Когда я добавил ссылку на существующий проект ASP.NET Core Web App, я получил:

Microsoft.Common.CurrentVersion.targets(2106,5): warning MSB3277: Found conflicts between different versions of:

  • Microsoft.AspNetCore.Authorization
  • Microsoft.AspNetCore.Cors
  • Microsoft.AspNetCore.Diagnostics.Abstractions
  • Microsoft.AspNetCore.Mvc
  • Microsoft.AspNetCore.Mvc.Abstractions
  • Microsoft.AspNetCore.Mvc.Core
  • Microsoft.AspNetCore.Mvc.Formatters.Json
  • Microsoft.AspNetCore.Mvc.RazorPages
  • Microsoft.AspNetCore.Mvc.ViewFeatures
  • Microsoft.AspNetCore.Razor.Runtime
  • Microsoft.AspNetCore.Routing

Я не понимал, как могут возникнуть конфликты, когда я не нашел ссылок на пакет Microsoft.AspNetCore.App NuGet в своем проекте xUnit.

Я устранил эти конфликты версий, добавив Microsoft.AspNetCore.App в свой проект xUnit Test.

С этого момента я начал получать явное предупреждение о ссылке на версию (NETSDK1071).

Диспетчер пакетов NuGet и консоль диспетчера пакетов в Visual Studio оба добавят атрибут версии в Microsoft.AspNetCore.App, когда установка пакета. Вы можете удалить атрибут версии редактирование вашего .csproj файла. Это должно устранить NETSDK1071 предупреждение.

Обратите внимание, что если вы удалите атрибут version, то диспетчер пакетов NuGet отключит кнопки [Uninstall] + [Update] и состояние: "- неявно ссылается на SDK...".

На данный момент я не получаю никаких предупреждений.

Там много болтовни и немного тдлр; документация, связанная с этой проблемой. FWIW, вот несколько кратких ресурсов, на которые, я думаю, стоит обратить внимание:

Метапакет Microsoft.AspNetCore.App для ASP.NET Core 2.1 или более поздней версии

@nguerrera очень хорошо подытожила ситуацию:

Это для всех тестов, или даже для всех не-веб-проектов, которые имеют ссылку на веб-проект. На самом деле это не обходной путь, поскольку веб-ссылка не проходила транзитивно в .NET Core 2.x. Вам нужно добавить его, и вы должны добавить его без версии, чтобы SDK мог выбрать правильную версию, чтобы избежать конфликтов.

Хорошие новости: начиная с .NET Core 3.0, веб-ссылка будет проходить транзитивно, и вы можете ссылаться на веб-проект из тестового проекта без каких-либо других шагов. Я закрываю это. Дизайн 2.x не может быть изменен, но мы специально разработали вещи в 3.0, чтобы иметь переходные Framework Framework References, и это был мотивирующий сценарий для этого.

И вот пара TL;DR; разговоры:

Не распространяется на Microsoft.AspNet.Core.All # 8691

Конфликт версий в тестовом проекте в зависимости от проекта Microsoft.AspNetCore.App # 2253