【问题标题】:Using and installing MathNet Package使用和安装 MathNet 包
【发布时间】:2019-10-26 12:28:59
【问题描述】:

我已经使用包管理器控制台在 Visual Studio 2017 上安装了 MathNet.Numerics 包。

我已尝试在 MathNet 命名空间中打开源文件并执行与 MersenneTwister 类型相关的算法。

但是,当我尝试在 F# Interactive 中使用此算法生成数字时,我遇到了错误:

File1.fs(3,6):错误 FS0039:未定义命名空间或模块“MathNet”。也许您想要以下之一:

数学

代码如下:

module File1

open MathNet.Numerics.Random

let mersenneTwister = new MersenneTwister(42)
let a = mersenneTwister.NextDouble()

抱歉,如果不清楚,我对 F# 比较陌生:)

【问题讨论】:

  • 如果您在 F# Interactive 中从 fsx 脚本执行此操作,您需要使用 #r 指令引用该库。如果你编译了这个,你需要添加对项目的引用。
  • 我之前是从 fs 脚本运行的。我现在尝试使用 fsx 脚本,并且现在在我的项目文件中引用了位于我的 PC 上的 MathNet.Numerics 的 dll。我还为项目文件加载了对这个 dll 的引用。但是,这个 dll 位于参考管理器的“浏览”对话框部分,我不确定这是否正确?
  • 您可以 a) 生成一个已编译的 exe 并执行它(您需要在 VS 中引用该包或 b)使用 FSI 作为脚本执行它,您需要显示该 exe 的路径使用 #r 指令。如果您通过 FSSF Slack 来,许多人将能够帮助您。或者只是在 SO 上的 F# 聊天中联系我。

标签: f# installation f#-interactive math.net mathnet-numerics


【解决方案1】:

您是使用交互式窗口进行更改还是运行fsx 脚本?导致这些don't recognize your packages

F# 控制台应用程序中重现您的问题时,我得到了以下输出:Hello 0.374540

我安装了MathNet.Numerics.fsharp nuget 包(也使用了你提到的包),并在Program.fs 中使用了以下代码:

open MathNet.Numerics.Random

let hello () =
    let mersenneTwister = new MersenneTwister(42)
    let a = mersenneTwister.NextDouble()
    printfn "Hello %f" a

[<EntryPoint>]
let main argv =
    hello ()
    0 // return an integer exit code

如果您确实想使用脚本中的nuget package,您可以像这样在脚本顶部引用它(绝对或relative

#r @"C:\Path\bin\Debug\netcoreapp3.0\MathNet.Numerics.dll"

【讨论】:

  • 嗨,我通过包管理器控制台安装了 MathNet 包。我一直在运行 fs 脚本。我一直在通过 F# Interactive 执行代码,这可能会导致问题。但是,我已尝试按照您所说的步骤操作,但仍然出现相同的错误。出于学习目的,此代码是否无法使用 F# Interactive 窗口执行?如果是,为什么?有没有办法在不使用 F# Interactive 的情况下执行此代码?在此先感谢:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-14
相关资源
最近更新 更多