在 Ubuntu 12.04 上編譯 monodevelop (1)

環境是 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 裡又找不到這些設定。