C# 是否可以在ubuntu中运行winforms应用程序?

C# 是否可以在ubuntu中运行winforms应用程序?,c#,winforms,ubuntu,deployment,mono,C#,Winforms,Ubuntu,Deployment,Mono,我有一个应用程序是在.netframework4.5和C#之上编写的,它使用visualstudio2015社区。我在Win10操作系统的64位机器中创建了它 是否有可能在Ubuntu中运行此应用程序?那么,我如何编译应用程序使其与ubuntu机器兼容呢 我希望将其部署为一个跨平台的应用程序,但我很难找到最好的方法。我听说了,但我还不熟悉IDE 请帮忙。Re。WinForms:理论上这是可能的,不过您可能希望检查WinForms项目的状态,以了解它的跨平台性,以及某些工具(如forms desi

我有一个应用程序是在
.netframework4.5
C#
之上编写的,它使用
visualstudio2015社区
。我在
Win10
操作系统的
64位机器中创建了它

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

我希望将其部署为一个跨平台的应用程序,但我很难找到最好的方法。我听说了,但我还不熟悉IDE


请帮忙。

Re。WinForms:理论上这是可能的,不过您可能希望检查WinForms项目的状态,以了解它的跨平台性,以及某些工具(如forms designer)是否可用和/或稳定。如果您是从零开始,那么可以使用GTK,它是跨平台的,在MonoDevelop/Xamarin中具有良好的工具支持,但是如果您已经在WinForms上投入了大量资金,那么这可能没有什么帮助


Re。为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\visualstudio\Projects\WindowsApplication\WindowsApplication\bin\Debug
(或发行版)

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

username@locahost ~
$mono--版本
Mono JIT编译器版本5.0.1(Visual Studio构建的Mono)
版权所有(C)2002-2014 Novell公司、Xamarin公司和贡献者。www.mono-project.com
TLS:正常
SIGSEGV:正常
(更多产出)

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

通过键入以下命令启动它:
mono./WindowsApplication1.exe
(如果它在当前目录中) 或
mono//WindowsAppliction.exe


如果它没有运行,您可以下载“Mono迁移分析器”(MoMA),这是一个专门设计用来识别未解决的依赖项并帮助您解决问题的工具。

我认为这是不可能的,因为WinForms是WinAPI函数的包装器,在Ubuntu中可能没有类似的功能。这听起来很糟糕,但我发现WinForms应用程序是在Mono中创建的,他们说它也可以在Ubuntu中运行。我的问题是对于这种方法,我不知道如何在Mono中编译我的应用程序,以便在ubuntu中工作所以我错了,这是可能的,但它指的是你可以使用Mono创建winforms应用程序,但我不想从头开始。我遇到的最大问题是如何编译我的应用程序使其与ubuntu兼容。tskYea这是真的,我想我真的需要从头到脚开始,因为c在将winforms.net转换为跨平台应用程序时,我使用了许多MoMa检测到的P/Invoke方法,这些方法在Mono/Xamarin IDE中找不到。