f# - Packet框架限制差异

标签 f# paket

我已添加Argu到我的项目,大约 700MB 的包被一起下载。这与Paket installs extra packages有关但是我想了解使用 >= 或仅框架指定框架限制时的细微差别:net46。

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

nuget Argu

由于这导致下载了近 GB 的软件包,我问:

.\.paket\paket.exe 为什么 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.dependency 添加了以下限制:

nuget Argu 框架:>= net46

然而,这导致下载相同的软件包。

最后我做到了:

nuget Argu框架: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 而不是完整框架的依赖关系,nuget 包仍然可能导致下载额外的传递依赖项。详情见:https://github.com/fsprojects/Paket/issues/2564

关于f# - Packet框架限制差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41236933/

相关文章:

f# - VS Express 2012 for Web中没有 “F# Application”的项目

wpf - 这种架构策略是否适用于用 F# 编写的业务应用程序?

f# - 如何使用 Paket 编译一个简单的 F# 应用程序?

nuget-package - 创建引用解决方案中另一个包的包

functional-programming - 函数式编程 - 倒数时避免使变量可变

F# 将空值传递给非托管导入的 DLL

静态成员约束函数的性能

visual-studio - 如何使用从 Paket 下载的依赖项构建 F# 应用程序?

dependencies - 为什么 Paket 尝试为 CliWrap 引入数百个依赖项?

nuget - Paket include-referenced-projects 与项目引用