iT邦幫忙

2025 iThome 鐵人賽

DAY 9
0

工作負載 (Workloads)

Workload 允許非 BCL 核心組件(如 Android / iOS / WebAssembly / MAUI)以宣告式清單 (manifest) 提供。流程:

  1. dotnet workload search:列出版 manifest 資訊
  2. dotnet workload install wasm-tools:下載對應 pack (nuget nupkg)
  3. 更新本機 metadata/workloads/ 註冊
  4. Build 時 SdkResolver 整合 workload packs(targets / runtime packs)

關鍵碼:src/WorkloadManifestReader/src/Cli/dotnet/commands/dotnet-workload-*

AOT / Trim / Linking 整合

功能 入口屬性 主要功能 說明
Trim PublishTrimmed=true ILLink 移除未使用 IL,需保留反射根(DynamicDependency / rd.xml)
Native AOT PublishAot=true crossgen2 + runtime pack 產生原生可執行,減少啟動與記憶體
ReadyToRun PublishReadyToRun=true crossgen2 R2R 預先編譯常用方法 IL->Native
PGO TieredPGO / DynamicPgo CLR JIT / profile data 10 版起更廣泛預設啟用(視平台)

整合節點:Targets 準備參數 -> Task 呼叫工具 -> 更新 deps 清單與最終輸出。

常用環境變數

變數 作用
DOTNET_CLI_UI_LANGUAGE 強制 CLI 語系
DOTNET_CLI_TELEMETRY_OPTOUT 關閉遙測
DOTNET_MSBUILD_SDK_RESOLVER_SDKS_DIR 覆寫 SDK 搜尋路徑
DOTNET_SKIP_FIRST_TIME_EXPERIENCE 跳過初次使用快取/歡迎行為
DOTNET_NOLOGO 隱藏歡迎標頭
DOTNET_ROLL_FORWARD SDK / Runtime roll-forward 策略
DOTNET_CLI_DISABLE_FILE_BASED_APP_ARTIFACTS_AUTOMATIC_CLEANUP 停用單檔模式自動清理
NUGET_PACKAGES NuGet 全域快取位置

###流程

  1. src/Cli/dotnet/Program.cs 進入,看如何組裝命令與解析參數。
  2. RunCommand / BuildCommand -> 學會如何組裝 MSBuild Invocation。
  3. 跳到 src/Tasks/ 看一個具體 Task(例如 GenerateDepsFile)。
  4. 開啟 artifacts/bin/Microsoft.NET.Build.Tasks/<Configuration>/ 觀察編譯輸出。
  5. 進階: WorkloadManifestReaderSdkResolver 判斷流程。
  6. 最後: Sdk.targets / Sdk.props 全貌,理解 Lifecycle。

上一篇
dotnet run 深入
系列文
新 .NET & Azure & IoT & AI 開源技術實戰手冊 (含深入官方程式碼講解) 9
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言