我已经将Argu添加到我的项目中,并且大约下载了700MB的软件包。这与Paket installs extra packages有关,但是在使用> =或仅框架:net46指定框架限制时,我想理解一些细微的区别。
在我的第一次尝试中,我只是将Argu添加到了paket.dependencies
文件中:nuget Argu
由于这导致将近GB的软件包下载,我问:.\.paket\paket.exe why nuget System.Threading.Thread
派克回答说:
Paket version 3.27.02
NuGet System.Threading.Thread is a transitive dependency.
It's a part of following dependency chains:
-> Argu
-> FSharp.Core
-> System.Threading.Thread
-> MathNet.Numerics.FSharp
-> FSharp.Core
-> System.Threading.Thread
0 seconds - ready.
然后,我在paket.dependencies中添加了以下限制:
nuget Argu framework: >= net46
但是,这导致下载了相同的软件包。
最后,我做到了:
nuget Argu framework: net46
这个特定的限制确实删除了所有不必要的软件包:
Garbage collecting Microsoft.NETCore.Platforms
Garbage collecting Microsoft.Win32.Primitives
Garbage collecting NETStandard.Library
Garbage collecting System.AppContext
Garbage collecting System.Collections.Concurrent
...
但是,我所有其他依赖项都这样指定(主要是结果,但并非总是如此,因为我正在对原始问题进行故障排除):
source https://www.nuget.org/api/v2
nuget FAKE framework: >= net46
nuget FileHelpers framework: >= net46
nuget FSharp.Collections.ParallelSeq 1.0.2 framework: >= net46
nuget Fsharp.Data framework: >= net46
nuget MathNet.Numerics.FSharp 3.14.0-beta01 beta framework: >= net46
nuget MathNet.Numerics.MKL.Win-x64 2.2.0 framework: >= net46
nuget NuGet.CommandLine framework: >= net46
nuget Streams 0.4.1 framework: >= net46
nuget System.Linq.Dynamic 1.0.7 framework: >= net46
nuget Fsharp.Configuration framework: >= net46
所以我的问题在某种程度上是
Argu
特殊的,还是我应该始终使用框架限制,并专门针对46(或45)而不是> =。 最佳答案
更高版本的paket不会发生这种情况。但是,由于某些软件包仅声明了对netstandard而不是整个框架的依赖,因此仍然有可能会裸露软件包,从而导致下载额外的传递性依赖。有关详细信息,请参见:https://github.com/fsprojects/Paket/issues/2564。
关于f# - Paket框架限制差异,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41236933/