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' またはその依存関係の 1 つを読み込めませんでした。見つかったアセンブリのマニフェスト定義がアセンブリ参照と一致しません。(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' またはその依存関係の 1 つを読み込めませんでした。見つかったアセンブリのマニフェスト定義がアセンブリ参照と一致しません。(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.FrameworkFsharp.Core

于 2016-09-21T11:34:08.853 に答える