从ASP.NET 5 Beta 4升级到Beta 5时出错
我已按照此处的步骤从ASP.NET 5 Beta 4升级到Beta 5,但在调用application.UseBrowserLink();
时在运行时出错application.UseBrowserLink();
:
mscorlib.dll中出现“System.TypeLoadException”类型的exception,但未在用户代码中处理
附加信息:无法从程序集“Microsoft.AspNet.Http,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = null”加载“Microsoft.AspNet.Builder.IApplicationBuilder”类型。
这些是我遵循的步骤:
- 已经安装了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文件的完整版本。
{ "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
。
UPDATE
这似乎是浏览器链接的一个问题,评论该行允许该网站工作。 它可能会被打破? 需要围绕aspnet GitHub问题进行搜索。
为了帮助您从beta4迁移到beta5,根据研究/调查结果,我们采取了以下步骤。
环境
- 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.ConfigurationModel;
using Microsoft.Framework.Configuration;
-
将
Configuration.GetConfigurationSection
更改为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 Studio 2015建议下载beta6,单击是
在project.json中:
- 将dnx451(或dnx452)更改为dnx46(使用Framework 4.6)
- 在此文件中将所有“-beta5”替换为“-beta6”
- 删除Microsoft.Framework.ConfigurationModel.UserSecrets
在Startup.cs中,如果使用Session:
- 用app.UseSession()替换app.UseInMemorySession(…)
-
在ConfigureServices中,添加以下内容:
services.AddCaching(); services.AddSession(); services.ConfigureSession(o => { o.IdleTimeout = TimeSpan.FromSeconds(10); });
-
右键单击Project> Properties> Debug> Add a new Environment Variable:
名称: DNX_IIS_RUNTIME_FRAMEWORK
价值: 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 vNext团队的@davidfowl交谈之后,他告诉我浏览器链接在beta5中不起作用,应该删除。
Microsoft.AspNet.Http和Microsoft.AspNet.Http.Core包名称交换
这是事情:
您将DNX从beta4更新为beta5,并且您希望在Visual Studio RC中运行MVC6模板(其模板是围绕beta4构建的)。
首先,beta5中不存在"Microsoft.Framework.Configuration.Json"
。 (你肯定应该看到这个: https : //github.com/aspnet/announcements/issues? q = milestone%3A1.0.0-beta5 – 从beta4到beta5的变化)。
为了确保您的DNX已正确更新,请构建一个新的空Web项目,然后只需添加MVC / WebAPI(简单案例以检查它是否有效)。
我还没有尝试过运行MVC模板,但我会尽力回复你。
如果有人想知道如何更新到ASP.NET 5 Beta 7,我发现下载Visual Studio 2015的最新ASP.NET和Web Tools更新,然后在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" ] } }
在撰写本文时,您可以在此处下载Visual Studio的beta 7更新 。 确保获得文件WebToolsExtensionsVS14.msi。
有关此Beta 7版本的更多信息,请参阅博客文章宣布ASP.NET 5 Beta7的可用性