<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Extensions | The .NET Blog</title><link>https://thedotnetblog.com/zh/tags/extensions/</link><description>Articles, tutorials and insights from the .NET community.</description><generator>Hugo</generator><language>zh</language><managingEditor>@thedotnetblog (The .NET Blog)</managingEditor><webMaster>@thedotnetblog</webMaster><lastBuildDate>Wed, 13 May 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://thedotnetblog.com/zh/tags/extensions/index.xml" rel="self" type="application/rss+xml"/><item><title>Visual Studio 扩展项目的 SDK 风格支持</title><link>https://thedotnetblog.com/zh/news/emiliano-montesdeoca/sdk-style-support-extension-projects-visual-studio/</link><pubDate>Wed, 13 May 2026 00:00:00 +0000</pubDate><author>Emiliano Montesdeoca</author><guid>https://thedotnetblog.com/zh/news/emiliano-montesdeoca/sdk-style-support-extension-projects-visual-studio/</guid><description>Visual Studio 18.5 为 VSSDK 扩展项目添加了官方支持的 SDK 风格项目格式，将构建时间减少高达 75%，并将项目文件精简至约 20 行。</description><content:encoded>&lt;p&gt;&lt;em&gt;本文已自动翻译。要查看原始版本，&lt;a href="https://thedotnetblog.com/zh/news/emiliano-montesdeoca/sdk-style-support-extension-projects-visual-studio/"&gt;请点击此处&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://devblogs.microsoft.com/visualstudio/sdk-style-support-for-extension-projects/"&gt;VSSDK 扩展项目的 SDK 风格支持&lt;/a&gt;现已在 Visual Studio 18.5 中正式推出——经典 VSIX 扩展项目可以从旧的 MPF 风格 &lt;code&gt;.csproj&lt;/code&gt; 格式迁移出来。&lt;/p&gt;
&lt;h2 id="项目文件的变化"&gt;项目文件的变化&lt;/h2&gt;
&lt;p&gt;最明显的变化是项目文件变得更加简洁。典型的 VSSDK 扩展现在看起来像这样：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-xml" data-lang="xml"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;&amp;lt;Project&lt;/span&gt; &lt;span class="na"&gt;Sdk=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;Microsoft.NET.Sdk&amp;#34;&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;lt;PropertyGroup&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;lt;TargetFramework&amp;gt;&lt;/span&gt;net472&lt;span class="nt"&gt;&amp;lt;/TargetFramework&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;lt;VSSDKBuildToolsAutoSetup&amp;gt;&lt;/span&gt;true&lt;span class="nt"&gt;&amp;lt;/VSSDKBuildToolsAutoSetup&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;lt;VsixDeployOnDebug&amp;gt;&lt;/span&gt;true&lt;span class="nt"&gt;&amp;lt;/VsixDeployOnDebug&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;lt;GeneratePkgDefFile&amp;gt;&lt;/span&gt;true&lt;span class="nt"&gt;&amp;lt;/GeneratePkgDefFile&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;lt;/PropertyGroup&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;lt;ItemGroup&amp;gt;&amp;lt;ProjectCapability&lt;/span&gt; &lt;span class="na"&gt;Include=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;CreateVsixContainer&amp;#34;&lt;/span&gt; &lt;span class="nt"&gt;/&amp;gt;&amp;lt;/ItemGroup&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;lt;ItemGroup&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;lt;PackageReference&lt;/span&gt; &lt;span class="na"&gt;Include=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;Microsoft.VisualStudio.SDK&amp;#34;&lt;/span&gt; &lt;span class="na"&gt;Version=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;17.14.40265&amp;#34;&lt;/span&gt; &lt;span class="na"&gt;ExcludeAssets=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;runtime&amp;#34;&lt;/span&gt; &lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;lt;PackageReference&lt;/span&gt; &lt;span class="na"&gt;Include=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;Microsoft.VSSDK.BuildTools&amp;#34;&lt;/span&gt; &lt;span class="na"&gt;Version=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;18.5.38461&amp;#34;&lt;/span&gt; &lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;lt;/ItemGroup&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;&amp;lt;/Project&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;code&gt;VSSDKBuildToolsAutoSetup=true&lt;/code&gt; 应用合理的默认值：&lt;code&gt;CreateVsixContainer=true&lt;/code&gt; 和旧版 &lt;code&gt;DeployExtension=false&lt;/code&gt;。这一个属性替代了以前需要显式指定的大量内容。&lt;/p&gt;
&lt;h2 id="构建时间改进"&gt;构建时间改进&lt;/h2&gt;
&lt;p&gt;启用了快速最新检查和增量构建支持。对于只有少量更改的大型解决方案，这可以带来&lt;strong&gt;高达 75% 的构建时间减少&lt;/strong&gt;——如果你在大型宿主解决方案中迭代扩展，这相当显著。&lt;/p&gt;
&lt;h2 id="新项目与现有项目"&gt;新项目与现有项目&lt;/h2&gt;
&lt;p&gt;在 18.5 中创建的新扩展项目自动使用 SDK 风格。现有的 MPF 风格扩展继续工作——迁移是可选的。迁移时的重要注意事项：如果扩展使用 XAML，请添加 &lt;code&gt;&amp;lt;UseWpf&amp;gt;true&amp;lt;/UseWpf&amp;gt;&lt;/code&gt;。还需要在 &lt;code&gt;.sln&lt;/code&gt; 或 &lt;code&gt;.slnx&lt;/code&gt; 文件中将扩展标记为可部署。&lt;/p&gt;
&lt;p&gt;vsixmanifest 设计器默认替换为 XML 编辑器——如果需要旧设计器，右键单击 → 打开方式。&lt;/p&gt;
&lt;h2 id="代理迁移路径"&gt;代理迁移路径&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://github.com/microsoft/vs-agent-plugins"&gt;vs-agent-plugins&lt;/a&gt; 中的 Modernize 代理可以自动化迁移。一些真实世界的扩展已经通过这种方式转换：包括 Mads Kristensen 的 Smart Screen、Command Explorer、Postfix Templates 和 Whitespace Visualizer。&lt;/p&gt;
&lt;h2 id="值得注意的是"&gt;值得注意的是&lt;/h2&gt;
&lt;p&gt;VisualStudio.Extensibility（更新的可扩展性框架）已经支持 SDK 风格。此更新与经典 VSSDK 路径实现了对等。唯一的要求是 Visual Studio 扩展开发工作负载。&lt;/p&gt;
&lt;p&gt;完整详细信息请参阅&lt;a href="https://devblogs.microsoft.com/visualstudio/sdk-style-support-for-extension-projects/"&gt;官方博文&lt;/a&gt;。&lt;/p&gt;</content:encoded></item><item><title>Bookmark Studio为Visual Studio书签带来基于槽位的导航和分享功能</title><link>https://thedotnetblog.com/zh/news/emiliano-montesdeoca/bookmark-studio-visual-studio-extension/</link><pubDate>Thu, 02 Apr 2026 00:00:00 +0000</pubDate><author>Emiliano Montesdeoca</author><guid>https://thedotnetblog.com/zh/news/emiliano-montesdeoca/bookmark-studio-visual-studio-extension/</guid><description>Mads Kristensen的新Bookmark Studio扩展为Visual Studio书签添加了键盘驱动的槽位导航、书签管理器、颜色、标签和导出功能。</description><content:encoded>&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;本文为自动翻译。查看原始版本，请&lt;a href="https://thedotnetblog.com/zh/news/emiliano-montesdeoca/bookmark-studio-visual-studio-extension/"&gt;点击这里&lt;/a&gt;。&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Visual Studio中的书签一直&amp;hellip;还行。你设置一个，导航到下一个，然后忘记哪个是哪个。它们能用，但从来不是你会称之为强大的功能。&lt;/p&gt;
&lt;p&gt;Mads Kristensen刚刚&lt;a href="https://devblogs.microsoft.com/visualstudio/bookmark-studio-evolving-bookmarks-in-visual-studio/"&gt;发布了Bookmark Studio&lt;/a&gt;，一个实验性扩展，精确填补了你可能遇到的空缺。&lt;/p&gt;
&lt;h2 id="基于槽位的导航"&gt;基于槽位的导航&lt;/h2&gt;
&lt;p&gt;书签可以分配到1-9号槽位，通过&lt;code&gt;Alt+Shift+1&lt;/code&gt;到&lt;code&gt;Alt+Shift+9&lt;/code&gt;直接跳转。新书签自动获得下一个可用槽位。&lt;/p&gt;
&lt;h2 id="书签管理器"&gt;书签管理器&lt;/h2&gt;
&lt;p&gt;新的工具窗口在一个地方显示所有书签，支持按名称、文件、位置、颜色或槽位过滤。&lt;/p&gt;
&lt;h2 id="用标签颜色和文件夹组织"&gt;用标签、颜色和文件夹组织&lt;/h2&gt;
&lt;p&gt;书签可以有标签、颜色，并分组到文件夹中。元数据按解决方案存储。&lt;/p&gt;
&lt;h2 id="导出和分享"&gt;导出和分享&lt;/h2&gt;
&lt;p&gt;Bookmark Studio允许将书签导出为纯文本、Markdown或CSV。&lt;/p&gt;
&lt;h2 id="跟随代码移动的书签"&gt;跟随代码移动的书签&lt;/h2&gt;
&lt;p&gt;Bookmark Studio相对于锚定的文本跟踪书签，所以编辑时不会漂移到错误的行。&lt;/p&gt;
&lt;h2 id="总结"&gt;总结&lt;/h2&gt;
&lt;p&gt;Bookmark Studio没有重新发明任何东西。它把一个多年来&amp;quot;够用&amp;quot;的功能变得真正有用。从&lt;a href="https://marketplace.visualstudio.com/items?itemName=MadsKristensen.BookmarkStudio"&gt;Visual Studio Marketplace&lt;/a&gt;下载吧。&lt;/p&gt;</content:encoded></item></channel></rss>