1. 程式人生 > >使用Visual Studio 2015 開發ASP.NET MVC 5 專案部署到Mono/Jexus

使用Visual Studio 2015 開發ASP.NET MVC 5 專案部署到Mono/Jexus

最新的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,並且更改身份驗證為不適用身份驗證。

clip_image002

編譯,併發布到jexus,訪問之。報出的錯誤資訊如下圖。

clip_image004

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的相容性相當好了。

clip_image006

其他的相容性問題都是Windows/Linux的差異,比如大小寫和路徑問題等,例如從Nuget上下載下來的System.Web.Webpages.dll 幾個相關的dll 中間的pages 那個p是小寫的,需要變成大寫。Bootstrap等幾個前端框架裡面也有一些不區分大小寫的,有一些樣式無法顯示,我把Jexus的不區分大小寫開啟就好了。

在jexus中,只需要把 /usr/jexus/jws這個指令碼檔案中的 “export MONO_IOMAP=...”這一句前邊的“#”去掉,就可以不區分大小寫了。

[[email protected] /usr/jexus]# vi jws

clip_image007