C#可以被编译成本地二进制代码么?
可以,只有mono支持。先用mcs或者csc编译成assembly, 再mono --aot 你的assembly, 就可以的。
但是这样的话,默认还是需要原始assembly里面的meta data, 你需要再处理一下你的assembly, 让它变成空壳(也就是只有函数的声明,而没有IL代码,怎么处理,自己想办法:) ), 这样的话。你的IL可以完全被隐藏。不过缺点是,这样生成的native code只能在mono环境下运行。
在FreeBSD/Linux下,你可以直接做aot(ahead-of-time,相对just-in-time), 但是在windows下,你需要动点脑筋了。需要cygwin和gcc才可以的。因为mono在aot的时候,是需要将IL转化为汇编,进一步由gcc里面的汇编器来产生binary code的。为什么只能用gcc里面的汇编器,因为mono产生的汇编代码是at&t格式的,而VS里面的汇编器只认Intel格式的。
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请
点击举报。