【问题标题】:FAKE error when trying to use Fake.FscHelper尝试使用 Fake.FscHelper 时出现 FAKE 错误
【发布时间】:2016-03-02 11:26:39
【问题描述】:

我正在尝试使用 FAKE 来构建我的 F# 项目。 build.fsx 如下所示并且工作正常。

#r "packages/FAKE/tools/FakeLib.dll"

open Fake

Target "Default" (fun _ ->
    trace "Hello World from FAKE"
)

RunTargetOrDefault "Default"

然后我想使用 FAKE 的 fsc。按照官方教程,我添加了一行open Fake.FscHelper并得到以下错误消息:

#r "packages/FAKE/tools/FakeLib.dll"

open Fake
open Fake.FscHelper

// this value is not a function and can not be applied
// union case FscParam.Target: TargetType -> FscParam
Target "Default" (fun _ ->
~~~~~~~~~~~~~~~~
    trace "Hello World from FAKE"
)

RunTargetOrDefault "Default"

如果有人能给我任何建议,我很感激。

我在带有 Mono 4.2.1 的 Mac 上使用 VS Code。

我的paket.lock 如下所示:

NUGET
  remote: https://www.nuget.org/api/v2
  specs:
    FAKE (4.21.0)
    FSharp.Core (4.0.0.1)
    FsUnit (2.0.0)
      FSharp.Core (>= 3.1.2.5)
      NUnit (3.0.1)
    NUnit (3.0.1)

【问题讨论】:

    标签: f# f#-fake


    【解决方案1】:

    发生这种情况是因为模块 FscHelper 定义了一个名为 Target (see source) 的构造函数,并且该构造函数与来自 TargetHelper 模块的 Target 函数冲突。有一个issue filed about it

    在问题得到解决之前,有三种方法可以解决这种歧义:

    1. 不要打开FscHelper,只需以合格的方式使用其所有内脏(例如FscHelper.Compile等)

    2. 在本地范围内为 TargetHelper.Target 函数重新命名:

      open Fake
      open Fake.FscHelper
      
      let Target = TargetHelper.Target
      
      Target "Default" (fun _ ->
          trace "Hello World from FAKE"
      )
      
    3. 重新排序open 语句:

      open Fake.FscHelper
      open Fake
      

    由于您使用的是这个助手,请注意它的 documentationoutdated。特别是,Fsc 任务已被弃用,取而代之的是 Compile 任务 (see source)。

    【讨论】:

      【解决方案2】:

      更改打开语句的顺序

      #r @"packages/FAKE/tools/FakeLib.dll"
      open Fake.FscHelper
      open Fake
      
      Target "a" (fun _ -> 
        ["a.fs"] |> Compile []
      

      打开语句的顺序决定了名称解析的优先级,后面打开的模块和命名空间优先。

      【讨论】:

        猜你喜欢
        • 2020-06-24
        • 2014-02-05
        • 2016-10-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-04-03
        • 2013-06-16
        相关资源
        最近更新 更多