【发布时间】:2016-01-04 11:21:14
【问题描述】:
我有一个 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 路径?
【问题讨论】:
-
对我来说看起来像一个错误。我想 DLL 路径不应该受到环境中存在的对象的影响。
-
我也怀疑这是一个错误。
标签: dll f# visual-studio-2015 fsi