脚本无法识别FSharp.Data。

12

我是F#的初学者,正在尝试通过在脚本(fsx)文件中输入代码来测试我的XmlTypeProvider代码。但是脚本文件无法识别以下内容。

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

已将所有内容添加到参考中,.fs文件似乎没有任何问题找到XmlTypeProvider引用,但出于某种原因,同一项目中的脚本却没有。我甚至让代码在一个.fs文件中正常工作。

我使用Nuget添加了FSharp.Data,似乎一切都添加正确了。我错过了什么?


1
一个fsx文件不使用项目引用(fsi也是如此)。您需要手动引用这些文件。请参阅该帖子以获取帮助。 - N_A
1
这里有一个更详细的写作,链接在这里:http://blogs.msdn.com/b/chrsmith/archive/2008/09/12/scripting-in-f.aspx - N_A
谢谢Chris。我读了你的几篇文章,但不是那一篇! - user2344035
我不是克里斯,但很高兴你喜欢这个链接;-) - N_A
抱歉,我看错了。非常感谢您提供的链接。这对我很有帮助。 - user2344035
2个回答

11
在脚本中添加一个引用,指向包含 FSharp.Data.dll 的 nuget packages 文件夹。该文件夹还包含设计器 dll(FSharp.Data.DesignTime.dll)。
#r @"<your nuget packages folder>\FSharp.Data.2.1.0\lib\net40\FSharp.Data.dll"

让我困惑的是,一旦我开始输入 #r "",VS 就会给我波浪线。实际上,它在设计时解析字符串。因此,当我最终找到 dll 时,波浪线就消失了。 - mac10688

5

顺便提一下,我上周刚刚调试过这个错误。基本上有三种可能的原因:

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

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

  • OS阻止了DLL。 最后,如果dll来自不受信任的源,则Windows可能会阻止它(特别是如果您下载一个zip文件并使用Windows提取文件)。要取消阻止文件,请转到文件属性并单击“取消阻止”。 这里有一个很好的说明


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接