【问题标题】:Why does Fake / F# globbing not work on UNC paths为什么 Fake / F# globbing 在 UNC 路径上不起作用
【发布时间】:2014-08-28 22:21:45
【问题描述】:

我有一个重现问题的小测试脚本

// 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 )

它什么也没列出。只需检查以下 powershell 命令

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

产生我所期望的一切。如果我用本地相对路径替换 UNC 路径,那么一切正常。这是否可以解决,还是 UNC 路径和 F# 通配符的核心问题?

【问题讨论】:

标签: powershell f# glob unc f#-fake


【解决方案1】:

对用户不太友好,但 glob 无法识别绝对路径。您必须像这样设置基本目录

// 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 )

【讨论】:

  • 我不认为你的代码做你认为它做的事情。 SetBaseDir 不是命令式语句。正如您在github.com/fsharp/FAKE/blob/master/src/app/FakeLib/Globbing/… 看到的那样,它接受一个通配语句并返回一个修改后的语句。 “SetBaseDir root”什么都不做。
  • 确认了这个答案。 !! (uncpath @@ @"**\*) |> SetBaseDir uncpath |> Seq.iter trace 有效,但 !! (uncpath @@ @"**\*") |> Seq.iter trace 无效。
猜你喜欢
  • 2019-01-19
  • 1970-01-01
  • 2016-05-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-10
相关资源
最近更新 更多