netcoreapp2.0与netstandard2.0对库项目的优势

Jon*_*tes 16 .net .net-core .net-standard

我有一个预先存在的dotnet 4.6.2解决方案,它包含两个外部项目(同时移植)和一个共享core库.

我需要选择核心组件TargetFramework,它可以是netcoreapp2.0netstandard2.0.

既然它不可执行,也不会被任何外部项目引用,那么这两种方式有什么优势吗?

Mat*_*nda 24

它们的性质不同:

每个版本的.NET Core Librairies都实现(至少).NET Standard的给定版本,并且可以在.NET Standard文档中找到完整的表.现在,最新的版本是同步的(2.0 - 2.0),但这并不是也不一定是真的.

.NET核心库实际上始终是相应版本的.NET标准中定义的API的超集..NET核心库中始终有可用的类型和成员,它们不是.NET标准的一部分.Microsoft发布可用API的命名空间比较.

您的库可能使用尚未在.NET标准中标准化的API(或者可能永远不会标准化),但已在.NET核心库中提供.例如,您可以使用System.Drawing命名空间中的类型,这些类型很快将在.NET核心库中提供,但不会成为.NET Standard 2.0的一部分.

因此,通过选择netcoreapp2.0而不是netstandard2.0,您可以获得更大的API,但代价是兼容性.

总的来说,您应该始终尝试定位最便携的框架(此处为netstandard).

如果它不适合您,那么下一个最好的方法是从单个库中交叉定位多个框架,如下所述:如何使用csproj多目标.NET Core类库?..NET标准中缺少许多.NET Core API也存在于(完整).NET Framework中.

  • 在必要的尊重下,这都是准确但可怕的建议。图书馆应始终尝试针对“netstandard”。`netcoreapp` 库不会在 Xamarin 或 .NET Framework 上恢复。 (2认同)
  • 我会尝试重新制定答案,将你的评论考虑在内. (2认同)
  • 哦,那是一个错字.固定.谢谢你的警惕. (2认同)

bor*_*sdj 5

NetStandard是一种新的推荐库格式,可以在不同框架(NetFramwwork,NetCore,Xamarin)之间共享,因此可以解决。 https://blogs.msdn.microsoft.com/dotnet/2016/09/26/introducing-net-standard/