ASP.NET Core 2.0 发布日期:2017年8月14日html
ASP.NET团队宣布ASP.NET Core 2.0正式发布,发布Visual Studio 2017 15.3支持ASP.NET Core 2.0,提供新的Razor Pages项目模板。git
详细发布信息查看.NET Core 2.0.0发布说明文档github
最新版SDK下载:https://dot.net/corec#
ASP.NET Core 2.0提供一系列新功能使得Web应用开发、发布、部署和维护变得更加容易,框架性能获得进一步提高。服务器
对于.NET Core 2.0的发布介绍,围绕2.0的架构体系,本系列相关文章:架构
在开始以前先集中回复前两篇文章评论中你们比较关注的问题mvc
VS2017安装程序通过重构变成模块化安装,因此对于15.3版本的更新是增量更新,下载最新的安装程序,会自动检测。app
Visual Studio For Mac 7.1也同样,检测软件更新,进行增量更新。框架
.NET Standard是一组API集合,支持.NET Standard的.NET平台之间能够实现代码共享,基于.NET Standard构建的类库能够在支持.NET Standard的.NET平台进行复用,防止代码碎片化。
目前支持.NET Standard 2.0的平台有:ide
在深刻一点,看这张图
平台对.NET Standard 支持对应表(by @农码一辈子)
【图】
命名空间System.Drawing是增长了,只提供告终构体,并无提供绘图类,相信在接下来的版本会支持。
ASP.NET Core 2.0 能够同时运行在.NET Framework 4.6.1
和 .NET Core 2.0
框架,更改项目目标框架为:netcoreapp2.0
<PropertyGroup> <TargetFramework>netcoreapp2.0</TargetFramework> </PropertyGroup>
在Visual Stdio中能够设置项目属性
也能够手动编辑项目文件,将原项目中Microsoft.AspNetCore.*
引用包升级到2.0
<ItemGroup> <PackageReference Include="Microsoft.AspNetCore.All" Version="2.0.0" /> <PackageReference Include="Microsoft.Extensions.Logging.Debug" Version="2.0.0" /> <PackageReference Include="Microsoft.VisualStudio.Web.BrowserLink" Version="2.0.0" /> </ItemGroup>
ASP.NET Core 2.0项目发布作了优化,发布文件只包含引用的类库。这个优化有助于使发布过程更流畅,更容易分发Web应用程序。
将 ASP.NET Core 1.0 升级到 2.0 详细内容能够参看这篇文章。
ASP.NET Core 2.0中,提供一种新的编码方式,这种方式在页面逻辑集中的场景下比使用MVC架构开发更加简单。
Razor Pages是页面优先的架构,容许用户开发界面时,使用简单的服务端交互方式,经过页面模型对象(Page Model)进行数据交互,而无需控制器中转。
在项目启动文件中,添加代码
public class Startup { public void ConfigureServices(IServiceCollection services) { // 包含对Razor Pages 和控制器支持. services.AddMvc(); } public void Configure(IApplicationBuilder app) { app.UseMvc(); } }
当在服务注册中调用AddMvc方法时会激活Razor Pages功能。
添加一个测试页面,放在Pages目录下,命名为Now.cshtml
。
@page <html> <body> <h2>The server-local time now is:</h2> <p>@DateTime.Now</p> </body> </html>
这看起来像是标准的Razor视图,只是在页面顶部添加标记@page
,就定义该页面为独立的Razor Page,在页面中依然可使用 HtmlHelpers, TagHelpers 或者.NET 代码,能够像在Razor视图中同样定义方法,只需添加块级元素@functions
,而后在其内部编写代码。
@page @functions { public string FormatDate(DateTime theTime) { return theTime.ToString("d"); } } <html> <body> <h2>The server-local time now is:</h2> <p>@FormatDate(DateTime.Now)</p> </body> </html>
结合使用PageModel对象,能够建立更加复杂的页面交互,PageModel是一个MVVM架构概念,至关于视图模型(VM),容许执行方法并将属性绑定到对应的页面中。在Pages目录中建立一个NowModel.cshtml.cs
类。
namespace MyFirstRazorPage.Pages { public class NowModel : PageModel { private IFileProvider _FileProvider; public NowModel(PhysicalFileProvider fileProvider) { _FileProvider = fileProvider; LastModified = _FileProvider.GetFileInfo("Pages/Now.cshtml").LastModified.LocalDateTime; } public DateTime LastModified { get; set; } public void OnGet() { } } }
这个类继承自PageModel,根据页面业务须要能够构建与页面交互的逻辑类,而且能够对该类中的业务逻辑进行单元测试。在本例中,将LastModified属性加载到页面。另外注意OnGet
方法用来声明PageModel能够响应HTTP GET请求。
更新Razor Page,使用PageModel定义的LastModified属性。
@page
@model MyFirstRazorPage.Pages.NowModel
<html> <body> <h2>This page was last updated:</h2> <p>@Model.LastModified</p> </body> </html>
更多Razor Pages详细介绍参看资料。
模板已经加强,不只包含MVC模式的Web应用程序模板,也包含Razor Pages Web应用程序模板,还包含一系列单页应用(SPA)程序模板。这些单页模板使用Javascript服务功能在ASP.NET Core服务中嵌入NodeJS,将JavaScript应用程序服务器做为项目中的一部分进行编译。
命令行工具提供的内置项目模板
参看:Entity Framework Core 2.0发布(稍后发布,会用单独一篇文章总结)
运行在Azure应用服务上的ASP.NET Core 2.0项目无需修改,提供性能分析、错误报告和Azure应用程序监视功能。
在Visual Studio 2017中右键项目,Add->Application Insights Telemetry,启动应用程序数据收集,而后能够直接预览日志信息和应用程序性能报告。
这个功能可让咱们在开发阶段,对应用程序性能作出测试和反馈,当程序发布到Azure以后,能够在Azure门户中进行分析和调试,程序信息的收集从第一次发布应用程序并导航到云门户时开始。Azure将会以一个紫色横幅提示您,这代表应用程序监视和分析功能是可用的。
点击进入查看应用程序监视服务,无需从新编译和部署,应用程序监视服务将开始报告捕获到的活动数据。
数据报告显示了应用程序中失败的请求和错误的数量。单击关注的数据项,将展现关于失败请求的详细信息:
上图中抛出一个System.Exception
,点击查看异常报告,能够查看抛出异常的详细信息,包括调用堆栈:
应用程序监视的快照调试如今支持ASP.NET Core 2.0应用。若是设置在应用程序中配置快照调试,则顶部的“打开调试快照”连接将显示并显示完整的调用堆栈,能够单击堆栈中的方法来查看本地变量:
好了!咱们能够更进一步,点击右上角的“下载快照”按钮,在Visual Studio中启动一个异常调试会话。
这些页面的性能如何?从应用程序监视页面中,选择左侧的性能选项,深刻地研究每一个请求在应用程序的性能跟踪。
更多信息参看使用应用程序洞察的性能分析。
若是您想要使用您的应用程序的原始日志,您能够在应用程序服务中启用诊断日志,并将诊断级别设置为警告或错误,以查看该异常被抛出。
最后,选择左边的日志流,您能够看到您在开发人员工做站上所拥有的控制台。选择将在Azure中触发的严重级别或更大级别的错误和日志消息。
全部应用程序感知功能均可以在 ASP.NET Core 中使用,不用从新编译和部署。快照调试须要添加额外的步骤和一些代码,而配置就像在启动类中添加额外代码同样简单。
更新信息参看:应用程序洞察在线文档
Razor视图引擎借助Roslyn编译器支持C# 7.1功能,好比:默认表达式、推断的元组名称和模式匹配泛型。要在项目中使用c# 7.1特性,在项目文件中添加如下属性,而后从新加载解决方案:
<LangVersion>latest</LangVersion>
C# 7.1自己仍是预览版状态,能够在其GitHub存储库中查看这些特性的语言规范。
主机配置已经大大简化,默认ASP.NET Core项目模板中提供WebHost.CreateDefaultBuilder
,自动分配一个Kestrel服务器,若是IIS可用则尝试运行在IIS上,并配置标准控制台日志提供程序。
public class Program { public static void Main(string[] args) { BuildWebHost(args).Run(); } public static IWebHost BuildWebHost(string[] args) => WebHost.CreateDefaultBuilder(args) .UseStartup<Startup>() .Build(); }
ASP.NET Core 2.0提供的一系列新功能提供编写应用程序的新方法,简化了应用程序在生产环境的管理和维护。