在 FAKE fsx 脚本中共享 const 变量
Sharing const variables across FAKE fsx scripts
有没有办法通过在另一个 fsx 脚本中包含一个 fsx 脚本来共享变量。
例如脚本 buildConsts.fsx 包含
let buildDir = "./build/"
我想在其他构建脚本中引用它,例如
#load @".\buildConsts.fsx"
let testDlls = !! (buildDir + "*Test*.dll")
当我尝试 运行 脚本 'buildDir' 变量时,脚本无法编译。
这是一种相当常见的方法,可与 MSBuild 和 PSAKE 等工具一起使用来模块化脚本。这是 FAKE 的正确方法吗?
您正在做的应该有效 - 您收到的错误消息到底是什么?
我怀疑问题出在 F# 自动将文件内容放入模块中,您需要先打开模块才能访问常量。该模块是根据文件名命名的,因此在您的情况下 buildConsts.fsx
将生成一个名为 BuildConsts
的模块。您应该能够按如下方式使用它:
#load @".\buildConsts.fsx"
open BuildConsts
let testDlls = !! (buildDir + "*Test*.dll")
您还可以向 buildconsts.fsx
添加显式模块声明,这可能是一个更好的主意,因为它不那么脆弱(重命名文件时不会更改):
moule BuildConstants
let buildDir = "./build/"
有没有办法通过在另一个 fsx 脚本中包含一个 fsx 脚本来共享变量。
例如脚本 buildConsts.fsx 包含
let buildDir = "./build/"
我想在其他构建脚本中引用它,例如
#load @".\buildConsts.fsx"
let testDlls = !! (buildDir + "*Test*.dll")
当我尝试 运行 脚本 'buildDir' 变量时,脚本无法编译。
这是一种相当常见的方法,可与 MSBuild 和 PSAKE 等工具一起使用来模块化脚本。这是 FAKE 的正确方法吗?
您正在做的应该有效 - 您收到的错误消息到底是什么?
我怀疑问题出在 F# 自动将文件内容放入模块中,您需要先打开模块才能访问常量。该模块是根据文件名命名的,因此在您的情况下 buildConsts.fsx
将生成一个名为 BuildConsts
的模块。您应该能够按如下方式使用它:
#load @".\buildConsts.fsx"
open BuildConsts
let testDlls = !! (buildDir + "*Test*.dll")
您还可以向 buildconsts.fsx
添加显式模块声明,这可能是一个更好的主意,因为它不那么脆弱(重命名文件时不会更改):
moule BuildConstants
let buildDir = "./build/"