Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/190.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
动态编译C#_C#_Android_Xamarin.android - Fatal编程技术网

动态编译C#

动态编译C#,c#,android,xamarin.android,C#,Android,Xamarin.android,monodroid可以用于在Android设备上编译C#代码吗? 我想在我的Android平板电脑上运行C#代码,monodroid看起来是可能的解决方案,但我没有发现monodroid编译器是否只能在windows/mac或Android上运行的任何通知。编辑:请参阅Greg Shackles的评论,他将进一步介绍这一过程并纠正我的误解 有一款Android应用程序可以做到这一点,我以前也用过。我不能肯定作者是否在Android上使用了Mono(一点也不奇怪)。也许你可以联系该应用程序的作者。

monodroid可以用于在Android设备上编译C#代码吗? 我想在我的Android平板电脑上运行C#代码,monodroid看起来是可能的解决方案,但我没有发现monodroid编译器是否只能在windows/mac或Android上运行的任何通知。

编辑:请参阅Greg Shackles的评论,他将进一步介绍这一过程并纠正我的误解

有一款Android应用程序可以做到这一点,我以前也用过。我不能肯定作者是否在Android上使用了Mono(一点也不奇怪)。也许你可以联系该应用程序的作者。然而,据我所知,Mono for Android预先编译DLL并将其转换为Java,或者在打包/部署之前以某种方式将其连接到Java接口。我不知道在平台上运行时通过编译器生成程序集是否会产生一个可用的现成程序集,您可以加载它

除此之外,我知道在运行时发出IL(而不是编译DLL)的伪代码生成器在我使用它们时工作。特别是,我正在为Android使用Mono上的C#端口。也许那样的东西就足以满足你的需要了


最后,研究Mono自己的编译CodeDOM特性。据我所知,它有更好的运行时代码编译器服务(类似于C#5将带给我们的);也许它也适用于Android版的Mono。

我本来打算把这篇文章作为对Chris Sinclair答案的评论,但我想这篇文章的篇幅足够长,因此它可能是一个单独的答案

我写了C#to Go,所以我可以在那里提供一些评论。事实上,它是用Android的Mono编写的。然而,说Mono for Android将C#转换或编译为Java是不正确的。应用程序中的C#代码运行在Mono运行时之上,可调用接口用于在运行时之间来回对话(有关更多详细信息,请参阅)

当我去年第一次发布C#to Go时,我写了一篇文章描述了我是如何将它组合起来的。基本上,我使用的是Mono的C#编译器服务的一个版本,它是我根据Mono for Android配置文件编译的。该应用程序的所有源代码也是


这不是一个完美的解决方案,因为当前的实现存在一些问题(其中一些问题在博客文章中有详细说明)。由于Mono运行时出现问题,目前我无法支持在应用程序中创建/编译类。这是一个记录在案的问题,已在Mono的后续版本中修复,但由于Mono for Android仍然基于Mono 2.10,因此尚未得到这些修复。我的理解是,今年晚些时候,Xamarin将开始致力于将Mono for Android(以及MonoTouch)升级到Mono 2.12,这也将带来这些修补程序,再加上机箱中的C#编译器服务,避免像我一样需要将其作为单独的库引入。Mono for Android不会将C#预编译成Java,所以那部分是不正确的。我是《C#to Go》的作者,所以我刚刚发布了一个答案,对该应用程序也有了一些了解。感谢insight@GregShackles,以及《C#to Go》上的出色工作!