1

当前运行时生成的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 文档示例中的测试组。

在没有版本冲突的情况下,能否详细说明在组中隔离依赖项的原因?也许更多地解释构建测试组背后的基本原理?

4

1 回答 1

2

正如我基本上介绍了 FAKE 5 的拆分:

原因是在构建时(即运行构建脚本时)使用了一组依赖项,而在项目运行时使用了一组依赖项。对这两者有不同的依赖集是完全有效的。

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

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

关于 RUN 和 TEST 之间的区别:就我个人而言,我不是一个超级粉丝。我可以看到人们希望如何分离他们的依赖关系,但 paket 目前并不“真正”支持这种情况,你确实会遇到这种方法的问题。我目前的建议是不要在 RUN 和 TEST 之间分开,而是在一个组中管理它们。

要在 RUN 和 TEST paket 之间正确拆分,需要一个新功能来引用另一个组:

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

于 2018-09-09T11:28:55.983 回答