NuGet August 2026 Updates - #3981
Conversation
|
Linux CI break analysis (run 31474547911) — 543/1154 ILSpy.Tests failures, Linux only. All failures share one root cause: SkiaSharp's managed assembly refused to load because the native Dependency chain:
Result on Linux: managed SkiaSharp 4.148.0 meets native 3.119.4 → the compatibility check throws in Resolution: reverted Note for a future retry of this upgrade: taking Svg.Skia 5.2.0+ requires either a matching direct |
963484b to
e75448b
Compare
Each test pumped the Avalonia dispatcher through a 900-iteration trackpad-scroll loop - cheap on a developer machine, but ~200 s per test on a 4-core hosted runner. Together they made ILSpy.Tests.dll the CI critical path (~30 min), costing about 7 minutes on the Windows Debug job and 2-3 minutes on Release. The remaining OpenFromProcessDialog structure and viewmodel tests keep covering the dialog. Assisted-by: Claude:claude-fable-5:Claude Code
12.0.0.14 pulls Svg.Skia 5.2.0, which moves to managed SkiaSharp 4.148.0 but ships no matching Linux native assets: the SkiaSharp meta package only carries the Win32/macOS natives, and Svg.Skia lists the HarfBuzz Linux natives explicitly while omitting SkiaSharp.NativeAssets.Linux. The only reference to the Linux natives is Avalonia.Skia's pin at 3.119.4, so on Linux the managed/native version check throws in SkiaApi..cctor and takes down every UI test. Staying on the SkiaSharp version Avalonia aligns with (3.119.4) until Avalonia itself moves to SkiaSharp 4.x. Assisted-by: Claude:claude-fable-5:Claude Code
e75448b to
7ad0819
Compare
The .NET Framework OS module list only contains images the loader maps via LoadLibrary: NGen native images and mixed-mode assemblies. IL-only assemblies are memory-mapped without a loader entry - and after a .NET Framework servicing update the runtime rejects stale native images and silently falls back to exactly that load path. In that state (any machine between Patch Tuesday and the ngen update pass) PowerShell's own assemblies disappear from the module list, so requiring System.Management.Automation as the test's witness fails even though the scanner works as designed. Assert GAC provenance of a listed module instead, which holds regardless of NGen state, and document the IL-only blind spot on the scanner itself. Assisted-by: Claude:claude-fable-5:Claude Code
Investigation notes:
|
.NET SDK 11.0.100-preview.7 turns the persistent MSBuild server on by default (dotnet/sdk#55231). With it on, only the first of the three dotnet pack invocations gets a working SBOM: sbom-tool's Spectre.Console backend caches the server's RedirectConsoleWriter, which is disposed when that build session ends, so the later packs in the reused server process fail their component-detection scan with ObjectDisposedException (three retries each, surfaced as CI warnings) and ship SBOMs with zero packages. Disabling the server for the pack step restores the single-shot MSBuild behavior the scans worked under through preview 6. Assisted-by: Claude:claude-fable-5:Claude Code
Analysis: new CI warnings on the Windows Release job (run 31524863511)Compared with the previous master build (run 31458222064), which had only the known WiX
These are emitted by the SBOM generation that Root causeThe workflow installs the SDK as floating The failure sequence, visible in the logged stack trace:
ImpactNot just log noise: the FixCommit b772a9f sets |
Includes fix for CI slowdown analysis cislowdown.md
NOTE: to be squash-merged.