2016-01-01 41 views
3

我想將我的C#web應用程序更新到下一個asp.net版本。依賴項> = 1.0.0-rc1-update1無法解析

我跑

dnvm use 1.0.0-rc1-update1 -r clr arch x64 -p 

和dnvm名單顯示,現行版本已被設置爲RC1-UPDATE1

現在我想更新我的VS2015解決方案中使用RC1-UPDATE1

我編輯project.json將版本從rc1-final更新到rc1-update1

但是,VS現在指示「程序包恢復失敗」。我有這樣的錯誤消息。

Severity Code Description Project File Line Suppression State 
Error CS0234 The type or namespace name 'AspNet' does not exist in the namespace 'Microsoft' (are you missing an assembly reference?) MyBootStrap.DNX 4.5.1  

懸停我的鼠標懸停在project.json編輯的依賴性顯示

enter image description here

我必須缺少一個步驟。 如何升級我的項目以使用框架的活動版本?

[更新] 當我從模板創建一個新的Web應用程序時,我注意到它仍在使用rc1-final。

還有在解決方案資源管理器窗口 消息「包還原失敗」 輸出顯示以下

PATH=.\node_modules\.bin;C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\Extensions\Microsoft\Web Tools\External; 
%PATH%;C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\Extensions\Microsoft\Web Tools\External\git 
C:\Users\kirsten\.dnx\runtimes\dnx-clr-win-x86.1.0.0-rc1-update1\bin\dnx.exe "C:\Users\kirsten\.dnx\runtimes\dnx-clr-win-x86.1.0.0-rc1-update1\bin\lib\Microsoft.Dnx.Tooling\Microsoft.Dnx.Tooling.dll" 
restore "E:\EShared\Dev2016\MyBootStrap\src\MyBootStrap" -f "C:\Program Files (x86)\Microsoft Web Tools\DNU" 
Microsoft .NET Development Utility Clr-x86-1.0.0-rc1-16231 
    CACHE https://www.nuget.org/api/v2/ 
Restoring packages for E:\EShared\Dev2016\MyBootStrap\src\MyBootStrap\project.json 
    CACHE https://www.nuget.org/api/v2/FindPackagesById()?id='Microsoft.AspNet.Diagnostics' 
    CACHE https://www.nuget.org/api/v2/FindPackagesById()?id='Microsoft.AspNet.IISPlatformHandler' 
    CACHE https://www.nuget.org/api/v2/FindPackagesById()?id='Microsoft.AspNet.Mvc' 
    CACHE https://www.nuget.org/api/v2/FindPackagesById()?id='Microsoft.AspNet.Mvc.TagHelpers' 
    CACHE https://www.nuget.org/api/v2/FindPackagesById()?id='Microsoft.AspNet.Server.Kestrel' 
    CACHE https://www.nuget.org/api/v2/FindPackagesById()?id='Microsoft.AspNet.StaticFiles' 
    CACHE https://www.nuget.org/api/v2/FindPackagesById()?id='Microsoft.AspNet.Tooling.Razor' 
    CACHE https://www.nuget.org/api/v2/FindPackagesById()?id='Microsoft.Extensions.Configuration.FileProviderExtensions' 
    CACHE https://www.nuget.org/api/v2/FindPackagesById()?id='Microsoft.Extensions.Configuration.Json' 
    CACHE https://www.nuget.org/api/v2/FindPackagesById()?id='Microsoft.Extensions.Logging' 
    CACHE https://www.nuget.org/api/v2/FindPackagesById()?id='Microsoft.Extensions.Logging.Console' 
    CACHE https://www.nuget.org/api/v2/FindPackagesById()?id='Microsoft.Extensions.Logging.Debug' 
    CACHE https://www.nuget.org/api/v2/FindPackagesById()?id='Microsoft.VisualStudio.Web.BrowserLink.Loader' 
