在MONO 2 8 2中遇到的一些相容性問題

2022-02-19 23:32:12 字數 1117 閱讀 5026

首先,要把.net framework的應用遷移到mono平台,一定要借助這個軟體:moma。mono migration analyzer (moma)是乙個用於開發者使用的ms .net下開發的應用程式遷移到mono平台的不相容性檢測工具。工具通過分析.dll或者.exe程式集的**是否符合ecma cli,大家都知道符合ecma cli標準的.net 程式可以執行於ms .net和mono平台。這個工具可以幫助我們生成乙個很詳細的mono相容性文件,可以幫助我們調整程式的相容性。

不過這個工具的分析結果也不完全正確,一些實現方式moma提示不相容,但在mono中是可以正常使用的。

遇到的一些不相容的問題:

1、專案是使用js來呼叫web services來做的,用xsp做web伺服器端的時候發現如果web services介面中有使用可空引數的時候,不能正常使用,即使回傳的值不是null,介面依然只能接收到null值。

2、如果使用nginx通過呼叫mono的fastcgi來做web伺服器,這種方式將不支援web services。apache的mod_mono暫未做測試。

3、在mono環境中,timezoneinfo.local無法使用,這是mono的乙個bug。

4、mysql connector的mono版本中有2個類庫,乙個是.net 2.0,乙個是.net 4.0。如果把2.0的類庫也用moma分析,會提示很多不支援的方法;如果你是用nginx的fastcgi解析.net程式,需要使用4.0的mysql類庫;而在xsp中,使用2.0的類庫就好了。

5、如果你的作業系統是sles,建議獲取mono的原始碼編譯完裝,會讓你省去很多事情。

6、在sles編譯xsp原始碼時,你系統的sqlite3的版本號要大於3.5.0,否則編譯不過。

7、把專案轉到mono平台,風險還是非常大的,非常多第三方類庫不能直接在mono平台中使用,如combres/log4net/quartz.net等等,都需要修改源**。

暫時先整理這些問題,後面會補上在sles中部署mono環境的詳細過程。

總的說來,mono整體的相容性是非常不錯的,在linux中跑起來很流暢,mono 2.8.2已經不再是玩具了。關於mono,園子裡的geffzhang有很深入的研究,有興趣的同學可以去看看他的部落格。

大家也可以關注我的另外乙個獨立部落格:

在iOS開發中遇到的一些情況

1 cllocationmanager 定位 定位問題,在plist 檔案新增兩個 yes定位失敗新增的info 裡的方法 nslocationwheninusedescription,允許在前台獲取gps的描述 nslocationalwaysusagedescription,允許在後台獲取gps...

在 VS Code 中遇到的一些問題

1 在安裝時未配置右鍵快捷選單,想重新新增 最簡單的就是重新安裝一遍,在安裝過程中選擇好。其次可以通過以下登錄檔指令碼匯入 儲存為 reg 檔案 注意因為有中文字元,需要使用記事本儲存為 ansi 編碼,否則會亂碼。windows registry editor version 5.00 檔案右鍵 ...

svn branch merge中遇到的一些問題

拉分支的時候,選擇svn branch 在彈出的框中需要選擇目標位址,不過這個有乙個問題就是,這個目標位址不能是已經建立好的,必須至少要有一級目錄還是未建立的,比如想要拉分支到目錄branch 那你最多只能在本地建立乙個branch目錄,這個 是必須要手動輸入到 from branch 否則就會報 ...