FSharp.Core:无法加载文件或程序集

时间:2016-08-29 13:00:42

标签: f#

尝试运行测试时出现以下错误:

  

{System.IO.FileLoadException:无法加载文件或程序集   ' FSharp.Core,Version = 3.3.1.0,Culture = neutral,   公钥= b03f5f7f11d50a3a'或其中一个依赖项。该   定位程序集的清单定义与程序集不匹配   参考。 (来自HRESULT的异常:0x80131040)文件名:   ' FSharp.Core,Version = 3.3.1.0,Culture = neutral,   公钥= b03f5f7f11d50a3a'在   Register.RegisterResponse .__ DebugDisplay()

Tests.dll

FSharp.Core:3.1.2.5

目标F#运行时:4.3.1.0

目标框架:4.6

输出类型:类库

ManageAccount.dll

FSharp.Core:3.1.2.5

目标F#运行时:3.3.1.0

目标框架:.NET可移植子集(.Net Framework 4.5,ASP.Net Core 1.0,Windows 8)

输出类型:类库

然后我将以下应用配置添加到我的测试项目中:

<?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="3.1.2.5" newVersion="3.3.1.0"/>
      </dependentAssembly>
    </assemblyBinding>
  </runtime>
</configuration>

如果我确实需要app配置,我的bindingRedirect应该设置为什么值?

2 个答案:

答案 0 :(得分:5)

试试<bindingRedirect oldVersion="0.0.0.0-999.999.999.999" newVersion="3.3.1.0" />。大多数F#项目似乎都在为FSharp.Core做些什么。 (或newVersion="4.3.1.0",如果升级到较新的FSharp.Core,甚至是newVersion="4.4.0.0"

答案 1 :(得分:1)

您应该在4.3.1.0中使用最新版本(在这种情况下为bindingRedirect/newVersion),否则,您可能会从Tests.dll程序集中依赖于较新版本的代码中获得错误。< / p>

或者,您可以更新其中一个程序集中的引用(降级Tests.dll或升级ManageAccount.dll),以便它们都使用相同的版本。