0

我有一个便携式库,其FSharp.Core版本为3.7.4.0. 安装(在单元测试项目中)FsUnit作为依赖项安装FSharp.Coreversion 3.1.2.5

因此,在我的单元测试项目中使用可移植库的功能,例如:

module StammaTests.PieceTests

open Stamma
open NUnit.Framework
open FsUnitTyped

[<Test>]
let ``Testing a Basic function`` () =
    Piece.toChar Black King |> shouldEqual 'k'

产生错误:

结果消息:System.IO.FileLoadException:无法加载文件或程序集“FSharp.Core,Version=3.7.4.0,Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a”或其依赖项之一。找到的程序集的清单定义与程序集引用不匹配。(来自 HRESULT 的异常:0x80131040)

尝试将FSharp.Core版本从 NuGet 更新为4.0.0.1(甚至在更新时检查两个项目),现在甚至是一些简单的东西,例如:

[<Test>]
let ``Testing the test`` () = 1 |> shouldEqual 1 

不起作用,给出类似的错误。

结果消息:System.IO.FileLoadException:无法加载文件或程序集“FSharp.Core,Version=4.3.1.0,Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a”或其依赖项之一。找到的程序集的清单定义与程序集引用不匹配。(来自 HRESULT 的异常:0x80131040)

第一次失败测试的错误不会改变。

我觉得我错过了一些非常明显的东西,我发现几个人有类似的问题,但我不明白他们做了什么来解决它(他们似乎都解决了它..)例如这个

编辑

这两个项目都是库,我没有app.config要添加任何内容的文件。

4

2 回答 2

1

app.config在您的文件中添加绑定重定向以将所有FSharp.Core绑定重定向到您想要的版本。例如,要使用 4.4.0 版本,您的app.config文件应如下所示:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="FSharp.Core" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-4.4.0.0" newVersion="4.4.0.0" />
      </dependentAssembly>
    </assemblyBinding>
  </runtime>
</configuration>
于 2016-09-21T07:16:15.853 回答
0

我找到了一个在这里实际工作的解决方案

基本上,将一个添加App.config测试项目,并编写以下内容:

<configuration>
  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="FSharp.Core" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-4.3.1.0" newVersion="4.3.1.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="nunit.framework" publicKeyToken="96d09a1eb7f44a77" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-2.6.4.14350" newVersion="2.6.4.14350" />
      </dependentAssembly>
    </assemblyBinding>
  </runtime>
</configuration>

它为 和 都添加了绑定, Fsharp.CoreNUnit.Framework您只为Fsharp.Core.

于 2016-09-21T11:34:08.853 回答