首页 > 解决方案 > F# Fake globbing 运算符和 MSBuild

问题描述

我正在学习 Fake 5 (F# Make),并且正在学习入门教程。当我运行以下代码时,我收到一条错误消息: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 |> ...并取消注释最后两行,我将得到预期的文件名输出。根据文档和 Ionide 工具提示,!!应该返回一系列文件名。有人可以告诉我我可能做错了什么吗?

PS我正在使用安装的假5.3.1dotnet tool install fake-cli -g

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

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

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

解决方案


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

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

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

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

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


推荐阅读