.NET/MONO交叉编译的最佳实践

Wil*_* Am 14 .net mono

编写可以在.NET(windows)和Mono(linux)上交叉编译的代码的最佳实践是什么?虽然我对.NET非常熟悉,但我对Mono及其所有问题都没有经验.有没有人看过关于这个的好博客文章或最佳实践论文,我还没有能够挖掘出来?我会坚持使用C#3.0级别的功能.

与我有关的事情首先是Interop,因为我需要调用一些本机代码.接下来是处理名称空间的最佳方法,例如Mono.XXX.我应该使用一堆#if吗?隔离每个平台程序集中的代码?

任何有关建筑和设计的建议都将不胜感激!如果你在visual studio(任何版本)的Linux/Mono交叉编译方面有任何经验,我也会对此感兴趣.

Ree*_*sey 7

最大的问题是坚持Mono支持的API.使用Mono中的Visual Studio Integration支持可以为此提供很多帮助,因为您可以在所有平台上始终以Mono为目标.

针对您的具体问题:

1)互操作 - 你需要坚持P/Invoke.尝试将其隔离到单独的平台特定程序集中.这导致2:

2)使用#if - 我会避免这种情况,并且更喜欢使用可扩展性模型.Mono支持Managed Extensibility Framework,它提供了一种在运行时"插入"特定于平台的代码的好方法.