运行dotnet new fake
时生成的paket.dependencies
示例文件当前看起来像:
// [ 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文档示例中的Test组。
在没有版本冲突的情况下,可以详细说明在组中隔离依赖项的原因吗?也许可以更多地解释构建和测试组背后的原理?
因为我基本上已经介绍了FAKE 5:的拆分
理由是,一组依赖关系在BUILD时使用(即运行构建脚本时(,另一组用于您的项目RUN时。为这两个对象设置一组不同的依赖关系是完全有效的。
考虑以下场景:您在构建过程中使用FSharp.Formatting
(FSF,一个markdown解析器(项目来生成API文档,并在项目中使用该项目来生成网站。现在您想通过更新FSF来更新API文档,但由于兼容性原因,您无法在项目中升级FSF。由于BUILD和RUN时间之间的分离,这不是问题,您可以在不同的版本中将它们视为"不同"的依赖项。
我希望看到类似于节点分离dependencies
和dev-dependencies
的方法
关于RUN和TEST之间的分歧:就我个人而言,我不是一个超级粉丝。我可以看到人们希望如何分离他们的依赖关系,但paket目前并不"真正"支持这种情况,而且这种方法确实会遇到问题。我目前的建议是不要在RUN和TEST之间分开,将它们管理在一个小组中。
为了在RUN&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