2011-04-08 84 views
3

我想将使用Visual Studio 2008(.NET 3.5 C#)编写的应用程序的服务器组件移植到Linux,并且认为我会使用Mono,以便保留单个代码库。在Mono和Visual Studio之间共享源代码

从理论上讲,我们只会更新VS代码,但可以想象,两者之间可能存在一些细微的差异,以保证它们的平台功能。

是否有任何提示/教程/应用程序来帮助保持两个检查?

+1

把不同的实现放在它们自己的程序集中并实现一个通用接口 – kenny 2011-04-08 00:32:39

+0

@kenny,就像在IOC中一样?这将需要两个独立的码流,两者都需要单独维护,难道不是吗?不是最好的编码习惯。 – johnc 2011-04-08 00:38:54

+3

保持差异是一个很好的编码实践IMO。通过一堆#IF乱七八糟的东西比趟更好。 – kenny 2011-04-08 00:44:37

回答

3

你有很多与Mono不兼容的代码吗?理想情况下,您希望保持大部分代码一致,并且在Mono和MS.NET之间需要检查的情况很少。

如果你需要Mono和MS.NET完全不同的代码,你应该使用单独的通用接口实现。例如,我们在我们的应用程序中使用服务总线,可以在MSMQ或ActiveMQ之间进行交换。我们在Mono发行版中使用ActiveMQ,在MS.NET发行版中使用MSMQ。

你说你需要将应用程序“移植”到单声道 - suggets中有很多不兼容的代码。如果您广泛使用P/Invoke或其他Windows专用功能,则会更困难。

我们不保留单声道版本和MS.Net版本,我们有一个单独的代码树,可以在其中进行编译。对于具有UI的特定于平台的程序,我们为每个平台使用一个独立的UI项目(通常是Windows的WPF和Linux/Mac的GTK--尽管我们已经开始关注MonoMac for Mac)。除此之外,我们所有的代码都是常见的。平台之间没有任何东西需要维护。

+0

实际上,你甚至不需要为Mono编译它:你可以使用Linux上的VS构建,只需加载其他GUI组件。 – skolima 2011-04-08 08:08:48

+0

有道理,谢谢,我只是对选项有一种感觉 – johnc 2011-04-14 01:02:54