【问题标题】:F# Fake globbing operator and MSBuildF# Fake globbing 运算符和 MSBuild
【发布时间】:2019-01-19 20:24:15
【问题描述】:

我正在学习 Fake 5 (F# Make),并且正在学习 Getting Started 教程。当我运行以下代码时,我收到一条错误消息:tryscript.fsx (6,7)-(6,54): Error FS0001: The type 'Fake.IO.IGlobbingPattern' is not compatible with the type 'seq<'a>'

#r "paket: nuget Fake.IO.FileSystem //"
open Fake.IO.Globbing.Operators
let csProjectFiles = !! "src/app/**/*.csproj"

csProjectFiles
    |> Seq.iter (fun x -> printfn "ProjectFile: %s" x)

// for projectFile in csProjectFiles do
//     printfn "F# ProjectFile: %s" projectFile

但是,如果我注释掉从csProjectFiles |> ... 开始的两行并取消注释最后两行,我将得到预期的文件名输出。 根据documentation 和 Ionide 工具提示,!! 应该返回一系列文件名。有人可以告诉我我可能做错了什么吗?

附:我正在使用使用dotnet tool install fake-cli -g 安装的 Fake 5.3.1

UPD。对于这个问题,我没有任何解决方案。它在 Windows 10 获得更新后自行解决,我删除了 %HOMEPATH\.nuget%HOMEPATH%\AppData\Local\Nuget 中的 Nuget 包缓存,并删除了 .fake 文件夹并将文件锁定在与 FAKE 脚本相同的文件夹中,然后再次重新运行脚本。

如果您仍然面临类似的问题,开发人员在您清除所有缓存后请求扩展日志fake -vv run <yourScriptName>.fsx,并在此运行后归档%HOMEPATH%\.nuget\packages\netstandard.library 的内容。

【问题讨论】:

  • 如果在#r 指令中添加“nuget Fake.Core.Target //”行会怎样?我不知道 Fake 5 是如何划分成包的,但是使用像 Fake.Core 这样的名称,我希望它对正常工作至关重要。 “nuget Fake.Core.Target //”行出现在您链接到的入门教程的每个示例中,这一事实也表明它是 Fake 的重要组成部分。尝试将您的 #r 更改为看到的 in this section of the guide,看看是否能解决问题。
  • @rmunn,添加Fake.Core.Target 没有帮助。我收到相同的错误消息。我在尝试“入门”页面中的示例时第一次遇到此问题,当它们失败时,我使用文档中的代码创建了这个最小示例。
  • 我现在没有合适的工具 - 组合 (csProjectFiles >> Seq.iter) 而不是管道 (csProjectFiles |> Seq.iter) 有什么不同吗?
  • @psfi​​naki,我尝试了函数组合运算符>> 并得到了不同的错误:This expression was expected to have type ''a -> 'b' but here has type 'Fake.IO.IGlobbingPattern'
  • 查看the GlobbingFileSystem.fs source,我看到定义了一些扩展方法,因此您可能需要打开适当的命名空间来激活这些扩展方法。打开 Fake.IOFake.IO.Globbing 命名空间(或两者)有帮助吗?

标签: f# f#-fake f#-fake-5


【解决方案1】:

为了完整起见,报告的问题可以在这里找到:https://github.com/fsharp/FAKE/issues/2062

如果有人遇到此问题,请打开一个新问题(并链接旧问题)并提供以下信息:

你能清理所有内容并发送 fake -vv run tryscript.fsx 的输出并附加日志文件吗? NetStandard.Library 包确实有些问题

您还可以压缩并附加文件夹 C:\Users\.nuget\packages\netstandard.library,然后尝试将其删除(并再次为此创建日志文件)吗?

我认为这是缓存问题或 F# 编译器错误或两者兼而有之。

【讨论】:

    猜你喜欢
    • 2017-08-18
    • 2014-08-28
    • 1970-01-01
    • 1970-01-01
    • 2010-10-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多