Differences in Package Framework Limitations

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> =.

+6
source share
1 answer

This does not happen with later versions of paket. However, you can still use packages that will lead to the loading of additional transitive dependencies due to the fact that some packages declare a dependency only by netstandard, and not by the full structure. See: https://github.com/fsprojects/Paket/issues/2564 for more details.

+1
source

Source: https://habr.com/ru/post/1013325/


All Articles