#load无法加载共享.fsx
问题描述:
为什么不#load工作#load无法加载共享.fsx
我已经试过了在同一文件夹,并在相对的文件夹,如下
我缺少什么?
run.fsx是
#load "../shared/shared.fsx"
let key = "MyKey"
let Run(message: string, log: TraceWriter, result: byref<string>) =
result <- doItAll message key
log.Info(sprintf "F# results: %s" result)
shared.fsx是
let doItAll message key = key + " has handled " + message
误差
run.fsx(x,y): error FS39: The value or constructor 'doItAll' is not defined
答
如果你不shared.fsx
指定命名空间或模块名称,明确,那么F#编译器会将该文件中的代码放在一个隐式命名的模块中Shared
。您应该能够修复错误,加入open Shared
:
#load "../shared/shared.fsx"
open Shared
let key = "MyKey"
let Run(message: string, log: TraceWriter, result: byref<string>) =
result <- doItAll message key
log.Info(sprintf "F# results: %s" result)
如果你想控制命名自己,你也可以在shared.fsx
添加module
声明,并把自己托付给一个明确的名称:
module SharedStuff
let doItAll message key = key + " has handled " + message
+0
感谢托马斯 - 这是有点说不清楚 同样为了澄清它是文件名前面的大S,而不考虑文件名的情况。 –
+0
@DavidLapeš是的,F#大写第一个字母 - 我不太清楚规则是什么,所以使用明确的模块名称总是一个更安全的选项:) –
注 - 确保你已经编辑了host.json设置 { \t“watchDirectories”:“共享”,“共享FS”] } –