警告NETSDK1071到'Microsoft.AspNetCore.App'的PackageReference指定的版本为2.1.6。

Kir*_*eed 38 c# asp.net visual-studio

我有以下警告

 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 
Run Code Online (Sandbox Code Playgroud)

我尝试通过编辑项目文件然后添加nuget包来删除引用,但是当我这样做时,很多引用不再能正常工作。

我注意到错误是提到我最近在计算机上安装的sdk \ 2.2,但在项目文件中没有对其进行引用。

我正在使用VS2017 15.9.5

Kom*_*een 34

有几种解决方法。

  • 他们会变得更糟吗?每三周,我必须在Internet上进行一次搜索,以弄清楚如何处理新的隐秘Microsoft .NET Core版本警告。 (17认同)

Ran*_*dis 5

我在创建一个新的 xUnit 测试项目 (.NET Core) 时遇到了类似的情况。当我添加对现有 ASP.NET Core Web App 项目的引用时,我得到:

Microsoft.Common.CurrentVersion.targets(2106,5):警告MSB3277发现不同版本之间的冲突

  • Microsoft.AspNetCore.Authorization
  • 微软.AspNetCore.Cors
  • Microsoft.AspNetCore.Diagnostics.Abstractions
  • 微软.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

当我在 xUnit 项目中没有找到对 Microsoft.AspNetCore.App NuGet 包的任何引用时,我不明白怎么会发生冲突。

我通过将 加入Microsoft.AspNetCore.App到我的 xUnit 测试项目中来消除这些版本冲突。

此时,我开始收到显式版本参考警告( NETSDK1071 )。

安装包时,Visual Studio 中的 NuGet 包管理器和包管理器控制台都会将版本属性添加到 Microsoft.AspNetCore.App。您可以通过编辑 .csproj 文件来删除版本属性。这应该会消除 NETSDK1071 警告。

请注意,如果您确实删除了 version 属性,则 NuGet 包管理器将禁用 [Uninstall] + [Update] 按钮并声明:“-由 SDK 隐式引用...”

在这一点上,我没有收到任何警告。

有很多喋喋不休和一些 tldr;与此问题相关的文档。FWIW,这里有一些我认为值得强调的简洁资源:

适用于 ASP.NET Core 2.1 或更高版本的 Microsoft.AspNetCore.App 元包

@nguerrera 很好地总结了情况:

它适用于所有测试,甚至所有引用 Web 项目的非 Web 项目。这并不是真正的解决方法,因为 Web 引用在 .NET Core 2.x 中没有传递。您需要添加它,并且您应该在没有版本的情况下添加它,以便 SDK 可以选择正确的版本以避免冲突。

更好的消息:从 .NET Core 3.0 开始,Web 引用将传递传递,您可以从测试项目引用 Web 项目,而无需任何其他步骤。所以我要关闭这个。2.x 的设计无法更改,但我们在 3.0 中专门设计了具有可传递框架引用的东西,这是一个激励方案。

这里有几个 tldr;对话:

不包括 Microsoft.AspNet.Core.All #8691

测试项目中的版本冲突取决于 Microsoft.AspNetCore.App 项目 #2253