【问题标题】:Sharing const variables across FAKE fsx scripts在 FAKE fsx 脚本之间共享 const 变量
【发布时间】:2015-02-16 20:39:54
【问题描述】:

有没有办法通过在另一个 fsx 脚本中包含一个 fsx 脚本来共享一个变量。

例如脚本 buildConsts.fsx 包含

let buildDir = "./build/"

我想在其他构建脚本中引用它,例如

#load @".\buildConsts.fsx"
let testDlls = !! (buildDir + "*Test*.dll")

当我尝试运行脚本时,'buildDir' 变量脚本无法编译。

这是一种相当常见的方法,可与 MSBuild 和 PSAKE 等工具一起使用以模块化脚本。这是使用 FAKE 的正确方法吗?

【问题讨论】:

  • 看起来是问题所在...错误是未定义命名空间或模块“buildConsts”

标签: f# f#-fake


【解决方案1】:

您所做的应该可以工作 - 您收到的错误消息到底是什么?

我怀疑问题在于 F# 自动将文件的内容放入模块中,您需要先打开模块才能访问常量。该模块基于文件名命名,因此在您的情况下buildConsts.fsx 将生成一个名为BuildConsts 的模块。您应该可以按如下方式使用它:

#load @".\buildConsts.fsx"
open BuildConsts

let testDlls = !! (buildDir + "*Test*.dll")

您还可以向buildconsts.fsx 添加显式模块声明,这可能是一个更好的主意,因为它不那么脆弱(重命名文件时不会更改):

moule BuildConstants

let buildDir = "./build/"

【讨论】: