asp.net5發神經一例 ------沒法加載依賴

代碼就是示例代碼,原來根據流程,配置的好好的,忽然就不能用了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的錯,不知道有沒有清除的命令。

相關文章
相關標籤/搜索