F# 脚本可以';t加载.NET4.5?

F# 脚本可以';t加载.NET4.5?,f#,.net-4.5,F#,.net 4.5,我有一个使用.NET4.5HttpClient的F#库。它编译得很好,但当我在脚本中加载函数后尝试调用库中的函数时,脚本会说它找不到System.Net.Http 脚本和库都位于同一个针对.NET4.5的项目中 库(在TdApi.fs中)执行此操作opensystem.Net.Http但是当脚本执行此操作时,加载“TdApi.fs”交互窗口中的错误是这TdApi.fs(6,17):错误FS0039:未定义命名空间“Http”。 我正在使用VS2012,并且刚刚开始使用F#。编译库和脚本文件之间有

我有一个使用.NET4.5HttpClient的F#库。它编译得很好,但当我在脚本中加载函数后尝试调用库中的函数时,脚本会说它找不到System.Net.Http

脚本和库都位于同一个针对.NET4.5的项目中

库(在TdApi.fs中)执行此操作opensystem.Net.Http但是当脚本执行此操作时,加载“TdApi.fs”交互窗口中的错误是这TdApi.fs(6,17):错误FS0039:未定义命名空间“Http”。


我正在使用VS2012,并且刚刚开始使用F#。

编译库和脚本文件之间有区别

当您将
TdApi.fs
文件编译为库项目的一部分时,依赖项(在您的情况下是HTTP库)将在项目属性中指定。编译器使用
fsproj
文件来查找依赖项(因此一切都可以正常编译)

当您从脚本加载
#您的
TdApi.fs
文件时,它不知道项目,因此也不知道依赖项。要解决此问题,您可以使用
#r“TdApi.dll”
,其中
TdApi.dll
是编译库,也可以使用类似以下内容:

#r "someplace/System.Net.Http.dll"
#load "TdApi.fs"

所以,您可以使用
#r
先显式加载HTTP库,然后
TdApi.fs
将看到它。

当您在交互中运行时,您如何引用HTTP库?不确定为什么这会导致投票关闭-我认为OP尽可能好地描述了问题-这是一个常见的问题,会引起混乱对于F#新人……谢谢托马斯,你的解释解决了我的问题,帮助我沿着学习F#的道路前进。