Windows上的跨平台编程

时间:2009-02-04 12:27:42

标签: c# .net mono cross-platform

两个问题:

  1. 有没有办法在Microsoft Visual Studio上编写跨平台程序?

  2. 如果没有,那么我可以在VS2008上编写一个C#应用程序并使用MonoDevelop重新编译它并让它工作吗?

8 个答案:

答案 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)

  1. 是的,编写代码,使用Mono在另一个平台上编译和运行。编译时生成IL,Mono可以使用。注意:Mono上没有某些功能。 Delphi Prism是Visual Studio的附加组件,它允许您从VS编写Linux和Mac代码,尽管使用的是对象Pascal语言。
  2. 是的,请参阅与1
  3. 相同的问题

答案 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一样跨平台。