【问题标题】:.NET Standard NuGet cross platform compatibility.NET Standard NuGet 跨平台兼容性
【发布时间】:2018-02-09 06:44:18
【问题描述】:
我正在寻找一种方法来创建可供 .NET 4.5.1+ 和 .NET Core 1.0+ 应用程序使用的 NuGet 包。我应该能够使用 .NET 标准 1.0 框架吗?如果我正在构建的这个 NuGet 解决方案依赖于 .NET Core NuGet,这有关系吗?这有意义吗?
【问题讨论】:
标签:
.net
nuget
.net-core
.net-standard
【解决方案1】:
我应该能够使用 .NET 标准 1.0 框架吗?
多目标可能更容易;您可以在 .csproj 中使用<TargetFrameworks>net451;netstandard1.0</TargetFrameworks> 或类似方法来执行此操作;但是:.NET 4.5.1(net451)支持.NET Standard 1.2及以下,所以1.0应该没问题。
如果我正在构建的这个 NuGet 解决方案依赖于 .NET Core NuGet,这有关系吗?
.NET Core 是一个框架,而不是一个标准;通常,应用程序 (exes) 以 .NET Core 为目标 - 库以 .NET 标准为目标。
【解决方案2】:
我正在寻找一种方法来创建可供 .NET 4.5.1+ 和 .NET Core 1.0+ 应用程序使用的 NuGet 包。我应该能够使用 .NET 标准 1.0 框架吗?
使用this table 来确定特定框架是否实现了某些版本的 .NET Standard。
.Net Framework 4.5.1 最高可实现 v1.2,因此您的问题的答案是“是”——您可以使用 v1.0。但是,请确保 v1.0 有足够的 API。
谈到@MarcGravell 的评论
多目标可能更容易;
我会说你不应该这样做,除非你有可执行的应用程序而不是共享的类库。始终努力将 .NET Standard 用于类库项目。
我正在构建的这个 NuGet 解决方案是否有依赖关系?
在 .NET Core NuGet 上?这有意义吗?
一旦您以 .NET Standard 或 .NET Core 为目标,就无需添加任何其他运行时依赖项。所有这些都将被隐式添加,并将在 deps.json 文件中提及。