2014-07-22 33 views
6

Powiedzmy mam następującą strukturę folderówCzy istnieje sposób zmuszenia FAKE RestorePackages() do wyszukania pakietów do przywrócenia w innej ścieżce niż "./**/packages.config"?

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

Kiedy uruchomić moje RestorePackages() w build.fsx będzie szukać packages.config w „./**/packages.config” (według documentation) i zignoruje wszystkie pakiety do przywrócenia w folderach projektu.

Mogę użyć this method i prawdopodobnie daję ścieżkę jeden po drugim do pakietów packages.config każdego projektu, ale nie chcę zmieniać skryptu budowania za każdym razem, gdy dodaję nowy projekt do rozwiązania.

Czy istnieje sposób, aby funkcja RestorePackages() szukała wszystkich pakietów.config w określonej ścieżce?

EDYTOWANA:

Dodatkowe, powiązane pytanie. Rozumiem, będę musiał przekazać ścieżkę nuget do RestorePackage, ponieważ domyślnie wydaje się, że oczekuje tego w ./tools/nuget/nuget.exe. Mogę to zrobić prawdopodobnie tak:

RestorePackage(fun p -> { p with ToolPath = "my/nuget/path"}) 

Ale nie mam pojęcia, jak powiązać go z podanym przykładem. Składnia F # nadal jest dla mnie trochę dezorientująca wokół rur i wywołań funkcji.

Odpowiedz

6

Widzę dwa rozwiązania.

  1. umieścić skrypt kompilacji w katalogu głównym projektu
  2. Zastąp metodę domyślną. Umieścić to na górze skryptu build:
let RestorePackages() = 
    !! "./../**/packages.config" 
    |> Seq.iter (RestorePackage id)