【譯】VisualStudio.Extensibility 17.10:用 Diagnostics Explorer 除錯您的擴充套件

MeteorSeed發表於2024-06-24

  想象一下,建立的擴充套件比以往任何時候都執行得更快、更流暢!如果您最近還沒有跟上,我們一直在努力改進 VisualStudio. Extensibility SDK。VisualStudio. Extensibility 幫助您構建在主 IDE 程序之外執行的擴充套件,以提高效能和可靠性。它還提供了一個時尚而直觀的基於 .NET 8 的 API 和全面且維護良好的文件,可以幫助您開發出色的擴充套件。

  這個17.10版本建立在我們以前的版本之上,它帶來了全新的除錯體驗,使您更容易讓您的擴充套件以您期望的方式執行。我們還增強了遠端UI特性,新增了提示使用者的新方法,並繼續向專案查詢 API 新增功能。

  請訪問 https://aka.ms/VisualStudio.Extensibility 獲取最新的文件和安裝說明。我們鼓勵您透過 GitHub 倉庫的問題跟蹤報告錯誤並建議功能,在那裡您還可以找到擴充套件示例來幫助您開始。

VisualStudio.Extensibility 有什麼新功能?

  您想要比以前更快速、更容易地開發和除錯擴充套件嗎?我們的17.10版本增加了以下功能來幫助您做到這一點:

  - 除錯您的擴充套件使用我們新的 Diagnostics Explorer

  - 在 UI 中利用 XAML 資源

  - 讓您的擴充套件使用者選擇檔案或目錄

  - 使用改進的查詢 API 跟蹤專案更改

除錯您的擴充套件使用我們新的 Diagnostics Explorer

  我們已經建立了一個強大的新工具來除錯您的擴充套件,叫做 VisualStudio.Extensibility Diagnostics Explorer,可以在 Visual Studio Marketplace 中找到它。有了它,您就能像 Visual Studio 那樣看到擴充套件,從而確保您正確地配置了您的擴充套件。

  這個工具本身是作為程序內的 VisualStudio. Extensibility 擴充套件編寫的。可以幫助您回答諸如“為什麼我的命令沒有顯示在我期望它在 IDE 中的位置?”或“為什麼我的擴充套件沒有在我期望的時候被啟用?”

檢查配置

  VisualStudio.Extensibility 透過消除手動維護單獨的後設資料檔案的需要,已經使您更容易配置擴充套件。現在,我們在此基礎上構建了 Diagnostics Explorer,它可以讓您準確地看到 Visual Studio 發現了哪些擴充套件和元件,以及每個發現項的配置。

  例如,如果您沒有在 IDE 中看到命令,您可以使用命令選項卡 Diagnostics Explorer 檢視已貢獻給 Visual Studio 的任何命令。如果它沒有出現在列表中,這是一個提示,需要再次檢查您的配置以確保它被發現。如果它存在,但未啟用或不可見,則可能需要檢查啟用約束。如果它被標記為啟用和可見,您可以使用下拉選單來檢視命令放置,以確保您已經正確地放置了它。

  使用 Commands 選項卡,您可以檢查命令、命令集、組、選單和工具欄、命令位置和動態命令錨點。其他選項卡允許您檢查元件的其他功能區域,包括工具視窗、文件型別、文字檢視等。當我們在未來的版本中新增功能時,您將能夠在 Diagnostics Explorer 中檢查任何新元件。

檢視實時事件日誌

  我們知道,像您這樣的擴充套件開發人員有時開發的擴充套件可能需要處理整個 IDE 中的事件,例如正在執行的命令,正在開啟的工具視窗或正在建立的 TextView,所以我們新增了一個實時事件檢視器,使您能夠實時觀察這些事件及其屬性:

建立更好的啟用約束

  Diagnostics Explorer 中的 Activation Constraints 選項卡為您提供了建立啟用約束時每個可用值的當前狀態。使用此選項卡,您可以使 IDE 進入您想要用於啟用的狀態(例如構建專案或開啟 markdown 檔案),然後您可以檢查每個可用表示式的值,以幫助您建立約束。

  例如,假設您希望一個命令僅在編輯器中開啟 C# 檔案時才可見。使用 Diagnostics Explorer,您可以開啟一個 C# 檔案,使用 Activation Constraints 選項卡來幫助您確定需要哪些表示式來建立約束:

