惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

A
About on SuperTechFans
Cloudbric
Cloudbric
C
CERT Recently Published Vulnerability Notes
G
GRAHAM CLULEY
V
Vulnerabilities – Threatpost
C
Cisco Blogs
T
Tenable Blog
P
Privacy International News Feed
T
The Exploit Database - CXSecurity.com
I
Intezer
AWS News Blog
AWS News Blog
IT之家
IT之家
博客园 - 司徒正美
C
Cybersecurity and Infrastructure Security Agency CISA
博客园 - 【当耐特】
The Hacker News
The Hacker News
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Spread Privacy
Spread Privacy
S
SegmentFault 最新的问题
博客园 - Franky
人人都是产品经理
人人都是产品经理
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
V
Visual Studio Blog
C
CXSECURITY Database RSS Feed - CXSecurity.com
H
Hacker News: Front Page
Latest news
Latest news
Scott Helme
Scott Helme
腾讯CDC
宝玉的分享
宝玉的分享
大猫的无限游戏
大猫的无限游戏
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
A
Arctic Wolf
S
Securelist
雷峰网
雷峰网
The GitHub Blog
The GitHub Blog
Project Zero
Project Zero
Google DeepMind News
Google DeepMind News
P
Palo Alto Networks Blog
F
Fortinet All Blogs
Schneier on Security
Schneier on Security
云风的 BLOG
云风的 BLOG
Security Archives - TechRepublic
Security Archives - TechRepublic
The Last Watchdog
The Last Watchdog
WordPress大学
WordPress大学
MongoDB | Blog
MongoDB | Blog
L
LINUX DO - 最新话题
S
Schneier on Security
NISL@THU
NISL@THU
Jina AI
Jina AI
M
MIT News - Artificial intelligence

.NET Blog

Announcing .NET Modernization for Beginners - .NET Blog .NET and .NET Framework July 2026 servicing releases updates - .NET Blog CoreCLR Progress and the Mono Timeline for .NET MAUI - .NET Blog .NET 11 Preview 6 is now available! - .NET Blog Modernize .NET applications in the GitHub Copilot app - .NET Blog MCP Beyond the Chat Window: Build Diagnostics in CI - .NET Blog .NET 8 and .NET 9 will reach End of Support on November 10, 2026 - .NET Blog SkiaSharp 4.0 is here: announcing the first stable release - .NET Blog Packaging and Package Identity for .NET apps with WinApp CLI on Windows - .NET Blog AI-Powered MSBuild Investigation with the Microsoft Binlog MCP Server - .NET Blog Join us for .NET Day on Agentic Modernization Livestream .NET 11 Preview 5 is now available! .NET and .NET Framework June 2026 servicing releases updates .NET at Microsoft Build 2026: Must watch sessions Doing More with GitHub Copilot as a .NET Developer Give Your .NET MAUI Android Apps a Material 3 Makeover Announcing Agent Governance Toolkit MCP Extensions for .NET Improving C# Memory Safety NuGet Package Pruning: Cleaner Dependencies and Actionable Vulnerability Reports Process API Improvements in .NET 11 .NET MAUI Moves to CoreCLR in .NET 11 .NET 11 Preview 4 is now available! .NET and .NET Framework May 2026 servicing releases updates Durable Workflows in the Microsoft Agent Framework Microsoft Agent Framework – Building Blocks for AI Part 3 Building an AI-Powered Conference App with .NET’s Composable AI Stack Governing MCP tool calls in .NET with the Agent Governance Toolkit VSTest is Removing its Newtonsoft.Json Dependency Welcome to SkiaSharp 4.0 Preview 1 High-Performance Distributed Caching with .NET and Postgres on Azure Combining API versioning with OpenAPI in .NET 10 applications What’s new for .NET in Ubuntu 26.04 .NET 10.0.7 Out-of-Band Security Update Writing Node.js addons with .NET Native AOT Pin Clustering in .NET MAUI Maps .NET and .NET Framework April 2026 servicing releases updates .NET 11 Preview 3 is now available! Your Migration’s Source of Truth: The Modernization Assessment ASP.NET Core 2.3 end of support announcement Explore union types in C# 15 Generative AI for Beginners .NET: Version 2 on .NET 10 Ten Months with Copilot Coding Agent in dotnet/runtime Accelerating .NET MAUI Development with AI Agents RT.Assistant: A Multi-Agent Voice Bot Using .NET and OpenAI Modernize .NET Anywhere with GitHub Copilot .NET 10.0.5 Out-of-Band Release – macOS Debugger Fix .NET 11 Preview 2 is now available!
Copilot Studio gets faster with .NET 10 on WebAssembly - .NET Blog
Daniel Roth · 2026-05-08 · via .NET Blog

