gpt4 book ai didi

f# - 使用 FSharp PowerPack 中的某些方法并编译到类库时出现 System.MissingMethodException

转载 作者:行者123 更新时间:2023-12-04 05:40:55 26 4
gpt4 key购买 nike

所以我刚刚开始使用 F#,我遇到了一个非常奇怪的问题,即在使用 FSharp PowerPack 中的某些方法时抛出 System.MissingMethodException。

同一模块中的所有方法都不会发生这种情况。如果我将程序集编译为应用程序而不是类库,也不会发生这种情况。

复制步骤:

  • 创建 2 个程序集,一个类库和一个应用程序。
  • 添加 nunit.framework 和 FSharp.PowerPack DLL 作为对这两个程序集的引用。
  • 在每个程序集中创建以下测试夹具。
    open NUnit.Framework

    [<TestFixture>]
    type Tests() = class

    [<Test>]
    member self.OfSeq() =
    // Will always succeed
    Matrix.Generic.ofSeq [[1]] |> ignore

    [<Test>]
    member self.OfList() =
    // Will fail under certain conditions with a System.MissingMethodException
    Matrix.Generic.ofList [[1]] |> ignore
    end
  • 编译这两个程序集。
  • 在 NUnit 中打开每个程序集并运行所有测试。

  • 当我这样做时,应用程序运行得很好(所有测试都通过),但类库失败并出现以下异常:
    System.MissingMethodException : Method not found: 'Microsoft.FSharp.Math.Matrix`1<!!0> Generic.ofList(Microsoft.FSharp.Collections.FSharpList`1<Microsoft.FSharp.Collections.FSharpList`1<!!0>>)'.
    at Temp2.Tests.OfList()

    这里发生了什么?

    产生此问题的另一种方法是 matrix.PermuteColumns。

    附加信息:
  • 我正在为 .NET 4.5
  • 编译两个程序集
  • 我正在使用 Visual Studio 2012 RC
  • 进行编译
  • 我正在使用 NUnit 版本 2.5.10.11092
  • 我正在使用 FSharp PowerPack 版本 2.1.3.1(尽管 DLL 属性声明它是 2.0.0)

  • 让我知道是否有其他有用的信息。

    最佳答案

    (答案以供将来引用,因为此 Q 是搜索的第一个命中。)

    使用 Visual Studio 2013 和 Brian 引用的“F# MSTest”在线项目模板,Brian 的任何建议都没有帮助(首先,测试的目标是一个没有 App.Config 的库项目)。

    但是我最终发现测试项目设置为使用 F#3 运行时(使用 FSharp.Core V4.3.0.0)。将此更改为 F# v3.1 (FSharp.Core V4.3.1.0) 解决了该问题。

    关于f# - 使用 FSharp PowerPack 中的某些方法并编译到类库时出现 System.MissingMethodException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11907032/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com