为什么NuGet下载看似不必要的依赖?

Kal*_*evi 5 c# nuget

当安装System.Collections.ImmutableNuGet下载程序集时System.Runtime,即使我已经使用.NET 4.6.1安装了该程序集.

此外,lib下的目录(如packages\System.Runtime.4.0.0\lib \net45)不包含dll文件,只包含空文件_._.

为什么会这样?为什么这有必要?我在这里错过了什么?

NuGet日志:

Install-Package System.Collections.Immutable -Version 1.1.37
Attempting to gather dependency information for package 'System.Collections.Immutable.1.1.37' with respect to project 'ConsoleApplication1', targeting '.NETFramework,Version=v4.6.1'
Attempting to resolve dependencies for package 'System.Collections.Immutable.1.1.37' with DependencyBehavior 'Lowest'
Resolving actions to install package 'System.Collections.Immutable.1.1.37'
Resolved actions to install package 'System.Collections.Immutable.1.1.37'
  GET https://www.nuget.org/api/v2/package/System.Collections/4.0.0
Installing System.Collections 4.0.0.
Adding package 'System.Collections.4.0.0' to folder 'd:\workspace\ConsoleApplication1\packages'
Added package 'System.Collections.4.0.0' to folder 'd:\workspace\ConsoleApplication1\packages'
Added package 'System.Collections.4.0.0' to 'packages.config'
Successfully installed 'System.Collections 4.0.0' to ConsoleApplication1
  GET https://www.nuget.org/api/v2/package/System.Diagnostics.Debug/4.0.0
Installing System.Diagnostics.Debug 4.0.0.
Adding package 'System.Diagnostics.Debug.4.0.0' to folder 'd:\workspace\ConsoleApplication1\packages'
Added package 'System.Diagnostics.Debug.4.0.0' to folder 'd:\workspace\ConsoleApplication1\packages'
Added package 'System.Diagnostics.Debug.4.0.0' to 'packages.config'
Successfully installed 'System.Diagnostics.Debug 4.0.0' to ConsoleApplication1
  GET https://www.nuget.org/api/v2/package/System.Globalization/4.0.0
Installing System.Globalization 4.0.0.
Adding package 'System.Globalization.4.0.0' to folder 'd:\workspace\ConsoleApplication1\packages'
Added package 'System.Globalization.4.0.0' to folder 'd:\workspace\ConsoleApplication1\packages'
Added package 'System.Globalization.4.0.0' to 'packages.config'
Successfully installed 'System.Globalization 4.0.0' to ConsoleApplication1
  GET https://www.nuget.org/api/v2/package/System.Linq/4.0.0
Installing System.Linq 4.0.0.
Adding package 'System.Linq.4.0.0' to folder 'd:\workspace\ConsoleApplication1\packages'
Added package 'System.Linq.4.0.0' to folder 'd:\workspace\ConsoleApplication1\packages'
Added package 'System.Linq.4.0.0' to 'packages.config'
Successfully installed 'System.Linq 4.0.0' to ConsoleApplication1
  GET https://www.nuget.org/api/v2/package/System.Resources.ResourceManager/4.0.0
Installing System.Resources.ResourceManager 4.0.0.
Adding package 'System.Resources.ResourceManager.4.0.0' to folder 'd:\workspace\ConsoleApplication1\packages'
Added package 'System.Resources.ResourceManager.4.0.0' to folder 'd:\workspace\ConsoleApplication1\packages'
Added package 'System.Resources.ResourceManager.4.0.0' to 'packages.config'
Successfully installed 'System.Resources.ResourceManager 4.0.0' to ConsoleApplication1
  GET https://www.nuget.org/api/v2/package/System.Runtime/4.0.0
Installing System.Runtime 4.0.0.
Adding package 'System.Runtime.4.0.0' to folder 'd:\workspace\ConsoleApplication1\packages'
Added package 'System.Runtime.4.0.0' to folder 'd:\workspace\ConsoleApplication1\packages'
Added package 'System.Runtime.4.0.0' to 'packages.config'
Successfully installed 'System.Runtime 4.0.0' to ConsoleApplication1
  GET https://www.nuget.org/api/v2/package/System.Runtime.Extensions/4.0.0
Installing System.Runtime.Extensions 4.0.0.
Adding package 'System.Runtime.Extensions.4.0.0' to folder 'd:\workspace\ConsoleApplication1\packages'
Added package 'System.Runtime.Extensions.4.0.0' to folder 'd:\workspace\ConsoleApplication1\packages'
Added package 'System.Runtime.Extensions.4.0.0' to 'packages.config'
Successfully installed 'System.Runtime.Extensions 4.0.0' to ConsoleApplication1
  GET https://www.nuget.org/api/v2/package/System.Threading/4.0.0
Installing System.Threading 4.0.0.
Adding package 'System.Threading.4.0.0' to folder 'd:\workspace\ConsoleApplication1\packages'
Added package 'System.Threading.4.0.0' to folder 'd:\workspace\ConsoleApplication1\packages'
Added package 'System.Threading.4.0.0' to 'packages.config'
Successfully installed 'System.Threading 4.0.0' to ConsoleApplication1
  GET https://www.nuget.org/api/v2/package/System.Collections.Immutable/1.1.37
Installing System.Collections.Immutable 1.1.37.
Adding package 'System.Collections.Immutable.1.1.37' to folder 'd:\workspace\ConsoleApplication1\packages'
Added package 'System.Collections.Immutable.1.1.37' to folder 'd:\workspace\ConsoleApplication1\packages'
Added package 'System.Collections.Immutable.1.1.37' to 'packages.config'
Successfully installed 'System.Collections.Immutable 1.1.37' to ConsoleApplication1
Run Code Online (Sandbox Code Playgroud)

Cod*_*lla 1

认为这是因为 dotnet core / cli 带来的变化。它维护依赖链,这在 ​​donet core 中更为重要,因为您没有完全安装的框架。这解释了为什么lib\net45文件夹是空的,实际上没有任何内容可包含,因为它们是计算机上安装的 BCL 的一部分。