May 7th, 2026

likeheart3 reactions

Principal Product Manager

A few months ago, we shared How Copilot Studio uses .NET and WebAssembly for performance and innovation, describing how Microsoft Copilot Studio runs C# in the browser via .NET WebAssembly (WASM) and the gains the team measured after moving from .NET 6 to .NET 8. Since then, the Copilot Studio team has upgraded their .NET WASM engine to .NET 10. This post is a quick look at how the upgrade went and what it delivered.

A smooth upgrade

Moving an existing .NET 8 WASM application to .NET 10 is largely a matter of updating the target framework in the .csproj files and ensuring all dependencies are compatible with the new version. For Copilot Studio, that’s exactly how the migration went, and the .NET 10 build is now running in production.

Automatic fingerprinting simplifies deployment

One of the most welcome changes in .NET 10 for WebAssembly applications is automatic fingerprinting of WASM assets. When you publish a WebAssembly app, each asset’s filename now includes a unique identifier, providing both cache-busting and integrity guarantees without any manual intervention.

Previously, Copilot Studio (like many WASM apps) had to:

  • Read the published blazor.boot.json manifest to enumerate assets.
  • Run a custom PowerShell script to rename each file with an appended SHA256 hash.
  • Pass an explicit integrity argument from JavaScript when requesting each resource.

In .NET 10, all of that goes away. Resources are imported directly from dotnet.js, fingerprints are part of the published filenames, and integrity is validated automatically. The team was able to delete the custom renaming script and remove the integrity argument from the client-side resource loader. Existing caching and validation logic on top of these resources continues to work unchanged.

Tip

If you load the .NET WASM runtime inside a WebWorker, set dotnetSidecar = true when initializing to ensure proper initialization in a worker context.

Smaller AOT output with WasmStripILAfterAOT

The other headline change for .NET WASM in .NET 10 is that WasmStripILAfterAOT is now enabled by default for AOT builds. After ahead-of-time compiling .NET methods to WebAssembly, the original Intermediate Language (IL) for those methods is no longer needed at runtime, so .NET 10 strips it out of the published output by default. In .NET 8 this setting existed but defaulted to false.

Copilot Studio uses a slightly more advanced packaging strategy. To get the best of both startup time and steady-state performance, it ships a single NPM package that contains both a JIT engine (for fast startup) and an AOT engine (for maximum execution speed). At runtime, Copilot Studio loads JIT and AOT in parallel; the JIT engine handles initial interactions, then control hands off to AOT once it’s ready. Files that are bit-for-bit identical between the two modes are deduplicated to keep the package small.

Because WasmStripILAfterAOT produces AOT assemblies that no longer match their JIT counterparts, fewer files can be shared between the two engines:

  • On .NET 8, 59 files were shared between the JIT and AOT engines.
  • On .NET 10, only 22 files are shared.

The net effect on the Copilot Studio package is roughly a 15% size increase. In practice the impact on end users is small because the JIT engine is still what they download and run first, so initial interactivity is unaffected. The AOT download is around 6% (~200 ms) slower on a fast LAN and around 17% (~5 s) slower on a 4G connection, all happening in the background after the app is already responsive.

The runtime benefits clearly outweigh the packaging cost for Copilot Studio’s workloads:

  • ~20% faster execution on the first call (cold path).
  • ~5% faster execution on subsequent calls (warm path).

Chart comparing .NET 8 vs .NET 10 execution time for small and big bots on cold and warm starts

These gains are most visible in large, complex agents — the “big bots” scenarios where AOT-compiled code does the heavy lifting.

Try .NET 10 for your WebAssembly apps

If you’re running a Blazor or .NET WebAssembly application on .NET 8, .NET 10 is well worth trying:

  • Update your project’s <TargetFramework> to net10.0 and refresh your Microsoft.AspNetCore.*, Microsoft.Extensions.*, and System.* package references.
  • Remove any custom asset renaming or integrity plumbing — fingerprinting is now built in.
  • If you AOT-compile, you’ll automatically benefit from the new WasmStripILAfterAOT default.

Need help getting your apps to the latest version of .NET? GitHub Copilot app modernization for .NET can analyze your solution, plan the upgrade, and apply the necessary changes for you. Learn more about modernizing your .NET applications at dotnet.microsoft.com/platform/modernize.

Copilot Studio’s upgrade is one more example of how each release of .NET continues to make WebAssembly faster, smaller, and simpler to ship.

Special thanks to Denis Voituron from the Copilot Studio team for sharing the migration details and performance data that made this post possible.

Category

Topics

Author

Daniel Roth

Principal Product Manager

Daniel Roth is a Program Manager on the ASP.NET team at Microsoft.