Unable to locate Dependency Microsoft.AspNet.Diagnostics >= 1.0.0-rc1-update1 
Unable to locate Dependency Microsoft.AspNet.IISPlatformHandler >= 1.0.0-rc1-update1 
Unable to locate Dependency Microsoft.AspNet.Mvc >= 6.0.0-rc1-update1 
Unable to locate Dependency Microsoft.AspNet.Mvc.TagHelpers >= 6.0.0-rc1-update1 
Unable to locate Dependency Microsoft.AspNet.Server.Kestrel >= 1.0.0-rc1-update1 
Unable to locate Dependency Microsoft.AspNet.StaticFiles >= 1.0.0-rc1-update1 
Unable to locate Dependency Microsoft.AspNet.Tooling.Razor >= 1.0.0-rc1-update1 
Unable to locate Dependency Microsoft.Extensions.Configuration.FileProviderExtensions >= 1.0.0-rc1-update1 
Unable to locate Dependency Microsoft.Extensions.Configuration.Json >= 1.0.0-rc1-update1 
Unable to locate Dependency Microsoft.Extensions.Logging >= 1.0.0-rc1-update1 
Unable to locate Dependency Microsoft.Extensions.Logging.Console >= 1.0.0-rc1-update1 
Unable to locate Dependency Microsoft.Extensions.Logging.Debug >= 1.0.0-rc1-update1 
Unable to locate Dependency Microsoft.VisualStudio.Web.BrowserLink.Loader >= 14.0.0-rc1-update1 
Writing lock file E:\EShared\Dev2016\MyBootStrap\src\MyBootStrap\project.lock.json 
Restore complete, 413ms elapsed 
從這個我看到它正試圖運行DNX x86版本

。爲什麼會這樣?

[更新] 我想知道爲什麼它會使用nuget.org/api/v2,因此我使用擴展管理器重新安裝了nuget。它在Extension Manager中顯示版本 3.3.0.167,但Package Manager的輸出窗口仍然是V2。

我運行Windows 7

[更新] project.json是

{ 
    "version": "1.0.0-*", 
    "compilationOptions": { 
    "emitEntryPoint": true 
    }, 

    "dependencies": { 
    "Microsoft.AspNet.Diagnostics": "1.0.0-rc1-update1", 
    "Microsoft.AspNet.IISPlatformHandler": "1.0.0-rc1-update1", 
    "Microsoft.AspNet.Mvc": "6.0.0-rc1-update1", 
    "Microsoft.AspNet.Mvc.TagHelpers": "6.0.0-rc1-update1", 
    "Microsoft.AspNet.Server.Kestrel": "1.0.0-rc1-update1", 
    "Microsoft.AspNet.StaticFiles": "1.0.0-rc1-update1", 
    "Microsoft.AspNet.Tooling.Razor": "1.0.0-rc1-update1", 
    "Microsoft.Extensions.Configuration.FileProviderExtensions" : "1.0.0-rc1-update1", 
    "Microsoft.Extensions.Configuration.Json": "1.0.0-rc1-update1", 
    "Microsoft.Extensions.Logging": "1.0.0-rc1-update1", 
    "Microsoft.Extensions.Logging.Console": "1.0.0-rc1-update1", 
    "Microsoft.Extensions.Logging.Debug": "1.0.0-rc1-update1", 
    "Microsoft.VisualStudio.Web.BrowserLink.Loader": "14.0.0-rc1-update1" 
    }, 

    "commands": { 
    "web": "Microsoft.AspNet.Server.Kestrel" 
    }, 

    "frameworks": { 
    "dnx451": { }, 
    "dnxcore50": { } 
    }, 

    "exclude": [ 
    "wwwroot", 
    "node_modules" 
    ], 
    "publishExclude": [ 
    "**.user", 
    "**.vspscc" 
    ], 
    "scripts": { 
    "prepublish": [ "npm install", "bower install", "gulp clean", "gulp min" ] 
    } 
} 

這裏是我的NuGet.Config文件

<?xml version="1.0" encoding="utf-8"?> 
<configuration> 
    <packageRestore> 
    <add key="enabled" value="True" /> 
    <add key="automatic" value="True" /> 
    </packageRestore> 
    <packageSources> 
    <add key="SBD" value="E:\EShared\NuGet" /> 
    <add key="nuget.org" value="https://www.nuget.org/api/v2/" /> 
    </packageSources> 
    <activePackageSource> 
    <add key="nuget.org" value="https://www.nuget.org/api/v2/" /> 
    </activePackageSource> 
</configuration> 

這裏是我包的來源

SBD一個只是我們在室內開發的一些。我不認爲這會影響事情。

enter image description here

+0

我也試過重新啓動。 –

+2

這些asp。網絡程序集只是未發佈到Nuget(還),rc1-final是最後一個可用版本。這應該不起作用。 –

+1

