You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

能否在.NET Framework 4.8中引用4.0及以上版本的FSharp.Data?

问题根因

报错核心是F#类型提供器的设计时加载逻辑不会读取项目app.config内的绑定重定向规则,你配置的FSharp.Core 6.0重定向仅对程序运行时生效,编译阶段加载FSharp.Data.DesignTime时,系统仍会尝试匹配该程序集依赖的4.7.0.0版本FSharp.Core,进而触发加载失败。

解决方案

按以下步骤操作即可解决:

  • 调整paket包引用规则,强制FSharp.Data使用适配.NET Framework的版本,而非netstandard2.0版本。在paket.dependencies文件中修改FSharp.Data的引用规则为:
    nuget FSharp.Data framework: net48
    
    修改完成后执行paket install更新项目引用。
  • 给F#编译器配置文件添加FSharp.Core绑定重定向:
    找到本地使用的F#编译器对应配置文件,Visual Studio 2022默认路径为C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\IDE\fsc.exe.config,若使用独立F# SDK编译,路径一般为C:\Program Files (x86)\Microsoft SDKs\F#\<你的F#版本号>\Framework\v4.0\fsc.exe.config。在该配置文件的<runtime><assemblyBinding>节点下添加如下规则:
    <dependentAssembly>
      <assemblyIdentity name="FSharp.Core" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
      <bindingRedirect oldVersion="0.0.0.0-65535.65535.65535.65535" newVersion="6.0.0.0" />
    </dependentAssembly>
    
  • 若你的项目为SDK风格的.NET Framework项目,可在fsproj的<PropertyGroup>节点添加以下配置,进一步适配绑定重定向规则:
    <GenerateBindingRedirectsOutputType>true</GenerateBindingRedirectsOutputType>
    
  • 清除缓存重新编译:执行paket clear-cache,删除项目的bin、obj文件夹,重启IDE后重新编译即可正常运行。

内容的提问来源于stack exchange,提问作者Hobitten

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 14:57:04