使用MONO在MAC OS上開發——同步處理記錄(二)

來源:互聯網
上載者:User

上一篇使用MONO在MAC OS上開發——同步處理記錄(一)講述了在MAC OS讀取設定檔以及寫日誌,那麼只算是完成了基本的配置,下面的才是重點。

由於時間關係,就簡單描述下,並不具體分析源碼。最後奉上源碼。

一:安裝

第一步,安裝MONO架構。你可以在MONO官網去下載。注意“MonoFramework-MRE-2.10.5_0.macos10.xamarin.x86.dmg”在低版本MAC OS上運行有問題。建議安裝“MonoFramework-MRE-2.10.4_0.macos10.xamarin.x86.dmg”檔案。

第二步,執行程式。將可執行程式“MonitoringApp”複製到電腦案頭,雙擊運行。

註:在MONO提供的開發工具(MonoDevelop)中,編譯後會產生“MonitoringApp”指令碼。用記事本開啟,就會發現如下代碼:

#!/bin/sh

exec mono "/Users/PRODUCTION/Desktop/App/lib/MonitoringApp/MonitoringApp.exe" "$@"

通過這段AppleScript,就明白了利用MONO在Mac OS上執行.NET程式的原理了,還封裝了一層殼,一層你蛻不掉的殼——通過在終端上啟動並執行AppleScript來啟動MONO虛擬機器,然後運行MonitoringApp.exe。這段AppleScript是通過終端啟動並執行,帶來了以下麻煩:

1)寫死的路徑。比如我將MonitoringApp檔案移動位置,就不能運行了,因為這段指令碼中,路徑是死的。當然你可以去學習AppleScript,然後去搜MonitoringApp.exe檔案,然後執行。但是對於只有3天時間的我,顯然是不可能的。

2)無法脫離終端運行。但是AppleScript啟動的程式無法脫離終端運行。打個比方,你將終端關了,OK,你的程式也關了。這問題當時我一直沒解決,現在想解決,卻沒蘋果電腦測試了。

二:環境配置

第一步,配置設定檔。設定檔名字必須是“Configuration.txt”。本目錄提供了一個參考檔案。具體參數說明如下:
    MonitoringDirectoryType:目錄類型,僅支援兩個值(Immediate、Cycle)。Immediate表示即時監控(預設值),Cycle表示周期監控。   
    Path:監控目錄路徑。必須是存在的路徑。
    TargetPath:目標目錄路徑。可以是遠程目錄路徑。不能使用SMB路徑,而應該是用如“/Volumes/mes_data/n81a”的類型。
    IncludeSubdirectories:是否涵蓋子目錄。
    Filter:過濾字串。如“*”表示監控所有檔案,“*.txt”表示監控所有的文字檔。
    BackupPath:備份路徑。
    BackupExpired:備份到期時間。單位是天。必須為整數。預設值30天。
    CycleMinutes:周期迴圈時間。單位是分。 必須為整數。預設值60分鐘。
    注意事項:
        1)8個配置缺一不可。必須全部配置,並寫值。
        2)支援多個目錄。但是要求所有的值都以多個的形式表示,如“['Immediate','Cycle']”表示兩個目錄,相應的其他配置項也必須寫兩個值。
        3)所有的符號必須為英文符號。值必須用單引號括起來。
        4)有些值只對某種類型起作用,比如CycleMinutes只對MonitoringDirectoryType為Cycle的類型目錄起作用,因此當目錄類型為Immediate時,值屬於無效狀態。
        5)配置名以冒號結束。配置值涵蓋在中括弧中。
        6)每個配置項配置完成前,請不要換行。每個配置項之間請換行。程式是按行讀取配置項的。
        7)配置名和配置值不區分大小寫。

    配置完設定檔後,請將檔案複製到系統使用者的根目錄下。如“/Users/nzocnzoc”。

註:其實上面的都是屁話,具體的你還是自己看代碼吧。值得注意的是,最好你所有的文字都用英文,否則複製過去可能都是亂碼,即使設定了語言為中文也不行。

第二步,配置開機啟動。請先將程式拖入對應使用者的登陸項裡。具體設定在:【系統喜好設定(System Preferences)】->【使用者賬戶(Accounts)】->【登陸項(Login Items)】。然後再串連遠程伺服器。具體配置在【前往】->【串連伺服器】中配置,請使用記住密碼(切記)。配置完畢,然後將目標目錄拖入至目標使用者的登陸項中,如此,就能在開機啟動時自動連接遠程目錄。
    注意:由於網線串連或者WIFI串連相對緩慢,在登陸項中,請將遠程目錄的位置盡量移後,以便有充足的時間來緩衝。沒辦法,這是個比較蛋疼的辦法,但是總歸是實現了開機啟動而且連上了遠程目錄。
第三步:重啟電腦,測試是否成功。一定要測試是否檔案能夠上傳到遠程目錄。

三:問題診斷。

如果檔案沒有成功上傳,程式又沒有提供異常提示,請先參考“/Users/目前使用者”路徑下的Data目錄中的錯誤記錄檔。

 

 

 

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

其實這個項目代碼倒是很簡單,1天不到就可以寫完,但是移植到Mac OS上問題就來了。很多時候,我們都說MONO可以跨平台,事實上也是可以的,但是問題卻很多。

  1. 代碼必須全部用英文,包括注釋,否則移植可能會出亂碼。
  2. 需要在Mac OS上使用MonoDevelop(MONO的開發工具)編譯產生。
  3. Mac的檔案系統與Window系統很不一樣,使用.NET代碼擷取路徑時,比如程式啟動路徑等均無法擷取。
  4. MONO for Mac OS不支援控制台應用程式,畫Window應用程式介面最好用Gtk#畫,否則可能介面顯示可能會有問題。如需隱藏介面,最好將寬度和高度設定為0,設定屬性和方法均無效,不知道下個版本會不會修複。
  5. 注意MONO架構版本問題。有可能最新版本不支援某些代碼或者不支援某些低版本蘋果系統。

筆者在這裡權當是拋磚引玉,如果有朋友也使用過MONO for Mac OS,希望能分享下經驗。

源碼下載:MonitoringApp.7z 

 

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.