问题 脚本无法识别FSharp.Data


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

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

所有内容都已添加到引用中,.fs文件似乎没有找到XmlTypeProvider引用的任何问题,但由于某种原因,同一项目中的脚本没有。我甚至得到了在.fs文件中工作的代码。

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


12673
2018-05-02 17:10


起源

stackoverflow.com/questions/3102472/...  fsx文件不使用项目引用(fsi也不使用)。您需要手动引用文件。查看该帖子以获得帮助。 - mydogisbox
这里有一个更全面的文章: blogs.msdn.com/b/chrsmith/archive/2008/09/12/... - mydogisbox
谢谢克里斯。我已经阅读了你的几篇文章,但不是那篇文章! - user2344035
我不是克里斯,但我很高兴你喜欢这个链接;-) - mydogisbox
哎呀抱歉,误读了。非常感谢该链接。这是一个很大的帮助。 - user2344035


答案:


将脚本中的引用添加到包含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"

9
2017-11-26 14:12



让我失望的是,一旦我开始输入(即#r“”),VS就会给我一些曲折的线条。它实际上是在设计时解析字符串。所以当我终于找到了dll时,那条波浪线就消失了。 - mac10688


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

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

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

  • DLL被操作系统阻止。 最后,如果 dll 来自不受信任的来源,Windows可能阻止它(特别是如果你下载一个 zip 使用Windows文件并解压缩文件。要取消阻止文件,请转到文件属性,然后单击“取消阻止”。有一个 这里描述得很好。


5
2018-05-02 22:56