我编译了CoreCLR和CoreFX,描述了这里。基本上,这是可行的,我可以编译和运行针对CoreCLR的CoreCLR代码。
下一步是尝试编译和运行F#代码。因此,我将FSharp.Core 3.1.2.1添加到项目中,并使用以下命令编译了一个示例应用程序:
fsc ^
--noframework ^
--targetprofile:netcore ^
/r:packages\System.Runtime.4.0.20-beta-22703\lib\contract\System.Runtime.dll ^
/r:packages\System.Reflection.4.0.10-beta-22703\lib\contract\System.Reflection.dll ^
/r:packages\System.Collections.4.0.10-beta-22703\lib\contract\System.Collections.dll ^
/r:packages\System.Diagnostics.Debug.4.0.10-beta-22703\lib\contract\System.Diagnostics.Debug.dll ^
/r:packages\System.IO.FileSystem.4.0.0-beta-22703\lib\contract\System.IO.FileSystem.dll ^
/r:packages\System.Linq.Expressions.4.0.10-beta-22703\lib\contract\System.Linq.Expressions.dll ^
/r:packages\System.Console.4.0.0-beta-22703\lib\contract\System.Console.dll ^
/r:packages\System.Runtime.Extensions.4.0.10-beta-22703\lib\contract\System.Runtime.Extensions.dll ^
/r:packages\System.Runtime.InteropServices.4.0.20-beta-22703\lib\contract\System.Runtime.InteropServices.dll ^
/r:packages\System.Text.Encoding.4.0.10-beta-22703\lib\contract\System.Text.Encoding.dll ^
/r:packages\System.Text.RegularExpressions.4.0.10-beta-22703\lib\contract\System.Text.RegularExpressions.dll ^
/r:packages\System.Threading.Overlapped.4.0.0-beta-22703\lib\contract\System.Threading.Overlapped.dll ^
/r:packages\System.Threading.ThreadPool.4.0.10-beta-22703\lib\contract\System.Threading.ThreadPool.dll ^
/r:packages\FSharp.Core.3.1.2.1\lib\portable-net45+netcore45+MonoAndroid1+MonoTouch1\FSharp.Core.dll ^
/out:runtime\HelloWorld.exe HelloWorld.fs如您所见,我是针对Profile7 of FSharp.Core构建的。当我运行应用程序时,let test = sprintf "Hello, world"语句会失败,但有以下异常:
Unhandled Exception: System.IO.FileNotFoundException: Could not load file or assembly 'System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e' or one of its dependencies. The system cannot find the file specified.
at Microsoft.FSharp.Core.PrintfImpl.PrintfBuilderStack..ctor()
at Microsoft.FSharp.Core.PrintfImpl.PrintfBuilder`3..ctor()
at Microsoft.FSharp.Core.PrintfImpl.Cache`4.generate(String fmt)
at Microsoft.FSharp.Core.PrintfImpl.f@4277-43[T,TState,TResidue,TResult](String key, Unit unitVar0)
at Microsoft.FSharp.Core.PrintfImpl.Cache`4.get(String key)
at Microsoft.FSharp.Core.PrintfImpl.Cache`4.Get(PrintfFormat`4 key)
at Microsoft.FSharp.Core.PrintfModule.PrintFormatToStringThen[TResult,T](FSharpFunc`2 continutation, PrintfFormat`4 format)
at HelloWorld.main(String[] args)我也讨论了这个这里,但是我不知道我做错了什么。我是不是包含了错误的FSharp.Core版本?Profile7 应起作用.
发布于 2015-04-28 19:48:08
在编写本报告时(2015年4月),F#尚未移植到完全支持CoreCLR / CoreFX。
在开发过程中,CoreCLR和CoreFX正在经历许多变化和改进。在接下来的几个月里,流失量将会减少,稳定性会迅速改善,但是在这个时候,在CoreCLR/FX上建造任何实质性的东西,就像在流沙上建造摩天大楼一样。
Mono v.next目前用于构建和运行在LI=联合国大学第九版上的F#,它也在经历许多变化,因为它用来自CoreCLR和CoreFX的程序集和代码替换了Mono平台和框架的大部分代码。
您可能希望跟踪Visual F#问题#387的进度。
您还可能希望跟踪Visual F#问题#336,它讨论了支持x平台工作的CoreCLR上的F#。
Update1:
现在已经发布了F# 4.0,团队正在开发一批新的工作:https://github.com/Microsoft/visualfsharp/issues/563
这些工作项中的关键是将CoreCLR支持添加到F#:https://github.com/Microsoft/visualfsharp/issues/499中。
https://stackoverflow.com/questions/29798696
复制相似问题