是否可以将 #load 指令放在 F# fsx 文件中的 #if 指令中?
Should it be possible to put the #load directive inside #if directive in F# fsx file?
我有一个 fsx 文件,我尝试在其中执行此操作
#if DEV
#load "MyFile.fs"
#endif
// Later in the file
#if DEV
callSomethingFromMyFile()
#endif
如果我删除 #load
指令周围的 #if DEV ... #endif
,callSomethingFromMyFile()
会起作用。
我意识到这可能是一件奇怪的事情,但这是因为我正在使用寓言来编译F#到js,如果我想在生产时排除一个文件"build"以减少js文件尺寸。
”
在 F# Interactive 中执行脚本时,某些指令可用,但在执行编译器时不可用。以下 table 总结了使用 F# Interactive 时可用的指令。
“
然后 table 列出了#load。不完全清楚该文本(编译器与预处理器),但它也有点道理......
在常规 F# 脚本中是可能的,似乎 fable 无法处理它。
为了验证它在常规 F# 中是否有效,我创建了以下文件:
MyModule.fs:
module MyModule
type A = {b: string}
script.fsx:
#if DEV
#load "./MyModule.fs"
#endif
#if DEV
open MyModule
printfn "Hello A: %A" {b = "yolo"}
#endif
printfn "Done"
运行 fsharpi --define:DEV --exec script.fsx
按预期工作。我希望 Windows 上的 fsi
也能正常工作。
我已在以下 PR 中解决此问题:https://github.com/fable-compiler/Fable/pull/429
您目前可以将定义传递给交互式检查器,只是对于 fsx 文件,目前还没有这样做。
我有一个 fsx 文件,我尝试在其中执行此操作
#if DEV
#load "MyFile.fs"
#endif
// Later in the file
#if DEV
callSomethingFromMyFile()
#endif
如果我删除 #load
指令周围的 #if DEV ... #endif
,callSomethingFromMyFile()
会起作用。
我意识到这可能是一件奇怪的事情,但这是因为我正在使用寓言来编译F#到js,如果我想在生产时排除一个文件"build"以减少js文件尺寸。
” 在 F# Interactive 中执行脚本时,某些指令可用,但在执行编译器时不可用。以下 table 总结了使用 F# Interactive 时可用的指令。 “
然后 table 列出了#load。不完全清楚该文本(编译器与预处理器),但它也有点道理......
在常规 F# 脚本中是可能的,似乎 fable 无法处理它。
为了验证它在常规 F# 中是否有效,我创建了以下文件:
MyModule.fs:
module MyModule
type A = {b: string}
script.fsx:
#if DEV
#load "./MyModule.fs"
#endif
#if DEV
open MyModule
printfn "Hello A: %A" {b = "yolo"}
#endif
printfn "Done"
运行 fsharpi --define:DEV --exec script.fsx
按预期工作。我希望 Windows 上的 fsi
也能正常工作。
我已在以下 PR 中解决此问题:https://github.com/fable-compiler/Fable/pull/429
您目前可以将定义传递给交互式检查器,只是对于 fsx 文件,目前还没有这样做。