【问题标题】:MathNet - 'System.TypeInitializationException' [closed]MathNet - 'System.TypeInitializationException' [关闭]
【发布时间】:2015-10-03 13:31:11
【问题描述】:

我正在尝试在 C# 中使用 MathNet 解析表达式字符串,当我尝试此代码时:

var h = MathNet.Symbolics.Infix.ParseOrUndefined("1/(a*b)");

它抛出了异常。

“MathNet.Symbolics.dll 中发生了“System.TypeInitializationException”类型的未处理异常

附加信息:'.$Infix' 的类型初始值设定项引发了异常。"

我哪里错了? 我使用 MathNet v.0.6.0.0Visual Studio 2012 Express

更新

通过windows的hotfix解决了这个问题,我不更新了。

【问题讨论】:

    标签: c# math.net mathnet-numerics


    【解决方案1】:

    依赖项似乎有问题。您能列出您正在使用的确切软件包版本吗?以及您正在编译的 .Net 版本。

    假设您已经通过 NuGet 安装了 Math.NET Symbolics,您可以尝试更新所有依赖项(使用 NuGet)吗?

    编辑:我无法使用较新的 VisualStudio 版本重现这一点 - 您是否有机会升级,例如VisualStudio Community 哪个也是免费的?

    【讨论】:

    • 所有的依赖都更新了。这是我得到的日志 System.TypeInitializationException: The type initializer for '.$Infix' 抛出异常。 ---> System.Security.VerificationException:操作可能会破坏运行时的稳定性。在 FParsec.InfixOperator3..ctor(String operatorString, FSharpFunc2 afterStringParser, Int32 优先级, Associativity associativity, FSharpFunc`2 mapping) at .$Infix..cctor()
    • 好的,现在,这是另一个野兽。存在导致此问题的问题,但据我了解,已通过修补程序修复 - 您的系统是否是所有 Windows 更新的最新版本?
    • 啊!我懂了。谢谢你。 :) 我忘了寻找内部异常的解决方案,而不是外部异常。我的错。
    • 你能用 v0.7.1(和 FParsec 1.0.1 和适当的 FSharp.Core)再试一次吗?
    • 现在正在使用修补程序。谢谢你。 :)
    【解决方案2】:

    我猜你必须使用那个语法:

     var H = MathNet.Symbolics.Infix.Parse "1/(a*b)";
    

    有趣的是,上面的函数将返回 1/(a*b) 而不是该计算的解。如果你想让 H 得到结果,你必须使用:

     var H = MathNet.Symbolics.Infix.Parse "1/(a*b)";
     MathNet.Symbolics.Infix.Print(H);
    

    【讨论】:

    • 感谢您的回复。我编辑了这个问题,我只是按照这里所说的。 link。但收到错误
    • 表格中是否正确引用了 MathNet(顶部,使用 MATHNET)? A 和 B 是否正确初始化? MathNet 和 NET Framework 是同一个版本吗?
    • 是的。 “Infix.Print()”方法和其他方法有效,但“Infix.ParseOrUndefined”和“Infix.ParseOrThrow”抛出异常。
    • 可能与Infix的版本有关。尝试更新它或尝试仅使用 Parse 函数(不是 ParseOrThrow 或 ParseOrUndefined)。我知道这两个函数都可以回答 100% IF AND JUST 如果你对这些变量有问题 - 在这种情况下,第一个返回 ThrowException 而第二个返回 Undefined...
    • 题中使用库的方式没有问题。
    猜你喜欢
    • 1970-01-01
    • 2019-10-07
    • 2017-02-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-04
    • 2014-01-19
    相关资源
    最近更新 更多