<?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>Blazor | The .NET Blog</title><link>https://thedotnetblog.com/zh/tags/blazor/</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>Sat, 23 May 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://thedotnetblog.com/zh/tags/blazor/index.xml" rel="self" type="application/rss+xml"/><item><title>Copilot Studio 如何迁移到 .NET 10 WebAssembly 并提速 20%</title><link>https://thedotnetblog.com/zh/news/emiliano-montesdeoca/copilot-studio-net10-webassembly-migration-performance/</link><pubDate>Sat, 23 May 2026 00:00:00 +0000</pubDate><author>Emiliano Montesdeoca</author><guid>https://thedotnetblog.com/zh/news/emiliano-montesdeoca/copilot-studio-net10-webassembly-migration-performance/</guid><description>.NET 10 WASM 的改进不仅仅适用于新项目。以下是 Copilot Studio 从 .NET 8 升级后测量到的结果：自动指纹识别、默认启用 WasmStripILAfterAOT 以及真实的执行性能数据。</description><content:encoded>&lt;p&gt;Copilot Studio 团队做了所有 Blazor WASM 开发者都好奇的事情：他们实际上将一个生产应用程序从 .NET 8 升级到了 .NET 10 并测量了结果。这篇文章分享了具体数字，这很罕见也非常有用。&lt;/p&gt;
&lt;h2 id="升级过程很无聊这是好事"&gt;升级过程很无聊（这是好事）&lt;/h2&gt;
&lt;p&gt;更新目标框架、刷新包引用、修复破坏性更改。就这样。.NET 10 构建现在已在生产环境中运行。迁移本身并不是有趣的部分——.NET 10 中的变化才是。&lt;/p&gt;
&lt;h2 id="自动资源指纹识别"&gt;自动资源指纹识别&lt;/h2&gt;
&lt;p&gt;以前，部署 WASM 应用意味着需要编写自定义脚本来用 SHA256 哈希重命名已发布的资源以进行缓存清除。Copilot Studio 有一个 PowerShell 脚本做的正是这件事——重命名文件、将 &lt;code&gt;integrity&lt;/code&gt; 属性注入 JavaScript 加载器、手动管理一切。&lt;/p&gt;
&lt;p&gt;在 .NET 10 中，所有这些都是内置的。已发布的资源会自动添加指纹，直接从 &lt;code&gt;dotnet.js&lt;/code&gt; 导入，并在无需手动干预的情况下进行完整性验证。团队删除了重命名脚本。&lt;/p&gt;
&lt;p&gt;范围上的小变化，复杂性的显著降低。&lt;/p&gt;
&lt;h2 id="wasmstripilafteraot-现在默认启用"&gt;WasmStripILAfterAOT 现在默认启用&lt;/h2&gt;
&lt;p&gt;在 .NET 8 中，从 AOT 编译的程序集中删除 IL 是选择性的。在 .NET 10 中这是默认行为。AOT 编译后，原始 IL 字节码从输出中删除——运行时不需要它，保留它会无故膨胀包大小。&lt;/p&gt;
&lt;p&gt;Copilot Studio 使用了一种特定的优化：它同时提供 JIT 引擎（快速启动）和 AOT 引擎（最大稳态性能），并行加载两者，并在准备好后从 JIT 切换到 AOT。它还会对两个引擎之间相同的文件进行去重。&lt;/p&gt;
&lt;p&gt;新的 IL 剥离行为意味着 AOT 程序集不再与其 JIT 对应项逐位匹配，因此去重的文件更少：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;.NET 8：59 个共享文件&lt;/li&gt;
&lt;li&gt;.NET 10：22 个共享文件&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;净结果：AOT 引擎的包大小增加了约 15%。在快速 LAN 上 AOT 下载慢约 6%，在 4G 上慢约 17%。但这一切都在应用程序已经可交互后在后台发生。&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;快约 20%&lt;/strong&gt;（冷路径）&lt;/li&gt;
&lt;li&gt;后续调用时 &lt;strong&gt;快约 5%&lt;/strong&gt;（热路径）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;改进在&amp;quot;大型机器人&amp;quot;中最为明显——AOT 编译代码主导的大型复杂代理。对于更简单的工作流，收益较小。&lt;/p&gt;
&lt;h2 id="如果您仍在使用-net-8"&gt;如果您仍在使用 .NET 8&lt;/h2&gt;
&lt;p&gt;迁移过程真的很简单：更新 &lt;code&gt;&amp;lt;TargetFramework&amp;gt;&lt;/code&gt;、刷新包引用、删除任何自定义指纹识别脚本，您将自动从 &lt;code&gt;WasmStripILAfterAOT&lt;/code&gt; 中受益。如果您正在 AOT 编译，预期会有类似的性能提升。&lt;/p&gt;
&lt;p&gt;文章中的一个注意事项：如果您在 &lt;code&gt;WebWorker&lt;/code&gt; 中加载 .NET WASM 运行时，请在初始化时设置 &lt;code&gt;dotnetSidecar = true&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;原文：&lt;a href="https://devblogs.microsoft.com/dotnet/copilot-studio-dotnet-10-migration/"&gt;Copilot Studio gets faster with .NET 10 on WebAssembly&lt;/a&gt;&lt;/p&gt;</content:encoded></item></channel></rss>