首页 > 解决方案 > 在数据模型 nuget 中以哪个 .net 标准为目标?

问题描述

我在我的应用程序之间发送 json 格式的数据。一个在 .NET Core 中运行,另一个在 .NET Framework 中运行。由于将来其他应用程序可以使用相同的数据格式,我想让它尽可能容易使用。所以我将它创建为 .NET Standard 1.0 项目,添加了 nuspec 文件和 OctoPack 以将 TeamCity 中的 nuget 发布到我们的本地提要。

现在我在代码审查中收到一条说明,我应该以 netstandard2.0 而不是 netstandard1.0 为目标,或者至少我应该使 nuget 具有多个目标。这个要求正确吗?这对我来说没有意义。因为我的 nuget 不使用任何其他库,它只是提供了一个简单的 DTO 类用于 json 文件。我认为当我不消耗任何 nugets 时,netstandard1.0 是最好的目标。而且我认为创建多个目标(netstandard1.0 和 2.0)是没有意义的,因为它们都有相同的二进制文件。

请问有人可以澄清一下吗?是否有一个 Microsoft 网页明确建议在我的情况下使用尽可能低的 .NET Standard 版本,或者这只是我的错误想法?

标签: nuget.net-standard

解决方案


当我在谷歌上搜索“.NET Standard”时,我得到的第一个结果是指向此页面的链接,该页面有一个表格,显示了每个版本的 .NET Standard 支持的最低运行时,以及一堆评论。该页面有一个指向某些人喜欢的交互式表格的链接。

话虽如此,总的来说是的,最好只使用 .NET Standard 2.0。虽然 NuGet 和编译器在技术上允许 .NET 4.6.1 及更高版本使用 .NET Standard,但它们是在 .NET Core/Standard 存在之前发布的,有些人遇到了一堆问题,因为兼容性并不是真正的 100%。使用 .NET 4.7.2 或更高版本问题较少,我认为这是 .NET Core 之后发布的第一个 .NET Framework 版本,实际上在所有情况下都能正常工作(据我所知),但它支持 .NET Standard 2.0,使所有 .NET Standard 1.x 版本对于 .NET Framework 兼容性毫无意义。只有 DTO 类的程序集不会遇到任何兼容性问题,但有些人喜欢假装 .NET Standard 从 2.0 开始,而 .NET Framework 从 4.7.2 开始支持 .NET Standard,

附带说明一下,我不建议使用 nuspec 来打包 SDK 样式的项目(例如 .NET Standard 或 .NET Core),或者使用PackageReference. 最好使用dotnet packor msbuild -t:pack。您可以在 csproj 中将所需的任何 NuGet 元数据指定为 MSBuild 属性


推荐阅读