<?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>Tooling | The .NET Blog</title><link>https://thedotnetblog.com/zh/tags/tooling/</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>Thu, 26 Mar 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://thedotnetblog.com/zh/tags/tooling/index.xml" rel="self" type="application/rss+xml"/><item><title>VS Code 1.112：.NET 开发者真正应该关注的内容</title><link>https://thedotnetblog.com/zh/news/emiliano-montesdeoca/vscode-1-112-dotnet-developers/</link><pubDate>Thu, 26 Mar 2026 00:00:00 +0000</pubDate><author>Emiliano Montesdeoca</author><guid>https://thedotnetblog.com/zh/news/emiliano-montesdeoca/vscode-1-112-dotnet-developers/</guid><description>VS Code 1.112 刚刚发布，满载代理升级、集成浏览器调试器、MCP 沙箱和 monorepo 支持。如果你用 .NET 开发，这些是真正重要的内容。</description><content:encoded>&lt;p&gt;VS Code 1.112 刚落地，说实话？如果你每天都在 .NET 的世界里，这个版本感觉不一样。&lt;a href="https://code.visualstudio.com/updates/v1_112"&gt;官方发布说明&lt;/a&gt; 里有很多内容，但让我帮你省点滚动，专注于对我们真正重要的东西。&lt;/p&gt;
&lt;h2 id="copilot-cli-变得更有用了"&gt;Copilot CLI 变得更有用了&lt;/h2&gt;
&lt;p&gt;这个版本的大主题是&lt;strong&gt;代理自主性&lt;/strong&gt; — 给 Copilot 更多空间做它的事，不需要你看管每一步。&lt;/p&gt;
&lt;h3 id="消息引导和排队"&gt;消息引导和排队&lt;/h3&gt;
&lt;p&gt;你知道 Copilot CLI 在任务进行到一半时，你突然想起忘了提什么东西的那个时刻吗？以前你只能等。现在你可以在请求还在运行时发送消息 — 要么引导当前响应，要么排队后续指令。&lt;/p&gt;
&lt;p&gt;这对那些较长的 &lt;code&gt;dotnet&lt;/code&gt; 脚手架任务来说太棒了，你看着 Copilot 设置项目然后想&amp;quot;哦等等，我还需要 MassTransit&amp;quot;。&lt;/p&gt;
&lt;h3 id="权限级别"&gt;权限级别&lt;/h3&gt;
&lt;p&gt;这是我最兴奋的。Copilot CLI 会话现在支持三个权限级别：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;默认权限&lt;/strong&gt; — 工具在运行前请求确认的常规流程&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;跳过审批&lt;/strong&gt; — 自动批准一切并在出错时重试&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;自动驾驶&lt;/strong&gt; — 完全自主：批准工具、回答自己的问题、持续到任务完成&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果你在做类似用 Entity Framework、migrations 和 Docker 设置创建新的 ASP.NET Core API 这样的事 — 自动驾驶模式意味着你描述想要什么然后去拿杯咖啡。它会搞定的。&lt;/p&gt;
&lt;p&gt;你可以用 &lt;code&gt;chat.autopilot.enabled&lt;/code&gt; 设置启用自动驾驶。&lt;/p&gt;
&lt;h3 id="委托前预览更改"&gt;委托前预览更改&lt;/h3&gt;
&lt;p&gt;当你把任务委托给 Copilot CLI 时，它会创建一个 worktree。以前如果你有未提交的更改，你得检查源代码管理来看什么会受影响。现在聊天视图会在你决定复制、移动或忽略之前直接显示待处理的更改。&lt;/p&gt;
&lt;p&gt;小事情，但省去了&amp;quot;等等，我 staging 了什么？&amp;ldquo;的时刻。&lt;/p&gt;
&lt;h2 id="不离开-vs-code-就能调试-web-应用"&gt;不离开 VS Code 就能调试 Web 应用&lt;/h2&gt;
&lt;p&gt;集成浏览器现在支持&lt;strong&gt;完整调试&lt;/strong&gt;。你可以设断点、单步执行代码、检查变量 — 全在 VS Code 内。不用再切换到 Edge DevTools 了。&lt;/p&gt;
&lt;p&gt;有一个新的 &lt;code&gt;editor-browser&lt;/code&gt; 调试类型，如果你已经有 &lt;code&gt;msedge&lt;/code&gt; 或 &lt;code&gt;chrome&lt;/code&gt; 的启动配置，迁移只需改 &lt;code&gt;launch.json&lt;/code&gt; 里的 &lt;code&gt;type&lt;/code&gt; 字段：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-json" data-lang="json"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&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;#34;type&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;editor-browser&amp;#34;&lt;/span&gt;&lt;span class="p"&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;#34;request&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;launch&amp;#34;&lt;/span&gt;&lt;span class="p"&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;#34;name&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;Debug Blazor App&amp;#34;&lt;/span&gt;&lt;span class="p"&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;#34;url&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;https://localhost:5001&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;对 Blazor 开发者来说，这是颠覆性的。你已经在终端运行 &lt;code&gt;dotnet watch&lt;/code&gt; — 现在调试也留在同一个窗口里。&lt;/p&gt;
&lt;p&gt;浏览器还获得了独立的缩放级别（终于）、正确的右键上下文菜单，缩放按网站记忆。&lt;/p&gt;
&lt;h2 id="mcp-服务器沙箱"&gt;MCP 服务器沙箱&lt;/h2&gt;
&lt;p&gt;这比你想的更重要。如果你在用 MCP 服务器 — 也许你为 Azure 资源或数据库查询设置了自定义的 — 它们一直以和你的 VS Code 进程相同的权限运行。这意味着对你的文件系统、网络等一切的完全访问。&lt;/p&gt;
&lt;p&gt;现在你可以对它们做沙箱处理。在你的 &lt;code&gt;mcp.json&lt;/code&gt; 中：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-json" data-lang="json"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&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;#34;servers&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&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;#34;my-azure-tools&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&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;#34;command&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;node&amp;#34;&lt;/span&gt;&lt;span class="p"&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;#34;args&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;./mcp-server.js&amp;#34;&lt;/span&gt;&lt;span class="p"&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;#34;sandboxEnabled&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;当沙箱化的服务器需要访问它没有的东西时，VS Code 会提示你授予权限。比&amp;quot;希望没人做奇怪的事&amp;quot;的方式好太多了。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;注意：&lt;/strong&gt; 沙箱目前在 macOS 和 Linux 上可用。Windows 支持即将到来 — 不过 WSL 等远程场景是可以工作的。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="monorepo-自定义发现"&gt;Monorepo 自定义发现&lt;/h2&gt;
&lt;p&gt;如果你在 monorepo 中工作（说实话，很多企业 .NET 解决方案最终都变成了 monorepo），这解决了一个真正的痛点。&lt;/p&gt;
&lt;p&gt;以前，如果你打开仓库的子文件夹，VS Code 找不到仓库根目录的 &lt;code&gt;copilot-instructions.md&lt;/code&gt;、&lt;code&gt;AGENTS.md&lt;/code&gt; 或自定义技能。现在通过 &lt;code&gt;chat.useCustomizationsInParentRepositories&lt;/code&gt; 设置，它会向上查找到 &lt;code&gt;.git&lt;/code&gt; 根目录并发现所有内容。&lt;/p&gt;
&lt;p&gt;这意味着你的团队可以在 monorepo 中跨所有项目共享代理指令、提示文件和自定义工具，不需要每个人都打开根文件夹。&lt;/p&gt;
&lt;h2 id="troubleshoot-用于代理调试"&gt;/troubleshoot 用于代理调试&lt;/h2&gt;
&lt;p&gt;有没有设置过自定义指令或技能，然后纳闷为什么没被检测到？新的 &lt;code&gt;/troubleshoot&lt;/code&gt; 技能读取代理调试日志并告诉你发生了什么 — 哪些工具被使用或跳过了，为什么指令没加载，什么导致了慢响应。&lt;/p&gt;
&lt;p&gt;用以下配置启用：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-json" data-lang="json"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&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;#34;github.copilot.chat.agentDebugLog.enabled&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&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;#34;github.copilot.chat.agentDebugLog.fileLogging.enabled&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&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;/troubleshoot why is my custom skill not loading?&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;你现在还可以导出和导入这些调试日志，当某些东西不按预期工作时，和团队分享很方便。&lt;/p&gt;
&lt;h2 id="图像和二进制文件支持"&gt;图像和二进制文件支持&lt;/h2&gt;
&lt;p&gt;代理现在可以从磁盘原生读取图像文件和二进制文件。二进制文件以 hexdump 格式呈现，图像输出（如集成浏览器的截图）以轮播视图显示。&lt;/p&gt;
&lt;p&gt;对 .NET 开发者来说：把 UI bug 的截图粘贴到聊天中让代理理解问题所在，或者让它分析 Blazor 组件渲染的输出。&lt;/p&gt;
&lt;h2 id="自动符号引用"&gt;自动符号引用&lt;/h2&gt;
&lt;p&gt;小的生活质量改善：当你复制一个符号名称（类、方法等）并粘贴到聊天中时，VS Code 现在自动将其转换为 &lt;code&gt;#sym:Name&lt;/code&gt; 引用。这给代理提供了关于该符号的完整上下文，无需手动添加。&lt;/p&gt;
&lt;p&gt;如果你想要纯文本，使用 &lt;code&gt;Ctrl+Shift+V&lt;/code&gt;。&lt;/p&gt;
&lt;h2 id="插件现在可以启用禁用"&gt;插件现在可以启用/禁用&lt;/h2&gt;
&lt;p&gt;以前禁用 MCP 服务器或插件意味着卸载它。现在你可以开关它们 — 全局和按工作区都可以。在扩展视图或自定义视图中右键单击就行。&lt;/p&gt;
&lt;p&gt;npm 和 pypi 的插件现在也可以自动更新了，不过会先请求批准，因为更新意味着在你的机器上运行新代码。&lt;/p&gt;
&lt;h2 id="总结"&gt;总结&lt;/h2&gt;
&lt;p&gt;VS Code 1.112 明显在大力推进代理体验 — 更多自主性、更好的调试、更严格的安全。对 .NET 开发者来说，集成浏览器调试和 Copilot CLI 改进是最突出的功能。&lt;/p&gt;
&lt;p&gt;如果你还没试过为 .NET 项目在自动驾驶模式下运行完整的 Copilot CLI 会话，这个版本是开始的好时机。记得设置你的权限然后让它干活。&lt;/p&gt;
&lt;p&gt;&lt;a href="https://code.visualstudio.com/updates/v1_112"&gt;下载 VS Code 1.112&lt;/a&gt; 或在 VS Code 内通过&lt;strong&gt;帮助 &amp;gt; 检查更新&lt;/strong&gt;进行更新。&lt;/p&gt;</content:encoded></item></channel></rss>