从 ASP.NET 5 Beta 4 升级到 Beta 5 时出错
Error Upgrading from ASP.NET 5 Beta 4 to Beta 5
我已按照步骤 here 从 ASP.NET 5 Beta 4 升级到 Beta 5,但在 运行 调用 application.UseBrowserLink();
时出现错误:
An exception of type 'System.TypeLoadException' occurred in
mscorlib.dll but was not handled in user code
Additional information: Could not load type
'Microsoft.AspNet.Builder.IApplicationBuilder' from assembly
'Microsoft.AspNet.Http, Version=1.0.0.0, Culture=neutral,
PublicKeyToken=null'.
这些是我遵循的步骤:
- 已经安装了 VS 2015 RC。
- 来自 PowerShell 运行:
$env:DNX_FEED="https://www.nuget.org/api/v2"
- 来自 PowerShell 运行:
dnvm upgrade
添加了一个 Global.json 文件(我还没有)。当我添加它时,它已经提到了 Beta 5:
{
"projects": [ "Source", "Tests" ],
"sdk": {
"version": "1.0.0-beta5-12103"
}
}
已将 project.json 中的所有软件包更新为 Beta 5。您可以查看我的 project.lock.json 文件 here.
的完整版本
{
"dependencies": {
"Boilerplate.Web.Mvc6": "1.0.2",
"Microsoft.AspNet.Diagnostics": "1.0.0-beta5",
"Microsoft.AspNet.Mvc": "6.0.0-beta5",
"Microsoft.AspNet.Mvc.TagHelpers": "6.0.0-beta5",
"Microsoft.AspNet.Mvc.Xml": "6.0.0-beta5",
"Microsoft.AspNet.Server.IIS": "1.0.0-beta5",
"Microsoft.AspNet.Server.WebListener": "1.0.0-beta5",
"Microsoft.AspNet.StaticFiles": "1.0.0-beta5",
"Microsoft.AspNet.Tooling.Razor": "1.0.0-beta5",
"Microsoft.Framework.CodeGenerators.Mvc": "1.0.0-beta5",
"Microsoft.Framework.Configuration.EnvironmentVariables": "1.0.0-beta5",
"Microsoft.Framework.Configuration.Json": "1.0.0-beta5",
"Microsoft.Framework.Configuration.UserSecrets": "1.0.0-beta5",
"Microsoft.Framework.Logging": "1.0.0-beta5",
"Microsoft.Framework.Logging.Console": "1.0.0-beta5",
"Microsoft.VisualStudio.Web.BrowserLink.Loader": "14.0.0-beta5",
"Newtonsoft.Json": "6.0.6",
"System.Runtime": "4.0.20-beta-23019"
}
"frameworks": {
"dnx451": {
"frameworkAssemblies": {
"System.Net.Http": "4.0.0.0",
"System.ServiceModel": "4.0.0.0"
}
},
"dnxcore50": {
"dependencies": {
"System.Net.Http": "4.0.0-beta-23019"
}
}
}
}
- 说明然后继续说你应该 运行 以下命令,但我相信 VS 2015 RC 会为你做到这一点
dnu restore
然后 dnu build
。
更新
这似乎是浏览器 link 的问题,注释掉该行可以使网站正常运行。它可能坏了?需要解决 aspnet GitHub 问题。
Microsoft.AspNet.Http and Microsoft.AspNet.Http.Core package names swapped
事情是这样的:
您将 DNX 从 beta4 更新到 beta5,并且您想要 运行 在 Visual Studio RC(其模板是围绕 beta4 构建的)内的 MVC6 模板。
首先,"Microsoft.Framework.Configuration.Json"
在 beta5 中已经不存在了。 (您绝对应该看到:https://github.com/aspnet/announcements/issues?q=milestone%3A1.0.0-beta5 - 从 beta4 到 beta5 的重大更改)。
为了查看您的 DNX 是否已正确更新,构建一个新的空 Web 项目并简单地添加 MVC/WebAPI(检查其是否有效的简单案例)。
我还没有尝试 运行 MVC 模板,但我会尝试并返回给你。
在与 ASP.NET vNext 团队的@davidfowl 交谈后,他告诉我浏览器 Link 在 beta5 中不起作用,应该被删除。
为了帮助您从 beta4 迁移到 beta5,这些是我根据 research/findings.
采取的以下步骤
环境
- PowerShell 运行:
$env:DNX_FEED="https://www.nuget.org/api/v2"
- PowerShell 运行:
dnvm install 1.0.0-beta5
- PowerShell 运行:
dnvm use 1.0.0-beta5 -p
(不确定是否需要,但我不得不)
项目
打开global.json并将sdk更新到1.0.0-beta5应该是这样的:
{
"projects": [ "src", "test" ],
"sdk": {
"version": "1.0.0-beta5"
}
}
打开project.json:
- 已将依赖项版本从 beta4 更新到 beta5
更改 配置 依赖项:
"Microsoft.Framework.ConfigurationModel.Json": "1.0.0-beta4"
到
"Microsoft.Framework.Configuration": "1.0.0-beta5",
"Microsoft.Framework.Configuration.Json": "1.0.0-beta5"
- 删除
Microsoft.VisualStudio.Web.BrowserLink.Loader
- 将
_GlobalImport.cshtml
重命名为 _ViewImports.cshtml
Startup.cs 变化
更改配置重大更改
将命名空间从 using Microsoft.Framework.ConfigurationModel;
更改为 using Microsoft.Framework.Configuration;
将Configuration.GetSubKey
改为Configuration.GetConfigurationSection
将 CTOR 更改为:
public Startup(IHostingEnvironment env, IApplicationEnvironment appEnv)
{
// Setup configuration sources.
var configBuilder = new ConfigurationBuilder(appEnv.ApplicationBasePath)
.AddJsonFile("config.json")
.AddEnvironmentVariables();
Configuration = configBuilder.Build();
}
- 删除
app.UseBrowserLink();
DNU 项目 CMD
- 在 app root
中打开 PowerShell
- 运行
dnu restore
- 运行
dnu build
- 此时关闭并重新打开 VS 有时会有帮助。
我自己发现升级现有项目非常困难,找不到所有需要的步骤。
希望对您有所帮助!
要完成,如果您想从 beta 4 更新到 beta 6,请参阅 Stephen Lautier 的回答以及此后的答案:
要从 beta 5 更新到 beta 6:
我做到了:
- 打开 global.json 并将 sdk 更新为“1.0.0-beta6”并保存此文件
- Visual Studio2015建议下载beta6,点击是
在project.json中:
- 将 dnx451(或 dnx452)更改为 dnx46(以使用 Framework 4.6)
- 将此文件中的所有“-beta5”替换为“-beta6”
- 移除Microsoft.Framework.ConfigurationModel.UserSecrets
在Startup.cs中,如果你使用Session :
- 将 app.UseInMemorySession(...) 替换为 app.UseSession()
在 ConfigureServices 中,添加:
services.AddCaching();
services.AddSession();
services.ConfigureSession(o => { o.IdleTimeout = TimeSpan.FromSeconds(10); });
右键单击您的项目 > 属性 > 调试 > 添加新的环境变量:
Name : DNX_IIS_RUNTIME_FRAMEWORK
Value : dnx46
有关详细信息,请参阅:http://jameschambers.com/2015/07/launching-an-asp-net-5-application-from-visual-studio-2015/
- 在程序包管理器控制台中,写入此 "dnu restore" 和此 "dnu build"
- 重启Visual Studio
之后我的项目在beta6工作,可能还有其他事情要做。
如果有人想知道如何更新到 ASP.NET 5 Beta 7,我发现下载最新的 ASP.NET 和 Visual Studio 2015 的网络工具更新然后创建它很有用Visual Studio.
中的新 ASP.NET 5 项目
这将为您创建一个 Beta 7 项目,其中包含项目结构、代码和引用的依赖项。然后,您可以将其用作升级任何现有的旧 Beta 项目的指南。
例如,我的 project.json 使用所有 Beta 7 依赖项时的样子:
{
"webroot": "wwwroot",
"userSecretsId": "aspnet5-WebApplication1-a433a0ef-3bed-4bc9-8086-8d18070fa2c1",
"version": "1.0.0-*",
"dependencies": {
"EntityFramework.Commands": "7.0.0-beta7",
"EntityFramework.SqlServer": "7.0.0-beta7",
"Microsoft.AspNet.Authentication.Cookies": "1.0.0-beta7",
"Microsoft.AspNet.Authentication.Facebook": "1.0.0-beta7",
"Microsoft.AspNet.Authentication.Google": "1.0.0-beta7",
"Microsoft.AspNet.Authentication.MicrosoftAccount": "1.0.0-beta7",
"Microsoft.AspNet.Authentication.Twitter": "1.0.0-beta7",
"Microsoft.AspNet.Diagnostics": "1.0.0-beta7",
"Microsoft.AspNet.Diagnostics.Entity": "7.0.0-beta7",
"Microsoft.AspNet.Identity.EntityFramework": "3.0.0-beta7",
"Microsoft.AspNet.Mvc": "6.0.0-beta7",
"Microsoft.AspNet.Mvc.TagHelpers": "6.0.0-beta7",
"Microsoft.AspNet.Server.IIS": "1.0.0-beta7",
"Microsoft.AspNet.Server.WebListener": "1.0.0-beta7",
"Microsoft.AspNet.StaticFiles": "1.0.0-beta7",
"Microsoft.AspNet.Tooling.Razor": "1.0.0-beta7",
"Microsoft.Framework.Configuration.Abstractions": "1.0.0-beta7",
"Microsoft.Framework.Configuration.Json": "1.0.0-beta7",
"Microsoft.Framework.Configuration.UserSecrets": "1.0.0-beta7",
"Microsoft.Framework.Logging": "1.0.0-beta7",
"Microsoft.Framework.Logging.Console": "1.0.0-beta7",
"Microsoft.Framework.Logging.Debug" : "1.0.0-beta7",
"Microsoft.VisualStudio.Web.BrowserLink.Loader": "14.0.0-beta7"
},
"commands": {
"web": "Microsoft.AspNet.Hosting --config hosting.ini",
"ef": "EntityFramework.Commands"
},
"frameworks": {
"dnx451": { },
"dnxcore50": { }
},
"exclude": [
"wwwroot",
"node_modules",
"bower_components"
],
"publishExclude": [
"node_modules",
"bower_components",
"**.xproj",
"**.user",
"**.vspscc"
],
"scripts": {
"prepublish": [ "npm install", "bower install", "gulp clean", "gulp min" ]
}
}
在撰写本文时,您可以从这里下载 the beta 7 updates for Visual Studio。确保您获得文件 WebToolsExtensionsVS14.msi.
有关此 Beta 7 版本的更多信息,请参阅博客 post Announcing Availability of ASP.NET 5 Beta7
我已按照步骤 here 从 ASP.NET 5 Beta 4 升级到 Beta 5,但在 运行 调用 application.UseBrowserLink();
时出现错误:
An exception of type 'System.TypeLoadException' occurred in mscorlib.dll but was not handled in user code
Additional information: Could not load type 'Microsoft.AspNet.Builder.IApplicationBuilder' from assembly 'Microsoft.AspNet.Http, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null'.
这些是我遵循的步骤:
- 已经安装了 VS 2015 RC。
- 来自 PowerShell 运行:
$env:DNX_FEED="https://www.nuget.org/api/v2"
- 来自 PowerShell 运行:
dnvm upgrade
添加了一个 Global.json 文件(我还没有)。当我添加它时,它已经提到了 Beta 5:
{ "projects": [ "Source", "Tests" ], "sdk": { "version": "1.0.0-beta5-12103" } }
已将 project.json 中的所有软件包更新为 Beta 5。您可以查看我的 project.lock.json 文件 here.
的完整版本{ "dependencies": { "Boilerplate.Web.Mvc6": "1.0.2", "Microsoft.AspNet.Diagnostics": "1.0.0-beta5", "Microsoft.AspNet.Mvc": "6.0.0-beta5", "Microsoft.AspNet.Mvc.TagHelpers": "6.0.0-beta5", "Microsoft.AspNet.Mvc.Xml": "6.0.0-beta5", "Microsoft.AspNet.Server.IIS": "1.0.0-beta5", "Microsoft.AspNet.Server.WebListener": "1.0.0-beta5", "Microsoft.AspNet.StaticFiles": "1.0.0-beta5", "Microsoft.AspNet.Tooling.Razor": "1.0.0-beta5", "Microsoft.Framework.CodeGenerators.Mvc": "1.0.0-beta5", "Microsoft.Framework.Configuration.EnvironmentVariables": "1.0.0-beta5", "Microsoft.Framework.Configuration.Json": "1.0.0-beta5", "Microsoft.Framework.Configuration.UserSecrets": "1.0.0-beta5", "Microsoft.Framework.Logging": "1.0.0-beta5", "Microsoft.Framework.Logging.Console": "1.0.0-beta5", "Microsoft.VisualStudio.Web.BrowserLink.Loader": "14.0.0-beta5", "Newtonsoft.Json": "6.0.6", "System.Runtime": "4.0.20-beta-23019" } "frameworks": { "dnx451": { "frameworkAssemblies": { "System.Net.Http": "4.0.0.0", "System.ServiceModel": "4.0.0.0" } }, "dnxcore50": { "dependencies": { "System.Net.Http": "4.0.0-beta-23019" } } } }
- 说明然后继续说你应该 运行 以下命令,但我相信 VS 2015 RC 会为你做到这一点
dnu restore
然后dnu build
。
更新
这似乎是浏览器 link 的问题,注释掉该行可以使网站正常运行。它可能坏了?需要解决 aspnet GitHub 问题。
Microsoft.AspNet.Http and Microsoft.AspNet.Http.Core package names swapped
事情是这样的:
您将 DNX 从 beta4 更新到 beta5,并且您想要 运行 在 Visual Studio RC(其模板是围绕 beta4 构建的)内的 MVC6 模板。
首先,"Microsoft.Framework.Configuration.Json"
在 beta5 中已经不存在了。 (您绝对应该看到:https://github.com/aspnet/announcements/issues?q=milestone%3A1.0.0-beta5 - 从 beta4 到 beta5 的重大更改)。
为了查看您的 DNX 是否已正确更新,构建一个新的空 Web 项目并简单地添加 MVC/WebAPI(检查其是否有效的简单案例)。
我还没有尝试 运行 MVC 模板,但我会尝试并返回给你。
在与 ASP.NET vNext 团队的@davidfowl 交谈后,他告诉我浏览器 Link 在 beta5 中不起作用,应该被删除。
为了帮助您从 beta4 迁移到 beta5,这些是我根据 research/findings.
采取的以下步骤环境
- PowerShell 运行:
$env:DNX_FEED="https://www.nuget.org/api/v2"
- PowerShell 运行:
dnvm install 1.0.0-beta5
- PowerShell 运行:
dnvm use 1.0.0-beta5 -p
(不确定是否需要,但我不得不)
项目
打开global.json并将sdk更新到1.0.0-beta5应该是这样的:
{ "projects": [ "src", "test" ], "sdk": { "version": "1.0.0-beta5" } }
打开project.json:
- 已将依赖项版本从 beta4 更新到 beta5
更改 配置 依赖项:
"Microsoft.Framework.ConfigurationModel.Json": "1.0.0-beta4"
到
"Microsoft.Framework.Configuration": "1.0.0-beta5", "Microsoft.Framework.Configuration.Json": "1.0.0-beta5"
- 删除
Microsoft.VisualStudio.Web.BrowserLink.Loader
- 将
_GlobalImport.cshtml
重命名为_ViewImports.cshtml
Startup.cs 变化
更改配置重大更改
将命名空间从
using Microsoft.Framework.ConfigurationModel;
更改为using Microsoft.Framework.Configuration;
将
Configuration.GetSubKey
改为Configuration.GetConfigurationSection
将 CTOR 更改为:
public Startup(IHostingEnvironment env, IApplicationEnvironment appEnv) { // Setup configuration sources. var configBuilder = new ConfigurationBuilder(appEnv.ApplicationBasePath) .AddJsonFile("config.json") .AddEnvironmentVariables(); Configuration = configBuilder.Build(); }
- 删除
app.UseBrowserLink();
DNU 项目 CMD
- 在 app root 中打开 PowerShell
- 运行
dnu restore
- 运行
dnu build
- 此时关闭并重新打开 VS 有时会有帮助。
我自己发现升级现有项目非常困难,找不到所有需要的步骤。 希望对您有所帮助!
要完成,如果您想从 beta 4 更新到 beta 6,请参阅 Stephen Lautier 的回答以及此后的答案:
要从 beta 5 更新到 beta 6:
我做到了:
- 打开 global.json 并将 sdk 更新为“1.0.0-beta6”并保存此文件
- Visual Studio2015建议下载beta6,点击是
在project.json中:
- 将 dnx451(或 dnx452)更改为 dnx46(以使用 Framework 4.6)
- 将此文件中的所有“-beta5”替换为“-beta6”
- 移除Microsoft.Framework.ConfigurationModel.UserSecrets
在Startup.cs中,如果你使用Session :
- 将 app.UseInMemorySession(...) 替换为 app.UseSession()
在 ConfigureServices 中,添加:
services.AddCaching(); services.AddSession(); services.ConfigureSession(o => { o.IdleTimeout = TimeSpan.FromSeconds(10); });
右键单击您的项目 > 属性 > 调试 > 添加新的环境变量:
Name : DNX_IIS_RUNTIME_FRAMEWORK
Value : dnx46
有关详细信息,请参阅:http://jameschambers.com/2015/07/launching-an-asp-net-5-application-from-visual-studio-2015/
- 在程序包管理器控制台中,写入此 "dnu restore" 和此 "dnu build"
- 重启Visual Studio
之后我的项目在beta6工作,可能还有其他事情要做。
如果有人想知道如何更新到 ASP.NET 5 Beta 7,我发现下载最新的 ASP.NET 和 Visual Studio 2015 的网络工具更新然后创建它很有用Visual Studio.
中的新 ASP.NET 5 项目这将为您创建一个 Beta 7 项目,其中包含项目结构、代码和引用的依赖项。然后,您可以将其用作升级任何现有的旧 Beta 项目的指南。
例如,我的 project.json 使用所有 Beta 7 依赖项时的样子:
{
"webroot": "wwwroot",
"userSecretsId": "aspnet5-WebApplication1-a433a0ef-3bed-4bc9-8086-8d18070fa2c1",
"version": "1.0.0-*",
"dependencies": {
"EntityFramework.Commands": "7.0.0-beta7",
"EntityFramework.SqlServer": "7.0.0-beta7",
"Microsoft.AspNet.Authentication.Cookies": "1.0.0-beta7",
"Microsoft.AspNet.Authentication.Facebook": "1.0.0-beta7",
"Microsoft.AspNet.Authentication.Google": "1.0.0-beta7",
"Microsoft.AspNet.Authentication.MicrosoftAccount": "1.0.0-beta7",
"Microsoft.AspNet.Authentication.Twitter": "1.0.0-beta7",
"Microsoft.AspNet.Diagnostics": "1.0.0-beta7",
"Microsoft.AspNet.Diagnostics.Entity": "7.0.0-beta7",
"Microsoft.AspNet.Identity.EntityFramework": "3.0.0-beta7",
"Microsoft.AspNet.Mvc": "6.0.0-beta7",
"Microsoft.AspNet.Mvc.TagHelpers": "6.0.0-beta7",
"Microsoft.AspNet.Server.IIS": "1.0.0-beta7",
"Microsoft.AspNet.Server.WebListener": "1.0.0-beta7",
"Microsoft.AspNet.StaticFiles": "1.0.0-beta7",
"Microsoft.AspNet.Tooling.Razor": "1.0.0-beta7",
"Microsoft.Framework.Configuration.Abstractions": "1.0.0-beta7",
"Microsoft.Framework.Configuration.Json": "1.0.0-beta7",
"Microsoft.Framework.Configuration.UserSecrets": "1.0.0-beta7",
"Microsoft.Framework.Logging": "1.0.0-beta7",
"Microsoft.Framework.Logging.Console": "1.0.0-beta7",
"Microsoft.Framework.Logging.Debug" : "1.0.0-beta7",
"Microsoft.VisualStudio.Web.BrowserLink.Loader": "14.0.0-beta7"
},
"commands": {
"web": "Microsoft.AspNet.Hosting --config hosting.ini",
"ef": "EntityFramework.Commands"
},
"frameworks": {
"dnx451": { },
"dnxcore50": { }
},
"exclude": [
"wwwroot",
"node_modules",
"bower_components"
],
"publishExclude": [
"node_modules",
"bower_components",
"**.xproj",
"**.user",
"**.vspscc"
],
"scripts": {
"prepublish": [ "npm install", "bower install", "gulp clean", "gulp min" ]
}
}
在撰写本文时,您可以从这里下载 the beta 7 updates for Visual Studio。确保您获得文件 WebToolsExtensionsVS14.msi.
有关此 Beta 7 版本的更多信息,请参阅博客 post Announcing Availability of ASP.NET 5 Beta7