在FAKE fsx脚本之间共享const变量

时间:2015-02-16 20:39:55

标签: f# f#-fake

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

例如脚本buildConsts.fsx包含

let buildDir = "./build/"

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

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

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

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

1 个答案:

答案 0 :(得分:2)

您正在做的事情应该有效 - 您收到的错误信息究竟是什么?

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

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

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

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

moule BuildConstants

let buildDir = "./build/"