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

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

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

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

注意

我将在一个团队工作,所有其他人都有Windows机器

谢谢

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

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

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

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

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

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

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