通过Linux和Mono编写.NET for Windows

很长一段时间以来,我主要在Linux和Mac上开发了使用开源语言,工具包等。 不过,一个新的项目即将推动我进入.NET世界。 而且,.NET世界的产品将被部署到Windows基础架构上。

在我看来,由于底层的体系结构差异,我做了一个假设,我不能在Linux上使用Mono来开发这种平台组合,但这只不过是一个不知情的假设。 有人可以validation或揭穿这个假设吗?

谢谢。

我认为你可以,只有另一种方式(在.NET上开发,在单声道上运行)是有问题的,因为在单声道缺乏一些库实现。 然而,除非你是一个开放源码的热衷者,否则你不会从单声道(和monodevelop,IDE)中获得任何东西。 (另外,开源社区对这些工具的开放性也有一些担忧 )。

该框架应该从平台差异中抽象出你,我相信Mono生成MSIL代码,所以没有理由不能在Linux或Mac上为Windows开发。

我只是意识到,单声道框架是不是最新的,但从我所看到的是非常好的。

我还要补充一点,我自己并没有尝试过,但我不认为有阻挡你的障碍。

请记住CSC(C#编译器是免费的( Windows SDK的一部分), Visual Studio Express版本也是SharpDevelop (也是OSS))为您提供了很多选择。

我认为答案比这个更微妙一些。 您可以将Linux / Mono视为.NET目标平台,就像使用.NET 2.0的Windows XP,使用.NET 3.5的Windows Vista等一样。根据您想要执行的操作,完全可以开发.NET代码这与多个平台兼容。

当微软提交.NET作为标准的ECMA时,提交了一个子集(称为CLS,通用语言规范),它们提供给开发人员。 举一个重要的例子,Windows图形(Forms,ASP.NET等)不是CLS的一部分。 但是,Mono现在支持Windows Forms 2.0,但直到最近才出现。

所以,基本上,你必须密切关注你需要什么功能,如果你喜欢生活在Windows技术的前沿,你将被锁定在使用Mono。 但是,如果您有能力选择要使用的库和语言功能,则可以选择Mono完全支持的一组,并以此方式完成大部分工作。

当然,测试是另一个问题…因为你有完全不同的实现,你仍然需要在Windows上做很多测试。 请记住,Java的设计目标是平台独立性,但.NET是语言独立性,而不是平台独立性。 所以,你会进入严重的水域

那么它应该适用于某些项目,但是在某些时候,您会希望利用某些技术,如MSMQ或其他一些以Windows Centric Service为代表的技术,这将在开发过程中逐渐逼近Windows平台。