我使用.Net framework 4.5
在C#
和Visual Studio 2015 Community
之上编写了一个应用程序。我是在Win10
机器的64 bit
操作系统中创建的。
是否有可能在Ubuntu
中运行此应用程序?那么如何编译应用程序以使其与ubuntu机器兼容?
我想将其部署为跨平台应用程序,但我很难找到最佳方法。我听说过Mono
,但我还不熟悉IDE。
请帮忙。
答案 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),这是一个专门用于识别未解决的依赖关系并帮助您解决问题的工具。