【译】VisualStudio.Extensibility 17.10:用 Diagnostics Explorer 调试您的扩展

visualstudio,extensibility,diagnostics,explorer · 浏览次数 : 0

小编点评

这篇文章介绍了Visual Studio的扩展性SDK的最新版本,17.10,它带来了一系列新功能和改进,旨在提高扩展开发的速度和稳定性。 1. **扩展性能和可靠性**:文章强调了Visual Studio. Extensibility SDK的重要性,它帮助开发者构建在主IDE进程之外运行的扩展,以提高性能和可靠性。 2. **新调试体验**:17.10版本引入了全新的调试体验,使得扩展的运行更加符合开发者的期望。 3. **远程UI特性**:增强了远程UI特性,包括新增提示用户的方法,并继续向项目查询API添加功能。 4. **文档和安装说明**:提供了最新的文档和安装说明,鼓励开发者通过GitHub仓库的问题跟踪报告错误并建议功能。 5. **新功能介绍**:     - **Diagnostics Explorer**:一个新的调试工具,可以帮助开发者更好地诊断扩展和配置问题。     - **XAML资源支持**:增加了对XAML资源的内置支持,加速了UI开发。     - **文件和目录选择器提示**:允许扩展用户直接从扩展中选择文件或目录。     - **改进的查询API**:提供了跟踪项目更改的新API,以及跳过查询结果的功能。 总的来说,Visual Studio的扩展性SDK 17.10通过提供一系列新功能和改善现有工具,显著提高了扩展开发的效率和体验。

正文

  想象一下,创建的扩展比以往任何时候都运行得更快、更流畅!如果您最近还没有跟上,我们一直在努力改进 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/

 

与【译】VisualStudio.Extensibility 17.10:用 Diagnostics Explorer 调试您的扩展相似的内容:

【译】VisualStudio.Extensibility 17.10:用 Diagnostics Explorer 调试您的扩展

VisualStudio. Extensibility 帮助您构建在主 IDE 进程之外运行的扩展,以提高性能和可靠性。它还提供了一个时尚而直观的基于 .NET 8 的 API 和全面且维护良好的文档,可以帮助您开发出色的扩展。

【译】Visual Studio 2022 - 17.10 性能增强

我们很高兴地宣布 Visual Studio 2022 的最新更新,它为您带来了 IDE 各个领域的一系列性能增强。在这篇博客中,我们将重点介绍17.10版本中一些最显著的改进,比如更快的 Windows Forms 设计器加载、更快的 Razor 着色、更快的解决方案加载以及更少的 dll 开销。

【译】Visual Studio 17.10 发布了新版扩展管理器

从 Visual Studio 17.10 开始提供新的扩展管理器作为默认预览功能。我们已将基本功能简化为现代风格 UI,以帮助您发现新的扩展并管理已安装的扩展。

【译】Visual Studio Enterprise 中的代码覆盖率特性

通过使用代码覆盖率功能,您可以发现您的测试需要改进的地方,并使您的软件更加健壮和可靠。在这篇文章中,我们将介绍我们在 Visual Studio Enterprise 2022 中引入的 Code Coverage Results 窗口的新特性。

【译】使 Visual Studio 更加可视化

任何 Web、桌面或移动开发人员都经常使用图像。你可以从 C#、HTML、XAML、CSS、C++、VB、TypeScript 甚至代码注释中引用它们。有些图像是本地的,有些存在于线上或网络共享中,而其他图像可能仅以 base64 编码字符串的形式存在。我们在代码中以多种方式引用它们,但总是作为字符

【译】向您介绍改版的 Visual Studio 资源管理器

随着最近 Visual Studio 的资源管理器的改进,开发人员将得到一种全新的享受!我们非常激动地宣布重新设计的 Visual Studio 资源管理器,相信我们,它将改变游戏规则。

【译】使用 .NET Aspire 和 Visual Studio 开发云原生应用

我们很高兴地宣布 .NET Aspire 发布,它扩展了 Visual Studio 在云原生应用程序开发方面的能力。.NET Aspire 提供了一个框架和工具,以一种独特的方式,使分布式 .NET 应用程序更容易构建、部署和管理。这种集成旨在使云原生应用程序的开发更加简单和高效。

【译】使用 GitHub Copilot 作为你的编码 GPS

GitHub Copilot 是一个改变游戏规则的人工智能助手,可以彻底改变您在 Visual Studio 中的编码流程。在我们的视频系列中,Bruno Capuano 探讨了这个智能编码伙伴如何帮助您更有效地编写代码,同时保持质量和准确性。 Copilot:是助手,而不是替代品 Bruno 强调

【译】在调试时轻松导航代码委托

我通常希望在单步执行之前或之后快速导航到由委托表示的底层代码,随着 Visual Studio 17.10 的最新更新,这非常容易。

【译】了解17.10 GA 中最新的 Git 工具特性

我们相信提高开发和团队协作的生产力可以帮助您产生更好的软件解决方案。这就是为什么 Visual Studio 版本控制团队发布了新特性,简化了内部循环和代码审查体验。