4

v2.0 ランタイムにリンクされたアセンブリをインポートする .Net アセンブリがあります。私が抱えている問題は、アセンブリでいくつかのテストを実行しようとすると、Fusion が依存アセンブリの間違ったバージョンをロードしようとすることです。

アセンブリ マニフェストを確認すると、その理由がわかりました。間違ったバージョンのFSharp.Coreがリンクされています。私のビルド ファイルではFSharp.Core, Version=4.0.0.0明示的に作成していますがFSharpPowerPack、v2.0.0.0 にリンクしているように見えます。

マニフェストは次のとおりです。

// Metadata version: v4.0.30319
.assembly extern mscorlib
{
  .publickeytoken = (B7 7A 5C 56 19 34 E0 89 )                         // .z\V.4..
  .ver 4:0:0:0
}
.assembly extern System.Core
{
  .publickeytoken = (B7 7A 5C 56 19 34 E0 89 )                         // .z\V.4..
  .ver 4:0:0:0
}
.assembly extern System
{
  .publickeytoken = (B7 7A 5C 56 19 34 E0 89 )                         // .z\V.4..
  .ver 4:0:0:0
}
.assembly extern FSharp.PowerPack
{
  .publickeytoken = (A1 90 89 B1 C7 4D 08 09 )                         // .....M..
  .ver 2:0:0:0
}
.assembly extern mscorlib as mscorlib_8
{
  .publickeytoken = (B7 7A 5C 56 19 34 E0 89 )                         // .z\V.4..
  .ver 2:0:0:0
}
.assembly extern System.Core as System.Core_9
{
  .publickeytoken = (B7 7A 5C 56 19 34 E0 89 )                         // .z\V.4..
  .ver 3:5:0:0
}
.assembly extern FSharp.Core
{
  .publickeytoken = (B0 3F 5F 7F 11 D5 0A 3A )                         // .?_....:
  .ver 2:0:0:0
}

FSharpPowerPack他の .Net アセンブリ (mscorlib、System、System.Core) の v2.0 および v3.5 を含めることにより、含まれてエイリアスが付けられているように見えることに注意してください。なぜこれが起こるのですか?これは の間違ったバージョンをロードするという問題に関連していFSharp.Coreますか?

編集:明確にするために、私のアセンブリは C# v4.0 コンパイラによって生成されています。

4

1 に答える 1

2

コンパイルされたアセンブリをロードするアプリケーションを制御していますか? その場合、app.config ファイルでバインディング リダイレクトを使用して、すべての FSharp.Core 参照でバージョン 4.0 を使用するように強制できます。

<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-99.9.9.9" newVersion="4.0.0.0"/>
            </dependentAssembly>
        </assemblyBinding>
    </runtime>
</configuration>

自動化されたテスト アプリケーションで問題が発生している場合は、動作に影響がないと仮定して、同様の方法でその構成ファイルを編集できる可能性があります。

于 2010-10-29T03:28:02.803 に答える