F#到C#的自动翻译

本文关键字:自动翻译 | 更新日期: 2023-09-27 18:24:35

我想知道是否有F#代码到C#代码的自动转换在实践中效果良好。原因是我们在F#中有相当多的逻辑,我们希望将其用于Android、MonoMac、MonoTouch的Mono。。。为每个平台创建一个应用程序。由于那些不直接支持F#,如果我们能继续在F#中编程逻辑,并用C#和这些工具来完成GUI部分,那将是一件好事。

有人知道什么吗?谢谢

F#到C#的自动翻译

为什么需要翻译代码?编译后的托管二进制文件应该能很好地与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合并到库中。