2017-10-21 6 views
1

J'ai la cible suivante définie dans mon script de construction FAKE. Il est en cours d'exécution. J'ai vérifié cette déclaration trace trace. Il y a une grande structure de fichier dans le dossier "MyWebApp". Je n'ai pas de sortie dans le dossier de destination. Que pourrais-je faire de mal?CopyRecursive ne fonctionne pas dans le script FAKE

Target "Push" (fun _ -> 
    let dir= FileSystemHelper.currentDirectory 
    let src = dir+ @"\deploy\" + version + @"\MyWebApp" 
    let dest = @"c:\windows\temp\deploy\" + version 
    CopyRecursive src dest |> ignore 
() 

Merci Jim

Répondre

3

Si vous regardez le definition de CopyRecursive

let CopyRecursive dir outputDir = copyRecursive (directoryInfo dir) (directoryInfo outputDir) 

vous remarquerez peut-être qu'il représente l'évaluation en partie (et, par ailleurs, marqué au moment que obsolete) la fonction copyRecursive ayant la signature bool->string list.

Votre script envoie cette valeur de fonction partiellement évaluée à ignore et, apparemment, rien ne se passe comme résultat.

Pour permettre à copyRecursive de faire son travail il suffit de fournir le troisième argument d'entrée manquant de type bool qui définit si la fonction doit remplacer les fichiers portant le même nom dans le répertoire cible. À supposer que c'est le comportement que vous voulez juste changer la ligne correspondante dans votre script par

CopyRecursive src dest true |> ignore 

Cela permettra copyRecursive d'effectuer sa copie côté effet magique retournant la liste des noms de fichiers copiés, que vous pouvez jeter avec ignore.