【发布时间】:2010-12-20 01:32:54
【问题描述】:
编写可在 .NET(Windows)和 Mono(Linux)上交叉编译的代码的最佳实践是什么?尽管我对 .NET 非常熟悉,但我对 Mono 及其所有问题的经验并不丰富。有没有人看过一篇关于这方面的好博客文章或最佳实践论文,但我无法挖掘出来?我会坚持使用 C# 3.0 级别的功能。
我首先关心的是互操作,因为我需要调用一些本机代码。 接下来是处理诸如 Mono.XXX 之类的命名空间的最佳方法。我应该使用一堆#if吗?隔离每个平台程序集中的代码?
任何有关架构和设计的建议将不胜感激! 如果您有在 Visual Studio(任何版本)中为 Linux/Mono 进行交叉编译的经验,我也会对此感兴趣。
【问题讨论】:
-
交叉编译是错误的说法,你编译一次,然后在两个平台上使用。
-
我不认为这是正确的,因为 Mono 有许多 Mono.* 命名空间等。也许在一个完美的世界里?
-
好吧,我制作了一个没有任何 P/Invoke 的 WinForms 应用程序(听起来很简单,但很难避免 P/Invoke),它在 Linux 上运行得非常好,与 VS2010 生成的相同的 .exe 程序集,它甚至使用了全新的 .NET 4 功能。