@kirsteng:你只是*手動*修改**所有**依賴關係的版本號?每個DLL都可以*獨立*在NuGet上開發和發佈。一些dll仍然有名字-bata8,另一個有-rc1-final,並且只有一些從那裏更新了Update1並且在版本號中有-rc1-update1。你可以發佈'project.json'(不是圖片)還是發佈鏈接到測試項目,哪個人可以使用?順便說一下,有**獨立NuGet存儲庫**爲ASP.NET 5的不同狀態。我會建議您閱讀[答案](http://stackoverflow.com/a/34421286/315935)。 – Oleg

回答

5

看來你有混合的版本DNX的(微軟.NET執行環境),dnvm與組件的版本號的版本(.NET版本管理器)。

ASP.NET具有模塊化結構。這有利有弊。首先,你可以通過檢查你當前dnvm(.NET版本管理器):

dnvm version 

您可以使用

dnvm update-self 

將其更新到最新版本。

以同樣的方式,你可以使用

dnvm list 

看到安裝在您的個人資料全部DNX(的Microsoft .NET執行環境)。 %USERPROFILE%\.dnx\runtimes。您將爲每個安裝的dnx版本提供一個文件夾。通過使用dnvm use 1.0.0-rc1-update1 -r clr arch x64 -p您更改PATH。你可以看到當前的版本DNX默認使用

dnx --version 

它使用dnx.exe從%USERPROFILE%\.dnx\runtimes子目錄,您在PATH通過dnvm use ...包括在內。

如果使用Visual Studio項目,那麼你通常global.json包含

{ 
    "projects": [ 
    "src" 
    ], 
    "sdk": { 
    "version": "1.0.0-rc1-update1" 
    } 
} 

這樣的設置通知DNX的版本,應該在解決方案/項目的建設過程中使用的創建。上述所有

步驟沒有關係了很多當前發佈的現有軟件包的版本。您可以轉至頁面https://www.nuget.org/packages/並搜索軟件包的名稱。如果你的NuGet配置中使用https://www.nuget.org/api/v2/https://api.nuget.org/v3/index.json相同的程序包會被發現。您可以檢查http://myget.org/gallery/aspnetmaster看到ASP.NET的當前版本的「高手」 5個組件構建(穩定版),你可以檢查http://myget.org/gallery/aspnetvnext看到最新的(從GitHub開發不穩定)。人們可以找到很多其他飼料https://www.myget.org/gallery/下,但在我看來只有https://api.nuget.org/v3/index.jsonhttps://www.myget.org/F/aspnetmaster/api/v3/index.json應,如果你想使用ASP.NET 5的最新的穩定版本可用於

你會看到,從http://myget.org/gallery/aspnetmaster最新的穩定版有名稱「1.0.0-rc1-final」,但仍有很多程序集,其中有另一個版本爲*-rc1-final。在從http://myget.org/gallery/aspnetvnext同樣的方式構建不穩定今天名稱「V1.0.0-rc2-16357」,但也有很多組件,其中有另一個版本*-rc2-16357的。

換句話說,你不應該只是改變所有依賴的名字中使用的版本"*-rc1-update1"。您可以在上下文菜單中打開「管理NuGet程序包...」,選中「包括預發佈」並選擇「更新」選項卡,查看是否發佈了包含在「依賴關係」package.json中的新程序包。只有當你找到一些新的軟件包時,你纔可以更新它,但所有軟件包使用-rc1-update1都會產生錯誤。

+0

謝謝你的完整答案。個人而言,我不得不復制粘貼包feed [這裏](http://myget.org/gallery/aspnetmaster)到NuGet的包源設置,並且它工作。 –

+1

@ChristopherJ .:還有很多其他提要,微軟將使用這些提要發佈一些更新的包:https://www.myget.org/F/aspnetvolatiledev/api/v3/index.json,https:// www.myget.org/F/dotnet-core/api/v3/index.json,https://www.myget.org/F/aspnet-contrib/api/v3/index.json,https:// www。 myget.org/F/azureadwebstacknightly/api/v3/index.json,https://www.nuget.org/api/v2/curated-feeds/microsoftwotnet/。最好的選擇取決於許多標準。瞭解配置NuGet Feed的重要性非常重要。 – Oleg

2

有些工具根據別名選擇的框架。在命令行中,檢查是否將別名「default」分配給1.0.0-rc1-update1 clr x64版本。如果沒有運行以下命令。

dnvm alias default 1.0.0-rc1-update1 -a x64 -r clr 

這應該解決問題。

+0

感謝邁克爾,但沒有快樂。 –