最新的Mono 4.4已經支持運行asp.net mvc5項目,有的同學聽了這句話就興高采烈的拿起Visual Studio 2015創建了一個mvc 5的項目,然后部署到Mono上,瀏覽下發現一堆錯誤出現,心中一萬只草泥馬奔騰而來,這也叫支持嗎,這個問題是Visual Studio造成的,不相信的話可以使用Xamarin.Studio創建的asp.net項目,部署過程非常順利,沒有遇到什么問題;本文就是為你解開這個結,如何Visual Studio 2015搞定ASP.NET MVC 5項目的跨平臺開發。
vs2015新建一個asp.net的項目(目標框架是.net4.5),選擇mvc,并且更改身份驗證為不適用身份驗證。
編譯,并發布到jexus,訪問之。報出的錯誤信息如下圖。
Could not find file "/var/www/mvcdemo/bin\roslyn\csc.exe". 這一行告訴了我們找不到roslyn 的c# 編譯器, 當前版本的Mono 的編譯器還是Mono的mcs編譯器,并沒有完成到roslyn 這個編譯器的升級工作,這個工作正在進行過程中,在不遠的將來就可以統一使用roslyn。
解決這個問題的方法就是用Mono的mcs編譯器,項目上右鍵管理NuGet程序包,打開管理器,按順序卸載以下兩個組件:
l Microsoft.CodeDom.Providers.DotNetCompilerPlatform
l Microsoft.Net.Compilers
重新發布到jexus,通過瀏覽器可以看到清新的Bootstrap界面了, mono 4.4.2版本目前對mvc5的兼容性相當好了。
其他的兼容性問題都是Windows/Linux的差異,比如大小寫和路徑問題等,例如從Nuget上下載下來的System.Web.Webpages.dll 幾個相關的dll 中間的pages 那個p是小寫的,需要變成大寫。Bootstrap等幾個前端框架里面也有一些不區分大小寫的,有一些樣式無法顯示,我把Jexus的不區分大小寫打開就好了。
在jexus中,只需要把 /usr/jexus/jws這個腳本文件中的 “export MONO_IOMAP=...”這一句前邊的“#”去掉,就可以不區分大小寫了。
[root@TENCENT64 /usr/jexus]# vi jws
文章列表