代碼就是示例代碼,原來根據流程,配置的好好的,忽然就不能用了web
症狀以下:shell
dnx web Error: Unable to load application or execute command 'Microsoft.AspNet.Server.Kestrel'. Available commands: web.
經過dnu restore也無論用。查看一下運行環境吧(好像我嘗試過升級dnvm update-self):json
dnvm ___ _ ___ ____ ___ / _ \/ |/ / | / / |/ / / // / /| |/ / /|_/ / /____/_/|_/ |___/_/ /_/ .NET Version Manager v1.0.0-rc2-15546 By Microsoft Open Technologies, Inc. usage: dnvm <command> [<arguments...>] dnvm list Active Version Runtime Architecture OperatingSystem Alias ------ ------- ------- ------------ --------------- ----- * 1.0.0-rc1-update1 clr x86 win default
一個是rc1,一個是rc2.因而先升級一下,dnvm upgrade,可是提示我是最新的,不須要升級。api
此時dnx build報錯,沒法加載依賴,app
dnu build Microsoft .NET Development Utility Clr-x86-1.0.0-rc1-16231 Building HelloWeb for DNX,Version=v4.5.1 Using Project dependency HelloWeb 1.0.0 Source: E:\asphome\samples\latest\HelloWeb\project.json Unable to resolve dependency Microsoft.AspNet.Server.Kestrel 1.0.0 Unable to resolve dependency Microsoft.AspNet.IISPlatformHandler 1.0.0 Unable to resolve dependency Microsoft.AspNet.Diagnostics 1.0.0 Unable to resolve dependency Microsoft.AspNet.Hosting 1.0.0 Unable to resolve dependency Microsoft.AspNet.StaticFiles 1.0.0 Unable to resolve dependency Microsoft.Extensions.Logging.Console 1.0.0 Using GlobalAssemblyCache dependency fx/mscorlib Source: C:\WINDOWS\Microsoft.NET\assembly\GAC_32\mscorlib\v4.0_4.0.0.0__b77a5c561934e089\mscorlib.dll 下面還有好長的報錯:
我去dnx的路徑裏查一下包的狀況: .dnx\packages\Microsoft.AspNet.Server.Kestrelasp.net
更加確認是rc2引發的問題了。ui
後來搜索相關信息,發現這個命令:dnvm upgrade -u 就是升級到開發版本。Latest Unstablespa
dnvm upgrade -u Determining latest version Downloading dnx-clr-win-x86.1.0.0-rc2-16319 from https://www.myget.org/F/aspnetvnext/api/v2 Installing to C:\Users\shenj\.dnx\runtimes\dnx-clr-win-x86.1.0.0-rc2-16319 Adding C:\Users\shenj\.dnx\runtimes\dnx-clr-win-x86.1.0.0-rc2-16319\bin to process PATH Adding C:\Users\shenj\.dnx\runtimes\dnx-clr-win-x86.1.0.0-rc2-16319\bin to user PATH Updating alias 'default' to 'dnx-clr-win-x86.1.0.0-rc2-16319' dnvm list Active Version Runtime Architecture OperatingSystem Alias ------ ------- ------- ------------ --------------- ----- 1.0.0-rc1-update1 clr x86 win * 1.0.0-rc2-16319 clr x86 win default
此時切換到項目路徑,直接dnx web,仍是失敗。dnu restore以後,再運行,就成功了。
.net
總結:rest
我的認爲這次緣由是asp.net5升級到rc2引發的,dnu restore時,下載了rc2的包,但運行是環境卻升不了級,不匹配。
爲何dnvm upgrade無論用呢?爲何我運行環境沒有升級到rc2時,都能restore出來rc2的包,這是一大疑問,是微軟的問題吧!
我又想到,原來運行時,一直是1.0.0-rc1-final來着,不知道怎麼變成1.0.0-rc1-update1了。dnu restore的包不匹配是否是由此引發的呢?
最後,我失望的發現,.dnx/packages裏的程序包是多個版本同時存在的,它的體積到目前有1.25GB。比安裝.net framework還要坑。
難道是我常常restore的錯,不知道有沒有清除的命令。