【问题标题】:F# Binding Redirect not working for F# 4.3.0-4.3.1F# 绑定重定向不适用于 F# 4.3.0-4.3.1
【发布时间】:2015-09-25 15:14:55
【问题描述】:

我在 VS 2012 中有一个 F# 项目,它具有 F# 核心 4.3.0 和 .net 4.5.0,它通过一个 nugget 包依赖于 FSharp.Data。最近,我们分支了一个新版本的软件,并更改了该分支上的 .net 目标和 F# 核心版本,因此该项目现在针对 F# 核心 4.3.1 和 .net 4.5.1。

不幸的是,在运行时我收到以下错误:

{"[A]Microsoft.FSharp.Core.FSharpOption`1[FSharp.Data.Runtime.BaseTypes.XmlElement] 无法转换为 [B]Microsoft.FSharp.Core.FSharpOption`1[FSharp.Data.Runtime .BaseTypes.XmlElement]。类型 A 源自位置 'C:\Windows\Microsoft.Net\assembly\GAC_MSIL \FSharp.Core\v4.0_4.3.0.0__b03f5f7f11d50a3a\FSharp.Core.dll'。类型 B 源自 'FSharp.Core, Version=4.3.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' 在上下文 'Default' 中位置'C:\Script\AutomatedTestLauncher5.4\FSharp.Core.dll'。"}

按照following stackoverflow question's answer,我尝试在我的 App.config 文件中创建以下绑定重定向:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.1" />
  </startup>
  <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>
    </assemblyBinding>
  </runtime>
</configuration>

不幸的是,我又遇到了同样的错误。有没有办法解决这个问题,还是我必须找到另一个框架来做我想做的事情,而不是 FSharp.Data?

【问题讨论】:

  • 我注意到您似乎从自动化测试脚本中获得了异常。您使用的是哪个测试运行器?它会在 .config 文件上找到吗? (这只对 .exe 文件自动发生。)
  • @MarkSeemann 感谢您的评论,您让我阅读了错误消息,我注意到错误指向来自自动测试启动器的 F# 核心,而不是我认为的其他项目一个问题。似乎该自动化测试脚本(它调用了我遇到该错误的另一个项目)使用 F# core 4.3 而不是我想象的 4.3.1,这可能会导致问题。

标签: .net f# dependencies f#-data assembly-binding-redirect


【解决方案1】:

给我带来问题的项目正在被另一个项目调用,而我没有更改该项目的绑定重定向。我做到了,它解决了问题。

【讨论】:

    猜你喜欢
    • 2012-07-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-29
    • 1970-01-01
    • 1970-01-01
    • 2016-11-22
    • 1970-01-01
    相关资源
    最近更新 更多