可以在 ubuntu 中 运行 winforms 应用程序吗?

It is possible to run winforms app in ubuntu?

我有一个使用 Visual Studio 2015 Community.Net framework 4.5C# 之上编写的应用程序。我在 Win10 OS 的 64 bit 机器上创建了它。

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

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

请帮忙。

回复。 WinForms:理论上这是可能的,尽管您可能想检查 WinForms 项目的状态以了解它的跨平台性如何以及某些工具(例如表单设计器)是否可用 and/or 稳定。如果您是从头开始,您可以改用 GTK#,它是跨平台的,并且在 MonoDevelop/Xamarin 中具有良好的工具支持,但如果您已经在 WinForms 上投入了大量资金,这可能没有帮助。

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

除非您使用特殊的 .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),这是一个专门用于识别未解决的依赖关系并帮助您解决问题的工具。