gpt4 book ai didi

c# - 使用或不使用程序集重定向都找不到 F# Core 方法。我还可以做些什么?

转载 作者:太空宇宙 更新时间:2023-11-03 14:41:25 30 4
gpt4 key购买 nike

我有一个将 FParsec 用作 NuGet 包的库。引用此库的单独 C# 项目不断抛出错误:

System.MissingMethodException: 'Method not found: 'ParserResult`2<!!0,Microsoft.FSharp.Core.Unit> FParsec.CharParsers.run(Microsoft.FSharp.Core.FSharpFunc`2<FParsec.CharStream`1<Microsoft.FSharp.Core.Unit>,FParsec.Reply`1<!!0>>, System.String)'.'

C# 项目以 .Net 4.6.1 为目标,而使用 FParsec 的库以 4.5 为目标。注意我仍然遇到同样的问题,即使这个库的目标是 4.6.1。

自动生成绑定(bind)结果已开启。此外,我尝试手动设置绑定(bind)重定向,例如,

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

我希望自动生成绑定(bind)选项能够正确处理这个问题。

最佳答案

您似乎遇到了我向 F# 团队报告的问题:https://github.com/dotnet/fsharp/issues/7718 .

总而言之,FParsec 是针对 FSharp.Core 版本(版本 4.4.0.0)编译的,当您在项目的其余部分中定位更新版本的 FSharp.Core 时,或者使用bindingRedirect 如您所示,将出现此错误。

一个解决方案是将所有内容降级到旧版本的 FSharp.Core(即与编译 FParsec 时使用的版本相同)。更好的解决方案是下载 FParsec 源代码并针对较新版本的 FSharp.Core 进行编译。为此:

  • 下载 FParsec from Github 的来源
  • 打开你自己的解决方案,或者一个空的解决方案
  • 从目录Build\VS11,添加“现有项目”FParsec.csprojFParsecCS.csproj
  • 从 csproj 文件中手动删除 FParsec 中的 FSharp.Core 引用(编辑器不允许这样做)。从 FParsecCS 中删除它。
  • 将来自 NuGet 的 FSharp.Core 的任何版本(我测试了 4.3.4 及更高版本)添加到 FParsec 和 FParsecCS 项目
  • 重新编译
  • 从您的项目中引用新的二进制文件(或新项目)

异常现在将消失。

关于c# - 使用或不使用程序集重定向都找不到 F# Core 方法。我还可以做些什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56744395/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com