VS 2015 Enterprise第二大坑


前言

繼上篇文章之后,你會繼續跌進大坑,這個坑困擾我一上午,同時也會讓你大跌眼鏡,如果你遇到了,那么恭喜你提升自身能力和解決能力的時機到了,當然你可以通過本文繼續少走不必要的彎路【我也是無意中發現的捷徑】!

話題

這個問題出現源於你Dnx執行環境的升級,你可以在PowerShell中通過 dnvm list 查看你版本如下

這告訴你兩件事:(1)你安裝了兩個版本的Dnx 1.0.0-beta5和1.0.0-beta6 (2)看見default(默認)沒,意思是你項目中默認啟動的是 1.0.0-beta6 版本,通過下面你也會知道確實是這么回事。

好了,我們新建一個項目我起個名叫 FirstStudy ,通過昨天的學習,現在是生成也沒錯了,看見新建默認出現的頁面,如下:【是不是有點想馬上運行的趕腳】

來吧,走一個,尼瑪!!我很想說臟話了,好吧,還是注意點素質!好好就新建一個項目,生成時你給我出錯,把你毛病給治好了,現在運行你又來個直接出錯,簡直了.....錯誤如下:

好吧,既然出錯就老老實實的解決吧!大概意思就是運行時要匹配確定的framework,你看到什么了?? Project.json 【如果不知道新建項目中各個文件的用途請參照湯姆大叔MVC系列即可】,這是程序集進行配置的地方,這是個關鍵,同時我很納悶默認添加的Dnx版本是4.5.1和5.0如下

 所以第一個想法就是將Project.json中的Dnx版本改為4.5即可,走你!等待程序包還原,生成解決方案時結果出錯:

 這說明在4.5版本中沒有這命名空間,同時也說明不是這里的錯!上面出錯時也有說運行時的版本為 1.0.0-beta6 ,此時我們也應該想到Project.json中有一個 dependencies 這個節點中的程序集就是Dnx4.5.1或者5.0中下的程序集【當你修改這里面的程序集版本再進行生成時,Dnx4.5.1或者5.0下的版本也會相應進行自動修改】,我發現創建時這里的版本如下:

 通過這圖我們知道這里面的版本結尾中都為 beta5 ,同時我們也知道我們通過PowerShell知道創建的版本為 beta6 ,如果你還不信我們看看項目中屬性創建時Dnx SDK版本,我創建的項目FirstStudy屬性為

 通過這我們知道:我們Dnx執行環境為 beta6 ,而當創建項目時程序集的版本卻為 beta5  !!所以說沒有一勞永逸的事情,如果你更新了Dnx,VS 2015還沒達到完美同步跟着你更新,那它怎么知道你更新了呢!!於是乎,我Project.json中依賴項中的程序集改為beta 6的,結果不太理想,生成出錯,應該是有些還未有版本6的吧!!那只能另想他法了,那我反過來將項目中的屬性Dnx Sdk改為beta5試試,說做就做如下

 很遺憾生成就出錯如下

 就修改一下Dnx SDK版本連命名空間System都找不到了,看來路又走錯了!至少我們確定肯定是Dnx版本的問題,到目前為止,我們想想項目下的文件是不是有些還是 beta6 還沒進行修改呢?config.json相當於Web.Config比如進行數據連接排除,bower.json和gulpfile是和前台有關的東東,package.json相關gulp的版本,有一個文件我們忽略了,有沒有,那就是global.json,全局什么東西,沒准是全局配置呢?打開看看發現還真有關於Dnx版本的配置!

注意

這是我之后發現的問題,這里默認是版本是你創建時的版本也就是Dnvm list中default,當你在項目屬性中進行更改為beta5生成后這里也會相應的更改為項目屬性中的版本,可以說是同步的(global.json中Dnx版本隨項目屬性版本改變而改變)!


於是將 global.json 版本改為beta 5,最后還是錯誤如下:

此時已經非常絕望了,能將版本改的都已經進行修改了。想了兩分鍾,不知道哪來的天馬行空的想法!

將Project.json中節點frameworks下的版本Dnx 4.5.1更改為4.5,等待其程序集還原后,再生成下,此時肯定會有錯誤,之前已經嘗試,接着我將其版本改回Dnx 4.5.1,依然是等待其程序集還原,此時再生成下,結果讓你大跌眼鏡,全部生成成功!

結果F5運行下試試看,顯然成功了!!!出現了仰慕已久而遲遲未出現的Asp.Net 5界面

 

至此從安裝到生成到運行一切圓滿的落下帷幕,so perfect。接下來可以進行愉快的Asp.Net 5之旅了!

總結 

(1)創建項目運行出現錯誤的原因:當你將Dnx版本升級為beta6時,此時你創建的項目中程序集版本卻是beta5。

(2)奇葩解決方案:將項目屬性Dnx SDK版本改為beta 5,此時再重新生成下此時global.json將被項目屬性版本覆蓋,當然你也可以進行手動修改。(將Project.json中程序集版本改為beta 6行不通,也就是說只能講項目版本進行降級而非升級),接下來就是:

將Project.json中節點frameworks下的版本Dnx 4.5.1更改為4.5,等待其程序集還原后,再生成下,此時肯定會有錯誤,之前已經嘗試,接着我將其版本改回Dnx 4.5.1,依然是等待其程序集還原,此時再生成下,結果讓你大跌眼鏡,全部生成成功!

上述是我能想到的解決問題的方案,如果你遇見相同問題,用別的方案解決了的話,望告知,讓我也能更好的學習!

補充

官網有關DNX介紹

Introduce DNX

有關Dnx以及指定Dnx Version Runtime

Specify Dnx Default Runtime Version

詳細介紹DNX/DNVM/DNU

Introduce DNX/DNVM/DNU and how to install/run etc

 


免責聲明!

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



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