EnabledWhen = ActivationConstraint.ClientContext(ClientContextKey.Shell.ActiveEditorContentType, "CSharp").

在 UI 中利用 XAML 資源

  XAML 資源允許您定義可以在整個專案中使用的物件,如顏色、筆刷或樣式,從而加速UI開發。透過這個版本的 VisualStudio. Extensibility:我們正在新增對 XAML 資源的支援,以幫助您為擴充套件開發出色的UI!

  與我們的其他遠端UI功能(如UI控制元件)一致,您可以將任何帶有 ResourceDictionaries 的XAML檔案定義為嵌入在 .csproj 檔案中的資源:

<ItemGroup>
    <EmbeddedResource Include="\XamlResources.*xaml" />
    <Page Remove="XamlResources.*xaml" />
</ItemGroup>

  一旦定義,很容易將您的資源包含在其他元件中,以便它們可以在整個專案的 XAML 中被引用:

ResourceDictionaries.AddEmbeddedResource("XamlResources.xaml")

  您甚至可以本地化您的資源:檢視 Modal Dialog 示例獲取更多資訊,並讓我們知道您的想法!

讓您的擴充套件使用者選擇檔案或目錄

  在我們之前對使用者提示和自定義對話方塊的支援的基礎上,我們增加了從擴充套件中顯示檔案和目錄選擇器提示的能力。例如,您可以使用 ShowOpenFileDialogAsync() 方法來提示使用者選擇一個檔案來開啟:

VisualStudioExtensibility.Shell().ShowOpenFileDialogAsync(options, cancellationToken);

  使用新的 API,您可以提示使用者:

  - 選擇一個檔案開啟

  - 選擇要開啟一個或多個檔案

  - 選擇單個檔案來另存為

  - 選擇要開啟的目錄

  與往常一樣,如果有其他型別的使用者提示對您的擴充套件很重要,請透過我們的問題跟蹤告訴我們。

使用改進的查詢 API 跟蹤專案更改

  我們的 17.10 版本為專案查詢 API 新增了三個新特性。

跟蹤查詢結果的更改

  TrackUpdatesAsync() 方法可以在專案系統查詢中使用,以建立一個 IObserver 物件來跟蹤您的查詢中專案或解決方案狀態的變化。例如,如果您想跟蹤專案中檔案的更新時間,您可以使用:

var query = await myProject
    .Files
    .With(f => f.FileName)
    .TrackUpdatesAsync(new TrackerObserver(), CancellationToken.None);

  在這個例子中,TrackerObserver 實現了 IObserver<IQueryTrackUpdates<IFileSnapshot>>,所以您可以使用您自己的自定義邏輯來處理更新事件。

查詢專案規則

  專案查詢 API 中的每個專案現在都包含一個 RulesResults 特性,其中包括規則名稱和一個項列表。您可以透過呼叫指定配置的 RuleResultsByName() 來訪問這些規則。

var results = await querySpace
    .Projects
    .With(p => p.Path)
    .With(p => p.ActiveConfigurations
        .With(c => c.RuleResultsByRuleName("CompilerCommandLineArgs")
            .With(r => r.RuleName)
            .With(r => r.Items
                .With(i => i.Name))))
        .ExecuteQueryAsync();

跳過查詢結果

  我們新增了 Skip() 方法,使您能夠跳過查詢中的結果。

var projects = await queryableSpace.Projects
    .With(proj => proj.Name)
    .Skip(1)
    .ExecuteQueryAsync();

  這裡,跳過第一個專案,返回其餘的專案。

如果沒有您的參與我們做不到這些!

  我們需要您的幫助,因為我們將繼續開發 VisualStudio.Extensibility!請嘗試這個預覽版,讓我們知道您的想法。檢視文件,瀏覽程式碼示例,並構建您的第一個擴充套件。您可以透過我們的問題跟蹤傳送反饋、報告問題或功能需求。

  您還可以在我們的 VisualStudio. Extensibility GitHub repo 中找到有關突破性更改和已知問題的資訊。

  我們正在優先考慮擴充套件程式要求的功能,所以請嘗試一下 VisualStudio. Extensibility,並與我們分享您的想法!

原文連結:https://devblogs.microsoft.com/visualstudio/visualstudio-extensibility-17-10/

相關文章