From 7e851eec6b7df46b80225e08789491c0f4564dfc Mon Sep 17 00:00:00 2001 From: Ladi Prosek Date: Mon, 18 Mar 2024 10:05:02 +0100 Subject: [PATCH 1/2] Use System.Text.Json in Netfx build of MSBuildSdkResolver --- ...Microsoft.DotNet.MSBuildSdkResolver.csproj | 8 +++-- .../WorkloadManifestReader.SystemTextJson.cs | 29 +++++++++++-------- 2 files changed, 23 insertions(+), 14 deletions(-) diff --git a/src/Resolvers/Microsoft.DotNet.MSBuildSdkResolver/Microsoft.DotNet.MSBuildSdkResolver.csproj b/src/Resolvers/Microsoft.DotNet.MSBuildSdkResolver/Microsoft.DotNet.MSBuildSdkResolver.csproj index e5e8ff7f3bc6..5ac025f91c10 100644 --- a/src/Resolvers/Microsoft.DotNet.MSBuildSdkResolver/Microsoft.DotNet.MSBuildSdkResolver.csproj +++ b/src/Resolvers/Microsoft.DotNet.MSBuildSdkResolver/Microsoft.DotNet.MSBuildSdkResolver.csproj @@ -13,7 +13,7 @@ Enable - True + True $(DefineConstants);USE_SYSTEM_TEXT_JSON @@ -139,13 +139,17 @@ - + + + + + diff --git a/src/Resolvers/Microsoft.NET.Sdk.WorkloadManifestReader/WorkloadManifestReader.SystemTextJson.cs b/src/Resolvers/Microsoft.NET.Sdk.WorkloadManifestReader/WorkloadManifestReader.SystemTextJson.cs index e845b7d11964..a122d085e6e8 100644 --- a/src/Resolvers/Microsoft.NET.Sdk.WorkloadManifestReader/WorkloadManifestReader.SystemTextJson.cs +++ b/src/Resolvers/Microsoft.NET.Sdk.WorkloadManifestReader/WorkloadManifestReader.SystemTextJson.cs @@ -3,10 +3,7 @@ #if USE_SYSTEM_TEXT_JSON -using System; using System.Buffers; -using System.Collections.Generic; -using System.IO; using System.Text.Json; namespace Microsoft.NET.Sdk.WorkloadManifestReader @@ -47,7 +44,7 @@ internal ref struct Utf8JsonStreamReader Utf8JsonReader reader; readonly Stream stream; - IMemoryOwner buffer; + byte[]? buffer; Span span; @@ -55,9 +52,9 @@ public Utf8JsonStreamReader(Stream stream, JsonReaderOptions readerOptions) { this.stream = stream; - buffer = MemoryPool.Shared.Rent(segmentSize); - var readCount = stream.Read(buffer.Memory.Span); - span = buffer.Memory.Slice(0, readCount).Span; + buffer = ArrayPool.Shared.Rent(segmentSize); + var readCount = stream.Read(buffer, 0, buffer.Length); + span = buffer.AsSpan().Slice(0, readCount); if (span.StartsWith(utf8Bom)) { @@ -73,6 +70,11 @@ public bool Read() { if (reader.IsFinalBlock) { + if (buffer != null) + { + ArrayPool.Shared.Return(buffer); + buffer = null; + } return false; } @@ -86,18 +88,21 @@ public bool Read() int remaining = (int)(span.Length - reader.BytesConsumed); - var newBuffer = MemoryPool.Shared.Rent(newSegmentSize); + var newBuffer = ArrayPool.Shared.Rent(newSegmentSize); if (remaining > 0) { - span.Slice((int)reader.BytesConsumed).CopyTo(newBuffer.Memory.Span); + span.Slice((int)reader.BytesConsumed).CopyTo(newBuffer); } - var readCount = stream.Read(newBuffer.Memory.Span.Slice(remaining)); + var readCount = stream.Read(newBuffer, remaining, newBuffer.Length - remaining); - buffer.Dispose(); + if (buffer != null) + { + ArrayPool.Shared.Return(buffer); + } buffer = newBuffer; - span = newBuffer.Memory.Slice(0, remaining + readCount).Span; + span = newBuffer.AsSpan().Slice(0, remaining + readCount); reader = new Utf8JsonReader(span, stream.Position >= stream.Length, reader.CurrentState); } From 5b52adb968152552ec762bf20ae84496dd7db602 Mon Sep 17 00:00:00 2001 From: Ladi Prosek Date: Wed, 20 Mar 2024 13:57:23 +0100 Subject: [PATCH 2/2] Override System.Text.Json version --- .../Microsoft.DotNet.MSBuildSdkResolver.csproj | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/src/Resolvers/Microsoft.DotNet.MSBuildSdkResolver/Microsoft.DotNet.MSBuildSdkResolver.csproj b/src/Resolvers/Microsoft.DotNet.MSBuildSdkResolver/Microsoft.DotNet.MSBuildSdkResolver.csproj index 5ac025f91c10..43737989df88 100644 --- a/src/Resolvers/Microsoft.DotNet.MSBuildSdkResolver/Microsoft.DotNet.MSBuildSdkResolver.csproj +++ b/src/Resolvers/Microsoft.DotNet.MSBuildSdkResolver/Microsoft.DotNet.MSBuildSdkResolver.csproj @@ -16,6 +16,9 @@ True $(DefineConstants);USE_SYSTEM_TEXT_JSON + + 8.0.0 + true @@ -100,7 +103,8 @@ - + + @@ -139,8 +143,8 @@ - - + + @@ -149,7 +153,6 @@ -