ASP.NET 5运行时升级到Beta5

在Visual Studio 2015 RTM和Windows 10正式发布之前,微软把开源.NET升级到了beta5,带来了一些增强和改变。和Visual Studio 2015 RC一起安装的ASP.NET 5运行时是beta4,前几天微软发布了这个运行时的beta5版本。整个升级包括如下几个方面:

  • .NET执行环境(DNX)
    • 支持Nuget v3,恢复包的速度更快
    • 支持全新的.NET目标框架监测器(TFM)
    • 在project.json中可以设置语言和发布说明的链接
    • 消除了JSON.NET的固定版本要求:即不再要求你的应用程序使用和DNX一致的JSON.NET版本
    • 新的IRuntimeEnvironment服务
  • ASP.NET 5函数库
    • HttpContext.Connection,通过HttpContext可以获得连接的信息
    • 提供了本地化的抽象和中间件,且提供了示例帮助大家了解用法
    • 统一终止ASP.NET宿主环境的快捷键为Ctrl+C
  • MVC 6
    • 在Razor支持C# 6的新特性
    • 简化了MVC的选项设置,添加了顶级配置
    • 在视图中可以使用JSON Helper来序列化数据模型
    • 在Route标记中能够使用通配替换
    • 新的ImageTagHelper
    • Tag Helper支持绑定字典属性
    • Tag Helper支持条件绑定

ASP.NET 5 Beta5 Now Available中不仅详细介绍了上述增强,也给出了一个大致的升级步骤, 同时也给出了一个破坏变更的列表,主要的变化是Configuration部分的命名空间改变和程序集的整理,以及Entity Framework 7数据迁移的变化。具体参见:https://github.com/aspnet/announcements/issues?q=milestone%3A1.0.0-beta5

把ASP.NET 5的项目代码从beta 4升级到beta5遵从了文章ASP.NET 5 Beta5 Now Available文章中提到的基本步骤。

1,安装或升级DNVM。

如果没有.NET Version Manager (DNVM),需要通过如下代码来安装(如果已经有了执行如下代码也会升级到最新版本):

1: @powershell -NoProfile -ExecutionPolicy unrestricted -Command "&{$Branch='dev';iex ((new-object net.webclient).DownloadString('https://raw.githubusercontent.com/aspnet/Home/dev/dnvminstall.ps1'))}"

理论上,执行以上代码就可以把dnvm安装(或升级)到"beta6-10395",明显的不同是多了一个"update-self"的命令。

如果在已经有beta4的dnvm,那么执行上述命令后,需要重启命令行窗口才能看到最新的dnvm版本;当然我也遇到一个奇怪的问题,就是执行上述代码后死活不能升级,最后无奈,只好先执行第二步(见:升级DNX运行时)的特殊步骤,然后就会看到dnvm也自动升级为最新版本了。

2,升级DNX运行时。

如果正常升级了DNVM,那么无需去设置"DNX_FEED"环境变量,因为最新版的DNVM的默认地址已经是"https://www.nuget.org/api/v2"。现在只需要执行"dnvm upgrade"就可以下载并安装ASP.NET 5的Beta5运行时了(默认是clr x86),也会自动把这个运行时设置激活状态和default别名。

当然如果没有升级DNVM,那么可以设置"DNX_FEED",然后再升级DNX运行时。

也可以不设置"DNX_FEED",直接执行"dnvm upgrade",来先升级到beta5的预发布版本(beta5-12103)。升级到beta5的预发布版本会同时升级dnvm,然后再次执行"dnvm upgrade",升级到beta5正式发布版本。(这里说的就是上面提到的特殊步骤)。

3,修改project.json中的包引用。

打开解决方案中所有项目的project.json文件的,把其中所有后缀"beta4"的包修改为"beta5",保存project.json文件后,VS会自动更新到最新的beta5的包。

