两个问题:
有没有办法在Microsoft Visual Studio上编写跨平台程序?
如果没有,那么我可以在VS2008上编写一个C#应用程序并使用MonoDevelop重新编译它并让它工作吗?
答案 0 :(得分:7)
1 - 我不这么认为。不是没有Mono这样的东西。
2 - 是的,你可以,但是Mono没有涵盖所有的框架 - 他们正在努力。 最好的办法是使用Mono Migration Analyzer进行检查。 Mono Migration Analyzer(MoMA)工具可帮助您识别Mono上可能遇到的问题 - http://mono-project.com/MoMA。
我发现我的大部分.NET 2.0应用程序都可以转换,但您可能需要进行一些调整。
答案 1 :(得分:4)
您始终可以使用C ++和QT。很快QT将在LGPL许可证(从4.5版本)发布,这将给予更多自由。
使用免费QT许可证的唯一限制是您没有与VS集成。然而,这可以通过使用例如来处理。 CMake(将生成VS解决方案文件)。
答案 2 :(得分:2)
答案 3 :(得分:2)
我同意Joe90,他遗漏了一件事:MonoDevelop可以编译.sln和.csproj文件,因为it has a MSBuild implementation。
所以在您的代码中指出MoMA,如果您获得了绿灯,它应该在MonoDevelop中按原样编译。
作为一名MSCLR迷,我不得不承认Mono对某些关键功能(主要与加密有关)有一些“更好”的实现。您将从这些中获得更多的可用性。
需要注意的另一件事是微妙的逻辑错误。如果一个类在Mono中实现,那并不意味着它的行为与MSCLR相同(Mono是一个冷室实现,因此它们不使用原始源代码)。这是您从单元测试良好的代码库中获得良好结果的地方。
为了清楚地表明你应该期待什么,我记得在AgsXMPP repository中看到了大量#if MONO。
答案 4 :(得分:1)
理想情况下,您可以编写C#应用程序并在Mono平台上运行它。但是,这将取决于已经移植到Mono的MS .NET库。
以防万一,没有语言限制,您可以考虑使用其他语言,如Java,Python,Ruby等。
祝你好运!
答案 5 :(得分:0)
正如许多其他人所说,您的成功将取决于您使用的库。 Mono确实有Winforms但我建议你也看看GTK#http://www.mono-project.com/GtkSharp作为你的窗口库。如果你使用GTK#,你将使用一个非逆向工程的库(因为Winforms是Mono)。
我的理解是“非gui”.NET 2.0的东西与Mono的最新版本非常相似
答案 6 :(得分:0)
你不需要单声道开发,单声道的整个想法就是你可以为.net开发并且在mono和.net上使用相同的程序集,只要你只使用以单声道实现的东西。
不起作用的东西: PInvoke的, WPF, linq to SQL
可以使用的东西: .net 2.0, c#3.0(包括linq到对象和linq到xml), 的WinForms
答案 7 :(得分:0)
如果您在Silverlight中编写应用程序,任何拥有Web浏览器和Silverlight插件的人都可以访问您的应用程序。这就像你将使用.NET一样跨平台。