我有一个fsx文件,我尝试这样做
#if DEV
#load "MyFile.fs"
#endif
// Later in the file
#if DEV
callSomethingFromMyFile()
#endif
callSomethingFromMyFile()
如果删除#if DEV ... #endif
指令周围的#load
,则有效。
我意识到这可能是一个奇怪的事情,但这是因为我使用寓言编译为F#到js,如果我想在生成“build”时排除文件以减少js文件大小。
答案 0 :(得分:3)
在普通的F#脚本中,有可能,似乎寓言无法处理它。
要验证它是否在常规F#中工作,我在文件中创建了以下内容:
datalength()
module MyModule
type A = {b: string}
正在运行#if DEV
#load "./MyModule.fs"
#endif
#if DEV
open MyModule
printfn "Hello A: %A" {b = "yolo"}
#endif
printfn "Done"
按预期工作。我希望Windows上的fsharpi --define:DEV --exec script.fsx
能够正常运行。
答案 1 :(得分:2)
" 当您在F#Interactive中执行脚本时,某些指令可用,这些指令在执行编译器时不可用。下表总结了使用F#Interactive时可用的指令。 "
然后该表列出了#load等。不完全清楚文本(编译器与预处理器),但它也有意义......
答案 2 :(得分:1)
我已在以下PR中解决了这个问题:https://github.com/fable-compiler/Fable/pull/429
您现在可以将定义传递给交互式检查器,它只是针对目前尚未完成的fsx文件。