在Windows上适用于Mono的好的集成开发环境

9
我希望在Windows上使用C#开发Win / Linux / Mac的Mono应用程序。是否有任何真正好的(类似于Visual Studio)IDE可供使用?最好的方法是,我可以使用Mono编译器管理Visual C# Express来编译解决方案。
我找到了一个名为“#develop”的IDE,它看起来非常酷,并且具有许多Express版本的Visual Studio没有的功能(如TortoiseSVN、NUnit等插件)。然而,3.*版本不支持Mono,因此您无法再使用Mono编译器编译解决方案。
还有一个名为“MonoDevelop”的IDE。我尝试过它,但它很糟糕。根本无法与Visual Studio相比。没有WinForms设计器,+缺少大量其他功能。我只希望他们放弃MonoDevelop的开发,并为#develop构建插件。
是否有其他足够好的IDE,或者是否可能使Visual C# Express或#develop使用Mono编译器编译解决方案?
编辑:Delphi Prism看起来很酷,但它不是C#。

4
等等,您正在开发跨平台应用程序,却抱怨缺少Windows表单设计器?在Mono中,通常使用GTK或类似的GUI工具包来实现跨平台GUI,而不是winforms。 - Billy ONeal
如果我想创建一个外观漂亮的应用程序,我只需要在设计时看到它。GTK 在 Windows 上看起来并不是很好看。在 Mac 上也是如此。甚至在这里(http://www.mono-project.com/Gui_Toolkits)他们也这么说。(“Gtk+ 应用程序在 MacOS X 上运行像外国应用程序。”) - Paya
1
#Develop是真正的基于Windows的。如果你觉得MonoDevelop不好用,为什么不试着改进它呢? - Lex Li
2
@Lex Li-MSFT:我没有时间去改进MonoDevelop。而且有很多需要改进的地方,我也无法做其他事情了。 :-) - Paya
1
问题在于 #develop 在 Linux 上无法使用,这就是为什么 MonoDevelop 存在的原因,它具有 GTK# 设计器而不是 WinForms 设计器。 - trampster
显示剩余5条评论
5个回答

9
您可以始终使用Visual Studio Express版本(因为您不想支付Mono工具费用)来开发应用程序。现在,Monodevelop将支持编译Visual Studio解决方案,因此只需在VS中开发,偶尔重新在Monodevelop中编译以确保支持即可。
由于Mono现在支持Windows Forms,您可以完全在Visual Studio中开发Windows Forms应用程序,然后仅使用Mono部署它。由于C#编译为IL,所以无论您使用哪个IDE进行开发,都可以在Mono上运行它。

2
@Paja:不是的。这就是Mono和CIL(使用C#生成的内容)的美妙之处。你可以在Windows上使用Mono运行用Visual Studio编译的程序,而无需重新编译。使用Mono进行编译只是帮助你确保你没有做一些Mono不支持的事情...如果你坚持使用标准的C#和Windows表单,它往往会在Mono上“正常工作”——无需重新编译。 - Reed Copsey
你应该可以在Visual Studio中引用它。它是一个有效的程序集。只要确保获取任何依赖项,它就应该工作。 - Reed Copsey
是的,我终于成功引用了程序集并且它可以工作了!它只是不在GAC中,而是在Program Files的Mono文件夹中...我只是找不到Mac的SQLite二进制文件。看起来它已经包含在OS X中,但我不确定。 - Paya
@Reed Copsey:我想使用macpack在Mac上部署我的应用程序,打包时希望手动与已安装在我的Mac上的版本相匹配的SQLite一起打包,这样就可以在其他地方正常运行了。顺便问一下,将Mono与我的应用程序捆绑在一起是否违反了Mono许可证?我不是这个领域的专家,所以我不知道。 - Paya
@Paja:我不是律师,所以不要完全相信我,但Mono的许可证非常灵活。重新分发应该没有问题。你可能需要在Mac上使用Monodevelop重新编译/构建,但你可以在Windows上使用VS进行主要开发。 - Reed Copsey
显示剩余7条评论

8

1
是的,我知道这一点,但它无法在 Express 版本中运行。因此,我需要花费几百美元购买 Visual Studio。 - Paya

3

虽然SharpDevelop 3.2不支持mono,但如果您下载SharpDevelop的源代码,您可以找到一个包含原始mono支持代码的代码示例。如果您构建该示例,则会重新启用SharpDevelop中的mono支持。

决定从主要的SharpDevelop应用程序中删除mono支持,因为仅提供了与mono编译的支持,而MonoDevelop现在可以在Windows上运行。请注意,与MonoDevelop相比,SharpDevelop中的mono支持不提供任何与mono调试器集成的调试功能和GTK#设计工具。


是的,我已经尝试过了,我成功编译了插件。但是在运行插件和构建Mono项目时出现了一些错误。而且我不会去修复一个不再维护的插件。 :-) - Paya
我不会期望你这样做 :) 虽然它可能不在官方发布中,也没有得到积极的维护,但如果你报告任何错误,我会修复它们。 - Matt Ward
我不只是想修复一个错误,我希望插件能够得到维护。#develop是Windows上最好的VS替代品,但如果它能完全支持Mono,那就更好了。虽然我从未编写过任何编译器/调试器,但是将其添加到#develop中真的很难吗?作为编译器,您可以使用Mono编译器,并且如果许可证允许,调试器可以从Mono Develop中复制。 - Paya
它被维护,但仅作为示例。该示例包括使用mono编译器(C#和VB.NET)编译代码的支持,但不支持使用mono调试器调试代码。我还没有研究过MonoDevelop的调试器,因此无法说出实现这一点需要多少努力。它肯定已经在我的TODO列表上很长时间了,但由于其他优先事项(如IronPython支持),它已经降低了优先级。然而,我怀疑这个插件是否能够直接添加到SharpDevelop中。 - Matt Ward

1

1

我认为你最好的选择是使用VS C# Express进行开发,然后使用虚拟机--例如VMWare、Virtual PC、VirtualBox等--来访问Linux(这是MonoDevelop的主要平台,在其上运行效果非常好,与VS相比可媲美)。

甚至有许多下载可用于执行此操作。你甚至可以使用Live CD,只需重新启动计算机即可进入Linux(通常可以无问题地访问Windows分区)。


这正是我现在的做法。 :-) 但如果有一个选项可以直接从IDE在Windows上以Mono运行程序(并且免费),那就太好了,这样我就可以看到它在Windows上是否100%兼容。但我想我会这样解决:在Windows上使用VS /#develop开发SW,然后使用MonoDevelop测试它是否与Mono编译器编译,并且在Windows上以Mono运行是否正常,然后对Mac和Linux执行相同操作。 - Paya

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接