Visual studio新建项目向导:.NET核心与.NET标准库?

Visual studio新建项目向导:.NET核心与.NET标准库?,.net,visual-studio,.net-core,.net-4.6,.net-standard,.net,Visual Studio,.net Core,.net 4.6,.net Standard,在Visual Studio 2017的新建项目向导中,我看到了创建新的.NET标准库和新的.NET核心库的选项。我知道.NET标准是一个规范,而.NET核心是该规范的跨平台实现 但是,有人能解释一下从以下每种方式创建库时的真正区别吗?更糟糕的是,如果仔细观察,两个对话框的顶部都有一个下拉列表,上面写着“.NET Framework 4.6.2”:(怎么了 .NET标准库 .NET核心库 旁注:命名约定令人困惑。“.NET 5”听起来更简单当您想要创建.NET核心或.NET标准项目时,上面的

在Visual Studio 2017的新建项目向导中,我看到了创建新的.NET标准库和新的.NET核心库的选项。我知道.NET标准是一个规范,而.NET核心是该规范的跨平台实现

但是,有人能解释一下从以下每种方式创建库时的真正区别吗?更糟糕的是,如果仔细观察,两个对话框的顶部都有一个下拉列表,上面写着“.NET Framework 4.6.2”:(怎么了

.NET标准库

.NET核心库

旁注:命名约定令人困惑。“.NET 5”听起来更简单

当您想要创建.NET核心或.NET标准项目时,上面的下拉列表(“.NET Framework 4.6.2”)不会执行任何操作

(可能是相关对话:)

使用此图表

如果创建.NET核心库,则您的库只能由蓝色部分的内容使用,并且只能使用蓝色部分或红色部分的内容。如果创建.NET标准库,则您的库可以由绿色、蓝色、橙色和红色部分的内容使用,但只能使用红色部分的内容


您可能希望使用核心库而不是标准库的原因是,如果您知道您的目标仅是核心,那么您有可能从代码中调用更多的函数和库。您不需要将公共API的表面积限制在所有4个部分都允许的范围内。

命名约定这是因为从他们开始使用的4开始,他们不会更改为.NET 5,除非他们对框架进行了更改,这会导致它与使用4.x开发的东西不向后兼容。这就是编号系统的要点,如果您运行的4.x版本大于或等于您为您编写代码的版本知道您的代码将在不需要任何更改的情况下编译。如果您尝试在5.x上编译代码,您知道您需要检查兼容性。但他们在调用
时放弃了这种想法。net core 2.0
:(我们谈论的是.NET framework而不是.NET core版本控制。还记得PCL library项目模板吗?这是以前创建跨平台库的解决方案。对于.NETCore来说,它已经退役,因为n!问题太严重,被.NETStandard.compatibility grid取代。请记住,这是正在进行的工作,2.0。)将需要一段时间才能显示。因此,标准库(红色)不一定是跨平台的吗?如果您为.csproj中的
构建一个目标为
netstandard1.0
的DLL,该DLL可以在任何支持1.0或更高版本的平台上使用。如果您构建一个目标为
netcoreapp1.0
的DLL,您将只能在同样目标为
netcoreapp1.0
的项目中使用它,它也是一个报告了错误,但VS团队认为这不是错误(“无法修复”)