【譯】新的 MSBuild 編輯體驗

  MSBuild 是 .NET 開發體驗的基本組成部分,但它對新手和有經驗的開發人員都具有挑戰性。爲了幫助開發人員更好地理解他們的項目文件,並訪問需要直接編輯項目文件的高級功能,我們發佈了一個實驗性的 MSBuild 編輯器,它對 MSBuild 文件的理解比當前 XML schema 所允許的要豐富得多。根據反饋,我們希望所有 .NET 開發人員都可以默認使用它。如果您使用 MSBuild 文件工作,請嘗試一下,讓我們知道它是如何工作的。

適合哪些用戶使用?

  儘管 Visual Studio 爲管理項目及其設置提供了豐富的 UI,但您可能需要直接編輯 csproj 文件以訪問 UI 中未公開的某些高級特性。在從源代碼控制合併更改時,您可能還需要直接編輯 csproj 文件,或者您可能正在編寫 targets 和 props 文件以供本地使用或在 NuGet 包中發佈。如果這些場景中的任何一個適用於您,那麼我們希望您體驗下新功能。

瞭解您的項目文件

  新的 MSBuild 編輯器不僅爲 MSBuild 文件中的 XML 元素提供了快速信息,還爲 MSBuild 表達式中的屬性、項和元數據提供了快速信息。快速信息彈出窗口更豐富,有指向相關文檔的深層鏈接,以及指向其他文件引用的超鏈接,這些超鏈接可以幫助您瞭解底層如何使用該屬性或項。

  如果您想了解如何使用屬性或項,可以使用 Ctrl-Click 或 Go to Definition 命令轉到定義它的位置。你也可以使用 Find References 命令在所有導入的文件中執行精確的搜索:

不離開編輯器編寫代碼

  即使作爲一名經驗豐富的 MSBuild 作者,我也經常打開文檔來查找 MSBuild 屬性、項和元數據的確切名稱和允許值。當我使用 MSBuild 編輯器時,我很少這樣做,因爲它幾乎在文件的任何地方都提供智能感知,並根據它的 schema 提供文檔:

  它對 NuGet 包有特殊的支持,允許你搜索包的 ID,並查看包的描述和鏈接到它的 NuGet.org 頁面:

  其他類型也有特殊處理,例如語言文化:

  在 MSBuild 表達式中也支持智能感知,包括屬性函數和項函數:

  編輯器並不侷限於在其 schema 中定義的那些屬性和項。它掃描所有導入的 MSBuild 文件,併爲在這些文件中找到的任何屬性、項、元數據和目標提供“推斷完成”。更棒的是,工具提示有一個超鏈接,指向屬性或項的應用場景:

及早發現問題

  MSBuild 編輯器的驗證不僅僅是 XML 驗證。它將類型系統覆蓋到 MSBuild 上,因此您將獲得關於 URL 或版本字符串等的格式錯誤。它對 MSBuild 表達式格式的理解意味着您無需運行構建就可以捕獲格式不正確的條件和表達式。

  甚至還有一些 Roslyn 風格的分析器和代碼修復。

增強 MSBuild 編輯體驗

  MSBuild 編輯器由一種新的 MSBuild 特定的基於 json 的 schema 格式提供支持,該格式允許爲 MSBuild 屬性、項、項元數據和 targets 定義文檔和類型註釋。它包括 .NET SDK 和其他常用 targets 和 SDK 的內置schema。

  但是,您也可以爲自己的 MSBuild targets 編寫 schema,以允許 MSBuild 編輯器在編輯或使用它們時提供更豐富的體驗。如果您是包含 build targets 的 NuGet 包的作者,那麼您可以在 NuGet 包中發佈該 sidecar schema,以便爲包的使用者提供更好的 MSBuild 編輯體驗。

Q&A

  Q:擴展有一個 GitHub 倉庫-我可以從源代碼構建和貢獻嗎?

  A:絕對!只需克隆倉庫及其子模塊,在 Visual Studio 中打開,然後按 F5。

  Q:爲什麼擴展倉庫、命名空間和程序集的名字中有“MonoDevelop”?

  A:MSBuild 編輯器是我最初在2015年3月爲 MonoDevelop IDE 創建的擴展的後代。儘管它在過去幾年裏發展了很多,包括移植到 Visual Studio,但出於懷舊的考慮,我保留了內部名稱。

  Q:我可以在 Visual Studio Code 中使用擴展嗎?

  A:還不行!我目前正在移植擴展到 LSP(語言服務器協議,Language Server Protocol),所以它可以在 Visual Studio Code 擴展中使用。雖然 LSP 是新擴展的明顯選擇,但這個代碼庫可以追溯到 Visual Studio Code 發佈之前。

我們渴望您的反饋!

  如果您想嘗試下,你可以通過在 Visual Studio 擴展管理中搜索“MSBuild Editor”找到它,或者從 Visual Studio Marketplace 下載它。該擴展目前僅適用於 Visual Studio,但將其移植到 Visual Studio Code 的工作正在進行中。

  如果您遇到任何此擴展的任何問題,請發佈其到 GitHub 問題頁面。擴展是開源的,歡迎貢獻。請填寫這份調查問卷,讓我們瞭解您的經歷。我們感謝您的反饋,它將有助於指導實驗如何發展,以及 MSBuild 編輯器是否會成爲 .NET 開發體驗的官方支持部分。

 

原文鏈接:https://devblogs.microsoft.com/visualstudio/experimental-msbuild-editor/

 

 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章