【问题标题】:scripts don't recognize FSharp.Data脚本无法识别 FSharp.Data
【发布时间】:2013-05-02 17:10:18
【问题描述】:

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

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

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

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

【问题讨论】:

  • stackoverflow.com/questions/3102472/… fsx 文件不使用项目引用(fsi 也不使用)。您需要手动引用这些文件。请参阅该帖子寻求帮助。
  • 这里有更详尽的文章:blogs.msdn.com/b/chrsmith/archive/2008/09/12/…
  • 谢谢克里斯。我读过你的几篇文章,但不是那篇!
  • 我不是克里斯,但很高兴你喜欢这个链接 ;-)
  • 抱歉,误读了。非常感谢那个链接。这是一个很大的帮助。

标签: f# f#-interactive f#-data


【解决方案1】:

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

#r @"<your nuget packages folder>\FSharp.Data.2.1.0\lib\net40\FSharp.Data.dll"

【讨论】:

  • 让我大吃一惊的是,当我开始输入 VS 时,VS 就会给我一些波浪线(即 #r "")。它实际上是在设计时解析字符串。所以当我终于找到 dll 时,波浪线消失了。
【解决方案2】:

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

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

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

  • DLL 被操作系统阻止。 最后,如果 dll 来自不受信任的来源,Windows 可能会阻止它(尤其是当您下载 zip 文件并使用 Windows 提取文件)。要取消阻止文件,请转到文件属性并单击“取消阻止”。有一个good description here.

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-08-11
    • 2023-03-15
    • 1970-01-01
    • 2015-05-26
    • 2020-03-14
    • 1970-01-01
    • 2017-08-15
    • 2020-12-02
    相关资源
    最近更新 更多