我有一个 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,如其日志所示:
绑定会话到 'C:\Projects\Samples\fsharpreactivepatterns\packages\Akka\lib\net45\Akka.dll'... 绑定会话到 '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 路径?