Paket 依赖组不仅仅是一种解决版本冲突的方法吗?

Are Paket dependency groups more than just a way to solve version conflicts?

paket.dependencies 在 运行 dotnet new fake 时生成的示例文件目前看起来像:

// [ FAKE GROUP ]
group Build
    source https://api.nuget.org/v3/index.json
    nuget Fake.DotNet.Cli
    nuget Fake.IO.FileSystem
    nuget Fake.Core.Target

我了解如何使用依赖组来解决版本冲突,但是在实际版本冲突情况出现之前似乎没有必要介绍它们。

此处 Build 组的语义是什么?为什么不在 Main 默认组下添加三个依赖项? Paket documentation example.

中的 Test 组也有同样的反映

能否详细说明一下在没有版本冲突的情况下分组依赖的原因?也许更多地解释 BuildTest 组背后的基本原理?

因为我基本上介绍了 FAKE 5 的拆分:

原因是一组依赖项在构建时使用(即当 运行 构建脚本时),一组用于您的项目 运行 时。为这两者设置不同的依赖集是完全有效的。

考虑以下场景:您在构建过程中使用 FSharp.Formatting(FSF,降价解析器)项目生成 API 文档,并在项目中生成网站。现在您想通过更新 FSF 来更新 API 文档,但是出于兼容性原因您不能在您的项目中升级 FSF。由于 BUILD 和 运行-time 之间的分离,这不是问题,您可以将它们视为不同版本中的 "different" 依赖项。

我希望看到类似于节点分离 dependenciesdev-dependencies

的方法

关于 运行 和 TEST 之间的分歧:就我个人而言,我不是一个超级粉丝。我可以看到人们如何想要分离他们的依赖关系,但 paket 目前不 "really" 支持这种情况,你确实可以 运行 解决这种方法的问题。我目前的建议是不要将 运行 和 TEST 分开,并将它们放在一个组中进行管理。

要在 运行 和 TEST 数据包之间正确拆分,需要一个新功能来引用另一个组:

group Run source https://api.nuget.org/v3/index.json nuget MyDep1 group Test reference_group Run source https://api.nuget.org/v3/index.json nuget MyRunner1

类似于外部锁定文件功能:https://github.com/fsprojects/Paket/pull/3062#issuecomment-367658114