在多个平台上使用.NET DLL

时间:2013-08-08 12:51:52

标签: c# android ios dll monogame

我正在使用C#创建一个使用MonoGame的游戏,我希望在多个平台上使用它(我知道MonoGame可以做到)。

有没有办法在C#中创建.dll并从其他操作系统(最好是iOS,Android和MacOS)加载它而无需重新编译库?我准备为每个平台编写一个“加载器”应用程序,但不想重写整个项目。

我希望有一种方法可以在这些平台上加载.net dll(即加载游戏)的功能,而无需使用MonoTouch等付费产品。

2 个答案:

答案 0 :(得分:2)

基本上.NET / Mono程序集都被编译为CIL代码,这是一个ECMA标准。

但是,您仍然必须以不依赖于操作系统细节的方式对游戏进行编程。

  • 不要引用某些.NET程序集(即没有WCF,因为它只有有限的WCF支持,根本没有WPF,没有WWF)
  • 不要引用特定于操作系统的DLL(即没有P / Invokes到kernel32.dll等。
  • 不要使用OS特定的pathes或使用预处理器指令来制作OS特定的代码(是的,这将需要重新编译,你可能不会轻易解决这个问题)

Mono上的线程有一些捕获,因此您可能必须使用预处理器指令制作特定于平台的代码。

老实说,我没有看到必须重新编译代码的问题,如果它清楚地写了,只需要在解决方案文件中添加一个新项目并设置预处理器标志。然后,您所要做的就是编译解决方案并在bin文件夹中包含多个DLL。没有人说你必须重写完整的项目(除非项目已经完成并且有任何提到的依赖关系),在这种情况下......你自己的错误是不必考虑它开始开发之前。

您只需使用所需的Mono Runtime部署您的应用程序(在iOS等)。为此,您可能需要像Xamarin这样的东西或连接自己的Mono运行时

参考链接: http://www.mono-project.com/Compatibility http://www.mono-project.com/MoMA

答案 1 :(得分:1)

您可以查看Xamarin-Framework。但是你总是需要重新编译你的项目。 Xamarin

  

在这些平台上,不使用MonoTouch等付费产品。

这很难。