为什么不使用bindingRedirect影响FSharp.Core版本

时间:2017-09-12 09:09:49

标签: f# assembly-binding-redirect

我有一个针对F#runtime 4.4.1的单元测试项目。它有一个带有bindingRedirect部分的app.config:

  <dependentAssembly>
    <Paket>True</Paket>
    <assemblyIdentity name="FSharp.Core" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-65535.65535.65535.65535" newVersion="4.4.1.0" />
  </dependentAssembly>

但是,当我运行测试时,我收到运行时错误:

  

无法加载文件或程序集&#39; FSharp.Core,Version = 4.3.0.0,   Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a&#39;或其中一个   依赖。系统找不到指定的文件。

我想知道为什么尝试加载FSharp.Core 4.3.0.0,因为bindingRedirect指定了不同的版本。

1 个答案:

答案 0 :(得分:3)

显然这是XUnit配置的问题。 app.config中的以下部分更改了AppDomain配置:

  <appSettings>
    <add key="xunit.appDomain" value="required" />
  </appSettings>

然后测试运行器抱怨丢失了xunit.execution.desktop.dll。将文件放入执行目录后,XUnit运行器会使用bindingRedirect设置来表示app.config。