8

在 .Net 4.5 运行时使用 FSharp.Core 版本 4.4.0.0编译 Alea GPU 教程时出现错误:https ://github.com/quantalea/AleaGPUTutorial 在 Visual Studio 2015 社区更新 2 中。

Fody:发生未处理的异常:异常: 无法加载文件或程序集“FSharp.Core,版本=4.3.1.0,Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a”或其依赖项之一。该系统找不到指定的文件。

堆栈跟踪:

at Alea.CUDA.AOTCompileLogger..ctor(List`1 logs, Int32 warningCount, Int32 errorCount)
at Alea.CUDA.AOTCompileLogger..ctor()
at Alea.CUDA.AOTCompiler..ctor()
at Alea.CUDA.Fody.ModuleWeaver.Execute()
at lambda_method(Closure , Object )
at InnerWeaver.ExecuteWeavers() in c:\Code\Fody\FodyIsolated\InnerWeaver.cs:line 164
at InnerWeaver.Execute() in c:\Code\Fody\FodyIsolated\InnerWeaver.cs:line 82
Source:
Alea.CUDA
TargetSite:
Void .ctor(System.Collections.Generic.List`1[Alea.CUDA.AOTCompileLogEntry], Int32, Int32)   

无论我如何bindingRedirect在所有可能的.config文件中设置选项,它都会在 Tutorial.Cs 和 Tutorial.Fs 项目中发生。看起来这些重定向被 Fody 引用加载机制忽略了。

但是,即使将教程解决方案设置为 FSharp.Core 4.3.1.0 也不允许我编译它。错误是一样的。

您对如何解决它有任何想法吗?

4

5 回答 5

10

我已经成功构建了几次,但它们完全是随机的,我无法弄清楚是什么导致错误消失。

也许是多次以管理员身份重新启动 Visual Studio 的某种组合。

我也尝试过FSharp.Core.dll来自不同来源的随机结果:

官方的

AleaGPUTutorial中是这样写的:

在 Visual Studio 中构建之前,建议您在打开解决方案之前还原包。这是由于在 F# 项目中使用 Fody 的一个已知问题。您可以在安装手册(尤其是备注部分)中找到有关此问题的更多详细信息。

从手册:

Alea GPU 是用 F# 实现的,因此它使用 F# 运行时。如果您使用 C# 或 VB 的 Alea GPU,您还需要 3.1 或更高版本的FSharp.Core.dll程序集。如果您使用 Visual Studio,您可以通过导航到找到该程序集Add Reference -> Assemblies -> Extensions -> FSharp.Core 4.3.1.0.或者,您可以将FSharp.Core NuGet 包添加到您的项目。

我完全按照所写的进行了操作,但再次获得了随机构建成功。

最后的希望

当您只有 4.3.1 时如何使用 FSharp.Core 4.3.0

我曾经有一个天真的假设,即当您安装 F# 3.1 时,它会自动添加从 FSharp.Core 4.3.0.0 到 4.3.1.0 的重定向,或者可能确保 FSharp.Core 4.3.0.0 也可用。显然,我已经习惯了语义版本控制,这绝对不是用于 F# 的版本控制方案

于 2016-04-30T09:10:47.897 回答
0

要解决此问题,请从 Nuget 控制台:

Install-Package FSharp.Core -Version X

其中 X 是您需要的版本。您可以在此处查看版本:FSharp.Core

确保您的项目设置为 x64:

在此处输入图像描述

在此处输入图像描述

于 2019-08-09T23:14:56.910 回答
0

好的,这对我有用。您所要做的就是将 Fsharp.core 4.3.1.0 添加到 gac。

可以在此处找到有关如何执行此操作的说明:

http://forum.codio.com/t/solved-could-not-load-file-or-assembly-fsharp-core-version-4-3-0-0-error/1774

于 2016-07-13T20:54:02.240 回答
0

在您的项目文件中:“项目名称\packages\ Alea.version \tools”中有一堆.dll 文件,包括FSharp.Core,由于某种原因,Visual Studio 没有复制这些文件。将该 .dll 复制到包含项目构建的 bin\Debug 目录中,它应该可以正常工作。

于 2021-03-11T22:55:18.900 回答
0

当我第一次尝试加载一个 Alea 3.0.3 样本时,我也遇到了类似的问题。我花了几分钟才弄清楚,但这对我有用,并且运行示例文件非常简单。

1) 使用 Visual Studio 包管理器控制台运行随 sample.zip 文件提供的 ./paket_setup.bat 2) 从示例项目解决方案文件夹 ./packages/FSharp.Core/lib/net40/FSharp 下添加 FSharp.Core.dll .Core.dll

在此之后,项目运行没有问题。

我不需要在 GAC 中安装任何东西

于 2017-08-17T03:25:18.730 回答