我即将开始一个需要编写C#代码的项目,但我的电脑是Mac。
我想知道在OSX 10.6上使用Mono进行C#开发是否存在任何问题。
我认为页面清晰地说明了实现方式很简洁,但另一方面我读到有人安装VMware或类似软件来使用Windows。如果可能的话,我想避免这种情况。
注意
我将与团队一起工作,其他所有人都有Windows机器。
谢谢
我即将开始一个需要编写C#代码的项目,但我的电脑是Mac。
我想知道在OSX 10.6上使用Mono进行C#开发是否存在任何问题。
我认为页面清晰地说明了实现方式很简洁,但另一方面我读到有人安装VMware或类似软件来使用Windows。如果可能的话,我想避免这种情况。
注意
我将与团队一起工作,其他所有人都有Windows机器。
谢谢
ApplicationsInstallDirectory + "\data\templates\foo.bar";
,因为Mac OS上的目录分隔符是正斜杠,所以可能会遇到问题。此外,如果现有代码使用P/Invoke或其他特定于Windows的功能,则您会遇到麻烦。Mono迁移分析器将帮助确定您是否有任何不兼容的代码。
关于在Mono下开发,有一些误解。我们的项目是一个MVC3 Razor应用程序,在非Windows机器上运行.NET 4,使用NHibernate、StructureMap等,开发过程中没有太多问题。
我曾经遇到过一些奇怪的内存泄漏和段错误问题,这些问题是在Windows上编译的代码直接放到Mono Linbox上运行时出现的。我还遇到过使用xbuild编译.csproj文件时出现了一些MS怪癖,xbuild并不熟悉。
如果我没记错的话,这两个编译器有时会做一些略微不同的事情,这与运行时的微妙实现差异有关。这很可能是我遇到的段错误和内存泄漏的原因。
我的底线是,在与运行时相同的平台上进行编译。因此,对于本地测试,你应该没问题(在你的Mac上使用Mono编译并在你的Mac上运行/测试)。但是不要在你的Mac上构建项目,然后将生成的Mono二进制文件发布到运行MS .NET运行时的Windows服务器上(或反之亦然)。如果你有一个构建服务器,最好坚持使用它(我们都应该这样做...对吧?)。
如果你的团队没有构建流程,你必须构建要发布的二进制文件,那么我建议你使用Windows虚拟机进行最后一步操作。