ASP.NET5,MVC 6,Beta 7與VS 2015 RTM的兼容問題


溫馨提示:本文雜而亂,最終不知所雲。

Visual Studio 2015 RTM已經於2015年7月20號正式發布,我也在第一時間下載安裝了起來。

雖然在5月份就開始使用RC版本,但是還是很期待正式版能帶來一些新的功能和穩定性。

喜歡嘗鮮的我免不了要折騰一下ASP.NET5,學習一下MVC6,當時的穩定版本是Beta5。

隨便建一個MVC6項目感受了一下,很喜歡這種新的項目結構,唯一覺得不爽的就是發布的時候沒有了FTP這一項,不知道以后會不會改進。

后來又試着把框架升級到當時還非穩定的Beta6,由於Beta5→Beta6有一些“重大改變”,所以需要修改幾處代碼,幾經折騰總算勝利升級,過程中對DNVN,DNX,DNU等有了更直觀的認識,也算沒有瞎折騰。

好了,扯了半天還沒扯到正題上來。

話說這后來幾天忙着升級Windows10,待塵埃落定,看着新裝好的WIN10+VS2015心情大好,准備再去研究一下ASP.NET5。

此時Beta6穩定版已如期發布,這是ASP.NET5的發布路線圖:

使用穩定版顯然不是我的風格,於是就像之前升beta6一樣如法炮制把DNX以及各依賴模塊升級到最新的Beta7。

然而這次卻出現了一些奇怪的問題:

1.首先是項目內容里的引用模塊列表直接沒有了……

2.在項目屬性里,“調試”這一項里的內容全部空白了……(+﹏+)~

3.各種不對勁,重新打開解決方案,重啟VS都沒有用,嘗試編譯項目出現如下錯誤:

請忽略里面的奇怪字符-_-。 

具體錯誤就是:System.IO.FileNotFoundException : Microsoft.DNX.PackageManager啥的。

怎么會找不到文件呢,runtimes好好的躺着它該待的地方呢。

實在摸不着頭腦,只好去GitHub上找找看有沒有人提這個問題。果然看到這么一個Issues ,說的就是這個問題。

大概意思就是說DNX的一些程序集改名了,但是VS2015RTM沒有做相應的修改,導致無法找到正確的路徑什么什么的。

需要等Web Tools更新才能解決,然后給了一個臨時的解決辦法,就是添加一個系統環境變量:WEBPROJ_ENABLEBETA7RENAMES,值設置為0,就可以了。

我試了一下,果然奏效。

沒過幾天,Github上面又發一篇公告:Breaking DNX renames ,這次具體說了DNX的一些改名情況,如圖:

個人感覺新名字確實好看多了\(^o^)/ 。

同時公告也說了怎么適應這個更改,首先就是安裝那個Web Tools的更新,他們給放在ASP.NET5的首頁上了:

就是這個 ASP.NET 5 preview(Beta6)。

這個需要說一下,點進去下載會看到挺多內容,大部分是語言包,按官方說明是要按需下載並按順序安裝:

首先是DotNetVersionManager-x64.msi(或x68),其實就是DNVM,你機器上的版本可能比這個還新,所以這個不裝也行。

然后裝那個最大的,WebToolsExtensionsVS14.msi,209M的本體,裝起來吭哧吭哧還挺慢的。

 

最后根據需要下載一個語言包裝上就行了,可是我沒感到有什么卵用。

裝過之后的前后對比:

可以看到ASP.NET and Web Tools的版本號已變,名字居然也變純英文了,所以我很懷疑我剛才裝的“語言包”有什么卵用。

* 如果之前設置了那個環境變量,需刪之。

 

最后需要把DNX更新到最最新的版本,其實我經常會去myget.org看新的版本號(可能是病),你也可以去看看:aspnet vnext (小心傳染)。

aspnet master 這個頁面只提供穩定版不同,vnext提供的是各個程序集目前最新的開發版本,目前最新的開發版本是v1.0.0-beta7-12290。

同時這個頁面上提供的NuGet feed Url:https://www.myget.org/F/aspnetvnext/ 是我們需要用到的。

打開VS2015,從工具→NuGet程序包管理器→程序包管理器控制台,打開Nuget控制台,如圖:

可以看到程序包源:nuget.org ,默認只有這一個源,點右邊的齒輪可以設置更多源。

很簡單,在這個設置頁面,按上面綠色的加號,把剛才上面提到的那個Feed Url加進去,名字隨便起。

這樣才能確保DNU在還原程序包的時候,能夠找到我們所需要的最新版本的各個程序集,否則只能找到beta6的穩定版。

回到Nuget控制台,這里可以使用dnvm命令去升級DNX,可惜在這個控制台里不怎么好用,很多提示信息不會出來,不知道為什么,而且也不如果彩色的Power Shell酷炫。

所以我們干脆去外面打開Power Shell干活,記得用管理員身份執行:

 

你第一次在PS里執行DNVM,應該會遇到錯誤提示"xxxxxxxxx,因為在此系統中禁止執行腳本,xxxxxxxx"什么的,這個問題很好解決,

執行一下:set-ExecutionPolicy RemoteSigned ,選 a [all] ,就可以了,見:

關於DNVM的用法,就那么幾個指令,這里不再贅述了,咱們趕緊把DNX更新好結束吧,現在越寫越跑偏了。

Dnvm upgrade 指令可以更新最新的“穩定版”,比如現在的beta6,我們想要最新的開發版,就需要執行 dnvm upgrade -unstable ,這樣就開始下載最新的DNX beta7了。

同時我們也需要64位的DNX,則再加一個參數: dnvm upgrade -unstable -arch x64  ,這樣下載的就是非穩定的最新版的64位DNX:

稍等片刻就下好了,執行dnvm list可以看到現在機器里所有的DNX版本:

回到VS我們的項目里面,修改幾處:

1,項目屬性里,選擇正確的DNX版本:

此處更改會直接體現到global.json配置文件中。

另外Properties\launchSettings.json也應該對應修改一下:

最后記得把project.json里的依賴項版本改成最新的,我是直接用*號了,因為我總升級DNX。

至此,BETA7就可以正常使用在VS中了,看看這令人愉悅的(正在還原……)和最新的程序集們o(∩_∩)o 哈哈:

 

 

The End


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM