可以在ubuntu中运行winforms app吗?

时间:2016-08-23 08:28:00

标签: c# winforms ubuntu deployment mono

我使用.Net framework 4.5C#Visual Studio 2015 Community之上编写了一个应用程序。我是在Win10机器的64 bit操作系统中创建的。

是否有可能在Ubuntu中运行此应用程序?那么如何编译应用程序以使其与ubuntu机器兼容?

我想将其部署为跨平台应用程序,但我很难找到最佳方法。我听说过Mono,但我还不熟悉IDE。

请帮忙。

2 个答案:

答案 0 :(得分:1)

重新。 WinForms:理论上这是可能的,尽管你可能想要检查WinForms项目的状态,看看它是如何跨平台的,以及某些工具如表单设计器是否可用和/或稳定。如果你从头开始,你可以使用GTK#而不是跨平台,并且在MonoDevelop / Xamarin中拥有良好的工具支持,但如果你已经在WinForms中投入了大量资金,这可能没什么用。

重新。为Linux编译:你不应该使用Mono重新编译,除非你在代码中使用任何.NET CLR特定的功能(当然不能用Mono实现),或者你正在使用例如ILMerge在您的构建过程中。我用你的依赖关系把你的exe扔在Linux上并测试它以找出答案。如果你最终需要重新编译,你可以直接使用Mono编译器在Linux,BSD或Mac OS X上执行此操作,或者在MonoDevelop中打开项目并以此方式构建它;任何这些平台都应该生成一个可以在任何其他* nix上使用Mono执行的程序。

答案 1 :(得分:1)

除非您使用特殊的.NET类或本机库,否则应该可以轻松实现。

由于.NET编译的可执行文件是基于字节码构建的,因此它们没有链接到特定平台,而Mono的设计考虑到了这一点。

假设您刚刚测试了一个名为“WindowsApplication”的应用程序,请尝试按照以下步骤操作:

在Visual Studio项目文件夹下检查,尝试找到WindowsApplication.exe。 检查"C:\Users\YourName\Documents\Visual Studio\Projects\WindowsApplication\WindowsApplication\bin\Debug(或发布)

在您的Ubuntu系统上安装Mono后,检查您的文件夹中是否有 mono 命令(对于此测试,只需使用您的主目录):

username@locahost ~ $ mono --version Mono JIT compiler version 5.0.1 (Visual Studio built mono) Copyright (C) 2002-2014 Novell, Inc, Xamarin Inc and Contributors. www.mono-project.com TLS: normal SIGSEGV: normal (more output)

将程序可执行文件从Windows复制到Ubuntu文件夹中,假设您已复制到刚测试的目录 mono

输入以下命令启动它: mono ./WindowsApplication1.exe(如果它在您当前的目录中) 要么 mono /<another_path_to_your_executable>/WindowsAppliction.exe

如果它没有运行,您可以下载“Mono Migration Analyzer”(MoMA),这是一个专门用于识别未解决的依赖关系并帮助您解决问题的工具。