2016-09-15 104 views
3

安裝VS 2015更新3(和nuget 3.4.4)後,我注意到更多依賴項被安裝到我的4.6.1項目中時我導入了一些依賴於.NETStandard 1.4的東西。Nuget 3.4.4下載用於項目定位的.NET標準1.4庫.NET Framework 4.6.1

由於.NET Framework 4.6.1實現.NET Standard 1.4,爲什麼nuget引入每個System.X程序集?它不應該知道目標框架已經有了它所需要的嗎?

步驟來重現我看到什麼(困惑):

  1. VS 2015更新3,升級到的NuGet 3.5 RC1(但你沒有)。
  2. 新控制檯應用程序針對.NET框架4.6.1
  3. 安裝,包裝Microsoft.IdentityModel.Clients.ActiveDirectory
  4. 注意到它在.NET 1.4標準(其中我的目標框架實現)
  5. 通知的System.XSystem.IOSystem.Collections依賴,System.Linq等)。這似乎沒有必要,我沒有更新nuget之前發生。
+0

這些額外的依賴關係是什麼?請告訴我們有這個問題的具體軟件包,這可以讓我們在我們這邊確認這個問題。另外,VS2015 Update 3中的最新版本NuGet是3.5版本。請升級到3.5版以檢查此問題是否仍然存在。 –

+2

VS 2015 Update 3安裝了Nuget 3.4.4,而不是3.5。 Nuget 3.5仍在RC中,上面仍然存在這個問題。在安裝VS Update 3之前,在添加Microsoft.IdentityModel.Clients.ActiveDirectory nuget包時,依賴鏈中不包含額外的Core庫。安裝Update 3後,Core庫開始添加到依賴關係鏈中。我安裝了Nuget 3.5 RC並且有同樣的問題。爲什麼在添加.Net Standard 1.4庫以.Net 4.6.1爲目標時,將Core庫作爲依賴包含在內? –

+0

如果沒有人能解釋它,這聽起來應該將它作爲一個問題提交給nuget。我會再給它幾天;也許我錯過了一些東西。 – Kevin

回答

0

在我的Visual Studio 2015更新3中將我的NuGet包管理器降級到版本3.3後,我發現在我的項目中安裝Microsoft.IdentityModel.Clients.ActiveDirectory包時,沒有將依賴關係添加到我的項目。所以這個問題是由NuGet版本引起的。

根據release note for NuGet 3.4,它開始爲「支持netstandard和netstandardapp框架標記」。這意味着NuGet 3.4開始支持.NET標準和.NET標準框架相關的應用程序。

請將NuGet 3.3和NuGet 3.4或更高版本中的Dependencies部分與同一個軟件包進行比較。在版本3.4之前,它顯示「不支持」,但從3.4版開始,它顯示「.NET標準,版本1.4」。這就是爲什麼當你安裝NuGet 3.4.4時,所有依賴項都會被添加到你的項目中。 enter image description here

+0

這仍然不能回答爲什麼Core依賴包含在以.NET 4.6.1爲目標的項目中的問題。如果我的項目是針對整個框架的,那麼爲什麼我需要包含像System.Collections和System.IO等核心庫? –

+1

依賴性意味着當前包需要在您的項目中使用這些版本的依賴關係。即使它們在包依賴項列表中列出,它們也不會將它們全部安裝到項目引用中。因爲你的.NET 4.6.1項目已經實現了.NET標準1.4。安裝完成後,請檢查項目中的引用,沒有添加System.Collections和System.IO。你會發現那裏只有你的項目中不包含的dll添加到參考中。 –

+0

好吧,這很有趣(並且令人困惑,因爲這不是Nuget過去的表現)。 System。*依賴項位於我的項目的Nuget Package Manager中,但正如您所述,它們不在我的項目引用或我的bin文件夾中。 –

相關問題