我正在尝试从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,但是如果我在VisualStudio中的F# interactive中执行它,它只挂在fs.Initialize()行上。
现在,如果我用false (ensureFileSystemExists)调用false方法,那么它在交互式中运行正常。
为什么是这样工作的?
这是FilesStore.cs代码的一部分
if (ensureFileSystemExists && string.IsNullOrEmpty(DefaultFileSystem) == false)
{
try
{
AsyncFilesCommands.ForFileSystem(DefaultFileSystem)
.EnsureFileSystemExistsAsync()
.Wait();
}
catch(Exception)
{
if (failIfCannotCreate)
throw;
}
}ensureFileSystemExists变量是我在第二次调用Initialize时传递的false (用于VS‘F#交互的调用)。
发布于 2015-03-20 22:29:53
更新到最新版本,它应该解决这个问题。基本问题是默认使用的TPL调度程序。
https://stackoverflow.com/questions/29176208
复制相似问题