I added Argu to my project, and about 700 MB of packages were downloaded with it. This is due to the package installing additional packages , however I would like to understand the subtle differences in defining frame constraints using> = or just a frame: net46.
From my first attempt, I simply added Argu to the paket.dependencies
file:
nuget Argu
Since this led to the download of almost GB packages, I asked:
.\.paket\paket.exe why nuget System.Threading.Thread
And paket answered:
Paket version 3.27.02 NuGet System.Threading.Thread is a transitive dependency. It a part of following dependency chains: -> Argu -> FSharp.Core -> System.Threading.Thread -> MathNet.Numerics.FSharp -> FSharp.Core -> System.Threading.Thread 0 seconds - ready.
Then I added the following restriction on paket.dependencies:
nuget Argu framework: >= net46
However, this led to the download of the same packages.
Finally, I did:
nuget Argu framework: net46
And this particular restriction really removed all unnecessary packages:
Garbage collecting Microsoft.NETCore.Platforms Garbage collecting Microsoft.Win32.Primitives Garbage collecting NETStandard.Library Garbage collecting System.AppContext Garbage collecting System.Collections.Concurrent ...
However, all my other dependencies are set like this (mostly as a result, but not always, since I was looking for the original problem):
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
So my question is is Argu
special in some way, or should I always use frame restrictions and specifically target 46 (or 45) instead of> =.