通过Linux和Mono为Windows编写.NET

时间:2009-09-30 14:26:36

标签: c# .net windows linux mono

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

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

感谢。

4 个答案:

答案 0 :(得分:3)

我认为你可以,只有另一种方式(在带有.NET的Windows上开发并在单声道上运行)是有问题的,因为在单声道中缺少一些库实现。但是,除非你是一个开源的艺术家,否则你并没有从mono(和monodevelop,IDE)获得任何东西。 (另外,关于开源社区中这些工具的开放性有some concerns

答案 1 :(得分:2)

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

我只是意识到Mono框架不是最新的,但从我看到的情况来看它非常好。

我还应该补充一点,我自己没试过,但我不相信阻止你的障碍。

请记住,CSC(C#编译器是免费的(Windows SDK的一部分)和Visual Studio Express版本以及SharpDevelop(也是OSS))这样有很多选项。

答案 2 :(得分:2)

我认为答案比那更微妙。您可以将Linux / Mono视为.NET目标平台,就像Windows XP with .NET 2.0,Windows Vista with .NET 3.5等。根据您的想法,完全可以开发.NET代码与多个平台兼容。

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

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

当然,测试是另一个问题......因为你有完全不同的实现,你仍然需要在Windows上进行大量的测试。请记住,Java的设计目标是平台独立性,但.NET是语言独立性,而不是平台独立性。所以,你会前往汹涌的水域......

答案 3 :(得分:0)

它应该适用于某些项目,但在某些时候你会想要利用某些技术,如MSMQ或其他一些Windows中心服务,这将逐渐迫使你在开发过程中走向Windows平台。