如何將 Visual Studio 開發好的 .NET 部署至 Ubuntu ( Mono )

最近開始將一些用 .NET 寫的程式部署到 Ubuntu Linux 上執行,大多都是一些小型的工具軟體 (Console Apps),部署的過程其實還算順利,大致分享幾個關鍵動作與開發技巧。

在 Ubuntu 8.04 LTS 安裝 .Net Framework 2.0 執行環境 ( Runtime )

由於 Ubuntu 8.04 LTS 已經內建 mono ( 含 .net 1.1 與 2.0 ),所以可以直接透過 apt-get 進行安裝:

apt-get install mono-2.0-devel

只要安裝 mono-2.0-devel 他就會自動幫你安裝所有相依的套件。如果你有安裝 X-Windows 視窗畫面的話,可以多安裝一個 libmono-winforms2.0-cil 套件,就可以在 X-Windows 上執行 WinForm 的程式了:

apt-get install mono-2.0-devel libmono-winforms2.0-cil

正確設定執行 .NET 應用程式的環境要求

如果你的 Console 應用程式中有出現中文字的話,由於 .NET 是一套完全以 Unicode 為主的程式架構,所以你務必要檢視系統是否可以顯示中文,而且連上 Linux 的連線工具可以正確顯示 Unicode 文字才行。

首先,必須設定 Linux 下的 LANG 環境變數,而且要指定為 UTF-8 編碼,如下:

export LANG=zh_TW.UTF-8

至於連線工具建議使用 Unicode 支援度較佳的 PieTTY 連線程式,並且確定連上時的字元編碼設定是否切換到 Unicode ( UTF-8 ) 這一項。

連線工具建議使用 Unicode 支援度較佳的 PieTTY 連線程式,並且確定連上時的字元編碼設定是否切換到 Unicode ( UTF-8 ) 這一項。

執行 .NET 2.0 應用程式 ( Console Application )

所有要在 Linux 下執行 .NET 的程式,都必須透過 mono 程式啟動,例如:

mono ConsoleApplication1.exe

整合 Visual Studio 開發流程並自動部署至 Linux 主機

整體來說,我個人覺得在 Windows 利用 Visual Studio 開發一些工具,然後部署到 Linux 執行的過程還蠻順利的,像我就透過 PuTTY 官網所提供的 PSCP 指令列工具搭配 Visual Studio 中的 Post-build event 讓我在建置(Build)完成後自動將新的程式部署到公司內部的 Linux 測試主機,然後就可以立即進行測試。指令大致如下:

pscp.exe -i "G:\PuTTY Private Key.ppk" ParseMBOX.exe root@10.0.0.1:.

額外補充:

Linux 平台下類似 Visual Studio 的開發工具:MonoDevelop

目前推出到 MonoDevelop 2.0 版,可以完全在 Linux 環境下開發 .NET 2.0 應用程式 ( 支援 C# 3.0 ),包括 ASP.NET 與 WinForm。

在 Visual Studio 中安裝 Mono 外掛工具

現在 Mono 官方還提供支援 Mono 的 Visual Studio 外掛工具,可以在 Visual Studio 測試 Mono 的相容性 (MoMA),還支援遠端除錯,讓你可以在 Visual Studio 中直接測試 Linux 上執行的程式,在這裡有完整的圖說,該工具會自動編譯 –> 複製輸出到 Linux 主機 –> 並且自動啟動執行,不止 WinForm、WebForm (ASP.NET) 都可以,幾乎讓你離不開 Visual Studio 的視線。

雖然該工具目前處於 Preview 的階段,但似乎挺有趣的,有興趣的人可以玩玩看。

Mono Tools for Visual Studio Preview Released

相關連結

  

此文章由 will 發表於 2009/6/10 下午 11:42:02

永久連結 | 評論 (8) | 此文章的RSSRSS comment feed |

分類: Linux | .Net | Visual Studio

標籤: , , , , ,

收藏:

相關文章

評論

六月 11. 2009 03:20

elleryq

再額外補充,MonoDevelop 也出 Windows 版本了,安裝前需先裝 gtk# for .net,下載網址在 http://monodevelop.com/Download/Windows_Preview

不過這版本也是 alpha 版,相信在不久的未來,就會有正式版。

elleryq tw

六月 11. 2009 10:09

Maxi

Mono真是太屌了

Maxi tw

六月 11. 2009 17:51

kali

有人知道這篇說的是什麼嗎?
==> "防微杜漸,今天就刪除mono"
http://blog.ofset.org/ckhung/index.php?post/096e

kali tw

六月 11. 2009 18:18

will

kali: 你可能真的想太多了。微軟取得的專利何其多啊,真的要告你的話,你就算用的是 Windows 應該也會有侵權的機會,你躲不掉的,若當真有一天走到這一步,那他們應該也差不多了。有興趣的話請看看 Mono 的 Licensing FAQ: http://www.mono-project.com/Licensing

will tw

六月 20. 2009 11:56

kgame

我在ubuntu上
用mono運作exe
Environment.CurrentDirectory得到的路徑很奇怪
EXE檔實際路徑為
/home/kgame/Projects/GtkTest/GtkTest/bin/Debug/GtkTest.exe

使用Mono Develop的debug模式下
Environment.CurrentDirectory得到的結果是
/home/kgame/Projects/GtkTest/GtkTest/bin/Debug/
很正常

但使用mono來執行exe時
Environment.CurrentDirectory得到的結果是
/home/kgame
很奇怪
使得我用相對路徑讀取檔案時都會Exception

目前我的解決方法是在Main開頭放
Environment.CurrentDirectory = AppDomain.CurrentDomain.BaseDirectory;
是否是mono運作時還放放其他引數

kgame tw

七月 8. 2009 12:20

will

微軟最近對社群提出一些專利授權曾諾

Microsoft Community Promise
http://www.microsoft.com/interop/cp/default.mspx

will tw

九月 23. 2009 23:37

uclinux

請問一下mono 可以安裝在uclinux上嗎 ,
那裡有討論介紹?

uclinux tw

九月 23. 2009 23:48

Will 保哥

沒聽說有支援,你可能要自己上Google查看看。

Will 保哥 tw

新增評論


(將顯示您的Gravatar圖示)  

  Country flag

[b][/b] - [i][/i] - [u][/u]- [quote][/quote]



線上預覽

三月 13. 2010 08:11