隨着 Visual Studio 2019 16.7 Preview 4 的發佈,如今能夠嘗試咱們新的實驗性 Razor 編輯器,用於本地開發,包括 MVC、Razor Page 和 Blazor。咱們很期待你來試一試!javascript
要在 Visual Studio 2019 16.7 Preview 4 或更高版本中啓用新的實驗性 Razor 編輯器:html
1. 安裝最新版 Visual Studiojava
2. 點擊 Tools > Options > Environment > Preview Features,勾選Enable experimental Razor editor 選項:服務器
3. 點擊 OK 並重啓 Visual Studio編輯器
如此,如今可使用新的 Razor 編輯器。ide
Razor 是一種基於 HTML 和 C# 的模板語言,用於爲基於 MVC、Razor Page 和 Blazor 的 .NET Web 應用程序定義動態呈現邏輯。在 MVC 和 Razor 頁面應用程序中,你使用 Razor 來定義視圖和頁面的呈現邏輯 .cshtml 文件。在 Blazor 中,使用 Razor 在 .razor 文件中編寫可重用的 UI 組件。Razor 是使用 .NET 構建 Web 應用程序的體驗中相當重要的一部分。工具
你如今能夠嘗試一下 Razor,用 ASP.NET Core 或 Blazor 構建你的第一個Web 應用程序。visual-studio
Razor 的部分價值在於 Visual Studio 爲編輯 Razor 文件提供了豐富的工具體驗。Visual Studio 如今在同一個 Razor 文件中爲 HTML、CSS、JavaScript、C# 和 Razor 特定語法提供了智能感知、自動完成和診斷。spa
Visual Studio 作了一些巧妙的操做,以在 Razor 文件中同時啓用對全部這些語言的編輯器支持。對 Razor 文檔進行解析以肯定其組成部分,而後將每一個部分投影到一個稱爲投影緩衝區的特定於語言的緩衝區中。在 Visual Studio 中編輯 Razor 文檔時,您看到的是這些投影緩衝區中的一組小窗口,它們組成了一個完整的文檔。而後,每一個語言服務分別爲每一個獨立的投影緩衝區處理編輯體驗。code
例如,考慮下面Razor代碼:
@{ ViewData["Title"] = "About"; } <script type="text/javascript"> alert("Hello, World!"); </script>
Visual Studio 處理 Razor 代碼的方式以下:
這個項目緩衝區設置在 Visual Studio 和 Mac 的 Visual Studio 中工做得很好,可是對於遠程編輯場景,好比 Visual Studio LiveShare 或 Visual Studio Codespaces,它就有問題了。它也不能用於沒有投影緩衝區支持的編輯器,好比 Visual Studio Code。因爲 Razor 編輯器缺乏中央編配器,若是不仔細協調各類語言服務實現(由於它們在投影場景中控制本身的體驗),就很難啓用新特性。
爲了更普遍地支持 Razor 編輯,咱們已經爲一個基於 Razor 語言服務器的 ASP.NET Core 項目的新的 Razor 編輯器工做了一段時間。這個新的 Razor 語言服務器經過 LSP(Language Server Protocol)實現了一些編輯器特性,好比自動完成、轉到定義等,LSP 爲編輯器或 IDE 定義了一種啓用這些特性的標準方法。而後一個 IDE 特定的 Razor 擴展用於處理與 Razor 語言服務器以及其餘 HTML 和 C# 語言服務器的協調。
這個新的 Razor 語言服務器已經做爲 C# 擴展的一部分在 Visual Studio 代碼中啓用了對 Razor 的支持。它將是 Visual Studio Codespaces 和 Visual Studio LiveShare 支持 Razor 編輯的基礎。如今能夠在 Visual Studio 中做爲預覽特性進行本地開發。
目前,咱們的重點是使新的基於 LSP 的 Razor 編輯器在功能上與現有的 Visual Studio Razor 編輯體驗相同(以下所述,仍然有一些功能上的差距須要解決)。在將來的版本中,咱們但願經過添加劇要的新功能來填補這些功能空白,好比爲 Razor 帶來更多的 C# 編輯特性,以及其餘針對 Razor 的生產力改進。
新的 Razor 編輯器目前還處於試驗階段,有一些已知的限制。下面的Razor編輯器功能尚未徹底實現,將在將來的版本中增長:
支持 JavaScript 和 CSS 的智能感知
C#、JavaScript、CSS、Blazor 組件、Tag Helper 和 tooltip 的顏色設置
格式化僅限於 @code 和 @functions 塊中的 C# 代碼(沒有嵌入 HTML 標記或 Razor 語法)
HTML 中支持 URL 選擇器
C# 代碼段(「prop」、「ctor」等)
複雜的 C# 自動完成(例如,生成 override)
從 C# 到 Razor 的定義/實現
C# 文件中的重命名不會傳播到Razor文件
HTML 和 { } 中匹配標識符高亮顯示
16.7 Preview 4 中新的 Razor 編輯器也有一些功能問題,這些問題將在將來的版本中解決:
C# 中標識錯誤的波浪線多是對不齊
因爲在 Razor 文件中沒必要要地使用指令而報告了沒必要要的信息錯誤
Blazor 組件和 Tag Helper 如今的顏色和 C# 類同樣,不受 Tag Helper 顏色選項的控制
對於 Visual Studio 中新的基於 LSP 的 Razor 編輯體驗來講,如今還處於早期階段。咱們知道,在它取代 Visual Studio 中現有的 Razor 編輯經驗以前,還有不少工做要作。新的 Razor 工具在 16.7 中仍然是可選的和實驗性的,咱們不但願它成爲默認的 Razor 編輯器,直到它的功能超過了現有的編輯器。可是,咱們但願儘早與你分享咱們的進展,以便開始得到你對新 Razor 編輯器工做狀況的反饋。爲了確保咱們提供最好的 Razor 編輯經驗,請嘗試新的 Razor 工具並讓咱們知道你的想法。你能夠經過在 GitHub 上分享你的反饋。咱們感謝你的反饋!
https://devblogs.microsoft.com/aspnet/new-experimental-razor-editor-for-visual-studio/