(此文章同时发表在本人微信公众号“dotNET每日精华文章”,欢迎右边二维码来关注。)
题记:微软根据ASP.NET 5的路线图如期发布了beta6,现在我们就来说说beta5升级到beta6的一些问题。
之前微软公布了ASP.NET 5的路线图 (https://github.com/aspnet/home/wiki/roadmap)。根据这个路线图的说法,在7月27日发布ASP.NET 5 beta6。由于微软是7月20日发布Visual Studio 2015 RTM的(内置ASP.NET 5 beta5),所以beta6还是需要自己手动来安装。为了等着7月30日安装好Windows 10后再安装Visual Studio 2015 RTM,所以昨天才把项目代码升级到beta6。
把beta5升级beta6虽然也可以沿用之前的方法(微信公众号回复:20150707),不过鉴于VS2015已经RTM,所以微软给我们提供了用于升级的安装包,通过这里下载(http://go.microsoft.com/fwlink/?LinkID=619565)。安装包其中一个用于安装dnvm(分为x64和x86),一个用于安装运行时的(有不同语言版本)。
升级了dnvm和dnx运行时之后,要做的就是根据beta6的一些改变(https://github.com/aspnet/Announcements/issues?q=is%3Aopen+is%3Aissue+milestone%3A1.0.0-beta6)解决代码出现的编译和运行问题。下面就简述一下我项目代码遇到的一些问题:
- Mvc的功能被分成了更加精细的包,方便更小化的添加和依赖。比如ViewContext,ViewContextAttribute和IHtmlHelper就被移动到了Microsoft.AspNet.Mvc.ViewFeatures中
- project.lock.json文件的格式变化且最终固定,所以需要重新执行“dnu restore”
- builder.ForSqlServer().UseIdentity(); 改用 builder.UseSqlServerIdentityColumns();
- EntityOptionsBuilder 改用 DbContextOptionsBuilder
- Microsoft.DataAnnotations被放弃(其实在beta4就放弃了,我之前还是引用了),现在不使用IndexAttribute,而是改用FluentAPI来定义索引,更多说明见(https://github.com/aspnet/EntityFramework/issues/1698)
- Microsoft.Framework.CodeGenerators.Mvc没有beta6版本,不过不引用似乎暂时无碍
- ISessionCollection 改用 ISession
- SignIn 改用 SignInAsync,SignOut 改用 SignOutAsync
- UseInMemorySession 改用 UseSession
- ErrorPageOptions.ShowAll 废弃
- 在Starup中调用数据库初始化的代码需要改变,见我在GitHub上的Issue报告(https://github.com/aspnet/Identity/issues/529)
- 作为外键的属性,如果是字符串要明确定义字符串长度(之前可以根据指向主键来自动设置)
- Beta6的脚手架(即默认项目代码结构)有所改变,主要涉及前端包引用bower部分
以上就是升级beta6的一些心得。