有没有办法强制FAKE RestorePackages()在"./**/packages.config"以外的其他路径中查找要恢复的包?

mlu*_*iak 6 nuget-package-restore f#-fake

假设我有一个以下文件夹结构

build
    build.fsx
    build.bat
    //build tools etc.
src
    Project1
    Project2
    //...
Run Code Online (Sandbox Code Playgroud)

当我在build.fsx中运行我的RestorePackages()时,它将在"./**/packages.config"中查找packages.config(根据文档),并将忽略要在项目文件夹中恢复的所有包.

我可以使用这个方法,并且可能会逐个地为每个项目的packages.config提供路径,但是我不希望每次将新项目添加到解决方案时都更改构建脚本.

有没有办法让RestorePackages()在某个特定路径中查找所有packages.config?

编辑:

另外,相关的问题.我明白了,我必须将nuget路径传递给RestorePackage,因为默认情况下它似乎是在./tools/nuget/nuget.exe中.我可以这样做:

RestorePackage(fun p -> { p with ToolPath = "my/nuget/path"})
Run Code Online (Sandbox Code Playgroud)

但我不知道如何将它与你提供的例子联系起来.管道和函数调用对我来说,F#语法仍然有点混乱.

for*_*i23 6

我看到两个解决方案.

  1. 将构建脚本放入项目根目录中
  2. 覆盖默认方法.将它放在构建脚本的顶部:
let RestorePackages() = 
    !! "./../**/packages.config"
    |> Seq.iter (RestorePackage id)
Run Code Online (Sandbox Code Playgroud)