The Wire · Showcase
MSBuild's telemetry failure can kill your build
By RepoJournal · Filed · About .NET
A NullReferenceException in MSBuild's telemetry disposal is silently taking down .NET Framework builds.
MSBuild 18.8.2 on .NET Framework is failing builds with MSB1025 when a NullReferenceException escapes VsTelemetryInitializer.Dispose(), because the telemetry manager's filtered catch wasn't matching the NRE [1]. The fix makes telemetry init and disposal best-effort so it can never fail a build [2]. Meanwhile, the Android toolchain is moving fast: API-37.1 binding is in for Android 17 QPR2 [3], and a lock-free JNI member lookup optimization swaps monitor locks for ConcurrentDictionary, cutting overhead on every generated binding invocation [4]. Over in MAUI, the release-readiness skill gets deterministic, copy-ready Preview and servicing handoff generation [5]. And MSBuild is also promoting MSBuildTask0006-MSBuildTask0008 from Info to Warning, so they'll show up in CLI builds and Visual Studio without extra config [6]. The Android team also stabilized define constant ordering to keep compile dependency hashes consistent [7]. With 24 commits and 25 PRs across the stack, the telemetry fix is the one to take first.
One email a day. Unsubscribe in one click.
Keep up with .NET in about 3 minutes a day: what actually shipped — the commits, pull requests, releases, and security advisories that matter.
One email a day. Unsubscribe in one click. Read a past issue →
Action items
- → Apply the MSBuild telemetry fix to 18.8.2 to prevent MSB1025 failures dotnet/msbuild [immediate]
- → Monitor the JNI lock-free lookup for performance gains in your Android bindings dotnet/android [plan]
- → Review the new MSBuildTask0006-0008 warnings for impact on your build output dotnet/msbuild [plan]
- → Watch for the new release handoff generation to simplify your MAUI release process dotnet/maui [monitor]
References
- [1] Make telemetry initialization and disposal best-effort so it can never fail a build ↗ dotnet/msbuild
- [2] Make telemetry initialization and disposal best-effort so it can never fail a build (#14554) dotnet/msbuild
- [3] [Mono.Android] Bind API-37.1 ↗ dotnet/android
- [4] [Java.Interop] Avoid locks for cached JNI member lookups ↗ dotnet/android
- [5] Add public-safe release handoff generation ↗ dotnet/maui
- [6] Promote typed parameter diagnostics to warnings ↗ dotnet/msbuild
- [7] [build] Stabilize Android define constant ordering ↗ dotnet/android