11

有点像 F# 初学者。我正在尝试通过首先在脚本 (fsx) 文件中输入一些 XmlTypeProvider 代码来测试交互式窗口中的一些 XmlTypeProvider 代码。脚本文件无法识别以下内容

open FSharp.Data  // gives "The namespace or module 'FSharp' is not defined"

一切都已添加到参考中,.fs 文件似乎没有任何问题找到 XmlTypeProvider 参考,但由于某种原因,同一项目中的脚本没有。我什至让代码在 .fs 文件中工作。

我用 nuget 添加了 FSharp.Data,一切似乎都正确添加了。我在这里想念什么?

4

2 回答 2

10

在脚本中添加对包含 FSharp.Data.dll 的 nuget 包文件夹的引用。该文件夹还包含设计器 dll (FSharp.Data.DesignTime.dll)

#r @"<your nuget packages folder>\FSharp.Data.2.1.0\lib\net40\FSharp.Data.dll"
于 2014-11-26T14:12:23.610 回答
5

顺便说一句,我上周刚刚调试了这个错误。基本上有三个可能的原因:

  • 找不到该文件。最明显的是F#实际上找不到dll文件。确保引用正确(检查项目属性中的引用)或确保#r指向正确的文件(使用 F# 脚本文件时)

  • 类型提供程序不受信任。类型提供程序被 Visual Studio 阻止。如果您在第一次加载提供程序时单击“禁用”,就会发生这种情况。要解决此问题,请转到“工具”-“选项”-“F# 工具”-“类型提供程序”并启用类型提供程序(选中“受信任”)。

  • DLL 被操作系统阻止。最后,如果dll来自不受信任的来源,Windows 可能会阻止它(尤其是在您下载zip文件并使用 Windows 提取文件时会发生这种情况)。要取消阻止文件,请转到文件属性并单击“取消阻止”。这里有一个很好的描述。.

于 2013-05-02T22:56:24.180 回答