想象一下,创建比以往更快、更流畅的扩展吧!如果您最近没有跟进,我们一直在改进VisualStudio。扩展性SDK。VisualStudio。可扩展性帮助您构建在主IDE进程之外运行的扩展,以提高性能和可靠性。随之而来的是流畅和直观。基于NET 8的API和全面、维护良好的文档,帮助您开发很棒的扩展。
此17.10版本基于我们的以前的发布,它带来了全新的调试体验,使您更容易以预期的方式运行扩展。我们还增强了远程UI功能,添加了提示用户的新方法,并继续向项目查询API添加功能。
请访问https://aka.ms/VisualStudio.Extensibility(可扩展性)获取最新的文档和安装说明。我们鼓励您通过问题跟踪器在我们的GitHub回购,在这里您还可以找到扩展样品来帮助你开始。
VisualStudio的新增功能。可扩展性?
你想比以前更快更容易地开发和调试你的扩展吗?我们的17.10版增加了以下功能,以帮助您做到这一点:
使用我们的新诊断资源管理器调试您的扩展
我们已经创建了一个强大的新工具,用于调试您的扩展,称为VisualStudio。可扩展性诊断资源管理器,可用在这里在Visual Studio Marketplace中。有了它,您将能够以VisualStudio看到的方式查看扩展,以帮助确保正确配置了自己的扩展。
此工具本身是作为过程中的VisualStudio。扩展性扩展,可以帮助您回答这样的问题:“为什么我的命令没有显示在IDE中我期望的位置?”或“为什么在我期望的时候我的扩展没有被激活?”
检查配置
VisualStudio。扩展性已经使您无需手动维护单独的元数据文件,从而更容易配置扩展。现在,我们正在使用Diagnostics Explorer进行构建,它可以让您确切地看到VisualStudio发现了哪些扩展和组件,以及每个发现项的配置。
例如,如果在IDE中看不到命令,可以使用“命令”选项卡“诊断资源管理器”查看任何已贡献给Visual Studio的命令。如果它不在列表中,则提示您重新检查配置以确保它被发现。如果它存在,但未启用或可见,您可能需要检查激活约束。如果它被标记为已启用且可见,则可以使用下拉菜单查看命令放置以确保正确放置。
使用“命令”选项卡,可以检查命令,命令集,组,菜单和工具栏,命令放置、和动态命令定位使用其他选项卡可以检查其他功能区域的组件,包括工具窗口、文档类型、文本视图等。随着我们在未来版本中添加功能,您将能够在Diagnostics Explorer中检查这些新组件旁边的任何新组件。
查看实时事件日志
我们知道,像您这样的扩展开发人员有时开发的扩展可能需要在整个IDE中处理事件,例如正在执行的命令、正在打开的工具窗口或正在创建的TextView,因此我们添加了一个实时事件查看器,使您能够实时观察这些事件及其属性:
创建更好的激活约束
诊断资源管理器中的“激活约束”选项卡为您提供创建激活约束。使用此选项卡,可以使IDE进入激活时要使用的状态(例如生成项目或打开标记文件),然后可以检查每个可用表达式的值,以帮助创建约束。
例如,假设您希望只有在编辑器中打开C#文件时,命令才可见。使用Diagnostics Explorer,您可以打开一个C#文件,并使用Activation Constraints选项卡帮助您确定需要创建约束的表达式:
EnabledWhen=激活约束。ClientContext(ClientContextKey.Shell.ActiveEditorContentType,“CSharp”)。
在UI中利用XAML资源
XAML资源允许您定义可以在整个项目中使用的颜色、画笔或样式等对象,从而加速UI开发。使用此版本的VisualStudio。可扩展性,我们正在添加对XAML资源的支持,以帮助您为扩展开发出色的UI!
与我们的其他远程UI功能(如UI控件)一致,您将使用ResourceDictionaries将任何XAML文件定义为.csproj文件中的嵌入式资源:
<项目组><EmbeddedResource Include=“\XamlResources.*xaml”/><Page Remove=“XamlResources.*xaml”/></ItemGroup>
定义好后,很容易将资源包含在其他组件中,以便可以在整个项目的XAML中引用它们:
资源字典。AddEmbeddedResource(“XamlResources.xaml”)
您甚至可以本地化资源:请参阅模式对话框示例想了解更多信息,请告诉我们您的想法!
让您的扩展用户选择文件或目录
基于我们之前对用户提示和自定义对话框,我们添加了显示扩展中的文件和目录选择器提示的功能。例如,您可以使用显示打开文件对话框异步()
方法提示用户选择要打开的单个文件:
VisualStudio可扩展性。外壳()。ShowOpenFileDialogAsync(选项,cancellationToken);
使用新的API,您可以提示用户:
- 选择要打开的单个文件
- 选择一个或多个要打开的文件
- 选择要另存为的单个文件
- 选择要打开的目录
一如既往,如果有其他类型的用户提示对您的扩展很重要,请通过我们的问题跟踪程序。
使用改进的查询API跟踪项目更改
我们的17.10版本向项目查询API添加了三个新特性。
跟踪查询结果的更改
可以在项目系统查询中使用TrackUpdatesAsync()方法来创建IObserver(观测器)对象跟踪查询中项目或解决方案状态的更改。例如,如果要跟踪项目中文件的更新时间,可以使用:
var查询=等待myProject.文件.带有(f=>f.FileName).TrackUpdatesAsync(新TrackerObserver(),CancellationToken)。无);
在本例中,TrackerObserver实现IObserver<IQueryTrackUpdates<IFileSnapshot>>
,因此您可以使用自己的自定义逻辑来处理更新事件。
查询项目规则
项目查询API中的每个项目现在都包含一个RulesResults属性,其中包括一个规则名称和一个项列表。您可以通过调用按名称列出的规则结果()
对于给定的配置。
var results=等待querySpace.项目.使用(p=>p.Path).使用(p=>p.ActiveConfigurations.带(c=>c.RuleResultsByRuleName(“CompilerCommonLineArgs”).With(r=>r.RuleName).带有(r=>r.项.使用(i=>i.Name))).ExecuteQueryAsync();
跳过查询中的结果
我们已经添加了跳过()
方法以使您能够跳过查询中的结果。
var项目=等待queryableSpace。项目.With(项目=>项目名称).跳过(1).ExecuteQueryAsync();
在这里,将跳过第一个项目,并返回其余项目。
没有你我们做不到!
在我们继续开发VisualStudio时,我们需要您的帮助。可扩展性!请试用此预览版,让我们知道您的想法。查看文档,浏览代码示例,并构建您的第一次延长。您可以通过我们的问题跟踪器。
您还可以找到有关中断更改和已知问题在我们的VisualStudio中。可扩展性GitHub回购。
我们正在优先考虑扩展器要求的功能,因此请提供VisualStudio。扩展性尝试与我们分享您的想法!
帖子VisualStudio。扩展性17.10:使用诊断资源管理器调试扩展首次出现于Visual Studio博客。
]]>