From ba94a960ef7d845c543c0ab30f6521afbeda5c13 Mon Sep 17 00:00:00 2001 From: Brant Burnett Date: Fri, 13 Dec 2024 12:30:43 -0500 Subject: [PATCH] Always explicitly reference System.Text.Json dependencies Motivation ---------- The source generated JSON serializer is sometimes incorrectly generated with the bug https://github.com/dotnet/runtime/issues/96404 still present. We believe this is because in some environments Yardarm is still using System.Text.Json 8.0.0 to perform source generation. Modifications ------------- Always explicitly reference the latest System.Text.Json version, rather than only for targets < .NET 8. Fixes #277 --- .../JsonDependencyGenerator.cs | 37 +++++++++---------- 1 file changed, 17 insertions(+), 20 deletions(-) diff --git a/src/main/Yardarm.SystemTextJson/JsonDependencyGenerator.cs b/src/main/Yardarm.SystemTextJson/JsonDependencyGenerator.cs index 9920d55..2d2ebe7 100644 --- a/src/main/Yardarm.SystemTextJson/JsonDependencyGenerator.cs +++ b/src/main/Yardarm.SystemTextJson/JsonDependencyGenerator.cs @@ -11,30 +11,27 @@ public class JsonDependencyGenerator : IDependencyGenerator { public IEnumerable GetDependencies(NuGetFramework targetFramework) { - if (targetFramework.Framework != NuGetFrameworkConstants.NetCoreApp || targetFramework.Version < new Version(8, 0)) - { - // Only add System.Text.Json if we're not already targeting .NET 8 + // Add System.Text.Json even if we're targeting .NET 8 to ensure we get bug fixes, especially for the source generator - yield return new LibraryDependency + yield return new LibraryDependency + { + LibraryRange = new LibraryRange { - LibraryRange = new LibraryRange - { - Name = "System.Text.Json", - TypeConstraint = LibraryDependencyTarget.Package, - VersionRange = VersionRange.Parse("8.0.5") - } - }; + Name = "System.Text.Json", + TypeConstraint = LibraryDependencyTarget.Package, + VersionRange = VersionRange.Parse("8.0.5") + } + }; - yield return new LibraryDependency + yield return new LibraryDependency + { + LibraryRange = new LibraryRange { - LibraryRange = new LibraryRange - { - Name = "System.Net.Http.Json", - TypeConstraint = LibraryDependencyTarget.Package, - VersionRange = VersionRange.Parse("8.0.1") - } - }; - } + Name = "System.Net.Http.Json", + TypeConstraint = LibraryDependencyTarget.Package, + VersionRange = VersionRange.Parse("8.0.1") + } + }; } } }