2017-05-25 76 views

回答

2

對於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」,解壓縮),則可用的構建可以在以NuGet知道的「目標平臺名稱」命名的lib文件夾的子文件夾中:

enter image description here

對於net*這是很容易 - 如果你有一個.NET Framework應用程序,並引用NuGet包帶lib/net*/子文件夾,它會選擇儘可能高的子文件夾的版本。但是,如果有隻是一個lib/net461文件夾,您的應用程序的目標.NET框架4.5.2,該包會不兼容,將不會安裝/恢復。

複雜的部分是,NuGet有一個邏輯回退到其他兼容的框架。例如netstandard1.0版本也可用於net45應用程序。這就是「便攜式類庫」(PCL)的工作原理。的NuGet知道很多綽號像「便攜式net40 + SL5 + win8的+ wpa81 + WP8」,當你建立一個NuGet包爲「PCL配置文件」,它知道從哪些應用程序可以消耗(和netstandard旨在減少所有這些名稱以單個版本名稱命名)。

完整的「回退和兼容性列表」僅適用於由客戶端的NuGet代碼中定義的,所以要根據您的NuGet客戶端的版本(命令行CLI的.NET,視覺工作室擴展)可以瞭解不同的「名字」。

該列表當前位於作爲NuGet客戶端庫的一部分的DefaultFrameworkMappings.cs file on GitHub中。

+0

謝謝,這有幫助。我想刪除警告「一些NuGet軟件包是使用與當前目標框架不同的目標框架安裝的,可能需要重新安裝。」但當試圖遵循另一個升級建議時,它確實搞砸了一切。 更改.csproj中的未刪除該警告。 這成功更新了Newtonsoft.JSON包(對於.net 4.5.2):** pmc> update-package newtonsoft.json ** – alturium

相關問題