2014-07-08 2 views
3

J'ai un script petit test reproduisant le problèmePourquoi Fausse/F # englobement fonctionne pas sur les chemins UNC

// include Fake lib 
#r @"tools\FAKE\tools\FakeLib.dll" 
open Fake 

let root = @"\\wgprintsrv\FTP\FTPSoftware\FTPSW\weincad\release" 

let glob = root @@ "**\*.dll" 

trace glob 

!! glob 
|> Seq.iter (fun file -> trace file) 

il énumère rien. Juste pour vérifier la commande powershell suivante

ls -R \\wgprintsrv\FTP\FTPSoftware\FTPSW\weincad\release -Filter *.dll 

génère tout ce que j'attends. Si je remplace le chemin UNC par un chemin relatif local, tout fonctionne. Est-ce possible de contourner ou est-ce un problème de base avec les chemins UNC et la globalisation F #?

+0

Oui, cela pourrait avoir un bug. S'il vous plaît créer un problème à https://github.com/fsharp/FAKE/issues et je vais essayer de le réparer. – forki23

Répondre

1

Pas trop facile à utiliser mais le glob ne reconnaît pas les chemins absolus. Vous devez définir le répertoire de base comme si

// include Fake lib 
#r @"tools\FAKE\tools\FakeLib.dll" 
open Fake 

let root = @"\\wgprintsrv\FTP\FTPSoftware\FTPSW\weincad\release" 

let glob = "**\*.dll" 

trace glob 

!! glob 
|> SetBaseDir root 
|> Seq.iter (fun file -> trace file) 
+0

Je ne pense pas que votre code fasse ce que vous pensez. SetBaseDir n'est pas une déclaration impérative. Comme vous pouvez le voir sur https://github.com/fsharp/FAKE/blob/master/src/app/FakeLib/Globbing/FileSystem.fs#L131, il prend une instruction de globbing et en retourne une modifiée. "SetBaseDir root" ne fait rien du tout. – forki23

+0

J'ai corrigé le code. – bradgonesurfing

+0

Confirmé cette réponse. '!! (uncpath @@ @ "** \ *) |> SetBaseDir uncpath |> Seq.iter trace' fonctionne mais' !! (uncpath @@ @ "** \ *") |> Seq.iter trace' ne fonctionne pas. – brianary

Questions connexes