From ab652c6894a8196bd952e1f180f64aefe5573774 Mon Sep 17 00:00:00 2001 From: Jonathan Peppers Date: Thu, 8 Jan 2026 08:38:54 -0600 Subject: [PATCH 1/2] [coreclr] fix string `runtimeconfig.json` values `prop.Value.GetRawText ()` returns a string value `foo` as `"foo"`. Let's instead switch on `JsonValueKind` and handle each type appropriately. The existing `AppContextTests` should verify this when we enable the `RuntimeConfig` category. --- .../Utilities/RuntimePropertiesParser.cs | 14 +++++++++++++- .../Mono.Android.NET-Tests.csproj | 2 +- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/src/Xamarin.Android.Build.Tasks/Utilities/RuntimePropertiesParser.cs b/src/Xamarin.Android.Build.Tasks/Utilities/RuntimePropertiesParser.cs index 023bc208192..bfb5019ca04 100644 --- a/src/Xamarin.Android.Build.Tasks/Utilities/RuntimePropertiesParser.cs +++ b/src/Xamarin.Android.Build.Tasks/Utilities/RuntimePropertiesParser.cs @@ -24,9 +24,21 @@ class RuntimePropertiesParser JsonElement properties = runtimeOptions.GetProperty ("configProperties"); var ret = new Dictionary (StringComparer.OrdinalIgnoreCase); foreach (JsonProperty prop in properties.EnumerateObject ()) { - ret[prop.Name] = prop.Value.GetRawText (); + string? value = GetJsonValueAsString (prop.Value); + if (value is not null) { + ret[prop.Name] = value; + } } return ret; } + + static string? GetJsonValueAsString (JsonElement element) => + element.ValueKind switch { + JsonValueKind.String => element.GetString (), + JsonValueKind.True => bool.TrueString, + JsonValueKind.False => bool.FalseString, + JsonValueKind.Number or JsonValueKind.Object or JsonValueKind.Array => element.GetRawText (), + _ => null, // Null or Undefined + }; } diff --git a/tests/Mono.Android-Tests/Mono.Android-Tests/Mono.Android.NET-Tests.csproj b/tests/Mono.Android-Tests/Mono.Android-Tests/Mono.Android.NET-Tests.csproj index 231534731be..51457b1d5b1 100644 --- a/tests/Mono.Android-Tests/Mono.Android-Tests/Mono.Android.NET-Tests.csproj +++ b/tests/Mono.Android-Tests/Mono.Android-Tests/Mono.Android.NET-Tests.csproj @@ -31,7 +31,7 @@ NetworkInterfaces excluded: https://github.com/dotnet/runtime/issues/75155 --> - $(ExcludeCategories):CoreCLRIgnore:NTLM:RuntimeConfig + $(ExcludeCategories):CoreCLRIgnore:NTLM $(ExcludeCategories):NativeAOTIgnore:SSL:NTLM:AndroidClientHandler:Export:NativeTypeMap From 7230b4a2bcc8e7528755e0d67823ccfa94ce63f7 Mon Sep 17 00:00:00 2001 From: Jonathan Peppers Date: Thu, 8 Jan 2026 10:50:51 -0600 Subject: [PATCH 2/2] casing! --- .../Utilities/RuntimePropertiesParser.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Xamarin.Android.Build.Tasks/Utilities/RuntimePropertiesParser.cs b/src/Xamarin.Android.Build.Tasks/Utilities/RuntimePropertiesParser.cs index bfb5019ca04..bf47af55265 100644 --- a/src/Xamarin.Android.Build.Tasks/Utilities/RuntimePropertiesParser.cs +++ b/src/Xamarin.Android.Build.Tasks/Utilities/RuntimePropertiesParser.cs @@ -36,8 +36,8 @@ class RuntimePropertiesParser static string? GetJsonValueAsString (JsonElement element) => element.ValueKind switch { JsonValueKind.String => element.GetString (), - JsonValueKind.True => bool.TrueString, - JsonValueKind.False => bool.FalseString, + JsonValueKind.True => "true", + JsonValueKind.False => "false", JsonValueKind.Number or JsonValueKind.Object or JsonValueKind.Array => element.GetRawText (), _ => null, // Null or Undefined };