如何找出与.net framework 4.5.2一起使用的Newtonsoft.JSON(Json.NET)nuget包?

时间:2017-05-25 00:47:31

标签: json.net nuget

好的,我放弃了。有谁知道这个问题的答案?

奖励积分,如何确定每个目标.net框架的版本。

(一般情况下,我无法弄清楚使用nuget.org网站发布的目标是特定的.net框架。)

1 个答案:

答案 0 :(得分:3)

对于Newtonsoft.JSON:目前是撰写10.0.2时的最新版本。 在这种情况下,您可以在包listing on NuGet.org上看到存在名为" .NETFramework 4.5"的依赖项部分。所以这表明有一个针对版本" 4.5"的.NET Framework版本。哪个最接近您正在使用的.NET Framework版本(4.5.2)。

但是,找出NuGet包真正支持的目标框架很困难。只有当NuGet包表示仅针对该框架的其他NuGet包的依赖关系时,才会显示这些依赖关系节点。或者在这种情况下为空列表(在某些情况下,如JetBrains.Annotations,空依赖组用于解决NuGet错误或行为)。

NuGet.org目前在列出软件包支持的框架方面做得不好,因为这非常复杂。

首先,您需要知道程序包主动定位的版本。这里唯一的事实来源是查看包内容。如果您下载并解压缩NewtonSoft.Json 10.0.2(重命名为" zip",extract),可供选择的可用构建版本位于以"命名的lib文件夹的子文件夹中。目标平台绰号" NuGet知道:

enter image description here

对于net*,这非常简单 - 如果您有一个.NET Framework应用程序并引用带有lib/net*/子文件夹的NuGet包,它将选择最高可能子文件夹的版本。但是,如果只有lib/net461文件夹且您的应用程序以.NET Framework 4.5.2为目标,则该程序包将不兼容并且无法安装/恢复。

复杂的部分是NuGet有一个逻辑可以回退到其他兼容的框架。例如netstandard1.0个版本也可用于net45个应用。这就是"便携式类库" (PCL)的工作。 NuGet知道许多名人喜欢" portable-net40 + sl5 + win8 + wpa81 + wp8"当你为那个" PCL配置文件"构建一个NuGet包时,它知道它可以被消费的应用程序(netstandard旨在将所有这些名称减少为单个版本化的名字对象。)

完整的"后备和兼容性列表"只有NuGet客户端在代码中定义,因此根据NuGet客户端的版本(命令行,.NET CLI,vision studio扩展),它可能知道不同的名称"。

列表当前位于DefaultFrameworkMappings.cs file on GitHub,它是NuGet客户端库的一部分。