C# 对于.Net Core 2.1项目,Nuget为什么要恢复.Net 4.6.1包?

C# 对于.Net Core 2.1项目,Nuget为什么要恢复.Net 4.6.1包?,c#,.net-core,C#,.net Core,如果一个包不可用于.Net核心我们如何在,安装包命令期间执行严格的.Net运行时版本检查? Install package命令,为什么Visual Studio甚至恢复.Net 4.6.1版本,只是为了在以后阶段给出运行时错误 我相信VS团队已经考虑过了,这肯定是有原因的! 以及在安装包期间进行验证和严格运行时版本检查的机制 警告: 警告NU1701程序包“Microsoft.AspNet.Identity.Core 2.2.2”被删除 已使用“.NETFramework,Version=v4.

如果一个包不可用于.Net核心我们如何在,
安装包
命令期间执行严格的.Net运行时版本检查?

Install package命令,为什么Visual Studio甚至恢复.Net 4.6.1版本,只是为了在以后阶段给出运行时错误

我相信VS团队已经考虑过了,这肯定是有原因的! 以及在安装包期间进行验证和严格运行时版本检查的机制

警告:

警告NU1701程序包“Microsoft.AspNet.Identity.Core 2.2.2”被删除 已使用“.NETFramework,Version=v4.6.1”而不是项目还原 目标框架“.NETStandard,版本=v2.0”。此包可能不可用 与您的项目完全兼容

编辑: 我只是以一个完整的.NETFramework包为例

目的是询问如何防止它在Nuget包管理器中发生

警告NU1701软件包
已损坏 已使用“.NETFramework,Version=v4.6.1”而不是项目还原 目标框架“.NETStandard,版本=v2.0”。此包可能不可用 与您的项目完全兼容


这是由微软在年解释的。引用相关部分:

[……]

无论何时使用通过compat shim的NuGet软件包,都会收到如下警告:

警告NU1701:包“Huitian.PowerCollections 1.0.0”是使用“.NETFramework,版本=v4.6.1”而不是项目目标框架“.NETCoreApp,版本=v2.0”还原的。此软件包可能与您的项目不完全兼容

我们已确保您在每次构建时(而仅在包还原期间)都会收到此警告,以确保您不会意外忽略它

这里的想法是,我们无法知道.NET Framework二进制文件是否能够实际工作。例如,它可能依赖于WinForms。为了确保您不会浪费时间对无法工作的问题进行故障排除,我们会让您知道您可能会偏离轨道。当然,你必须忽略的警告是令人讨厌的。因此,我们建议您测试应用程序/库,如果您确信一切正常,则取消显示警告:

[……]


因此,如果该包正常工作,则可以抑制该警告。如果没有,您将不得不使用另一个包,或者等待该包支持您的目标框架。

我认为主要原因是许多(大多数?)不专门针对.NET标准的NuGet包仍然兼容。您添加了错误的包。这不是.NET Core的标识包。正确的是。@Stijn不是一个好的副本。在这种情况下,OP只是添加了错误的package@Abhijeet可以向.NET核心项目添加完整的框架程序集,作为短期兼容性解决方案。这就是为什么你会收到警告而不是错误。警告也很清楚-您添加的包不包含.NET Core本身的目标。没有列出任何依赖项,这意味着其中没有.NET核心/标准版本。由于许多基于.NET Framework的软件包可以从.NET Core安全地使用,因此您最多可以请求一个参数来支持这种严格的检查。然而,由于这其中的大部分永远不会被自动化,所以有一个开发人员调用了这个安装,然后这就落在了开发人员的身上,需要了解和处理。