[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"article-copilot-studio-dotnet-10-wasm-performance-zh":3,"tags-copilot-studio-dotnet-10-wasm-performance-zh":38,"related-lang-copilot-studio-dotnet-10-wasm-performance-zh":49,"related-posts-copilot-studio-dotnet-10-wasm-performance-zh":53,"series-tools-bd960274-ba91-484f-a56e-4c1504665ec5":90},{"id":4,"title":5,"content":6,"summary":7,"source":8,"source_url":9,"author":10,"image_url":11,"keywords":12,"language":22,"translated_content":10,"views":23,"is_premium":24,"created_at":25,"updated_at":25,"cover_image":11,"published_at":26,"rewrite_status":27,"rewrite_error":10,"rewritten_from_id":28,"slug":29,"category":30,"related_article_id":31,"status":32,"google_indexed_at":33,"x_posted_at":10,"tweet_text":10,"title_rewritten_at":10,"title_original":10,"key_takeaways":34,"topic_cluster_id":10,"embedding":10,"is_canonical_seed":24},"bd960274-ba91-484f-a56e-4c1504665ec5","Copilot Studio 換上 .NET 10 WASM 後更快了","\u003Cp data-speakable=\"summary\">\u003Ca href=\"\u002Ftag\u002Fcopilot\">Copilot\u003C\u002Fa> Studio 把瀏覽器端 WebAssemb\u003Ca href=\"\u002Fnews\u002Fwhy-polyai-kong-deal-right-move-enterprise-ai-zh\">ly\u003C\u002Fa> 引擎升到 .NET 10，執行速度變快，部署流程也少了幾段手工處理。\u003C\u002Fp>\u003Cp>說真的，這種升級很實在。\u003Ca href=\"\u002Fnews\u002Fwhy-midjourney-81-raw-mode-better-default-style-zh\">Mi\u003C\u002Fa>crosoft 把 \u003Ca href=\"https:\u002F\u002Fdotnet.microsoft.com\u002Fen-us\u002Fdownload\u002Fdotnet\u002F10.0\" target=\"_blank\" rel=\"noopener\">.NET 10\u003C\u002Fa> 用到 \u003Ca href=\"https:\u002F\u002Fwww.microsoft.com\u002Fen-us\u002Fmicrosoft-copilot\u002Fmicrosoft-copilot-studio\" target=\"_blank\" rel=\"noopener\">Copilot Studio\u003C\u002Fa> 的瀏覽器端 WebAssembly 引擎上，而且已經上線到正式環境。這代表 C# 直接跑在瀏覽器裡，啟動時間、下載大小、快取處理，都會直接影響\u003Ca href=\"\u002Fnews\u002Fwhy-aws-is-right-to-move-q-developer-users-to-kiro-zh\">使用者\u003C\u002Fa>手感。\u003C\u002Fp>\u003Cp>官方還丟出幾個很具體的數字。套件體積約增加 15%，第一次 AOT 呼叫快了約 20%，之後的 warm call 也快了約 5%。對開發者來說，這種數字比空話有用多了，因為它直接反映出取捨。\u003C\u002Fp>\u003Ctable>\u003Cthead>\u003Ctr>\u003Cth>指標\u003C\u002Fth>\u003Cth>.NET 8\u003C\u002Fth>\u003Cth>.NET 10\u003C\u002Fth>\u003C\u002Ftr>\u003C\u002Fthead>\u003Ctbody>\u003Ctr>\u003Ctd>JIT 與 AOT 共用檔案數\u003C\u002Ftd>\u003Ctd>59\u003C\u002Ftd>\u003Ctd>22\u003C\u002Ftd>\u003C\u002Ftr>\u003Ctr>\u003Ctd>套件大小變化\u003C\u002Ftd>\u003Ctd>基準\u003C\u002Ftd>\u003Ctd>約增加 15%\u003C\u002Ftd>\u003C\u002Ftr>\u003Ctr>\u003Ctd>第一次呼叫執行\u003C\u002Ftd>\u003Ctd>基準\u003C\u002Ftd>\u003Ctd>約快 20%\u003C\u002Ftd>\u003C\u002Ftr>\u003Ctr>\u003Ctd>後續呼叫執行\u003C\u002Ftd>\u003Ctd>基準\u003C\u002Ftd>\u003Ctd>約快 5%\u003C\u002Ftd>\u003C\u002Ftr>\u003Ctr>\u003Ctd>快速區網 AOT 下載\u003C\u002Ftd>\u003Ctd>基準\u003C\u002Ftd>\u003Ctd>約慢 200 毫秒\u003C\u002Ftd>\u003C\u002Ftr>\u003Ctr>\u003Ctd>4G 網路 AOT 下載\u003C\u002Ftd>\u003Ctd>基準\u003C\u002Ftd>\u003Ctd>約慢 5 秒\u003C\u002Ftd>\u003C\u002Ftr>\u003C\u002Ftbody>\u003C\u002Ftable>\u003Ch2>這次升級到底改了什麼\u003C\u002Fh2>\u003Cp>這次遷移其實很單純。根據 \u003Ca href=\"https:\u002F\u002Fdevblogs.microsoft.com\u002Fdotnet\u002F\" target=\"_blank\" rel=\"noopener\">.NET Blog\u003C\u002Fa> 的說法，Copilot Studio 團隊主要就是改專案目標框架，然後確認相依套件都能相容。講白了，就是把專案從 .NET 8 換到 .NET 10，再重建、上線。\u003C\u002Fp>\n\u003Cfigure class=\"my-6\">\u003Cimg src=\"https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1778245880937-6sxm.png\" alt=\"Copilot Studio 換上 .NET 10 WASM 後更快了\" class=\"rounded-xl w-full\" loading=\"lazy\" \u002F>\u003C\u002Ffigure>\n\u003Cp>這種做法很重要，因為 WebAssembly 專案很容易越做越肥。你一旦自己寫了快取清理、檔名雜湊、完整性驗證，下一次框架升級就可能又要補一堆補丁。Copilot Studio 這次的做法，是盡量吃進 .NET 10 的預設能力，少背自己維護的包袱。\u003C\u002Fp>\u003Cp>我覺得這才是重點。很多團隊在意效能，卻忽略部署成本。結果效能只贏一點點，維運卻多一倍。Copilot Studio 的案例剛好反過來，它把一些手工流程交給框架處理了。\u003C\u002Fp>\u003Cul>\u003Cli>原本就是跑在 .NET 8。\u003C\u002Fli>\u003Cli>新版已經正式上線。\u003C\u002Fli>\u003Cli>原有快取邏輯仍然保留。\u003C\u002Fli>\u003Cli>沒有重寫整個應用架構。\u003C\u002Fli>\u003C\u002Ful>\u003Ch2>自動指紋化，少寫一堆部署雜活\u003C\u002Fh2>\u003Cp>.NET 10 對 WebAssembly 最有感的改動之一，是發佈資產自動 fingerprinting。白話一點，就是建置系統會自動在檔名裡加上唯一識別，快取更新和完整性檢查就不用自己拼命補腳本。\u003C\u002Fp>\u003Cp>在舊流程裡，Copilot Studio 需要先讀發佈清單，再把檔案改成 SHA256 雜湊名稱，最後還要從 JavaScript 傳完整性資料去載入資源。這些事不是不能做，但很煩，而且很容易壞。升到 .NET 10 之後，這些步驟少了很多。\u003C\u002Fp>\u003Cp>\u003Ca href=\"\u002Ftag\u002Fmicrosoft\">Microsoft\u003C\u002Fa> 的 \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fdotnet\u002Fruntime\u002Fblob\u002Fmain\u002Fsrc\u002Fmono\u002Fwasm\" target=\"_blank\" rel=\"noopener\">.NET WebAssembly runtime\u003C\u002Fa> 也把這套流程整合進去。資源可以直接載入，檔名會自動指紋化，完整性驗證也交給平台處理。這種事看起來不起眼，但對長期維護很有差。\u003C\u002Fp>\u003Cblockquote>“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.” — Daniel Roth, Principal Product Manager, Microsoft\u003C\u002Fblockquote>\u003Cp>這句話很直白，也很有份量。它的意思是，框架開始把原本要靠團隊自己補的東西收回去。你少寫幾段自訂腳本，日後少踩幾次雷。\u003C\u002Fp>\u003Cp>另外還有一個小細節。若你把 .NET WASM runtime 放進 WebWorker，初始化時要設 \u003Ccode>dotnetSidecar = true\u003C\u002Fcode>。這種設定看起來瑣碎，但常常就是你卡住的地方。\u003C\u002Fp>\u003Ch2>AOT 變更，重點其實不是變大一點\u003C\u002Fh2>\u003Cp>另一個值得注意的改動，是 \u003Ccode>WasmStripILAfterAOT\u003C\u002Fcode> 在 AOT 建置下預設開啟。意思很簡單。方法一旦先編譯成 WebAssembly，原本的 IL 在執行時就不需要了，所以 .NET 10 會自動把它剝掉。\u003C\u002Fp>\n\u003Cfigure class=\"my-6\">\u003Cimg src=\"https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1778245871139-b6lc.png\" alt=\"Copilot Studio 換上 .NET 10 WASM 後更快了\" class=\"rounded-xl w-full\" loading=\"lazy\" \u002F>\u003C\u002Ffigure>\n\u003Cp>Copilot Studio 用的是混合策略。JIT 先讓使用者快速互動，AOT 再在背景處理比較重的工作。這樣做的好處很明顯，就是先讓介面動起來，再慢慢把重活接上去。使用者不會傻等整包 AOT 下載完。\u003C\u002Fp>\u003Cp>這裡的數字很值得看。JIT 和 AOT 共用的檔案數，從 .NET 8 的 59 個降到 .NET 10 的 22 個。這代表重複內容少了，分工更清楚，但也讓套件體積增加一些。\u003C\u002Fp>\u003Cul>\u003Cli>共用檔案數從 59 降到 22。\u003C\u002Fli>\u003Cli>套件體積約增加 15%。\u003C\u002Fli>\u003Cli>第一次呼叫約快 20%。\u003C\u002Fli>\u003Cli>後續呼叫約快 5%。\u003C\u002Fli>\u003C\u002Ful>\u003Cp>如果只看下載時間，這看起來像是退步。但要放在使用情境裡看。Microsoft 提到，在快速區網上，AOT 下載大約慢 200 毫秒；在 4G 網路上，大約慢 5 秒。可是在這段時間裡，使用者已經可以先操作 JIT 版內容了。\u003C\u002Fp>\u003Cp>所以這不是單純比大小。這是在比體感。對桌機使用者來說，背景多幾秒通常還能接受。對行動網路使用者來說，就要更仔細評估，但至少你拿到的是更快的執行速度。\u003C\u002Fp>\u003Ch2>這跟其他 WebAssembly 專案相比怎樣\u003C\u002Fh2>\u003Cp>如果拿一般 Blazor 或 WebAssembly 專案來看，Copilot Studio 的做法很像一個成熟團隊該做的選擇。它不是追求最小下載，而是把部署複雜度和執行速度一起算進去。這才符合真實產品，而不是 demo。\u003C\u002Fp>\u003Cp>很多團隊卡在自訂資產流程。你可能有自己的檔名雜湊、完整性驗證、CDN 快取規則，甚至還有一堆 shell script。這些東西一旦散落在 pipeline 裡，升版就會變成考古現場。\u003Ca href=\"https:\u002F\u002Flearn.microsoft.com\u002Faspnet\u002Fcore\u002Fblazor\u002Fhost-and-deploy\u002Fwebassembly\" target=\"_blank\" rel=\"noopener\">Blazor WebAssembly 部署文件\u003C\u002Fa> 一直都在提醒這件事：部署越標準化，維護成本越低。\u003C\u002Fp>\u003Cp>再看競品思路。像 \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Femscripten-core\u002Femscripten\" target=\"_blank\" rel=\"noopener\">Emscripten\u003C\u002Fa> 路線偏向把 C++ 生態搬進瀏覽器。\u003Ca href=\"https:\u002F\u002Fgithub.com\u002FWebAssembly\" target=\"_blank\" rel=\"noopener\">WebAssembly\u003C\u002Fa> 本身也不是只服務 .NET。可是 .NET 10 的優勢在於，它把常見的資產處理收進框架，讓 .NET 團隊少寫很多周邊邏輯。\u003C\u002Fp>\u003Cul>\u003Cli>.NET 10：自動 fingerprinting。\u003C\u002Fli>\u003Cli>舊流程：手工雜湊與完整性檢查。\u003C\u002Fli>\u003Cli>JIT 先上，AOT 後補。\u003C\u002Fli>\u003Cli>適合需要互動優先的產品。\u003C\u002Fli>\u003C\u002Ful>\u003Cp>如果你是做內部工具，這種差異可能更明顯。內部工具常常要求快速上線，也常常沒人想維護一堆自訂腳本。這時候，框架內建能力就很香，因為它少掉很多人肉維護。\u003C\u002Fp>\u003Cp>如果你是做面向大量行動使用者的產品，就要更小心。4G 多出 5 秒，不是小數字。你得自己量測，不能只看官方 \u003Ca href=\"\u002Ftag\u002Fbenchmark\">benchmark\u003C\u002Fa>。這點我會講得很直接，因為很多團隊最愛拿別人的數字當自己的結論。\u003C\u002Fp>\u003Ch2>這次升級透露的產業方向\u003C\u002Fh2>\u003Cp>這件事其實在講一個很現實的方向。WebAssembly 不再只是「能跑就好」，而是開始講求可維護、可部署、可長期迭代。框架如果能幫你處理資產命名、完整性驗證、AOT 剝離，團隊就能把時間花在功能本身。\u003C\u002Fp>\u003Cp>對 Microsoft 來說，Copilot Studio 是很好的示範案例。它不是小玩具，而是實際產品。既然正式環境都能從 .NET 8 升到 .NET 10，代表這套路線已經夠穩，至少對某些工作負載是這樣。\u003C\u002Fp>\u003Cp>更大的意義是，這會影響其他做 Blazor、WebAssembly、甚至內部平台的團隊。你如果還在維護自訂 hash 腳本、手動 integrity 檢查，現在就該拿 staging 環境試一次 .NET 10。別等到下一次大升版才發現自己欠一堆技術債。\u003C\u002Fp>\u003Ch2>接下來該怎麼看\u003C\u002Fh2>\u003Cp>我會把這次更新解讀成一個訊號。未來做 .NET WebAssembly 專案，標準化部署流程會比自己造輪子更重要。效能當然要看，但維護成本也要一起算，不然你只是把問題往後丟。\u003C\u002Fp>\u003Cp>如果你手上有 Blazor 或其他 WASM 專案，建議先做兩件事。第一，升到 \u003Ccode>net10.0\u003C\u002Fcode> 測試。第二，量一下你自己的下載時間、第一次互動時間、後續呼叫時間。別只看平均值，因為行動網路和桌機的差很多。\u003C\u002Fp>\u003Cp>講白了，這種升級最怕紙上談兵。你應該先在 staging 跑一輪，確認資產 fingerprinting、AOT 行為、WebWorker 初始化都正常，再決定要不要全面切換。這樣比較務實，也比較不會翻車。\u003C\u002Fp>","Copilot Studio 把瀏覽器端 WebAssembly 引擎升到 .NET 10，帶來更快執行、較少部署雜活，還公開了實測數字。","devblogs.microsoft.com","https:\u002F\u002Fdevblogs.microsoft.com\u002Fdotnet\u002Fcopilot-studio-dotnet-10-migration\u002F",null,"https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1778245880937-6sxm.png",[13,14,15,16,17,18,19,20,21],"Copilot Studio",".NET 10","WebAssembly","WASM","AOT","Blazor","Microsoft","效能優化","部署流程","zh",0,false,"2026-05-08T13:10:53.938982+00:00","2026-05-08T13:10:53.727+00:00","done","2aa8c7c9-038b-4461-8a94-5cffcbf8999c","copilot-studio-dotnet-10-wasm-performance-zh","tools","78a2a3e2-c355-412d-bdf5-eceea1c3102f","published","2026-05-09T09:00:15.167+00:00",[35,36,37],"Copilot Studio 已把瀏覽器端 WebAssembly 引擎升到 .NET 10，並且已在正式環境上線。","這次升級讓第一次 AOT 呼叫快約 20%，後續呼叫快約 5%，但套件體積也增加約 15%。",".NET 10 的自動 fingerprinting 和 AOT 預設剝離 IL，能減少自訂部署腳本與維運成本。",[39,41,43,45,47],{"name":14,"slug":40},"net-10",{"name":15,"slug":42},"webassembly",{"name":16,"slug":44},"wasm",{"name":13,"slug":46},"copilot-studio",{"name":17,"slug":48},"aot",{"id":31,"slug":50,"title":51,"language":52},"copilot-studio-dotnet-10-wasm-performance-en","Copilot Studio gets faster with .NET 10 WASM","en",[54,60,66,72,78,84],{"id":55,"slug":56,"title":57,"cover_image":58,"image_url":58,"created_at":59,"category":30},"68e4be16-dc38-4524-a6ea-5ebe22a6c4fb","why-vidhub-huiyuan-hutong-bushi-quan-shebei-tongyong-zh","為什麼 VidHub 會員互通不是「買一次全設備通用」","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1778789450987-advz.png","2026-05-14T20:10:24.048988+00:00",{"id":61,"slug":62,"title":63,"cover_image":64,"image_url":64,"created_at":65,"category":30},"7a1e174f-746b-4e82-a0e3-b2475ab39747","why-buns-zig-to-rust-experiment-is-right-zh","為什麼 Bun 的 Zig-to-Rust 實驗是對的","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1778767879127-5dna.png","2026-05-14T14:10:26.886397+00:00",{"id":67,"slug":68,"title":69,"cover_image":70,"image_url":70,"created_at":71,"category":30},"e742fc73-5a65-4db3-ad17-88c99262ceb7","why-openai-api-pricing-is-product-strategy-zh","為什麼 OpenAI API 定價是產品策略，不是註腳","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1778749859485-chvz.png","2026-05-14T09:10:26.003818+00:00",{"id":73,"slug":74,"title":75,"cover_image":76,"image_url":76,"created_at":77,"category":30},"c757c5d8-eda9-45dc-9020-4b002f4d6237","why-claude-code-prompt-design-beats-ide-copilots-zh","為什麼 Claude Code 的提示設計贏過 IDE Copilot","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1778742645084-dao9.png","2026-05-14T07:10:29.371901+00:00",{"id":79,"slug":80,"title":81,"cover_image":82,"image_url":82,"created_at":83,"category":30},"4adef3ab-9f07-4970-91cf-77b8b581b348","why-databricks-model-serving-is-right-default-zh","為什麼 Databricks Model Serving 是生產推論的正確預設","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1778692245329-a2wt.png","2026-05-13T17:10:30.659153+00:00",{"id":85,"slug":86,"title":87,"cover_image":88,"image_url":88,"created_at":89,"category":30},"b3305057-451d-48e4-9fb9-69215f7effad","why-ibm-bob-right-kind-ai-coding-assistant-zh","為什麼 IBM 的 Bob 才是對的 AI 寫碼助手","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1778664653510-64hc.png","2026-05-13T09:30:21.881547+00:00",[91,96,101,106,111,116,121,126,131,136],{"id":92,"slug":93,"title":94,"created_at":95},"de769291-4574-4c46-a76d-772bd99e6ec9","googles-biggest-gemini-launches-in-2026-zh","Google 2026 最大 Gemini 盤點","2026-03-26T07:26:39.21072+00:00",{"id":97,"slug":98,"title":99,"created_at":100},"855cd52f-6fab-46cc-a7c1-42195e8a0de4","surepath-real-time-mcp-policy-controls-zh","SurePath 推出即時 MCP 政策控管","2026-03-26T07:57:40.77233+00:00",{"id":102,"slug":103,"title":104,"created_at":105},"9b19ab54-edef-4dbd-9ce4-a51e4bae4ebb","mcp-in-2026-the-ai-tool-layer-teams-use-zh","2026 年 MCP：團隊真的在用的 AI 工具層","2026-03-26T08:01:46.589694+00:00",{"id":107,"slug":108,"title":109,"created_at":110},"af9c46c3-7a28-410b-9f04-32b3de30a68c","prompting-in-2026-what-actually-works-zh","2026 提示工程，真正有用的是什麼","2026-03-26T08:08:12.453028+00:00",{"id":112,"slug":113,"title":114,"created_at":115},"05553086-6ed0-4758-81fd-6cab24b575e0","garry-tan-open-sources-claude-code-toolkit-zh","Garry Tan 開源 Claude Code 工具包","2026-03-26T08:26:20.068737+00:00",{"id":117,"slug":118,"title":119,"created_at":120},"042a73a2-18a2-433d-9e8f-9802b9559aac","github-ai-projects-to-watch-in-2026-zh","2026 必看 20 個 GitHub AI 專案","2026-03-26T08:28:09.619964+00:00",{"id":122,"slug":123,"title":124,"created_at":125},"a5f94120-ac0d-4483-9a8b-63590071ac6a","claude-code-vs-cursor-2026-zh","Claude Code 與 Cursor 深度對比：202…","2026-03-26T13:27:14.279193+00:00",{"id":127,"slug":128,"title":129,"created_at":130},"0975afa1-e0c7-4130-a20d-d890eaed995e","practical-github-guide-learning-ml-2026-zh","2026 機器學習入門 GitHub 實用指南","2026-03-27T01:16:49.712576+00:00",{"id":132,"slug":133,"title":134,"created_at":135},"bfdb467a-290f-4a80-b3a9-6f081afb6dff","aiml-2026-student-ai-ml-lab-repo-review-zh","AIML-2026：像課綱的學生實驗 Repo","2026-03-27T01:21:51.467798+00:00",{"id":137,"slug":138,"title":139,"created_at":140},"80cabc3e-09fc-4ff5-8f07-b8d68f5ae545","ai-trending-github-repos-and-research-feeds-zh","AI Trending：把 AI 資源收成一張表","2026-03-27T01:31:35.262183+00:00"]