2016-08-23 174 views
1

我有一個使用Visual Studio 2015 Community寫在.Net framework 4.5C#之上的應用程序。我在64 bit機器上創建了它在Win10操作系統。可以在ubuntu上運行winforms應用程序嗎?

有沒有可能在Ubuntu上運行這個應用程序?那麼我該如何編譯應用程序才能使它與ubuntu機器兼容?

我想部署它作爲一個跨平臺的應用程序,但我很難找出最好的方法。我聽說過Mono,但我還沒有熟悉IDE。

請幫忙。

+1

我認爲這是不可能的,因爲WinForms是WinAPI函數的一個包裝,它可能在Ubuntu中沒有模擬。 – Anton

+0

這聽起來很糟糕,但我發現在** Mono **中創建的winforms應用程序,他們說它也可以在ubuntu中運行。我對這種方法的問題是我不知道如何在Mono中編譯我的應用程序以在Ubuntu中工作。 –

+0

我找到了這個[鏈接] http://www.mono-project.com/docs/gui/winforms – Anton

回答

1

Re。 WinForms:理論上這是可能的,儘管您可能想要檢查WinForms項目的狀態以瞭解它是如何跨平臺的,以及某些工具(如表單設計器)是否可用和/或是否穩定。如果你從頭開始,你可以使用GTK#,它是跨平臺的,並且在MonoDevelop/Xamarin中有很好的工具支持,但如果你已經在WinForms上投入了大量資金,這可能沒有什麼幫助。

Re。爲Linux編譯:除非您使用代碼中的任何.NET CLR特定功能(自然不會在Mono中實現),否則您不需要使用Mono重新編譯,或者您正在使用例如。 ILMerge在您的構建過程中。我會將你的exe與依賴關係放在Linux上並測試它以發現問題。如果你最終需要重新編譯,你可以在Linux,BSD或Mac OS X上直接使用Mono編譯器或在MonoDevelop中打開項目並以此方式構建它;任何這些平臺都應該生成一個可以在任何其他* nix上用Mono執行的程序。

+0

是的這是真的,我認爲我真的需要從頭到腳開始,因爲在將winforms.net轉換爲跨平臺應用程序時有很大的困難,我使用了許多** MoMa **檢測到的P/Invoke方法沒有在Mono/Xamarin IDE中找到。 –

1

除非你使用特殊的.NET類或本地庫,否則它應該是可能的,也是容易的。

因爲.NET編譯的可執行文件是建立在字節碼上的,所以它們沒有鏈接到特定的平臺,Mono的設計考慮到了這一點。

假設你剛剛測試了名爲「WindowsApplication」的應用程序,嘗試按照下列步驟操作:

檢查下你的Visual Studio項目文件夾,試圖找到你的WindowsApplication.exe。 檢查"C:\Users\YourName\Documents\Visual Studio\Projects\WindowsApplication\WindowsApplication\bin\Debug(或釋放)

您的文件夾在你的Ubuntu系統檢查安裝Mono如果命令可用(本次測試只使用你的主目錄)後:

[email protected] ~ $ 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

如果它沒有運行,您可以下載「單聲道遷移分析器」(現代藝術博物館),這是一種工具,專門用於識別未解決的依賴關係並幫助您解決問題。

相關問題