<?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>Modernization | The .NET Blog</title><link>https://thedotnetblog.com/zh/tags/modernization/</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>Fri, 17 Apr 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://thedotnetblog.com/zh/tags/modernization/index.xml" rel="self" type="application/rss+xml"/><item><title>Docker Sandbox 让 Copilot 代理重构你的代码而不危及你的机器</title><link>https://thedotnetblog.com/zh/news/emiliano-montesdeoca/copilot-docker-sandbox-agentic-refactoring/</link><pubDate>Fri, 17 Apr 2026 00:00:00 +0000</pubDate><author>Emiliano Montesdeoca</author><guid>https://thedotnetblog.com/zh/news/emiliano-montesdeoca/copilot-docker-sandbox-agentic-refactoring/</guid><description>Docker Sandbox 为 GitHub Copilot 代理提供安全的微型虚拟机，让它们可以自由重构——无需权限提示，不会对主机造成风险。这就是它为什么会改变大规模 .NET 现代化的一切。</description><content:encoded>&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;本文为自动翻译。查看原文请&lt;a href="https://thedotnetblog.com/zh/news/emiliano-montesdeoca/copilot-docker-sandbox-agentic-refactoring/"&gt;点击这里&lt;/a&gt;。&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;如果你用过 Copilot 的代理模式做一些超出小修改范围的事情，你一定知道那种痛苦。每次写文件，每个终端命令——又一个权限提示。现在想象一下在 50 个项目上这样操作。一点都不好玩。&lt;/p&gt;
&lt;p&gt;Azure 团队刚发布了一篇关于 &lt;a href="https://devblogs.microsoft.com/all-things-azure/best-of-both-worlds-for-agentic-refactoring-github-copilot-microvms-via-docker-sandbox/"&gt;GitHub Copilot 代理的 Docker Sandbox&lt;/a&gt; 的文章，说实话，这是我见过的最实用的代理工具改进之一。它使用微型虚拟机为 Copilot 提供一个完全隔离的环境，让它可以随意操作——安装包、运行构建、执行测试——而不会触及你的主机系统。&lt;/p&gt;
&lt;h2 id="docker-sandbox-实际给你带来什么"&gt;Docker Sandbox 实际给你带来什么&lt;/h2&gt;
&lt;p&gt;核心思路很简单：启动一个带有完整 Linux 环境的轻量级微型虚拟机，将你的工作区同步进去，然后让 Copilot 代理在里面自由操作。完成后，更改会同步回来。&lt;/p&gt;
&lt;p&gt;以下是让它不仅仅是&amp;quot;在容器里运行东西&amp;quot;的特点：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;双向工作区同步&lt;/strong&gt;，保留绝对路径。你的项目结构在沙箱内看起来完全一样。不会有路径相关的构建失败。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;私有 Docker 守护进程&lt;/strong&gt;在微型虚拟机内运行。代理可以构建和运行容器，而无需挂载你主机的 Docker socket。这对安全性来说意义重大。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;HTTP/HTTPS 过滤代理&lt;/strong&gt;控制代理在网络上可以访问什么。你来决定允许哪些注册表和端点。沙箱内恶意 &lt;code&gt;npm install&lt;/code&gt; 带来的供应链攻击？已封锁。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;YOLO 模式&lt;/strong&gt;——是的，他们就是这么叫的。代理运行时无需权限提示，因为它根本无法损坏你的主机。每一个破坏性操作都被隔离了。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="为什么-net-开发者应该关注"&gt;为什么 .NET 开发者应该关注&lt;/h2&gt;
&lt;p&gt;想想现在有多少团队正在面对现代化工作。你有一个包含 30 个项目的 .NET Framework 解决方案，需要迁移到 .NET 9。那是数百个文件的更改——项目文件、命名空间更新、API 替换、NuGet 迁移。&lt;/p&gt;
&lt;p&gt;使用 Docker Sandbox，你可以将 Copilot 代理指向一个项目，让它在微型虚拟机内自由重构，运行 &lt;code&gt;dotnet build&lt;/code&gt; 和 &lt;code&gt;dotnet test&lt;/code&gt; 进行验证，然后只接受那些真正有效的更改。不用担心它在实验过程中意外破坏你的本地开发环境。&lt;/p&gt;
&lt;p&gt;文章还描述了运行&lt;strong&gt;并行代理舰队&lt;/strong&gt;的场景——每个代理在自己的沙箱中——同时处理不同的项目。对于大型 .NET 解决方案或微服务架构来说，这是一个巨大的时间节省。每个服务一个代理，全部隔离运行，全部独立验证。&lt;/p&gt;
&lt;h2 id="安全角度很重要"&gt;安全角度很重要&lt;/h2&gt;
&lt;p&gt;大多数人忽略的一点是：当你让 AI 代理执行任意命令时，你是在把整台机器都托付给它。Docker Sandbox 翻转了这个模型。代理在一次性环境中获得完全自主权。网络代理确保它只能从已批准的来源下载。你的主机文件系统、Docker 守护进程和凭据完好无损。&lt;/p&gt;
&lt;p&gt;对于有合规要求的团队——这是大多数企业级 .NET 公司的情况——这就是&amp;quot;我们不能使用代理式 AI&amp;quot;和&amp;quot;我们可以安全地采用它&amp;quot;之间的区别。&lt;/p&gt;
&lt;h2 id="总结"&gt;总结&lt;/h2&gt;
&lt;p&gt;Docker Sandbox 解决了代理式编程的根本矛盾：代理需要自由才能发挥作用，但在你的主机上拥有自由是危险的。微型虚拟机两者兼得。如果你正在规划任何大规模的 .NET 重构或现代化，现在就值得设置起来。Copilot 的代码智能与安全执行环境的结合，正是生产团队一直在等待的。&lt;/p&gt;</content:encoded></item><item><title>GitHub Copilot 的现代化评估是你还没用上的最好迁移工具</title><link>https://thedotnetblog.com/zh/news/emiliano-montesdeoca/dotnet-modernization-assessment-github-copilot/</link><pubDate>Fri, 10 Apr 2026 00:00:00 +0000</pubDate><author>Emiliano Montesdeoca</author><guid>https://thedotnetblog.com/zh/news/emiliano-montesdeoca/dotnet-modernization-assessment-github-copilot/</guid><description>GitHub Copilot 的现代化扩展不仅仅建议代码更改 — 它生成完整的迁移评估，包含可操作的问题、Azure 目标比较和协作工作流。以下是评估文档为何是一切关键的原因。</description><content:encoded>&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;本文为自动翻译。查看原文请&lt;a href="https://thedotnetblog.com/zh/news/emiliano-montesdeoca/dotnet-modernization-assessment-github-copilot/"&gt;点击这里&lt;/a&gt;。&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;将传统 .NET Framework 应用迁移到现代 .NET 是那种每个人都知道应该做但没人想开始的任务。它从来不是简单的&amp;quot;更改目标框架&amp;quot;。而是消失的 API、不再存在的包、工作方式完全不同的托管模型，以及关于什么要容器化、什么要重写、什么要保持不变的无数小决策。&lt;/p&gt;
&lt;p&gt;Jeffrey Fritz 刚刚发布了一篇 &lt;a href="https://devblogs.microsoft.com/dotnet/your-migrations-source-of-truth-the-modernization-assessment/"&gt;GitHub Copilot 现代化评估的深入解析&lt;/a&gt;，说实话？这是我见过的 .NET 最好的迁移工具。不是因为代码生成 — 那现在已经是标配了。而是因为它生成的评估文档。&lt;/p&gt;
&lt;h2 id="它不仅仅是代码建议引擎"&gt;它不仅仅是代码建议引擎&lt;/h2&gt;
&lt;p&gt;VS Code 扩展遵循&lt;strong&gt;评估 → 计划 → 执行&lt;/strong&gt;模型。评估阶段分析你的整个代码库，生成一份结构化文档，捕获一切：什么需要更改、需要配置哪些 Azure 资源、使用什么部署模型。下游的一切 — 基础设施即代码、容器化、部署清单 — 都源自评估发现的内容。&lt;/p&gt;
&lt;p&gt;评估存储在项目的 &lt;code&gt;.github/modernize/assessment/&lt;/code&gt; 下。每次运行产生一份独立的报告，因此你可以积累历史记录，并在修复问题时跟踪迁移态势的演变。&lt;/p&gt;
&lt;h2 id="两种开始方式"&gt;两种开始方式&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;推荐评估&lt;/strong&gt; — 快捷路径。从策划好的领域（Java/.NET 升级、云就绪、安全）中选择，无需配置即可获得有意义的结果。非常适合初次了解应用的状态。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;自定义评估&lt;/strong&gt; — 定向路径。精确配置要分析的内容：目标计算（App Service、AKS、Container Apps）、目标操作系统、容器化分析。选择多个 Azure 目标来并排比较迁移方法。&lt;/p&gt;
&lt;p&gt;那个比较视图真的很有用。一个应用在 App Service 上可能有 3 个必须解决的问题，在 AKS 上可能有 7 个。看到两者有助于在确定迁移路径之前做出托管决策。&lt;/p&gt;
&lt;h2 id="问题分解是可操作的"&gt;问题分解是可操作的&lt;/h2&gt;
&lt;p&gt;每个问题都带有严重程度级别：&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;每个问题都链接到受影响的文件和行号，提供详细描述说明什么地方有问题以及为什么对目标平台重要，给出具体的修复步骤（不仅仅是&amp;quot;修复这个&amp;quot;），并包含官方文档链接。&lt;/p&gt;
&lt;p&gt;你可以将单个问题分配给开发者，他们拥有行动所需的一切。这就是告诉你&amp;quot;有个问题&amp;quot;的工具和告诉你如何解决的工具之间的区别。&lt;/p&gt;
&lt;h2 id="涵盖的升级路径"&gt;涵盖的升级路径&lt;/h2&gt;
&lt;p&gt;针对 .NET 具体来说：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;.NET Framework → .NET 10&lt;/li&gt;
&lt;li&gt;ASP.NET → ASP.NET Core&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;每条升级路径都有检测规则，知道哪些 API 被移除、哪些模式没有直接等价物、哪些安全问题需要关注。&lt;/p&gt;
&lt;p&gt;对于管理多个应用的团队，还有一个 CLI 支持多仓库批量评估 — 克隆所有仓库，全部评估，获取每个应用的报告加上汇总的组合视图。&lt;/p&gt;
&lt;h2 id="我的看法"&gt;我的看法&lt;/h2&gt;
&lt;p&gt;如果你坐拥传统 .NET Framework 应用（说实话，大多数企业团队都是这样），这就是&lt;em&gt;那个&lt;/em&gt;应该开始使用的工具。仅评估文档就值得投入时间 — 它将模糊的&amp;quot;我们应该现代化&amp;quot;变成了一个具体的、有优先级的工作项列表，指明了前进的方向。&lt;/p&gt;
&lt;p&gt;协作工作流也很聪明：导出评估、与团队分享、无需重新运行即可导入。决策者不是运行工具的人的架构评审？涵盖了。&lt;/p&gt;
&lt;h2 id="总结"&gt;总结&lt;/h2&gt;
&lt;p&gt;GitHub Copilot 的现代化评估将 .NET 迁移从一个可怕的、不明确的项目转变为一个结构化的、可跟踪的过程。从推荐评估开始了解你的现状，然后使用自定义评估来比较 Azure 目标并制定迁移计划。&lt;/p&gt;
&lt;p&gt;阅读&lt;a href="https://devblogs.microsoft.com/dotnet/your-migrations-source-of-truth-the-modernization-assessment/"&gt;完整演练&lt;/a&gt;并获取 &lt;a href="https://aka.ms/ghcp-appmod/vscode-ext"&gt;VS Code 扩展&lt;/a&gt;在你自己的代码库上试试。&lt;/p&gt;</content:encoded></item></channel></rss>