在OSX和Mono上使用C#进行开发

时间:2011-04-25 23:24:24

标签: c# macos mono

我即将开始一个需要我编写c#代码的项目。问题是,我有一台Mac。

我想知道在OSX 10.6上使用mono进行c#开发是否存在任何陷阱

我认为页面很清楚,实现很清晰,但另一方面我读过人们安装VMWare或类似的东西来使用Windows。如果可能的话,我想避免这种情况。

注意

  

我将在一个团队和所有的团队中工作   其他人有Windows机器

由于

5 个答案:

答案 0 :(得分:6)

根据您对HiVoltRock的答案(ASP.NET开发)的评论,我会说Mono 2.10.1MonoDevelop会很好(MonoDevelop的稳定版本工作得很好,但是对于开发而言OS XI更喜欢使用我从Git编译的最新版本。

有一些事情需要考虑,例如文件路径(即:如果windows开发人员正在编写静态路径,例如ApplicationsInstallDirectory + "\data\templates\foo.bar";,则会遇到问题,因为Mac OS上的目录分隔符是正斜杠。如果现有代码使用P / Invoke或其他特定Window的功能,您将遇到麻烦。

最后,如果您的代码库使用需要Windows的第三方库,则可能会导致问题。

作为参考,我们的产品从第一天开始就被设计为要求它在Linux或OS X上的Mono上运行。考虑到这一点,我们确保考虑到跨平台执行的所有内容。如果您要加入现有产品,可能没有给出相同的注意事项,这意味着许多现有代码与Mono不兼容。

Mono Migration Analyser将有助于确定您是否有任何不兼容的代码。

在Mono下有一些关于开发的信息。我们的项目是使用Razor的MVC3,使用NHibernate,StructureMap等运行.NET 4,并且在非Windows机器上开发的问题并不多。

答案 1 :(得分:4)

请注意,Microsoft的.NET库和Mono中的实现“大部分时间都是兼容的”。如果您在团队中工作,您可能会遇到与这些兼容性问题相关的一些问题(同样,如果您正在使用任何第三方插件来编写任何.NET应用程序,那么您可能也会遇到问题。) 。如果您不想运行虚拟机,我只需将其训练到Windows。如果您已经习惯了OSX UI,它可能会破坏您的流程,但如果您的团队其他成员使用的是Windows,我会这样做是为了避免兼容性问题。

答案 2 :(得分:1)

我在Mono上开发的最重要的东西(不可否认是在Linux上)是GUI。大多数无GUI的代码运行得很好。我唯一需要做的就是捕捉一些不同的例外。然而,图形用户界面将是一个完全不同的野兽,所以不要指望那些翻译得很好。

答案 3 :(得分:1)

我强烈建议通过vmware使用windows而不是尝试使用一些不稳定的osx程序进行编码。在Mac上编写数小时代码然后意识到没有任何代码可以在任何Windows机器上工作,或者gui看起来与您的计算机上完全不同,并不是很酷。总是为正确的问题选择合适的工具和语言。此外,视觉工作室非常适合与大多数时间一起工作。

答案 4 :(得分:0)

我遇到了奇怪的内存泄漏和段错误,其中包含在Windows上编译的代码,并按原样放入Mono Linbox。我也有问题用xbuild编译.csproj文件,这些文件有一些xbuild不熟悉的MS怪癖。

如果我没有弄错的话,两个编译器有时会略微不同,这与运行时的细微实现差异有关。这很可能是我遇到的段错误和内存泄漏的原因。

我的底线是,在与运行时相同的平台上编译。所以对于本地测试,你应该没问题(你在你的mac上编译单声道并在mac上运行/测试单声道)。但是不要在你的mac上构建项目,然后将生成的Mono二进制文件发布到运行MS .NET运行时的Windows服务器(反之亦然)。如果你有一个构建服务器,那么最好坚持下去(我们都应该这样做......对吧?)。

如果您的团队没有构建过程,并且您必须构建要发布的二进制文件,那么我将使用Windows VM进行最后一步。