Visual Studio 2015 中的 F# interactive 可能会忽略 DLL 包含路径

F# interactive in Visual Studio 2015 may ignore DLL include path

我有一个 DLL 加载指令列表,如下所示:

#I __SOURCE_DIRECTORY__
#r @"packages\Newtonsoft.Json\lib\net45\Newtonsoft.Json.dll"
#r @"packages\Akka\lib\net45\Akka.dll" ...

请注意,列表引用了 Newtonsoft.Json.dll(版本 7.0.1)。但是当我在 FSI 中执行时,使用引用 DLL Visual Studio 的代码从不同的地方加载 Newtonsoft.Json,如其日志所示:

Binding session to 'C:\Projects\Samples\fsharpreactivepatterns\packages\Akka\lib\net45\Akka.dll'... Binding session to 'C:\Program Files (x86)\Microsoft Visual Studio 12.0\Blend\Newtonsoft.Json.dll'...

Newtonsoft.Json.dll 甚至没有指向 Visual Studio 2015 文件夹之一,它引用了我机器上也安装的 Visual Studio 2013 的 DLL。

这是我目前找到的解决方法:

#I __SOURCE_DIRECTORY__
#r @"packages\Newtonsoft.Json\lib\net45\Newtonsoft.Json.dll"
let c = Newtonsoft.Json.Converters.DiscriminatedUnionConverter
#r @"packages\Akka\lib\net45\Akka.dll"

现在 FSI 加载并使用正确的 Newtonsoft.Json 版本。

是否有更好的方法来确保 FSI 使用 #r 指令中指定的 DLL 路径?

我想如果你#I 到 JSON.Net 所在的文件夹,它可能会从那里找到它。但我同意,我也时常看到这种行为,它不直观。