我想将我的C#Web应用程序更新到下一个asp.net版本.
我跑了
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中已编辑的依赖项上
我一定是错过了一步.如何升级项目以使用框架的Active版本?
[更新]当我从模板创建一个新的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
从这里我看到它试图运行x86版本的dnx.那为什么会这样?
[更新]我想知道它为什么会使用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文件
这是我的包源
SBD只是我们在内部开发的一些.我不认为它会影响事情.
您似乎已将dnx(Microsoft .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
它使用%USERPROFILE%\.dnx\runtimes
您在PATH中包含的子目录中的dnx.exe 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 dev的不稳定).你可以在https://www.myget.org/gallery/下找到很多其他的feed ,但在我看来只有https://api.nuget.org/v3/index.json和https://www.myget如果要使用ASP.NET 5的最新稳定版本,则应使用.org/F/aspnetmaster/api/v3/index.json.
你会看到,从最新的稳定版本http://myget.org/gallery/aspnetmaster有名字 "1.0.0-RC1决赛",但仍有大量的组件,它有另一个版本的*-rc1-final
.同样地,来自http://myget.org/gallery/aspnetvnext的不稳定构建今天的名称为 "v1.0.0-rc2-16357",但是有很多程序集,其中有另一个版本*-rc2-16357
.
换句话说,您不应该只更改所有依赖项的名称以使用版本"*-rc1-update1"
.您可以在上下文菜单中打开"管理NuGet包...",选中"包含预发布"并选择"更新"选项卡,以查看是否发布了包含在"依赖关系"中的新包package.json
.只有当您找到一些新软件包然后您才能更新它,但是-rc1-update1
对所有软件包的使用将产生错误.