環境是 12.04 LTS,想編譯 monodevelop,首要就是去 github 把源碼拉下來,拉下來以後,還要執行 git submodule update –init –recursive 更新 submodule。
需要安裝的套件有:
- autoconf
- automake
- mono-gmcs
- libgtk2.0-cil-dev
- libmono-cil-dev
- libgnome2.0-cil-dev
- libgconf2.0-cil-dev
- mono-dmcs
- libmono-addins-cil-dev
- libmono-addins-gui-cil-dev
- libvala-0.12-dev
- mono-xbuild
不囉唆,用 apt-get install 裝上就是,接著下 ./configure –profile=all –prefix=/opt/monodevelop 產生 Makefile,然後開始編譯,原本以為應該沒問題了,豈知出現錯誤:
MonoDevelop.AspNet.Mvc.Completion/RazorCompletionTesting.cs(30,26): error CS0234: The type or namespace name `Mvc’ does not exist in the namespace `MonoDevelop.AspNet’. Are you missing an assembly reference?
MonoDevelop.AspNet.Mvc.Completion/RazorCompletionTesting.cs(33,26): error CS0234: The type or namespace name `Mvc’ does not exist in the namespace `MonoDevelop.AspNet’. Are you missing an assembly reference?
MonoDevelop.AspNet.Mvc.Completion/RazorCompletionTesting.cs(35,26): error CS0234: The type or namespace name `Mvc’ does not exist in the namespace `MonoDevelop.AspNet’. Are you missing an assembly reference?
MonoDevelop.AspNet.Mvc.Completion/RazorCompletionTesting.cs(135,52): error CS0246: The type or namespace name `RazorCSharpEditorExtension’ could not be found. Are you missing a using directive or an assembly reference?
MonoDevelop.AspNet.Mvc.StateEngine/RazorParsingTests.cs(32,26): error CS0234: The type or namespace name `Mvc’ does not exist in the namespace `MonoDevelop.AspNet’. Are you missing an assembly reference?
MonoDevelop.AspNet.Mvc.Completion/RazorCompletionTesting.cs(127,48): error CS0115: `UnitTests.MonoDevelop.AspNet.Mvc.Completion.RazorTestingParser.Parse(bool, string, System.IO.TextReader, MonoDevelop.Projects.Project)’ is marked as an override but no suitable method found to override
MonoDevelop.AspNet.Mvc.Completion/RazorCompletionTesting.cs(137,67): error CS0246: The type or namespace name `RazorCSharpParsedDocument’ could not be found. Are you missing a using directive or an assembly reference?
看起來是少了 Mvc 這個 namespace,可是我已經有安裝 libmono-system-web-mvc2.0-cil 了啊,怎會這樣子?
經過追蹤以後,發現跟 Mvc 沒關係,而是編譯到 main/src/addins/AspNet/MonoDevelop.AspNet.Mvc 時,這邊說少了幾個 .dll 檔案,csprojet 裡有試著加上 ProjectReference ,可是仍然有出現錯誤。我想應該是 .csproj 問題,Makefile 裏面是寫用 xbuild 來編譯 .csproj 檔案,產出的 dmcs 指令,有很多 /reference 參數,而有問題的這幾個 .dll ,路徑都是直接寫死到 /usr/lib/monodevelop 下,真的是怪了,而在 .csproj 裡又找不到這些設定。