可以在 ubuntu 中 运行 winforms 应用程序吗?
It is possible to run winforms app in ubuntu?
我有一个使用 Visual Studio 2015 Community
在 .Net framework 4.5
和 C#
之上编写的应用程序。我在 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),这是一个专门用于识别未解决的依赖关系并帮助您解决问题的工具。
我有一个使用 Visual Studio 2015 Community
在 .Net framework 4.5
和 C#
之上编写的应用程序。我在 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),这是一个专门用于识别未解决的依赖关系并帮助您解决问题的工具。