Payload
The payload is the ordered list in lib/minimal-assembly-order.txt: 98
assemblies, each served in place from a read-only, memory-mapped store. Every
image ships as IL only; ReadyToRun images from the runtime pack are re-emitted
IL-only by the build. PowerShell is pinned at 7.7.0-preview.4 and .NET at
11.0.0-rc.1.26425.128.
How the payload is decided
- Upper bound: the static AssemblyRef closure over the SHA-512-pinned packages, rooted at System.Management.Automation and the Utility, Management and Security command assemblies.
- Lower bound: the assemblies CoreCLR asks the host for on a device run,
logged by
-TraceAssemblyProbe. - Shipped: what the declared command set and its startup need, each entry with a reason. Facade forwards are resolved to the implementing assembly before deciding.
Static reading cannot settle JIT-time loads: RyuJIT resolves the type tokens of
a method it compiles, which can load an assembly on a branch that never runs.
The device trace decides those cases. An example: SMA's adapter selection
tests obj is CimInstance, DataRowView and DataRow
(MshObject.cs:439-449), so those assemblies load the first time SMA wraps an
object, although no object on the device is ever one of them.
Shipped assemblies
Store KB is an estimate of the IL-only image (metadata, IL bodies and resources), within 2% of measured store sizes where those exist. "Leaves at" names the step of the implementation plan that removes the assembly; an assembly ships until that step passes on device.
| Assembly | Store KB | Referenced by | Leaves at |
|---|---|---|---|
Dev.MansfieldPlumbing.Pwsh |
Emitted by setup.ps1: the managed host |
||
Markdig.Signed |
482 | MarkdownRender | 2.8 |
Microsoft.ApplicationInsights |
407 | SMA | 2.4 |
Microsoft.CSharp |
290 | Utility, SMA | 2.7 |
Microsoft.Management.Infrastructure |
209 | Management, SMA | 2.3 |
Microsoft.PowerShell.Commands.Management |
824 | Root | |
Microsoft.PowerShell.Commands.Utility |
1,378 | Root | |
Microsoft.PowerShell.MarkdownRender |
27 | Utility (Markdown cmdlets; a field of ConvertFromMarkdownCommand needs it at import) |
2.8 |
Microsoft.PowerShell.Security |
184 | Root | |
Microsoft.Win32.Primitives |
2 | Type forwards only | |
Microsoft.Win32.Registry |
19 | Utility, SMA | |
netstandard |
86 | Type forwards only | 2.8 |
Newtonsoft.Json |
687 | Utility, SMA | 2.6 |
System |
36 | Type forwards only | 2.6 |
System.Collections |
98 | Utility, SMA, Markdig.Signed, Microsoft.ApplicationInsights, Newtonsoft.Json +12 | |
System.Collections.Concurrent |
49 | Utility, SMA, Net.Http, Text.Json, Threading.Tasks.Parallel | |
System.Collections.Immutable |
234 | Utility, Diagnostics.StackTrace, Reflection.Emit, Reflection.Metadata | |
System.Collections.NonGeneric |
34 | Management, Utility, SMA, ComponentModel.Primitives, ComponentModel.TypeConverter, Data.Common +10 | |
System.Collections.Specialized |
34 | Management, Utility, SMA, Microsoft.ApplicationInsights, ComponentModel.TypeConverter, Diagnostics.Process +8 | |
System.ComponentModel |
3 | ComponentModel.EventBasedAsync, ComponentModel.Primitives, ComponentModel.TypeConverter +1 | |
System.ComponentModel.EventBasedAsync |
13 | SMA, Net.Mail, Net.Ping, Net.WebClient | |
System.ComponentModel.Primitives |
28 | Management, SMA, Newtonsoft.Json, Collections.Specialized, ComponentModel.EventBasedAsync +7 | |
System.ComponentModel.TypeConverter |
299 | SMA, Newtonsoft.Json, Data.Common | |
System.Console |
37 | Utility, SMA, Diagnostics.Process, Diagnostics.TextWriterTraceListener | |
System.Data.Common |
980 | SMA | 2.3 |
System.Diagnostics.DiagnosticSource |
190 | Microsoft.ApplicationInsights, Net.Http, Net.NameResolution +3 | |
System.Diagnostics.FileVersionInfo |
15 | Management, SMA, Diagnostics.Process | |
System.Diagnostics.Process |
161 | Management, Utility, SMA, Microsoft.ApplicationInsights, Diagnostics.TextWriterTraceListener, Net.Ping | |
System.Diagnostics.StackTrace |
12 | Type forwards only | |
System.Diagnostics.TextWriterTraceListener |
18 | Utility | |
System.Diagnostics.TraceSource |
44 | Utility, SMA, Microsoft.ApplicationInsights, Newtonsoft.Json, Diagnostics.TextWriterTraceListener +1 | |
System.Diagnostics.Tracing |
3 | Type forwards only | |
System.Drawing.Primitives |
49 | Utility, ComponentModel.TypeConverter, Data.Common | |
System.Formats.Asn1 |
91 | Net.Security, Security.Cryptography | |
System.IO.Compression |
245 | SMA, Microsoft.ApplicationInsights, IO.Compression.Brotli, IO.Compression.ZipFile +2 | |
System.IO.Compression.Brotli |
27 | Net.Http | |
System.IO.Compression.ZipFile |
52 | SMA | |
System.IO.FileSystem.AccessControl |
18 | Security, SMA | |
System.IO.FileSystem.DriveInfo |
34 | SMA | |
System.IO.FileSystem.Watcher |
50 | SMA | |
System.IO.MemoryMappedFiles |
35 | Reflection.Metadata, Security.Cryptography | |
System.IO.Pipelines |
69 | Text.Json | 2.5 |
System.IO.Pipes |
54 | SMA, Diagnostics.Process | |
System.Linq |
195 | Management, Utility, SMA, Microsoft.CSharp, Microsoft.Management.Infrastructure, Collections.Immutable +6 | |
System.Linq.Expressions |
551 | Utility, SMA, Microsoft.CSharp, Data.Common, Private.Xml | |
System.Management.Automation |
13,707 | Root | |
System.Memory |
45 | IO.Pipelines, Net.Mail, Net.Security +1 | |
System.Net.Http |
672 | Utility, SMA, Microsoft.ApplicationInsights, Net.Requests, Private.Xml | |
System.Net.Mail |
189 | Management, Utility, SMA | 2.9 (decision) |
System.Net.NameResolution |
101 | Management, Microsoft.ApplicationInsights, Net.Http, Net.Ping +3 | |
System.Net.NetworkInformation |
52 | Management, SMA, Microsoft.ApplicationInsights, Net.Http, Net.Mail | |
System.Net.Ping |
42 | Management | 2.9 (decision) |
System.Net.Primitives |
95 | Management, Utility, SMA, Microsoft.ApplicationInsights, IO.Pipes, Net.Http +11 | |
System.Net.Quic |
155 | Net.Http | |
System.Net.Requests |
145 | Microsoft.ApplicationInsights, Net.Mail, Net.WebClient | 2.9 (decision) |
System.Net.Security |
242 | Utility, ComponentModel.TypeConverter, Net.Http, Net.Mail +2 | |
System.Net.Sockets |
221 | Management, Utility, SMA, IO.Pipes, Net.Http, Net.Mail +4 | |
System.Net.WebHeaderCollection |
19 | Microsoft.ApplicationInsights, Net.Requests, Net.WebClient | 2.9 (decision) |
System.Numerics.Vectors |
3 | Type forwards only | |
System.ObjectModel |
27 | Management, SMA, Newtonsoft.Json, ComponentModel.Primitives, ComponentModel.TypeConverter +5 | |
System.Private.CoreLib |
5,554 | Root | |
System.Private.Uri |
87 | Management, Utility, SMA, Markdig.Signed, Microsoft.ApplicationInsights, Microsoft.Management.Infrastructure +13 | |
System.Private.Xml |
2,965 | Management, Utility, SMA, Data.Common, Diagnostics.TextWriterTraceListener, Private.Xml.Linq | |
System.Private.Xml.Linq |
138 | Microsoft.ApplicationInsights, Newtonsoft.Json, ComponentModel.TypeConverter | |
System.Reflection.Emit |
119 | Type forwards only | |
System.Reflection.Emit.ILGeneration |
2 | Type forwards only | |
System.Reflection.Emit.Lightweight |
2 | Type forwards only | |
System.Reflection.Metadata |
478 | Diagnostics.FileVersionInfo, Diagnostics.StackTrace, Reflection.Emit | |
System.Reflection.Primitives |
2 | Type forwards only | |
System.Resources.Writer |
13 | ComponentModel.TypeConverter | |
System.Runtime |
32 | Type forwards only | |
System.Runtime.InteropServices |
50 | Type forwards only | |
System.Runtime.Intrinsics |
5 | Type forwards only | |
System.Runtime.Loader |
2 | Type forwards only | |
System.Runtime.Numerics |
168 | Utility, SMA, Data.Common, Formats.Asn1, Security.Cryptography | |
System.Runtime.Serialization.Formatters |
51 | ComponentModel.TypeConverter, Data.Common | |
System.Runtime.Serialization.Primitives |
10 | SMA | |
System.Security.AccessControl |
43 | Management, Security, SMA, Microsoft.Win32.Registry, IO.FileSystem.AccessControl | |
System.Security.Claims |
40 | Management, SMA, Net.Security, Security.Principal.Windows | |
System.Security.Cryptography |
869 | Management, Utility, Security, SMA, IO.Compression, Net.Http, Net.Mail +6 | |
System.Security.Cryptography.Pkcs |
10 | Type forwards only | |
System.Security.Principal.Windows |
24 | Management, Security, SMA, Microsoft.Win32.Registry, IO.FileSystem.AccessControl, Security.AccessControl | |
System.Text.Encoding.CodePages |
699 | SMA | 2.9 (decision) |
System.Text.Encoding.Extensions |
2 | Type forwards only | |
System.Text.Encodings.Web |
43 | Text.Json | 2.5 |
System.Text.Json |
705 | Utility | 2.5 |
System.Text.RegularExpressions |
331 | Utility, SMA, Microsoft.ApplicationInsights, Newtonsoft.Json, ComponentModel.TypeConverter +3 | |
System.Threading |
31 | Type forwards only | |
System.Threading.Channels |
52 | Diagnostics.Process, IO.FileSystem.Watcher, Net.Http +1 | |
System.Threading.Tasks.Parallel |
47 | SMA | |
System.Threading.Thread |
2 | Type forwards only | |
System.Threading.ThreadPool |
2 | Type forwards only | |
System.Transactions.Local |
161 | Data.Common | 2.3 |
System.Xml.Linq |
2 | Type forwards only | 2.6 |
System.Xml.ReaderWriter |
8 | Type forwards only | |
System.Xml.XDocument |
2 | Type forwards only | |
System.Xml.XmlSerializer |
4 | Type forwards only | |
System.Xml.XPath |
2 | Type forwards only |
Excluded
| Assemblies | Reason |
|---|---|
Microsoft.CodeAnalysis, Microsoft.CodeAnalysis.CSharp |
Roslyn serves Add-Type -TypeDefinition and -MemberDefinition. Pwsh emits IL and never compiles C#. |
JsonSchema.Net, JsonPointer.Net, Json.More, Humanizer |
Test-Json -Schema only. |
System.Drawing.Common, System.Private.Windows.Core, System.Private.Windows.GdiPlus, Microsoft.Win32.SystemEvents |
GDI+; [SupportedOSPlatform("windows")]. |
System.ServiceProcess.ServiceController |
Get-Service and related cmdlets; Windows only. |
System.Net.WebClient, System.Configuration.ConfigurationManager, System.CodeDom, System.Diagnostics.EventLog, System.Security.Cryptography.ProtectedData, System.Drawing |
No shipped image references them, directly or through a forwarder. Removed at step 2.1; a device trace requested none of them. |
Verified load behavior
Traced in PowerShell at commit 1481b98f0079f979f658e49a7281024cc754049b
(the shipped SMA) unless noted. The Unix build of SMA ships, so code under
#if !UNIX is absent.
| Assembly | Finding | Source |
|---|---|---|
| Newtonsoft.Json | Reached on every engine start: the ExperimentalFeature type initializer calls PowerShellConfig.Instance, whose constructor creates a Newtonsoft JsonSerializer. |
ExperimentalFeature.cs:136, PSConfiguration.cs:99 |
| Microsoft.Management.Infrastructure | [ciminstance] is a built-in accelerator with no platform guard, and adapter selection tests CimInstance. The package's own assembly is reference-only; the Unix implementation comes from Microsoft.Management.Infrastructure.Runtime.Unix and references netstandard. |
TypeResolver.cs, MshObject.cs:439 |
| System.Net.Mail | [mailaddress] is a built-in accelerator and CliXml rehydration constructs MailAddress. |
TypeResolver.cs:806, serialization.cs:6693, :7315 |
| Microsoft.ApplicationInsights | With POWERSHELL_TELEMETRY_OPTOUT=1 set before SMA initializes, the telemetry type returns before creating a client; a device run confirmed CanSendTelemetry=False and no client. |
Telemetry.cs:178-207 |
| Microsoft.PowerShell.MarkdownRender | Import-Module -Assembly enumerates ExportedTypes, which loads every public type; ConvertFromMarkdownCommand._conversionType is a MarkdownRender enum, so the import needs the assembly for that class's layout. |
InitialSessionState.cs:5567 |
| System.Text.Encoding.CodePages | Registered once at engine start. | AutomationEngine.cs:21 |
| System.Management, System.DirectoryServices | The wmi, wmiclass, wmisearcher, adsi and adsisearcher accelerators are inside #if !UNIX; the Unix build never references them. |
TypeResolver.cs:808-814 (v7.7.0-preview.5) |