Paket框架限制差异
Paket framework restriction differences
我已经添加了 Argu to my project and about 700MB of packages were downloaded together with it. This is related to 但是我想了解在使用 >= 或仅使用 framework: net46 指定框架限制方面的细微差别。
第一次尝试时,我将 Argu 添加到 paket.dependencies
文件中:
nuget Argu
因为这导致下载了将近 1 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.
然后我在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。
我已经添加了 Argu to my project and about 700MB of packages were downloaded together with it. This is related to
第一次尝试时,我将 Argu 添加到 paket.dependencies
文件中:
nuget Argu
因为这导致下载了将近 1 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.
然后我在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。