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提供的一系列新功能提供編寫應用程序的新方法,簡化了應用程序在生產環境的管理和維護。