我正在尝试从 f# 脚本访问 ravendb 文件系统。
我有这个代码:
#r "libs/Raven.Abstractions.dll"
#r "libs/Raven.Client.Lightweight.dll"
open Raven.Client.FileSystem
let fs = new FilesStore(Url = "http://localhost:8080", DefaultFileSystem = "TestFS")
let s = fs.Initialize()
printfn "%A" s.Identifier
如果我fsi
在文件上使用或通过编译脚本来执行脚本,fsc
它会按预期运行和打印http://localhost:8080
,但如果我F# interactive
在 VisualStudio 中执行它,它只会挂fs.Initialize()
在行上
现在,如果我用(ensureFileSystemExists)调用该Initialize
方法,它可以在交互式中运行。false
为什么它会这样工作?
这是FilesStore.cs 代码的一部分:
if (ensureFileSystemExists && string.IsNullOrEmpty(DefaultFileSystem) == false)
{
try
{
AsyncFilesCommands.ForFileSystem(DefaultFileSystem)
.EnsureFileSystemExistsAsync()
.Wait();
}
catch(Exception)
{
if (failIfCannotCreate)
throw;
}
}
ensureFileSystemExists
变量是我在false
第二次调用时传递给的Initialize
(适用于 VS 的 F# 交互的那个)