Paket框架限制差异

s95*_*163 5 f# paket

我已经将Argu添加到我的项目中,并且随之下载了大约700MB的包.这与Paket安装额外的软件包有关,但是我想要解决使用> =或者只是框架:net46来规定框架限制的细微差别.

在我第一次尝试时,我刚刚将Argu添加到paket.dependencies文件中:

nuget Argu

因为这导致了几乎一GB的软件包下载,我问:

.\.paket\paket.exe why nuget System.Threading.Thread

而paket回答说:

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.  
Run Code Online (Sandbox Code Playgroud)

然后我向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
...
Run Code Online (Sandbox Code Playgroud)

但是我的所有其他依赖项都是这样指定的(主要是因为,但并不总是,因为我正在解决原始问题):

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
Run Code Online (Sandbox Code Playgroud)

所以我的问题Argu在某种程度上是特殊的,或者我应该总是使用框架限制,特别是目标46(或45)而不是> =.

s95*_*163 1

更高版本的 paket 不会出现这种情况。但是,由于某些包仅声明对 netstandard 而不是完整框架的依赖关系,nuget 包仍然可能导致下载额外的传递依赖项。详情请参阅: https: //github.com/fsprojects/Paket/issues/2564