Microsoft.Graph.Authentication is very large. How can we slim it down?
維護者通常 1 天內回覆
@ramsessanchez 已經在處理了。
開始於 2025年11月10日。
評估
這個 Issue 還沒有評估資料。
描述
Is your feature request related to a problem? Please describe the problem.
Follow-up of #3345.
All of Microsoft.Graph.* depends on Microsoft.Graph.Authentication, weighing in at a whopping 42.1 MB on-disk with version 2.28.
Serverless environments frequently limit customers' space to deploy dependencies in. The PowerShell runtime+MS.Graph.Authentication is over 200MB of dependencies without having written any code, which poses several challenges for hosting/deployment.
There's been a lot of good discourse about the size of this SDK over the years (#692 #2475 #2516) - these have focused on either:
- The total size of the SDK, across all modules
- (MSGraph isn't that much bigger than
AWS.ToolsorAz)
- (MSGraph isn't that much bigger than
- Individual modules hitting landmark size limits
- (Not everyone uses those specific modules)
Even outside those two scenarios, module size is still a problem.
Comparing 3 separate auto-generated families of PowerShell modules:
| Metric | Az |
AWS.Tools |
Microsoft.Graph |
|---|---|---|---|
| Total Module Count | 93 | 410 | 47 |
| Total Installed Size1 | 514 | 737 | 1060 |
| Median Module Size | 3.1 | 1.2 | 9.5 |
| Core2 Module Size | 28.6 | 16.7 | 42.1 |
| Core : Total Module Size | 5.6% | 2.3% | 3.9% |
| "Average" Install3 Size | 31.7 | 17.9 | 51.6 |
1: All sizes in MB
2: Az.Accounts, AWS.Tools.Common, Microsoft.Graph.Authentication
3: Core module, plus single non-core (represented by median)
One "average" MSGraph module (with dependencies) is ~30% the size of the entire PowerShell Runtime on Linux. (~172MB)
Currently, Microsoft.Graph.Authentication has ~25MB of JSON used for Find-MgGraphCommand and Find-MgGraphPermission. These cmdlets appear to be for human-focused discovery/investigation and not required for authentication/API calls. Moving these off the critical dependency-path could save a ton of space for non-interactive scenarios.
Describe the solution you'd like.
TL;DR: Reduce .Authentication footprint to strict requirements for Invoke-MgGraphRequest or the other Microsoft.Graph.* modules. Move Find-MgGraph* to a separate module for interactive discovery.
Some options (neither exhaustive nor mutually exclusive) for making this work could look like:
- Move
Find-MgGraphCommandandFind-MgGraphPermissionto a separate module and add the module as a dependency ofMicrosoft.Graph. - Replace
Find-MgGraphCommandandFind-MgGraphPermissioninMicrosoft.Graph.Authenticationwith stubs to call corresponding commands inMicrosoft.Graph.CommandDiscovery, without setting explicit dependency relationships. - De-couple
Find-MgGraph*entirely from the rest of.Authentication.- Split
Microsoft.Graph.Authenticationinto two modules (.Commonand.CommandDiscovery, perhaps) - Update
.Authenticationdepend on.Commonand.CommandDiscovery - Update other child modules to depend on
.Common
- Split
Additional context?
No response
- 主要語言
- C#
- 星號
- 901
- 分支
- 232
- 平均合併
- 1 天 5 小時
- 30 天內合併 PR
- 20
環境準備
- 提供 Dockerfile 或 Docker Compose 檔案
- 有 Pull Request 範本
- 閱讀貢獻指南
從這裡開始
- 先讀完整個 Issue,再讀專案的貢獻指南。
- 在 Issue 下留言說明你要接手 —— 這能避免兩個人做同樣的事。
- Fork 儲存庫,在一個分支上完成修改。
- 送出 Pull Request,並在描述裡引用這個 Issue 編號。
microsoftgraph/msgraph-sdk-powershell 的其他 Issue
-
難度 2/5 1-3 小時 新手友好度 84/100
microsoftgraph/msgraph-sdk-powershell#3752 ·
維護者通常 1 天內回覆
-
status:waiting-for-triage type:bug
難度 2/5 1-3 小時 新手友好度 78/100
microsoftgraph/msgraph-sdk-powershell#3751 ·
維護者通常 1 天內回覆
-
status:waiting-for-triage type:bug
難度 3/5 1-2 天 新手友好度 72/100
microsoftgraph/msgraph-sdk-powershell#3772 ·
維護者通常 1 天內回覆
-
難度 4/5 3-5 天 新手友好度 48/100
microsoftgraph/msgraph-sdk-powershell#3749 ·
維護者通常 1 天內回覆
-
status:waiting-for-triage type:bug
難度 4/5 3-5 天 新手友好度 45/100
microsoftgraph/msgraph-sdk-powershell#3741 ·
維護者通常 1 天內回覆
查看 microsoftgraph/msgraph-sdk-powershell 的全部 Issue
相似的 Issue
-
go 🏃 testing 🧪
難度 2/5 1-3 小時 新手友好度 78/100
valkey-io/valkey-glide#7239 ·
維護者通常 2 天內回覆
-
難度 2/5 1-3 小時 新手友好度 72/100
SubtitleEdit/subtitleedit#15462 ·
維護者通常 1 天內回覆
-
:watch: Not Triaged
難度 2/5 1-3 小時 新手友好度 72/100
維護者通常 1 天內回覆
-
comp:instrumentation.aspnetcore
難度 2/5 1-3 小時 新手友好度 72/100
open-telemetry/opentelemetry-dotnet-contrib#5427 ·
維護者通常 1 天內回覆
-
enhancement needs-triage pkg:OpenTelemetry
難度 2/5 1-3 小時 新手友好度 68/100
open-telemetry/opentelemetry-dotnet#7851 · 4 則留言 ·
維護者通常 1 天內回覆