在数据模型nuget中定位哪个.net标准?

时间:2019-06-28 12:01:09

标签: nuget .net-standard

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

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

请有人可以澄清一下吗?在我的情况下,是否有Microsoft网站明确建议使用最低版本的.NET Standard,还是仅仅是我的错误主意?

1 个答案:

答案 0 :(得分:0)

当我搜索“ .NET Standard”时,我得到的第一个结果是指向this page的链接,其中包含一个表,该表显示了每个.NET Standard版本所支持的最低运行时间,以及大量注释。该页面上有一个指向interactive table的链接,有些人喜欢此链接。

话虽如此,通常是的,最好只使用.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的非SDK样式的项目。最好使用dotnet packmsbuild -t:pack。您可以指定任何NuGet metadata you want in your csproj as MSBuild properties