gpt4 book ai didi

f# - 使用 VS 2017 时无法解析对程序集 FSharp.Core 4.4.1.0 的依赖

转载 作者:行者123 更新时间:2023-12-03 10:29:08 25 4
gpt4 key购买 nike

我已经在 VS 2015 和 F# 4.0 (4.4.0.0) 中开发了很长一段时间。

随着 VS 2017 的发布,我想在最新的 VS 中打开解决方案进行开发工作,但仍将项目保留为 VS 2015、F# 4.0、.NET 4.5.2。构建服务器还必须使用 VS 2015 一段时间。

据我内存,这种场景在早期的 VS 版本升级中并没有出现问题,但后来我想我当时并没有使用 F#。

我打开解决方案并尝试编译。我在 C# 应用程序项目中收到此错误。 (还有其他 C# 应用程序,并且至少有一个引用了 F# 库。)

未知的构建错误,“无法解析对程序集 'FSharp.Core,版本 = 4.4.1.0,文化 = 中性,PublicKeyToken = b03f5f7f11d50a3a”的依赖,因为它尚未预加载。使用 ReflectionOnly API 时,必须通过 ReflectionOnlyAssemblyResolve 事件预加载或按需加载依赖程序集。

我在解决方案中的所有 F# 项目都是 4.0 (4.4.0.0)。我仔细检查了一遍。

为什么会这样?

最佳答案

搜索“4.4.1.0”,发现C#项目的“obj”文件夹中有一个.exe.config文件,与app.config不同。它具有不在项目的 app.config 中的额外信息。

<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.4.1.0" newVersion="4.4.1.0" />
</dependentAssembly>
</assemblyBinding>

为什么这是自动附加的,为什么只在这个特定的 C# 项目中?

我试图将该部分复制到项目的 app.config 中,并在两个地方将其更改为 4.4.0.0,但这不起作用。也尝试使用“4.4.1.0”作为旧版本的上限,将“4.4.0.0”作为新版本,但还是不行。同样的编译器错误。

然后我删除了该部分,并在 C# 项目中引用了 FSharp.Core 4.4.0.0。这终于摆脱了编译错误。

我运行了程序。它因此异常而崩溃。

未处理的异常:无法加载文件或程序集“FSharp.Core,版本=4.4.1.0,文化=中性,PublicKeyToken=b03f5f7f11d50a3a”或其依赖项之一。定位的程序集的 list 定义与程序集引用不匹配。 (来自 HRESULT 的异常:0x80131040)

我重新插入了重定向的部分,现在程序运行良好。

总结一下,我添加了对 FSharp.Core 4.0 的引用,重定向看起来像这样
<bindingRedirect oldVersion="0.0.0.0-4.4.1.0" newVersion="4.4.0.0" />

通过这些修改,该解决方案在 VS 2015 中仍能按预期工作。

关于f# - 使用 VS 2017 时无法解析对程序集 FSharp.Core 4.4.1.0 的依赖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42665926/

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