Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/fsharp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Visual Studio 2015中的F#interactive可能会忽略DLL包含路径_Dll_F#_Visual Studio 2015_Fsi - Fatal编程技术网

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

Visual Studio 2015中的F#interactive可能会忽略DLL包含路径,dll,f#,visual-studio-2015,fsi,Dll,F#,Visual Studio 2015,Fsi,我有一个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,如其

我有一个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路径?

我认为,如果您访问JSON.Net所在的文件夹,它可能会在那里找到它。但我同意,我也经常看到这种行为,这是不直观的。

在我看来像一个bug。我认为DLL路径不应该受到环境中存在的对象的影响。我还怀疑这是一个bug。是的,使用#I和正确的JSON文件夹解决了这个问题,因此#r中的路径显然可能会被忽略(但并非像我们在解决方法中看到的那样总是被忽略)。是的,因为一旦您执行一些使用该程序集类型的代码,它就会迫使FSI急切地引用该程序集。此时,执行的代码将解析为#r引用的代码。我同意这是不一致的,可能应该在可视F#repo中作为一个问题提出。只是尽量不要在
#r
中使用相对路径,将其与“#I”结合起来-