F#到C#的自动翻译
本文关键字:自动翻译 | 更新日期: 2023-09-27 18:24:35
我想知道是否有F#代码到C#代码的自动转换在实践中效果良好。原因是我们在F#中有相当多的逻辑,我们希望将其用于Android、MonoMac、MonoTouch的Mono。。。为每个平台创建一个应用程序。由于那些不直接支持F#,如果我们能继续在F#中编程逻辑,并用C#和这些工具来完成GUI部分,那将是一件好事。
有人知道什么吗?谢谢
为什么需要翻译代码?编译后的托管二进制文件应该能很好地与Mono配合使用。只需将其添加到项目中即可。
你可以使用ILSpy这样的工具将代码反编译成另一种语言,但这并没有太大变化——这就是将不同语言编译成.NET CIL的全部意义。
任何同时支持F#和C#的.NET反编译器都可以做到这一点。
例如:Cecil。分解器和ILSpy。
Steve Gilham有一些关于使用Cecil.Decompiler和ILSpy将F#反编译为C#的好文章,以及其他一些关于F#和C#代码之间互操作性的博客文章。那些文章可能对你有帮助。
通常,当我想知道F#代码下发生了什么时,我只使用ILSpy
,当反编译到C#时,它会更明确。将F#代码编译到一个单独的dll中并在C#代码中使用它是最好的方法。
理论上,您应该能够在Android版的MonoTouch和Mono上运行F#代码。在实践中。。。事情更复杂。:-)
MonoTouch和MonoforAndroid提供了自己的基类库,这些库与desktop.NET不兼容(它们在很大程度上是Silverlight的超集)。为了让F#代码在MonoTouch和Mono for Android下运行,您必须首先根据适当的程序集编译F#代码。
此外,您需要删除FSharp.Core.dll
上的所有依赖项(这可能吗?)或端口FSharp.Core.dll
,以便它可以针对Android程序集的等效MonoTouch和Mono执行。我确信这是可能的,但我不知道这是否已经完成,也不知道这会有多容易
一旦您删除或完成了FSharp.Core.dll
和相关的依赖项,就应该能够将所有必需的程序集(F#程序集加上依赖项)添加到项目中并运行。
刚刚发现一个F#的博客文章和Mono的所有东西:MonoTouch&F#PI和MonoTouch&F#P II
只需使用--standalone编译F#库(Properties | Build | Other flags |--standalone]),它就会将FSharp.Core.dll合并到库中。