需要注意的是,xunit的相关包要改为引用beta5的编译版本,即"xunit": "2.1.0-beta3-build3029","xunit.runner.dnx": "2.1.0-beta3-build99"。

和Configuration相关的包,从"Microsoft.Framework.ConfigurationModel"修改为"Microsoft.Framework.Configuration"。

把"Interfaces"后缀的包修改为"Abstractions"。

4,解决代码变更。根据更新尤其破坏变更列表(https://github.com/aspnet/announcements/issues?q=milestone%3A1.0.0-beta5),来修改编译有问题的代码。主要的修改有:

  • EF7的迁移修改了代码接口(从属性改为方法),为了避免大量修改代码我是自己重建Migration。如果需要修改,见:https://github.com/aspnet/Announcements/issues/35
  • 把命名空间"Microsoft.Framework.ConfigurationModel"修改为"Microsoft.Framework.Configuration"。
  • IConfiguration.GetSubKey修改为IConfiguration.GetConfigurationSection
  • _GlobalImport.cshtml重命名为_ViewImports.cshtml,修改后VS2015可能会报类型没有引用,不必理会(等着VSWebTools更新)
  • 我之前讲解EF数据迁移的文章提到的代码"db.Database as SqlServerDatabase"要改为"db.Database as RelationalDatabase"
  • 单元测试中,必须显式执行services.AddLogging()

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏葡萄城控件技术团队

如何在 ASP.NET MVC 中集成 AngularJS(1)

介绍 当涉及到计算机软件的开发时,我想运用所有的最新技术。例如,前端使用最新的 JavaScript 技术,服务器端使用最新的基于 REST 的 Web API...

37360
来自专栏我思故我在

MongoDB - 在Windows上安装

15150
来自专栏武培轩的专栏

Notepad++中实现Markdown语法高亮与实时预览

Notepad ++是一个十分强大的编辑器,除了可以用来制作一般的纯文字说明文件,也十分适合编写计算机程序代码。Notepad ++不仅有语法高亮度显示,也有语...

48560
来自专栏jessetalks

ASP.NET安全

ASP.NET 安全 概述   安全在web领域是一个永远都不会过时的话题,今天我们就来看一看一些在开发ASP.NET MVC应用程序时一些值得我们注意的安全问...

56180
来自专栏张善友的专栏

使用IAPIExplorer列举ASP.NET Web API

IApiExplorer是一个新的抽象层,它可以帮助获取ASP.NET Web API的结构描述。伴随该接口的还有一个默认实现——APIExplorer。 使用...

19060
来自专栏圣杰的专栏

给ASP.NET Core Web发布包做减法

紧接上篇:ASP.NET Core Web App应用第三方Bootstrap模板。这一节我们来讲讲如何优化ASP.NET Core Web发布包繁重的问题。

9910
来自专栏张善友的专栏

.NET Core 系列5 :使用 Nuget打包类库

NuGet是个开源项目,项目包括 NuGet VS插件/NuGet Explorer/NuGetServer/NuGet命令行等项目,.NET Core项目完全...

28950
来自专栏依乐祝

使用Visual Studio Code开发.NET Core看这篇就够了

在本文中,我将带着大家一步一步的通过图文的形式来演示如何在Visual Studio Code中进行.NET Core程序的开发,测试以及调试。尽管Visual...

23600
来自专栏圣杰的专栏

ABP入门系列(12)——如何升级Abp并调试源码

源码路径:Github-LearningMpaAbp 1. 升级Abp 本系列教程是基于Abp V1.0版本,现在Abp版本已经升级至V1.4.2(截至至文章发...

31950
来自专栏依乐祝

.NET Core部署中你不了解的框架依赖与独立部署

框架依赖的部署:顾名思义,依赖框架的部署 (FDD) 依赖目标系统上存在共享系统级版本的 .NET Core。 由于已存在 .NET Core,因此应用在 .N...

21920

扫码关注云+社区

领取腾讯云代金券