6

假设我有以下文件夹结构

build
    build.fsx
    build.bat
    //build tools etc.
src
    Project1
    Project2
    //...

当我在 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"})

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

4

1 回答 1

6

我看到两个解决方案。

  1. 将您的构建脚本放入项目根目录
  2. 覆盖默认方法。将其放在构建脚本的顶部:
let RestorePackages() = 
    !! "./../**/packages.config"
    |> Seq.iter (RestorePackage id)
于 2014-07-22T11:38:11.637 回答