文章出處

最新的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=...”這一句前邊的“#”去掉,就可以不區分大小寫了。

[root@TENCENT64 /usr/jexus]# vi jws

clip_image007


文章列表




Avast logo

Avast 防毒軟體已檢查此封電子郵件的病毒。
www.avast.com


arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()