Alea GPU教程没有使用FSharp.Core 4.4.0.0在VS 2015 Update 2上进行编译

时间:2016-04-02 11:16:03

标签: c# f# aleagpu

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

Fody:发生了未处理的异常: 例外: 无法加载文件或程序集' FSharp.Core,Version = 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)   

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

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

您对如何修复它有什么想法吗?

5 个答案:

答案 0 :(得分:9)

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

也许这是将管理员重新启动多次作为管理员的一些组合。

此外,我也尝试了来自不同来源的FSharp.Core.dll随机结果:

官方

AleaGPUTutorial中写道:

  

在Visual Studio中构建之前,建议您在打开解决方案之前还原软件包。这是由于Fody与F#项目一起使用的已知问题。您可以在installation manual (especially the Remarks section))中找到有关此问题的更多详细信息。

来自手册:

  

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包添加到项目中。

我完成了所写的内容,但只获得了随机构建成功。

最后的希望

How to use FSharp.Core 4.3.0 when all you have is 4.3.1

  

我曾经天真地假设当你安装F#3.1时,它会自动将FSharp.Core 4.3.0.0的重定向添加到4.3.1.0,或者确保FSharp.Core 4.3.0.0也可用。显然,我已经习惯了语义版本控制,which is definitely not the versioning scheme used for F#

答案 1 :(得分: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

答案 2 :(得分:0)

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

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

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

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

答案 3 :(得分:0)

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

[JsonIgnore]

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

确保您的项目设置为x64:

enter image description here

enter image description here

答案 4 :(得分:0)

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