2014-07-22 13 views
6

Diciamo che ho un seguente struttura di cartelleC'è modo di forzare FAKE RestorePackages() a cercare i pacchetti da ripristinare in un percorso diverso da "./**/packages.config"?

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

Quando eseguo i miei RestorePackages() in build.fsx cercherà packages.config in "./**/packages.config" (secondo documentation), e ignorerà tutti i pacchetti da ripristinare nelle cartelle del progetto.

Posso usare this method e probabilmente assegnare il percorso uno alla volta a pacchetti.config di ogni progetto, ma non voglio modificare lo script di generazione ogni volta che aggiungo un nuovo progetto alla soluzione.

C'è un modo, per rendere RestorePackages() per cercare tutti i pacchetti.config in qualche percorso specifico?

Modificato:

addizionale, domanda relativa. Vedo, dovrò passare il percorso nuget a RestorePackage, perché di default sembra aspettarsi in ./tools/nuget/nuget.exe. Posso farlo probabilmente così:

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

Ma non ho idea di come legarlo nell'esempio che hai fornito. La sintassi F # è ancora un po 'di confusione per me riguardo le pipe e le chiamate di funzione.

risposta

6

Vedo due soluzioni.

  1. mettere il vostro script di build nella radice del progetto
  2. sovrascrivere il metodo di default. Mettete questo alla parte superiore del vostro script di build:
let RestorePackages() = 
    !! "./../**/packages.config" 
    |> Seq.iter (RestorePackage id)