From 9639042d50012b019e49de279bc9df33ea796364 Mon Sep 17 00:00:00 2001 From: Rolf Bjarne Kvinge Date: Tue, 14 Apr 2026 12:13:49 +0200 Subject: [PATCH 01/47] [dotnet-linker] Create an xml descriptor instead of manual marking when applying the [Preserve] attribute. (#25109) Create an xml descriptor file instead of manually marking when applying the [Preserve] attribute. I first tried using [DynamicDependency] attributes, but it turns out [DynamicDependency] attributes can't accurately express/replace [Preserve] semantics, so I went with an xml descriptor file instead. The [DynamicDependency] attribute code is still present, as an opt-in, because it was already there used for NativeAOT (even though we're always using the xml descriptor logic now, even for NativeAOT). This makes it easier to move this code out of a custom linker step in the future. Also move the removal of any [Preserve] attributes to the RemoveAttributes step. Contributes towards https://github.com/dotnet/macios/issues/17693. --- dotnet/targets/Xamarin.Shared.Sdk.targets | 14 + .../expected/MacCatalyst-NativeAOT-size.txt | 6 +- .../expected/MacOSX-NativeAOT-size.txt | 6 +- .../expected/TVOS-NativeAOT-size.txt | 6 +- .../UnitTests/expected/iOS-NativeAOT-size.txt | 6 +- tools/common/DerivedLinkContext.cs | 2 + tools/dotnet-linker/AppBundleRewriter.cs | 16 +- .../ApplyPreserveAttributeBase.cs | 372 ++++++++---------- .../ApplyPreserveAttributeStep.cs | 307 +++++++++++++++ tools/dotnet-linker/CecilExtensions.cs | 45 +++ .../Steps/AssemblyModifierStep.cs | 14 +- .../Steps/RemoveAttributesStep.cs | 3 + .../Steps/SetBeforeFieldInitStep.cs | 6 - tools/dotnet-linker/dotnet-linker.csproj | 3 - tools/linker/ApplyPreserveAttribute.cs | 67 ---- 15 files changed, 565 insertions(+), 308 deletions(-) create mode 100644 tools/dotnet-linker/ApplyPreserveAttributeStep.cs delete mode 100644 tools/linker/ApplyPreserveAttribute.cs diff --git a/dotnet/targets/Xamarin.Shared.Sdk.targets b/dotnet/targets/Xamarin.Shared.Sdk.targets index 9bf01ee471d6..3d51bcbfefc2 100644 --- a/dotnet/targets/Xamarin.Shared.Sdk.targets +++ b/dotnet/targets/Xamarin.Shared.Sdk.targets @@ -551,6 +551,8 @@ <_UseDynamicDependenciesForSmartEnumPreservation Condition="'$(_UseDynamicDependenciesForSmartEnumPreservation)' == ''">$(_UseDynamicDependenciesInsteadOfMarking) <_UseDynamicDependenciesForBlockCodePreservation Condition="'$(_UseDynamicDependenciesForBlockCodePreservation)' == ''">$(_UseDynamicDependenciesInsteadOfMarking) <_UseDynamicDependenciesForGeneratedCodeOptimizations Condition="'$(_UseDynamicDependenciesForGeneratedCodeOptimizations)' == ''">$(_UseDynamicDependenciesInsteadOfMarking) + <_UseLinkDescriptionForApplyPreserveAttribute Condition="'$(_UseLinkDescriptionForApplyPreserveAttribute)' == '' And '$(_XamarinRuntime)' == 'NativeAOT'">true + <_UseLinkDescriptionForApplyPreserveAttribute Condition="'$(_UseLinkDescriptionForApplyPreserveAttribute)' == ''">$(_UseDynamicDependenciesInsteadOfMarking) @@ -756,6 +758,7 @@ <_TrimmerCustomSteps Include="$(_AdditionalTaskAssembly)" BeforeStep="MarkStep" Type="Xamarin.Linker.Steps.PreserveSmartEnumConversionsStep" Condition="'$(_AreAnyAssembliesTrimmed)' == 'true' And '$(_UseDynamicDependenciesForSmartEnumPreservation)' == 'true'" /> <_TrimmerCustomSteps Include="$(_AdditionalTaskAssembly)" BeforeStep="MarkStep" Type="Xamarin.Linker.Steps.PreserveBlockCodeStep" Condition="'$(_AreAnyAssembliesTrimmed)' == 'true' And '$(_UseDynamicDependenciesForBlockCodePreservation)' == 'true'" /> <_TrimmerCustomSteps Include="$(_AdditionalTaskAssembly)" BeforeStep="MarkStep" Type="Xamarin.Linker.Steps.OptimizeGeneratedCodeStep" Condition="'$(_AreAnyAssembliesTrimmed)' == 'true' And '$(_UseDynamicDependenciesForGeneratedCodeOptimizations)' == 'true'" /> + <_TrimmerCustomSteps Include="$(_AdditionalTaskAssembly)" BeforeStep="MarkStep" Type="Xamarin.Linker.Steps.ApplyPreserveAttributeStep" Condition="'$(_AreAnyAssembliesTrimmed)' == 'true' And '$(_UseLinkDescriptionForApplyPreserveAttribute)' == 'true'" /> <_TrimmerCustomSteps Include="$(_AdditionalTaskAssembly)" BeforeStep="MarkStep" Type="MonoTouch.Tuner.RegistrarRemovalTrackingStep" /> @@ -1084,6 +1087,7 @@ <_LinkerItemFiles Include="$(_LinkerItemsDirectory)/_AssembliesToAOT.items" /> <_LinkerItemFiles Include="$(_LinkerItemsDirectory)/_FrameworkToPublish.items" /> <_LinkerItemFiles Include="$(_LinkerItemsDirectory)/_DynamicLibraryToPublish.items" /> + <_LinkerItemFiles Include="$(_LinkerItemsDirectory)/TrimmerRootDescriptor.items" /> @@ -1108,7 +1112,17 @@ <_AssembliesToAOT Include="@(_AllLinkerItems)" Condition="'%(_AllLinkerItems.SourceFile)' == '_AssembliesToAOT.items'" /> <_FrameworkToPublish Include="@(_AllLinkerItems)" Condition="'%(_AllLinkerItems.SourceFile)' == '_FrameworkToPublish.items'" /> <_DynamicLibraryToPublish Include="@(_AllLinkerItems)" Condition="'%(_AllLinkerItems.SourceFile)' == '_DynamicLibraryToPublish.items'" /> + <_TrimmerRootDescriptorFromCustomLinkerSteps Include="@(_AllLinkerItems)" Condition="'%(_AllLinkerItems.SourceFile)' == 'TrimmerRootDescriptor.items'" /> + + + + + $(NoWarn);IL2008 + diff --git a/tests/dotnet/UnitTests/expected/MacCatalyst-NativeAOT-size.txt b/tests/dotnet/UnitTests/expected/MacCatalyst-NativeAOT-size.txt index 6f58a1daf7cb..093edf407164 100644 --- a/tests/dotnet/UnitTests/expected/MacCatalyst-NativeAOT-size.txt +++ b/tests/dotnet/UnitTests/expected/MacCatalyst-NativeAOT-size.txt @@ -1,7 +1,7 @@ -AppBundleSize: 2,450,516 bytes (2,393.1 KB = 2.3 MB) +AppBundleSize: 2,599,110 bytes (2,538.2 KB = 2.5 MB) # The following list of files and their sizes is just informational / for review, and isn't used in the test: Contents/_CodeSignature/CodeResources: 2,358 bytes (2.3 KB = 0.0 MB) -Contents/Info.plist: 1,094 bytes (1.1 KB = 0.0 MB) -Contents/MacOS/SizeTestApp: 2,445,248 bytes (2,387.9 KB = 2.3 MB) +Contents/Info.plist: 1,128 bytes (1.1 KB = 0.0 MB) +Contents/MacOS/SizeTestApp: 2,593,808 bytes (2,533.0 KB = 2.5 MB) Contents/MonoBundle/runtimeconfig.bin: 1,808 bytes (1.8 KB = 0.0 MB) Contents/PkgInfo: 8 bytes (0.0 KB = 0.0 MB) diff --git a/tests/dotnet/UnitTests/expected/MacOSX-NativeAOT-size.txt b/tests/dotnet/UnitTests/expected/MacOSX-NativeAOT-size.txt index 0c2f4851f900..ce539ee72a41 100644 --- a/tests/dotnet/UnitTests/expected/MacOSX-NativeAOT-size.txt +++ b/tests/dotnet/UnitTests/expected/MacOSX-NativeAOT-size.txt @@ -1,8 +1,8 @@ -AppBundleSize: 8,094,981 bytes (7,905.3 KB = 7.7 MB) +AppBundleSize: 8,440,007 bytes (8,242.2 KB = 8.0 MB) # The following list of files and their sizes is just informational / for review, and isn't used in the test: Contents/_CodeSignature/CodeResources: 3,489 bytes (3.4 KB = 0.0 MB) -Contents/Info.plist: 725 bytes (0.7 KB = 0.0 MB) -Contents/MacOS/SizeTestApp: 5,101,408 bytes (4,981.8 KB = 4.9 MB) +Contents/Info.plist: 759 bytes (0.7 KB = 0.0 MB) +Contents/MacOS/SizeTestApp: 5,446,400 bytes (5,318.8 KB = 5.2 MB) Contents/MonoBundle/libSystem.Globalization.Native.dylib: 252,176 bytes (246.3 KB = 0.2 MB) Contents/MonoBundle/libSystem.IO.Compression.Native.dylib: 2,005,440 bytes (1,958.4 KB = 1.9 MB) Contents/MonoBundle/libSystem.Native.dylib: 292,176 bytes (285.3 KB = 0.3 MB) diff --git a/tests/dotnet/UnitTests/expected/TVOS-NativeAOT-size.txt b/tests/dotnet/UnitTests/expected/TVOS-NativeAOT-size.txt index d931959dfc15..a88b9788bf10 100644 --- a/tests/dotnet/UnitTests/expected/TVOS-NativeAOT-size.txt +++ b/tests/dotnet/UnitTests/expected/TVOS-NativeAOT-size.txt @@ -1,8 +1,8 @@ -AppBundleSize: 2,450,669 bytes (2,393.2 KB = 2.3 MB) +AppBundleSize: 2,616,495 bytes (2,555.2 KB = 2.5 MB) # The following list of files and their sizes is just informational / for review, and isn't used in the test: _CodeSignature/CodeResources: 2,589 bytes (2.5 KB = 0.0 MB) archived-expanded-entitlements.xcent: 384 bytes (0.4 KB = 0.0 MB) -Info.plist: 1,112 bytes (1.1 KB = 0.0 MB) +Info.plist: 1,146 bytes (1.1 KB = 0.0 MB) PkgInfo: 8 bytes (0.0 KB = 0.0 MB) runtimeconfig.bin: 1,808 bytes (1.8 KB = 0.0 MB) -SizeTestApp: 2,444,768 bytes (2,387.5 KB = 2.3 MB) +SizeTestApp: 2,610,560 bytes (2,549.4 KB = 2.5 MB) diff --git a/tests/dotnet/UnitTests/expected/iOS-NativeAOT-size.txt b/tests/dotnet/UnitTests/expected/iOS-NativeAOT-size.txt index 2b692c1f301e..238ecfc35830 100644 --- a/tests/dotnet/UnitTests/expected/iOS-NativeAOT-size.txt +++ b/tests/dotnet/UnitTests/expected/iOS-NativeAOT-size.txt @@ -1,8 +1,8 @@ -AppBundleSize: 2,437,189 bytes (2,380.1 KB = 2.3 MB) +AppBundleSize: 2,602,055 bytes (2,541.1 KB = 2.5 MB) # The following list of files and their sizes is just informational / for review, and isn't used in the test: _CodeSignature/CodeResources: 2,589 bytes (2.5 KB = 0.0 MB) archived-expanded-entitlements.xcent: 384 bytes (0.4 KB = 0.0 MB) -Info.plist: 1,136 bytes (1.1 KB = 0.0 MB) +Info.plist: 1,170 bytes (1.1 KB = 0.0 MB) PkgInfo: 8 bytes (0.0 KB = 0.0 MB) runtimeconfig.bin: 1,808 bytes (1.8 KB = 0.0 MB) -SizeTestApp: 2,431,264 bytes (2,374.3 KB = 2.3 MB) +SizeTestApp: 2,596,096 bytes (2,535.2 KB = 2.5 MB) diff --git a/tools/common/DerivedLinkContext.cs b/tools/common/DerivedLinkContext.cs index 35a39f09f125..1cc8f9e0e187 100644 --- a/tools/common/DerivedLinkContext.cs +++ b/tools/common/DerivedLinkContext.cs @@ -48,6 +48,8 @@ public class DerivedLinkContext : LinkContext { // so we need a second dictionary Dictionary LinkedAwayTypeMap = new Dictionary (); + public bool DidRunApplyPreserveAttributeStep { get; set; } + public DerivedLinkContext (LinkerConfiguration configuration, Application app) #if !LEGACY_TOOLS : base (configuration) diff --git a/tools/dotnet-linker/AppBundleRewriter.cs b/tools/dotnet-linker/AppBundleRewriter.cs index e96fc999cfea..a3053029e351 100644 --- a/tools/dotnet-linker/AppBundleRewriter.cs +++ b/tools/dotnet-linker/AppBundleRewriter.cs @@ -2,6 +2,7 @@ using System.Collections.Generic; using System.Diagnostics.CodeAnalysis; using System.Linq; +using System.Text; using Mono.Cecil; using Mono.Cecil.Cil; @@ -1384,7 +1385,7 @@ public bool AddAttributeToStaticConstructor (TypeDefinition onType, CustomAttrib return modified; } - MethodDefinition GetOrCreateStaticConstructor (TypeDefinition type, out bool modified) + public MethodDefinition GetOrCreateStaticConstructor (TypeDefinition type, out bool modified) { modified = false; @@ -1408,7 +1409,7 @@ MethodDefinition GetOrCreateStaticConstructor (TypeDefinition type, out bool mod /// The provider to which the attribute should be added. /// The attribute to add. /// Whether the attribute was added or not. - bool AddAttributeOnlyOnce (ICustomAttributeProvider provider, CustomAttribute attribute) + public bool AddAttributeOnlyOnce (ICustomAttributeProvider provider, CustomAttribute attribute) { if (provider.HasCustomAttributes) { foreach (var ca in provider.CustomAttributes) { @@ -1460,7 +1461,18 @@ bool AddAttributeOnlyOnce (ICustomAttributeProvider provider, CustomAttribute at } } provider.CustomAttributes.Add (attribute); + if (DebugAttributes) + Console.WriteLine ($"Added {attribute.RenderAttribute ()} to {provider}"); return true; } + + static bool? debug_attributes; + static bool DebugAttributes { + get { + if (!debug_attributes.HasValue) + debug_attributes = !string.IsNullOrEmpty (Environment.GetEnvironmentVariable ("PRINT_ATTRIBUTES")); + return debug_attributes.Value; + } + } } } diff --git a/tools/dotnet-linker/ApplyPreserveAttributeBase.cs b/tools/dotnet-linker/ApplyPreserveAttributeBase.cs index 4b67b0195d1a..1d4bc9520977 100644 --- a/tools/dotnet-linker/ApplyPreserveAttributeBase.cs +++ b/tools/dotnet-linker/ApplyPreserveAttributeBase.cs @@ -1,167 +1,229 @@ // This is copied from https://github.com/mono/linker/blob/fa9ccbdaf6907c69ef1bb117906f8f012218d57f/src/tuner/Mono.Tuner/ApplyPreserveAttributeBase.cs // and modified to work without a Profile class. -using System; -using System.Collections; -using System.Collections.Generic; -using System.Diagnostics.CodeAnalysis; + using System.Linq; -using System.Text; using Mono.Linker; using Mono.Linker.Steps; using Mono.Cecil; -using Mono.Cecil.Cil; - -using Xamarin.Bundler; -using Xamarin.Linker; -using Xamarin.Utils; +using Mono.Tuner; #nullable enable -namespace Mono.Tuner { +namespace Xamarin.Linker.Steps { - public abstract class ApplyPreserveAttributeBase : ConfigurationAwareSubStep { - - AppBundleRewriter? abr; - Queue deferredActions = new (); + public partial class ApplyPreserveAttribute : ConfigurationAwareSubStep, IApplyPreserveAttribute { + ApplyPreserveAttributeImpl impl; protected override string Name { get => "Apply Preserve Attribute"; } protected override int ErrorCode { get => 2450; } - // set 'removeAttribute' to true if you want the preserved attribute to be removed from the final assembly - protected abstract bool IsPreservedAttribute (ICustomAttributeProvider provider, CustomAttribute attribute, out bool removeAttribute); - public override SubStepTargets Targets => SubStepTargets.Assembly; - public override void Initialize (LinkContext context) + public ApplyPreserveAttribute () + { + impl = new ApplyPreserveAttributeImpl (this); + } + + public override bool IsActiveFor (AssemblyDefinition assembly) { - base.Initialize (context); + // It's either this step, or ApplyPreserveAttributeStep. If ApplyPreserveAttributeStep already ran, then we shouldn't run this step. + if (Configuration.DerivedLinkContext.DidRunApplyPreserveAttributeStep) + return false; - if (Configuration.Application.XamarinRuntime == XamarinRuntime.NativeAOT) - abr = Configuration.AppBundleRewriter; + return Annotations.GetAction (assembly) == AssemblyAction.Link; } protected override void Process (AssemblyDefinition assembly) { - BrowseTypes (assembly.MainModule.Types); - ProcessDeferredActions (); + impl.Process (assembly); + } + + bool IApplyPreserveAttribute.PreserveUnconditional (IMetadataTokenProvider provider) + { + if (provider is MethodDefinition method) + Annotations.SetAction (method, MethodAction.Parse); + Annotations.Mark (provider); + return true; + } + + bool IApplyPreserveAttribute.PreserveType (TypeDefinition type, bool allMembers) + { + Annotations.Mark (type); + if (allMembers) + Annotations.SetPreserve (type, TypePreserve.All); + return true; + } + + bool IApplyPreserveAttribute.PreserveConditional (TypeDefinition onType, MethodDefinition forMethod) + { + Annotations.SetAction (forMethod, MethodAction.Parse); + Annotations.AddPreservedMethod (onType, forMethod); + return true; + } + } + + public interface IApplyPreserveAttribute { + bool PreserveType (TypeDefinition type, bool allMembers); + bool PreserveUnconditional (IMetadataTokenProvider provider); + bool PreserveConditional (TypeDefinition onType, MethodDefinition forMethod); + } + + public class ApplyPreserveAttributeImpl { + IApplyPreserveAttribute applyPreserveAttribute; + + public ApplyPreserveAttributeImpl (IApplyPreserveAttribute applyPreserveAttribute) + { + this.applyPreserveAttribute = applyPreserveAttribute; + } + + bool IsPreservedAttribute (ICustomAttributeProvider provider, CustomAttribute attribute) + { + TypeReference type = attribute.Constructor.DeclaringType; + return type.Name == "PreserveAttribute"; + } + + public bool Process (AssemblyDefinition assembly) + { + var modified = false; + modified |= BrowseTypes (assembly.MainModule.Types); + modified |= ProcessAssemblyAttributes (assembly); + return modified; } - void BrowseTypes (IEnumerable types) + bool ProcessAssemblyAttributes (AssemblyDefinition assembly) { - foreach (TypeDefinition type in types) { - ProcessType (type); + if (!assembly.HasCustomAttributes) + return false; + + var modified = false; + foreach (var attribute in assembly.CustomAttributes) { + if (!attribute.Constructor.DeclaringType.Is (Namespaces.Foundation, "PreserveAttribute")) + continue; + + if (!attribute.HasConstructorArguments) + continue; + var tr = (attribute.ConstructorArguments [0].Value as TypeReference); + if (tr is null) + continue; + + // we do not call `this.ProcessType` since + // (a) we're potentially processing a different assembly and `is_active` represent the current one + // (b) it will try to fetch the [Preserve] attribute on the type (and it's not there) as `base` would + var type = tr.Resolve (); + + modified |= PreserveType (type, attribute); + } + return modified; + } + + bool BrowseTypes (IEnumerable types) + { + var modified = false; + foreach (var type in (new List (types))) { + modified |= ProcessType (type); if (type.HasFields) { - foreach (FieldDefinition field in type.Fields) - ProcessField (field); + foreach (var field in type.Fields.ToArray ()) + modified |= ProcessField (field); } if (type.HasMethods) { - foreach (MethodDefinition method in type.Methods) - ProcessMethod (method); + foreach (var method in type.Methods.ToArray ()) + modified |= ProcessMethod (method); } if (type.HasProperties) { - foreach (PropertyDefinition property in type.Properties) - ProcessProperty (property); + foreach (var property in type.Properties.ToArray ()) + modified |= ProcessProperty (property); } if (type.HasEvents) { - foreach (EventDefinition @event in type.Events) - ProcessEvent (@event); + foreach (var @event in type.Events.ToArray ()) + modified |= ProcessEvent (@event); } if (type.HasNestedTypes) { - BrowseTypes (type.NestedTypes); + modified |= BrowseTypes (type.NestedTypes); } } + return modified; } - void ProcessDeferredActions () + bool ProcessType (TypeDefinition type) { - while (deferredActions.Count > 0) { - var action = deferredActions.Dequeue (); - action.Invoke (); - } - } - - public override bool IsActiveFor (AssemblyDefinition assembly) - { - return Annotations.GetAction (assembly) == AssemblyAction.Link; + return TryApplyPreserveAttribute (type); } - protected override void Process (TypeDefinition type) - { - TryApplyPreserveAttribute (type); - } - - protected override void Process (FieldDefinition field) + bool ProcessField (FieldDefinition field) { + var modified = false; foreach (var attribute in GetPreserveAttributes (field)) - Mark (field, attribute); + modified |= Mark (field, attribute); + return modified; } - protected override void Process (MethodDefinition method) + bool ProcessMethod (MethodDefinition method) { - MarkMethodIfPreserved (method); + return MarkMethodIfPreserved (method); } - protected override void Process (PropertyDefinition property) + bool ProcessProperty (PropertyDefinition property) { + var modified = false; foreach (var attribute in GetPreserveAttributes (property)) { - MarkMethod (property.GetMethod, attribute); - MarkMethod (property.SetMethod, attribute); + modified |= MarkMethod (property.GetMethod, attribute); + modified |= MarkMethod (property.SetMethod, attribute); } + return modified; } - protected override void Process (EventDefinition @event) + bool ProcessEvent (EventDefinition @event) { + var modified = false; foreach (var attribute in GetPreserveAttributes (@event)) { - MarkMethod (@event.AddMethod, attribute); - MarkMethod (@event.InvokeMethod, attribute); - MarkMethod (@event.RemoveMethod, attribute); + modified |= MarkMethod (@event.AddMethod, attribute); + modified |= MarkMethod (@event.InvokeMethod, attribute); + modified |= MarkMethod (@event.RemoveMethod, attribute); } + return modified; } - void MarkMethodIfPreserved (MethodDefinition method) + bool MarkMethodIfPreserved (MethodDefinition method) { + var modified = false; foreach (var attribute in GetPreserveAttributes (method)) - MarkMethod (method, attribute); + modified |= MarkMethod (method, attribute); + return modified; } - void MarkMethod (MethodDefinition? method, CustomAttribute? preserve_attribute) + bool MarkMethod (MethodDefinition? method, CustomAttribute? preserve_attribute) { if (method is null) - return; + return false; - Mark (method, preserve_attribute); - Annotations.SetAction (method, MethodAction.Parse); + return Mark (method, preserve_attribute); } - void Mark (IMetadataTokenProvider provider, CustomAttribute? preserve_attribute) + bool Mark (IMetadataTokenProvider provider, CustomAttribute? preserve_attribute) { - if (IsConditionalAttribute (preserve_attribute)) { - PreserveConditional (provider); - return; - } + if (IsConditionalAttribute (preserve_attribute)) + return PreserveConditional (provider); - PreserveUnconditional (provider); + return PreserveUnconditional (provider); } - void PreserveConditional (IMetadataTokenProvider provider) + bool PreserveConditional (IMetadataTokenProvider provider) { var method = provider as MethodDefinition; if (method is null) { // workaround to support (uncommon but valid) conditional fields form [Preserve] - PreserveUnconditional (provider); - return; + return PreserveUnconditional (provider); } - Annotations.AddPreservedMethod (method.DeclaringType, method); - AddConditionalDynamicDependencyAttribute (method.DeclaringType, method); + return applyPreserveAttribute.PreserveConditional (method.DeclaringType, method); } static bool IsConditionalAttribute (CustomAttribute? attribute) @@ -176,55 +238,39 @@ static bool IsConditionalAttribute (CustomAttribute? attribute) return false; } - void PreserveUnconditional (IMetadataTokenProvider provider) + bool PreserveUnconditional (IMetadataTokenProvider provider) { - Annotations.Mark (provider); + var modified = false; - // We want to add a dynamic dependency attribute to preserve methods and fields - // but not to preserve types while we're marking the chain of declaring types. - if (provider is not TypeDefinition) { - AddDynamicDependencyAttribute (provider); - } + modified |= applyPreserveAttribute.PreserveUnconditional (provider); var member = provider as IMemberDefinition; if (member is null || member.DeclaringType is null) - return; + return modified; - Mark (member.DeclaringType, null); + modified |= Mark (member.DeclaringType, null); + + return modified; } - void TryApplyPreserveAttribute (TypeDefinition type) + bool TryApplyPreserveAttribute (TypeDefinition type) { + var modified = false; foreach (var attribute in GetPreserveAttributes (type)) { - PreserveType (type, attribute); + modified |= PreserveType (type, attribute); } + return modified; } List GetPreserveAttributes (ICustomAttributeProvider provider) { - List attrs = new List (); - if (!provider.HasCustomAttributes) - return attrs; - - var attributes = provider.CustomAttributes; - - for (int i = attributes.Count - 1; i >= 0; i--) { - var attribute = attributes [i]; + return new List (); - bool remote_attribute; - if (!IsPreservedAttribute (provider, attribute, out remote_attribute)) - continue; - - attrs.Add (attribute); - if (remote_attribute) - attributes.RemoveAt (i); - } - - return attrs; + return provider.CustomAttributes.Where (a => IsPreservedAttribute (provider, a)).ToList (); } - protected void PreserveType (TypeDefinition type, CustomAttribute preserveAttribute) + protected bool PreserveType (TypeDefinition type, CustomAttribute preserveAttribute) { var allMembers = false; if (preserveAttribute.HasFields) { @@ -233,114 +279,12 @@ protected void PreserveType (TypeDefinition type, CustomAttribute preserveAttrib allMembers = true; } - PreserveType (type, allMembers); - } - - protected void PreserveType (TypeDefinition type, bool allMembers) - { - Annotations.Mark (type); - if (allMembers) - Annotations.SetPreserve (type, TypePreserve.All); - AddDynamicDependencyAttribute (type, allMembers); + return PreserveType (type, allMembers); } - MethodDefinition GetOrCreateModuleConstructor (ModuleDefinition @module) + bool PreserveType (TypeDefinition type, bool allMembers) { - var moduleType = @module.GetModuleType (); - return GetOrCreateStaticConstructor (moduleType); - } - - // We want to avoid `DynamicallyAccessedMemberTypes.All` because the semantics are different - // from `[Preserve (AllMembers = true)]`. Specifically, we don't want to preserve nested types. - // `All` would also keep unused private members of base types which `Preserve` also doesn't cover. - const DynamicallyAccessedMemberTypes allMemberTypes = - DynamicallyAccessedMemberTypes.PublicFields | DynamicallyAccessedMemberTypes.NonPublicFields - | DynamicallyAccessedMemberTypes.PublicProperties | DynamicallyAccessedMemberTypes.NonPublicProperties - | DynamicallyAccessedMemberTypes.PublicMethods | DynamicallyAccessedMemberTypes.NonPublicMethods - | DynamicallyAccessedMemberTypes.PublicConstructors | DynamicallyAccessedMemberTypes.NonPublicConstructors - | DynamicallyAccessedMemberTypes.PublicEvents | DynamicallyAccessedMemberTypes.NonPublicEvents - | DynamicallyAccessedMemberTypes.Interfaces; - - void AddDynamicDependencyAttribute (TypeDefinition type, bool allMembers) - { - if (abr is null) - return; - - abr.ClearCurrentAssembly (); - abr.SetCurrentAssembly (type.Module.Assembly); - - var moduleConstructor = GetOrCreateModuleConstructor (type.GetModule ()); - var members = allMembers - ? allMemberTypes - : DynamicallyAccessedMemberTypes.PublicConstructors | DynamicallyAccessedMemberTypes.NonPublicConstructors; - - // only preserve fields for enums - if (type.IsEnum) { - members = DynamicallyAccessedMemberTypes.PublicFields; - } - - var attrib = abr.CreateDynamicDependencyAttribute (members, type); - moduleConstructor.CustomAttributes.Add (attrib); - - abr.ClearCurrentAssembly (); - } - - void AddConditionalDynamicDependencyAttribute (TypeDefinition onType, MethodDefinition forMethod) - { - if (abr is null) - return; - - deferredActions.Enqueue (() => AddDynamicDependencyAttributeToStaticConstructor (onType, forMethod)); - } - - void AddDynamicDependencyAttribute (IMetadataTokenProvider provider) - { - if (abr is null) - return; - - var member = provider as IMemberDefinition; - if (member is null) - throw ErrorHelper.CreateError (99, $"Unable to add dynamic dependency attribute to {provider.GetType ().FullName}"); - - var module = member.GetModule (); - abr.ClearCurrentAssembly (); - abr.SetCurrentAssembly (module.Assembly); - - var moduleConstructor = GetOrCreateModuleConstructor (module); - var signature = DocumentationComments.GetSignature (member); - var attrib = abr.CreateDynamicDependencyAttribute (signature, member.DeclaringType); - moduleConstructor.CustomAttributes.Add (attrib); - - abr.ClearCurrentAssembly (); - } - - void AddDynamicDependencyAttributeToStaticConstructor (TypeDefinition onType, MethodDefinition forMethod) - { - if (abr is null) - return; - - abr.ClearCurrentAssembly (); - abr.SetCurrentAssembly (onType.Module.Assembly); - - var cctor = GetOrCreateStaticConstructor (onType); - var signature = DocumentationComments.GetSignature (forMethod); - var attrib = abr.CreateDynamicDependencyAttribute (signature, onType); - cctor.CustomAttributes.Add (attrib); - Annotations.AddPreservedMethod (onType, cctor); - - abr.ClearCurrentAssembly (); - } - - MethodDefinition GetOrCreateStaticConstructor (TypeDefinition type) - { - var staticCtor = type.GetTypeConstructor (); - if (staticCtor is null) { - staticCtor = type.AddMethod (".cctor", MethodAttributes.Private | MethodAttributes.HideBySig | MethodAttributes.RTSpecialName | MethodAttributes.SpecialName | MethodAttributes.Static, abr!.System_Void); - staticCtor.CreateBody (out var il); - il.Emit (OpCodes.Ret); - } - - return staticCtor; + return applyPreserveAttribute.PreserveType (type, allMembers); } } } diff --git a/tools/dotnet-linker/ApplyPreserveAttributeStep.cs b/tools/dotnet-linker/ApplyPreserveAttributeStep.cs new file mode 100644 index 000000000000..d25a335b4d0c --- /dev/null +++ b/tools/dotnet-linker/ApplyPreserveAttributeStep.cs @@ -0,0 +1,307 @@ +using System.IO; +using System.Linq; +using System.Xml.Linq; + +using Mono.Cecil; +using Mono.Linker; +using Mono.Linker.Steps; +using Xamarin.Bundler; +using Xamarin.Tuner; +using Xamarin.Utils; + +#nullable enable + +namespace Xamarin.Linker.Steps { + + public class ApplyPreserveAttributeStep : AssemblyModifierStep, IApplyPreserveAttribute { + sealed class XmlTypeDescription { + public XmlTypeDescription (TypeDefinition type) + { + Type = type; + } + + public TypeDefinition Type { get; } + public bool PreserveAllMembers { get; set; } + public bool PreserveFields { get; set; } + public bool PreserveType { get; set; } + public Dictionary Fields { get; } = new (StringComparer.Ordinal); + public Dictionary Methods { get; } = new (StringComparer.Ordinal); + } + + ApplyPreserveAttributeImpl impl; + readonly Dictionary> xmlDescriptions = new (StringComparer.Ordinal); + protected override string Name { get => "Apply Preserve Attribute"; } + protected override int ErrorCode { get => 2450; } + + bool? create_xml_description_file; + public bool CreateXmlDescriptionFile { + get { + if (create_xml_description_file.HasValue) + return create_xml_description_file.Value; + return Configuration.Application.XamarinRuntime == XamarinRuntime.NativeAOT; + } + set { + create_xml_description_file = value; + } + } + + public bool UseXmlDescriptionFile { get; set; } = true; + public string XmlDescriptionPath { get; set; } = string.Empty; + + public ApplyPreserveAttributeStep () + { + impl = new ApplyPreserveAttributeImpl (this); + } + + protected override void TryProcess () + { + DerivedLinkContext.DidRunApplyPreserveAttributeStep = true; + base.TryProcess (); + } + + protected override bool IsActiveFor (AssemblyDefinition assembly) + { + // We only care about assemblies that are being linked. + if (Annotations.GetAction (assembly) != AssemblyAction.Link) + return false; + + return true; + } + + protected override bool ModifyAssembly (AssemblyDefinition assembly) + { + return impl.Process (assembly); + } + + protected override void TryEndProcess () + { + if (!UseXmlDescriptionFile) + return; + + WriteXmlDescription (); + } + + bool IApplyPreserveAttribute.PreserveUnconditional (IMetadataTokenProvider provider) + { + if (UseXmlDescriptionFile) { + AddUnconditionalXmlDescription (provider); + return false; + } + + // We want to add a dynamic dependency attribute to preserve methods and fields + // but not to preserve types while we're marking the chain of declaring types. + if (provider is not TypeDefinition) { + return AddDynamicDependencyAttribute (provider); + } + return false; + } + + bool IApplyPreserveAttribute.PreserveType (TypeDefinition type, bool allMembers) + { + if (UseXmlDescriptionFile) { + AddXmlDescription (type, allMembers); + return false; + } + + return AddDynamicDependencyAttribute (type, allMembers); + } + + MethodDefinition GetOrCreateModuleConstructor (ModuleDefinition @module, out bool modified) + { + var moduleType = @module.GetModuleType (); + return abr.GetOrCreateStaticConstructor (moduleType, out modified); + } + + bool IApplyPreserveAttribute.PreserveConditional (TypeDefinition onType, MethodDefinition forMethod) + { + if (UseXmlDescriptionFile) { + AddXmlDescription (onType, forMethod, conditional: true); + return false; + } + + return AddConditionalDynamicDependencyAttribute (onType, forMethod); + } + + // We want to avoid `DynamicallyAccessedMemberTypes.All` because the semantics are different + // from `[Preserve (AllMembers = true)]`. Specifically, we don't want to preserve nested types. + // `All` would also keep unused private members of base types which `Preserve` also doesn't cover. + const DynamicallyAccessedMemberTypes allMemberTypes = + DynamicallyAccessedMemberTypes.PublicFields | DynamicallyAccessedMemberTypes.NonPublicFields + | DynamicallyAccessedMemberTypes.PublicProperties | DynamicallyAccessedMemberTypes.NonPublicProperties + | DynamicallyAccessedMemberTypes.PublicMethods | DynamicallyAccessedMemberTypes.NonPublicMethods + | DynamicallyAccessedMemberTypes.PublicConstructors | DynamicallyAccessedMemberTypes.NonPublicConstructors + | DynamicallyAccessedMemberTypes.PublicEvents | DynamicallyAccessedMemberTypes.NonPublicEvents + | DynamicallyAccessedMemberTypes.Interfaces; + + bool AddDynamicDependencyAttribute (TypeDefinition type, bool allMembers) + { + var moduleConstructor = GetOrCreateModuleConstructor (abr.CurrentAssembly.MainModule, out var modified); + var members = allMembers + ? allMemberTypes + : DynamicallyAccessedMemberTypes.PublicConstructors | DynamicallyAccessedMemberTypes.NonPublicConstructors; + + // only preserve fields for enums + if (type.IsEnum) { + members = DynamicallyAccessedMemberTypes.PublicFields; + } + + var attrib = abr.CreateDynamicDependencyAttribute (members, type); + modified |= abr.AddAttributeOnlyOnce (moduleConstructor, attrib); + return modified; + } + + bool AddConditionalDynamicDependencyAttribute (TypeDefinition onType, MethodDefinition forMethod) + { + return abr.AddDynamicDependencyAttributeToStaticConstructor (onType, forMethod); + } + + bool AddDynamicDependencyAttribute (IMetadataTokenProvider provider) + { + var member = provider as IMemberDefinition; + if (member is null) + throw ErrorHelper.CreateError (99, $"Unable to add dynamic dependency attribute to {provider.GetType ().FullName}"); + + var moduleConstructor = GetOrCreateModuleConstructor (member.GetModule (), out var modified); + var signature = DocumentationComments.GetSignature (member); + var attrib = abr.CreateDynamicDependencyAttribute (signature, member.DeclaringType); + modified |= abr.AddAttributeOnlyOnce (moduleConstructor, attrib); + return modified; + } + + string GetXmlDescriptionFilePath () + { + if (!string.IsNullOrEmpty (XmlDescriptionPath)) + return XmlDescriptionPath; + + return Path.Combine (Configuration.CacheDirectory, "apply-preserve-attribute.xml"); + } + + static string GetXmlSignature (MethodDefinition method) + { + var marker = method.DeclaringType.FullName + "::"; + var index = method.FullName.IndexOf (marker, System.StringComparison.Ordinal); + if (index < 0) + return method.FullName; + + return method.FullName.Substring (0, index) + method.FullName.Substring (index + marker.Length); + } + + XmlTypeDescription GetOrCreateXmlDescription (TypeDefinition type) + { + var assemblyName = type.Module.Assembly.Name.Name; + if (!xmlDescriptions.TryGetValue (assemblyName, out var types)) { + types = new Dictionary (System.StringComparer.Ordinal); + xmlDescriptions.Add (assemblyName, types); + } + + if (!types.TryGetValue (type.FullName, out var description)) { + description = new XmlTypeDescription (type); + types.Add (type.FullName, description); + } + + return description; + } + + void AddXmlDescription (TypeDefinition type, bool allMembers) + { + var description = GetOrCreateXmlDescription (type); + description.PreserveType = true; + if (allMembers) { + description.PreserveAllMembers = true; + return; + } + + if (type.IsEnum) { + description.PreserveFields = true; + return; + } + } + + void AddXmlDescription (TypeDefinition onType, MethodDefinition forMethod, bool conditional) + { + var description = GetOrCreateXmlDescription (onType); + if (!conditional) + description.PreserveType = true; + description.Methods [GetXmlSignature (forMethod)] = conditional; + } + + void AddUnconditionalXmlDescription (IMetadataTokenProvider provider) + { + switch (provider) { + case MethodDefinition method: + AddXmlDescription (method.DeclaringType, method, false); + break; + case FieldDefinition field: + var description = GetOrCreateXmlDescription (field.DeclaringType); + description.Fields [field.Name] = false; + description.PreserveType = true; + break; + } + } + + XElement CreateXmlTypeElement (XmlTypeDescription description) + { + var type = new XElement ("type", new XAttribute ("fullname", description.Type.FullName)); + + if (description.PreserveAllMembers) { + type.SetAttributeValue ("preserve", "all"); + return type; + } + + if (description.PreserveFields && description.Fields.Count == 0 && description.Methods.Count == 0) { + type.SetAttributeValue ("preserve", "fields"); + return type; + } + + if (!description.PreserveType) + type.SetAttributeValue ("required", "false"); + + type.SetAttributeValue ("preserve", "nothing"); + + foreach (var field in description.Fields.OrderBy (v => v.Key, System.StringComparer.Ordinal)) + type.Add (new XElement ("field", new XAttribute ("name", field.Key), new XAttribute ("required", field.Value ? "false" : "true"))); + + foreach (var method in description.Methods.OrderBy (v => v.Key, System.StringComparer.Ordinal)) + type.Add (new XElement ("method", new XAttribute ("signature", method.Key), new XAttribute ("required", method.Value ? "false" : "true"))); + + return type; + } + + void WriteXmlDescription () + { + var xmlPath = GetXmlDescriptionFilePath (); + var directory = Path.GetDirectoryName (xmlPath); + if (!string.IsNullOrEmpty (directory)) + Directory.CreateDirectory (directory); + + var document = new XDocument ( + new XElement ("linker", + xmlDescriptions + .OrderBy (v => v.Key, System.StringComparer.Ordinal) + .Select (assembly => new XElement ("assembly", + new XAttribute ("fullname", assembly.Key), + assembly.Value + .OrderBy (v => v.Key, System.StringComparer.Ordinal) + .Select (v => CreateXmlTypeElement (v.Value)))))); + document.Save (xmlPath); + + if (CreateXmlDescriptionFile) { + var items = new List (); + var item = new MSBuildItem (xmlPath); + items.Add (item); + Configuration.WriteOutputForMSBuild ("TrimmerRootDescriptor", items); + } + + // The current linker run still needs these roots immediately. Writing the TrimmerRootDescriptor item only + // makes the descriptor available to MSBuild after this step has already finished running. + var applyXmlStepType = Context.GetType ().Assembly.GetType ("Mono.Linker.Steps.ResolveFromXmlStep"); + if (applyXmlStepType is not null) { + var documentStream = File.OpenRead (xmlPath); // ResolveFromXmlStep will dispose the stream. + var applyXmlStep = (BaseStep) Activator.CreateInstance (applyXmlStepType, new object [] { documentStream, xmlPath })!; + applyXmlStep.Process (Context); + } else { + throw ErrorHelper.CreateError (99, $"Unable to find Mono.Linker.Steps.ResolveFromXmlStep to apply the generated XML description file {xmlPath}"); + } + } + } +} diff --git a/tools/dotnet-linker/CecilExtensions.cs b/tools/dotnet-linker/CecilExtensions.cs index 810cc0db91a5..705b5bcda241 100644 --- a/tools/dotnet-linker/CecilExtensions.cs +++ b/tools/dotnet-linker/CecilExtensions.cs @@ -1,5 +1,6 @@ using System.Collections.Generic; using System.Linq; +using System.Text; using Mono.Cecil; using Mono.Cecil.Cil; @@ -161,5 +162,49 @@ public static TypeDefinition GetModuleType (this ModuleDefinition @module) return moduleType; } + public static string RenderAttribute (this CustomAttribute ca) + { + var render = new Func (v => { + if (v is string s) + return $"\"{s}\""; + else if (v is TypeReference tr) + return $"typeof ({tr.FullName})"; + else + return v?.ToString () ?? "null"; + }); + + var sb = new StringBuilder (); + sb.Append ("["); + sb.Append (ca.AttributeType.Name.EndsWith ("Attribute") ? ca.AttributeType.Name.Substring (0, ca.AttributeType.Name.Length - "Attribute".Length) : ca.AttributeType.Name); + if (ca.HasFields || ca.HasConstructorArguments || ca.HasProperties) { + sb.Append ("("); + var first = true; + foreach (var arg in ca.ConstructorArguments) { + if (!first) + sb.Append (", "); + first = false; + sb.Append (render (arg.Value)); + } + foreach (var prop in ca.Properties) { + if (!first) + sb.Append (", "); + first = false; + sb.Append (prop.Name); + sb.Append (" = "); + sb.Append (render (prop.Argument.Value)); + } + foreach (var field in ca.Fields) { + if (!first) + sb.Append (", "); + first = false; + sb.Append (field.Name); + sb.Append (" = "); + sb.Append (render (field.Argument.Value)); + } + sb.Append (")"); + } + sb.Append ("]"); + return sb.ToString (); + } } } diff --git a/tools/dotnet-linker/Steps/AssemblyModifierStep.cs b/tools/dotnet-linker/Steps/AssemblyModifierStep.cs index da3fcb5e5608..2e3e971d4d87 100644 --- a/tools/dotnet-linker/Steps/AssemblyModifierStep.cs +++ b/tools/dotnet-linker/Steps/AssemblyModifierStep.cs @@ -17,19 +17,25 @@ namespace Xamarin.Linker.Steps; public abstract class AssemblyModifierStep : ConfigurationAwareStep { private protected AppBundleRewriter abr => Configuration.AppBundleRewriter; - protected override void TryProcessAssembly (AssemblyDefinition assembly) + protected sealed override void TryProcessAssembly (AssemblyDefinition assembly) { var modified = false; abr.SetCurrentAssembly (assembly); - foreach (var type in assembly.MainModule.Types) - modified |= ProcessTypeImpl (type); - + modified |= ModifyAssembly (assembly); if (modified) abr.SaveCurrentAssembly (); abr.ClearCurrentAssembly (); } + protected virtual bool ModifyAssembly (AssemblyDefinition assembly) + { + var modified = false; + foreach (var type in assembly.MainModule.Types) + modified |= ProcessTypeImpl (type); + return modified; + } + protected virtual bool ProcessType (TypeDefinition type) { return false; diff --git a/tools/dotnet-linker/Steps/RemoveAttributesStep.cs b/tools/dotnet-linker/Steps/RemoveAttributesStep.cs index af9acee94086..7fa016caab70 100644 --- a/tools/dotnet-linker/Steps/RemoveAttributesStep.cs +++ b/tools/dotnet-linker/Steps/RemoveAttributesStep.cs @@ -35,6 +35,9 @@ bool IsRemovedAttribute (CustomAttribute attribute) { // this avoids calling FullName (which allocates a string) var attr_type = attribute.Constructor.DeclaringType; + if (attr_type.Name == "PreserveAttribute") + return true; + switch (attr_type.Namespace) { case Namespaces.ObjCRuntime: switch (attr_type.Name) { diff --git a/tools/dotnet-linker/Steps/SetBeforeFieldInitStep.cs b/tools/dotnet-linker/Steps/SetBeforeFieldInitStep.cs index 1ea1dcb0943b..22f70f051ef0 100644 --- a/tools/dotnet-linker/Steps/SetBeforeFieldInitStep.cs +++ b/tools/dotnet-linker/Steps/SetBeforeFieldInitStep.cs @@ -45,12 +45,6 @@ protected override void Process (TypeDefinition type) if (Configuration.DerivedLinkContext.App.Optimizations.RegisterProtocols != true) return; - if (Configuration.DerivedLinkContext.App.XamarinRuntime == Bundler.XamarinRuntime.NativeAOT) { - // We can't remove the static constructor in the trimmer if we're using NativeAOT, - // because NativeAOT needs it for its own trimming logic. - return; - } - if (!type.IsBeforeFieldInit && type.IsInterface && type.HasMethods) { var cctor = type.GetTypeConstructor (); if (cctor is not null && cctor.IsBindingImplOptimizableCode (LinkContext)) diff --git a/tools/dotnet-linker/dotnet-linker.csproj b/tools/dotnet-linker/dotnet-linker.csproj index 1cd515ca90b8..5b8b4c66d39e 100644 --- a/tools/dotnet-linker/dotnet-linker.csproj +++ b/tools/dotnet-linker/dotnet-linker.csproj @@ -163,9 +163,6 @@ external/src/ObjCRuntime/NativeNameAttribute.cs - - external/tools/linker/ApplyPreserveAttribute.cs - external/tools/linker/ExceptionalSubStep.cs diff --git a/tools/linker/ApplyPreserveAttribute.cs b/tools/linker/ApplyPreserveAttribute.cs deleted file mode 100644 index 9eea0bb1c5ca..000000000000 --- a/tools/linker/ApplyPreserveAttribute.cs +++ /dev/null @@ -1,67 +0,0 @@ -// Copyright 2011-2013 Xamarin Inc. All rights reserved. - -using System; -using System.Collections.Generic; - -using Mono.Cecil; -using Mono.Linker; -using Mono.Tuner; - -using Xamarin.Tuner; - -namespace Xamarin.Linker.Steps { - - public class ApplyPreserveAttribute : ApplyPreserveAttributeBase { - // We need to run the ApplyPreserveAttribute step even if we're only linking sdk assemblies, because even - // though we know that sdk assemblies will never have Preserve attributes, user assemblies may have - // [assembly: LinkSafe] attributes, which means we treat them as sdk assemblies and those may have - // Preserve attributes. - public override bool IsActiveFor (AssemblyDefinition assembly) - { - return Annotations.GetAction (assembly) == AssemblyAction.Link; - } - - protected override void Process (AssemblyDefinition assembly) - { - base.Process (assembly); - ProcessAssemblyAttributes (assembly); - } - - void ProcessAssemblyAttributes (AssemblyDefinition assembly) - { - if (!assembly.HasCustomAttributes) - return; - - foreach (var attribute in assembly.CustomAttributes) { - if (!attribute.Constructor.DeclaringType.Is (Namespaces.Foundation, "PreserveAttribute")) - continue; - - if (!attribute.HasConstructorArguments) - continue; - var tr = (attribute.ConstructorArguments [0].Value as TypeReference); - if (tr is null) - continue; - - // we do not call `this.ProcessType` since - // (a) we're potentially processing a different assembly and `is_active` represent the current one - // (b) it will try to fetch the [Preserve] attribute on the type (and it's not there) as `base` would - var type = tr.Resolve (); - - PreserveType (type, attribute); - } - } - - protected override bool IsPreservedAttribute (ICustomAttributeProvider provider, CustomAttribute attribute, out bool removeAttribute) - { - removeAttribute = false; - TypeReference type = attribute.Constructor.DeclaringType; - - if (type.Name == "PreserveAttribute") { - // there's no need to keep the [Preserve] attribute in the assembly once it was processed - removeAttribute = true; - return true; - } - return false; - } - } -} From 8166e0026aa05bdbf163fa9bff33a76c8c3e03d9 Mon Sep 17 00:00:00 2001 From: Rolf Bjarne Kvinge Date: Tue, 14 Apr 2026 16:33:12 +0200 Subject: [PATCH 02/47] [msbuild] Revamp finding a simulator to use when running an app in the simulator. Fixes #25112. (#25129) In the GetMlaunchArguments task, instead of repeating what the GetAvailableDevices task does, just run the GetAvailableDevices task and pass the resulting devices to the GetMlaunchArguments task. Then GetMlaunchArguments can just pick the first applicable one, which should work fine. Fixes https://github.com/dotnet/macios/issues/25112. --------- Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- dotnet/targets/Microsoft.Sdk.Mobile.targets | 12 +- .../Tasks/GetMlaunchArguments.cs | 295 +++++++++++++----- tests/dotnet/UnitTests/MlaunchTest.cs | 20 +- .../TaskTests/GetMlaunchArgumentsTaskTests.cs | 139 +++++++++ 4 files changed, 388 insertions(+), 78 deletions(-) create mode 100644 tests/msbuild/Xamarin.MacDev.Tasks.Tests/TaskTests/GetMlaunchArgumentsTaskTests.cs diff --git a/dotnet/targets/Microsoft.Sdk.Mobile.targets b/dotnet/targets/Microsoft.Sdk.Mobile.targets index db28965e02bd..b852c5aa027a 100644 --- a/dotnet/targets/Microsoft.Sdk.Mobile.targets +++ b/dotnet/targets/Microsoft.Sdk.Mobile.targets @@ -20,12 +20,14 @@ + DependsOnTargets="_DetectSdkLocations;_GenerateBundleName;_DetectAppManifest;ComputeAvailableDevices"> - + @@ -53,6 +55,8 @@ - + @@ -105,6 +109,8 @@ AdditionalArguments="@(MlaunchAdditionalArguments)" AppManifestPath="$(_AppBundleManifestPath)" CaptureOutput="$(_MlaunchCaptureOutput)" + DiscardedDevices="@(DiscardedDevices)" + Devices="@(Devices)" DeviceName="$(Device)" EnvironmentVariables="@(MlaunchEnvironmentVariables)" LaunchApp="$(_AppBundlePath)" diff --git a/msbuild/Xamarin.MacDev.Tasks/Tasks/GetMlaunchArguments.cs b/msbuild/Xamarin.MacDev.Tasks/Tasks/GetMlaunchArguments.cs index 459b84eff347..3b0f1b6115b6 100644 --- a/msbuild/Xamarin.MacDev.Tasks/Tasks/GetMlaunchArguments.cs +++ b/msbuild/Xamarin.MacDev.Tasks/Tasks/GetMlaunchArguments.cs @@ -42,6 +42,9 @@ public class GetMlaunchArguments : XamarinTask, ICancelableTask { [Required] public string MlaunchPath { get; set; } = string.Empty; + public ITaskItem [] Devices { get; set; } = Array.Empty (); + public ITaskItem [] DiscardedDevices { get; set; } = Array.Empty (); + [Output] public string MlaunchArguments { get; set; } = string.Empty; @@ -58,17 +61,26 @@ public IPhoneDeviceType DeviceType { } } - List? GetDeviceTypes (bool onlyExact) + sealed class SimulatorDeviceInfo { + public string Identifier { get; set; } = string.Empty; + public string Name { get; set; } = string.Empty; + public long RuntimeVersion { get; set; } + public int DeviceTypeOrder { get; set; } = int.MinValue; + public bool IsCompatible { get; set; } + public string? NotApplicableBecause { get; set; } + } + + List<(long Min, long Max, string Identifier)>? GetDeviceTypes () { var output = GetSimulatorList (); - if (output is null) + if (string.IsNullOrEmpty (output)) return null; // Which product family are we looking for? string [] productFamilies; switch (DeviceType) { case IPhoneDeviceType.IPhone: // if we're looking for an iPhone, an iPad also works - productFamilies = onlyExact ? ["iPhone"] : ["iPhone", "iPad"]; + productFamilies = ["iPhone", "iPad"]; break; case IPhoneDeviceType.IPad: productFamilies = ["iPad"]; @@ -100,10 +112,31 @@ public IPhoneDeviceType DeviceType { continue; deviceTypes.Add ((minRuntimeVersion, maxRuntimeVersion, identifier)); } - // Sort by minRuntimeVersion, this is a rudimentary way of sorting so that the last device is at the end. - deviceTypes.Sort ((a, b) => a.Min.CompareTo (b.Min)); - // Return the sorted list - return deviceTypes.Select (v => v.Identifier).ToList (); + + deviceTypes.Sort ((a, b) => { + var rv = a.Min.CompareTo (b.Min); + if (rv != 0) + return rv; + rv = a.Max.CompareTo (b.Max); + if (rv != 0) + return rv; + return StringComparer.Ordinal.Compare (a.Identifier, b.Identifier); + }); + + return deviceTypes; + } + + static bool TryGetSimulatorVersion (long versionValue, out Version? version) + { + if (versionValue <= 0) { + version = null; + return false; + } + + var major = (int) ((versionValue >> 16) & 0xFF); + var minor = (int) ((versionValue >> 8) & 0xFF); + version = new Version (major, minor); + return true; } string? simulator_list; @@ -142,49 +175,100 @@ public IPhoneDeviceType DeviceType { return device_list; } - List<(string Identifier, string Name, string? NotApplicableBecause)> GetDeviceListForSimulator () + List GetSimulatorDevices () { - var rv = new List<(string Identifier, string Name, string? NotApplicableBecause)> (); + var rv = new List (); var output = GetSimulatorList (); if (string.IsNullOrEmpty (output)) return rv; - var deviceTypes = GetDeviceTypes (false); + var deviceTypes = GetDeviceTypes (); if (deviceTypes is null) return rv; - // Load mlaunch's output + var deviceTypeOrders = deviceTypes + .Select ((v, index) => (v.Identifier, Index: index)) + .ToDictionary (v => v.Identifier, v => v.Index, StringComparer.Ordinal); + var xml = new XmlDocument (); xml.LoadXml (output); - // Get the device types for the product family we're looking for + + var runtimePrefix = $"com.apple.CoreSimulator.SimRuntime.{PlatformName}-"; + var runtimeVersions = new Dictionary (StringComparer.Ordinal); + var runtimeNodes = xml.SelectNodes ("/MTouch/Simulator/SupportedRuntimes/SimRuntime")?.Cast () ?? Array.Empty (); + foreach (var node in runtimeNodes) { + var identifier = node.SelectSingleNode ("Identifier")?.InnerText ?? string.Empty; + var versionValue = node.SelectSingleNode ("Version")?.InnerText ?? string.Empty; + if (long.TryParse (versionValue, out var version)) + runtimeVersions [identifier] = version; + } + var nodes = xml.SelectNodes ($"/MTouch/Simulator/AvailableDevices/SimDevice")?.Cast () ?? Array.Empty (); foreach (var node in nodes) { + var device = new SimulatorDeviceInfo { + Identifier = node.Attributes? ["UDID"]?.Value ?? string.Empty, + Name = node.Attributes? ["Name"]?.Value ?? string.Empty, + }; + var simDeviceType = node.SelectSingleNode ("SimDeviceType")?.InnerText ?? string.Empty; - if (!deviceTypes.Contains (simDeviceType)) - continue; - var udid = node.Attributes? ["UDID"]?.Value ?? string.Empty; - var name = node.Attributes? ["Name"]?.Value ?? string.Empty; - string? notApplicableBecause = null; + var simRuntime = node.SelectSingleNode ("SimRuntime")?.InnerText ?? string.Empty; + runtimeVersions.TryGetValue (simRuntime, out var simRuntimeVersion); + device.RuntimeVersion = simRuntimeVersion; - var simRuntime = node.SelectSingleNode ("SimRuntime")?.InnerText; - if (!string.IsNullOrEmpty (simRuntime)) { - var simRuntimeVersionString = xml.SelectSingleNode ($"/MTouch/Simulator/SupportedRuntimes/SimRuntime[Identifier='{simRuntime}']/Version")?.InnerText; - if (int.TryParse (simRuntimeVersionString, out var simRuntimeVersionNumber)) { - var simRuntimeVersionMajor = (simRuntimeVersionNumber >> 16) & 0xFF; - var simRuntimeVersionMinor = (simRuntimeVersionNumber >> 8) & 0xFF; - var simRuntimeVersion = new Version (simRuntimeVersionMajor, simRuntimeVersionMinor); - if (Version.TryParse (SupportedOSPlatformVersion, out var supportedOSPlatformVersion) && simRuntimeVersion < supportedOSPlatformVersion) - notApplicableBecause = $" [OS version ({simRuntimeVersion}) lower than minimum supported platform version ({SupportedOSPlatformVersion}) for this app]"; - } + string? notApplicableBecause = null; + if (!simRuntime.StartsWith (runtimePrefix, StringComparison.Ordinal)) { + notApplicableBecause = $" [Simulator runtime ({simRuntime}) does not match the requested platform ({PlatformName}) for this app]"; + } else if (!deviceTypeOrders.TryGetValue (simDeviceType, out var deviceTypeOrder)) { + notApplicableBecause = $" [Simulator device type ({simDeviceType}) is not applicable for this app]"; + } else { + device.IsCompatible = true; + device.DeviceTypeOrder = deviceTypeOrder; + if (Version.TryParse (SupportedOSPlatformVersion, out var supportedOSPlatformVersion) && TryGetSimulatorVersion (simRuntimeVersion, out var simRuntimeVersionValue) && simRuntimeVersionValue is not null && simRuntimeVersionValue < supportedOSPlatformVersion) + notApplicableBecause = $" [OS version ({simRuntimeVersionValue}) lower than minimum supported platform version ({SupportedOSPlatformVersion}) for this app]"; } - rv.Add ((udid, name, notApplicableBecause)); + + device.NotApplicableBecause = notApplicableBecause; + rv.Add (device); } + return rv; } + string SelectSimulatorDevice () + { + var simulator = GetTaskItemsOfType (Devices, "Simulator").FirstOrDefault (); + if (simulator is null) { + var sb = new StringBuilder (); + sb.AppendLine ("The 'Devices' item group does not contain any simulators."); + AppendDiscardedDevices (sb, "", "Simulator"); + Log.LogError (sb.ToString ().TrimEnd ()); + return ""; + } + + return GetDeviceIdentifier (simulator); + } + + List<(string Identifier, string Name, string? NotApplicableBecause)> GetDeviceListForSimulator () + { + if (Devices.Length > 0 || DiscardedDevices.Length > 0) + return GetDevicesFromTaskItems ("Simulator", Devices); + + return GetSimulatorDevices () + .Where (v => v.IsCompatible) + .OrderByDescending (v => v.RuntimeVersion) + .ThenByDescending (v => v.DeviceTypeOrder) + .ThenBy (v => v.Name, StringComparer.Ordinal) + .ThenBy (v => v.Identifier, StringComparer.Ordinal) + .Select (v => (v.Identifier, v.Name, v.NotApplicableBecause)) + .ToList (); + } + List<(string Identifier, string Name, string? NotApplicableBecause)> GetDeviceListForDevice () { + if (Devices.Length > 0 || DiscardedDevices.Length > 0) + return GetDevicesFromTaskItems ("Device", Devices); + var rv = new List<(string Identifier, string Name, string? NotApplicableBecause)> (); var output = GetDeviceList (); @@ -226,9 +310,90 @@ public IPhoneDeviceType DeviceType { return rv; } + static string GetDeviceIdentifier (ITaskItem device) + { + var udid = device.GetMetadata ("UDID"); + return string.IsNullOrEmpty (udid) ? device.ItemSpec : udid; + } + + static string GetDeviceName (ITaskItem device) + { + var name = device.GetMetadata ("Name"); + if (string.IsNullOrEmpty (name)) + name = device.GetMetadata ("Description"); + return string.IsNullOrEmpty (name) ? GetDeviceIdentifier (device) : name; + } + + static string FormatDevice (ITaskItem device) + { + var identifier = GetDeviceIdentifier (device); + var name = GetDeviceName (device); + return name == identifier ? identifier : $"{name} ({identifier})"; + } + + static ITaskItem [] GetTaskItemsOfType (ITaskItem [] items, string type) + { + return items + .Where (v => string.Equals (v.GetMetadata ("Type"), type, StringComparison.OrdinalIgnoreCase)) + .ToArray (); + } + + string GetApplicableDeviceType () + { + return SdkIsSimulator ? "Simulator" : "Device"; + } + + void FilterTaskItemInputs () + { + var type = GetApplicableDeviceType (); + Devices = GetTaskItemsOfType (Devices, type); + DiscardedDevices = GetTaskItemsOfType (DiscardedDevices, type); + } + + static List<(string Identifier, string Name, string? NotApplicableBecause)> GetDevicesFromTaskItems (string type, ITaskItem [] items) + { + return items + .Where (v => string.Equals (v.GetMetadata ("Type"), type, StringComparison.OrdinalIgnoreCase)) + .Select (v => { + var reason = v.GetMetadata ("DiscardedReason"); + return (GetDeviceIdentifier (v), GetDeviceName (v), string.IsNullOrEmpty (reason) ? null : reason); + }) + .ToList (); + } + + void AppendDiscardedDevices (StringBuilder sb, string indent, string? type = null) + { + var discardedDevices = DiscardedDevices + .Where (v => type is null || string.Equals (v.GetMetadata ("Type"), type, StringComparison.OrdinalIgnoreCase)) + .ToArray (); + + if (discardedDevices.Length == 0) + return; + + sb.AppendLine ($"{indent}The following devices were discarded:"); + foreach (var device in discardedDevices) { + var reason = device.GetMetadata ("DiscardedReason"); + if (string.IsNullOrEmpty (reason)) { + sb.AppendLine ($"{indent} {FormatDevice (device)}"); + } else { + sb.AppendLine ($"{indent} {FormatDevice (device)}: {reason}"); + } + } + } + + void LogNoAvailableDevicesError () + { + var sb = new StringBuilder (); + sb.AppendLine ("No applicable and available devices found."); + AppendDiscardedDevices (sb, "", GetApplicableDeviceType ()); + Log.LogError (sb.ToString ().TrimEnd ()); + } + protected string GenerateCommandLineCommands () { var sb = new List (); + string? selectedSimulator = null; + var deviceName = DeviceName; if (!string.IsNullOrEmpty (LaunchApp)) { sb.Add (SdkIsSimulator ? "--launchsim" : "--launchdev"); @@ -240,58 +405,38 @@ protected string GenerateCommandLineCommands () sb.Add (InstallApp); } - if (SdkIsSimulator && string.IsNullOrEmpty (DeviceName)) { - var simruntime = $"com.apple.CoreSimulator.SimRuntime.{PlatformName}-{SdkVersion.Replace ('.', '-')}"; - var simdevicetypes = GetDeviceTypes (true); - string simdevicetype; - - if (simdevicetypes?.Count > 0) { - // Use the latest device type we can find. This seems to be what Xcode does by default. - simdevicetype = simdevicetypes.Last (); - } else { - // We couldn't find any device types, so pick one. - switch (Platform) { - case ApplePlatform.iOS: - // Don't try to launch an iPad-only app on an iPhone - if (DeviceType == IPhoneDeviceType.IPad) { - simdevicetype = "com.apple.CoreSimulator.SimDeviceType.iPad--7th-generation-"; - } else { - simdevicetype = "com.apple.CoreSimulator.SimDeviceType.iPhone-11"; - } - break; - case ApplePlatform.TVOS: - simdevicetype = "com.apple.CoreSimulator.SimDeviceType.Apple-TV-4K-1080p"; - break; - default: - throw new InvalidOperationException (string.Format (MSBStrings.InvalidPlatform, Platform)); - } - } - DeviceName = $":v2:runtime={simruntime},devicetype={simdevicetype}"; + if (SdkIsSimulator && string.IsNullOrEmpty (deviceName)) { + selectedSimulator = SelectSimulatorDevice (); + deviceName = selectedSimulator; } - if (!string.IsNullOrEmpty (DeviceName)) { + if (!string.IsNullOrEmpty (deviceName)) { if (SdkIsSimulator) { sb.Add ("--device"); - // Figure out whether we got the exact name of a simulator, in which case construct the corresponding argument. - string? simulator = null; - var deviceList = GetDeviceListForSimulator (); - var simulatorsByIdentifier = deviceList.Where (v => v.Identifier == DeviceName).ToArray (); - if (simulatorsByIdentifier.Length == 1) { - simulator = simulatorsByIdentifier [0].Identifier; + if (!string.IsNullOrEmpty (selectedSimulator)) { + sb.Add ($":v2:udid={selectedSimulator}"); } else { - var simulatorsByName = deviceList.Where (v => v.Name == DeviceName).ToArray (); - if (simulatorsByName.Length == 1) - simulator = simulatorsByName [0].Identifier; - } - if (!string.IsNullOrEmpty (simulator)) { - sb.Add ($":v2:udid={simulator}"); - } else { - sb.Add (DeviceName); + // Figure out whether we got the exact name of a simulator, in which case construct the corresponding argument. + string? simulator = null; + var deviceList = GetDeviceListForSimulator (); + var simulatorsByIdentifier = deviceList.Where (v => v.Identifier == deviceName).ToArray (); + if (simulatorsByIdentifier.Length == 1) { + simulator = simulatorsByIdentifier [0].Identifier; + } else { + var simulatorsByName = deviceList.Where (v => v.Name == deviceName).ToArray (); + if (simulatorsByName.Length == 1) + simulator = simulatorsByName [0].Identifier; + } + if (!string.IsNullOrEmpty (simulator)) { + sb.Add ($":v2:udid={simulator}"); + } else { + sb.Add (deviceName); + } } } else { sb.Add ("--devname"); - sb.Add (DeviceName); + sb.Add (deviceName); } } @@ -364,6 +509,7 @@ void ShowHelp () var sampleDevice = firstDevice.Name == StringUtils.Quote (firstDevice.Name) ? firstDevice.Name : firstDevice.Identifier; sb.AppendLine ($" dotnet run -f {f} -r {rid} -p:DeviceName={sampleDevice}"); } + AppendDiscardedDevices (sb, " ", "Device"); sb.AppendLine ($""); sb.AppendLine ($"To run in a simulator:"); @@ -382,6 +528,7 @@ void ShowHelp () var sampleDevice = firstSim.Name == StringUtils.Quote (firstSim.Name) ? firstSim.Name : firstSim.Identifier; sb.AppendLine ($" dotnet run -f {f} -p:DeviceName={sampleDevice}"); } + AppendDiscardedDevices (sb, " ", "Simulator"); sb.AppendLine (); // Sadly the only way to have the help show up in the terminal reliably is to make it a warning @@ -398,6 +545,12 @@ public override bool Execute () return !Log.HasLoggedErrors; } + FilterTaskItemInputs (); + if (Devices.Length == 0) { + LogNoAvailableDevicesError (); + return false; + } + MlaunchArguments = GenerateCommandLineCommands (); return !Log.HasLoggedErrors; } diff --git a/tests/dotnet/UnitTests/MlaunchTest.cs b/tests/dotnet/UnitTests/MlaunchTest.cs index 012cf76ba6a7..fb7c3b9ba8b5 100644 --- a/tests/dotnet/UnitTests/MlaunchTest.cs +++ b/tests/dotnet/UnitTests/MlaunchTest.cs @@ -29,7 +29,13 @@ public void GetMlaunchInstallArguments (ApplePlatform platform, string runtimeId DotNet.Execute ("build", project_path, properties, target: "_DetectSdkLocations;_DetectAppManifest;_CompileAppManifest;_WriteAppManifest"); properties ["MlaunchInstallScript"] = outputPath; - var rv = DotNet.Execute ("build", project_path, properties, target: "ComputeMlaunchInstallArguments"); + var rv = DotNet.Execute ("build", project_path, properties, assert_success: false, target: "ComputeMlaunchInstallArguments"); + + if (rv.ExitCode != 0) { + var errors = BinLog.GetBuildLogErrors (rv.BinLogPath).Select (v => v.Message).OfType ().ToArray (); + Assert.That (string.Join ("\n", errors), Does.Contain ("No applicable and available devices found.")); + return; + } if (!BinLog.TryFindPropertyValue (rv.BinLogPath, "MlaunchInstallArguments", out var mlaunchInstallArguments)) Assert.Fail ("Could not find the property 'MlaunchInstallArguments' in the binlog."); @@ -52,9 +58,9 @@ public void GetMlaunchInstallArguments (ApplePlatform platform, string runtimeId public static object [] GetMlaunchRunArgumentsTestCases () { return new object [] { - new object [] {ApplePlatform.iOS, "iossimulator-x64;iossimulator-arm64", $":v2:runtime=com.apple.CoreSimulator.SimRuntime.iOS-{SdkVersions.iOS.Replace('.', '-')},devicetype=com.apple.CoreSimulator.SimDeviceType.iPhone-.*" }, + new object [] {ApplePlatform.iOS, "iossimulator-x64;iossimulator-arm64", @":v2:udid=[A-F0-9-]+" }, new object [] {ApplePlatform.iOS, "ios-arm64", "" }, - new object [] {ApplePlatform.TVOS, "tvossimulator-arm64", $":v2:runtime=com.apple.CoreSimulator.SimRuntime.tvOS-{SdkVersions.TVOS.Replace('.', '-')},devicetype=com.apple.CoreSimulator.SimDeviceType.Apple-TV-.*" }, + new object [] {ApplePlatform.TVOS, "tvossimulator-arm64", @":v2:udid=[A-F0-9-]+" }, }; } @@ -75,7 +81,13 @@ public void GetMlaunchRunArguments (ApplePlatform platform, string runtimeIdenti DotNet.Execute ("build", project_path, properties, target: "_DetectSdkLocations;_DetectAppManifest;_CompileAppManifest;_WriteAppManifest"); properties ["MlaunchRunScript"] = outputPath; - var rv = DotNet.Execute ("build", project_path, properties, target: "ComputeMlaunchRunArguments"); + var rv = DotNet.Execute ("build", project_path, properties, assert_success: false, target: "ComputeMlaunchRunArguments"); + + if (rv.ExitCode != 0) { + var errors = BinLog.GetBuildLogErrors (rv.BinLogPath).Select (v => v.Message).OfType ().ToArray (); + Assert.That (string.Join ("\n", errors), Does.Contain ("No applicable and available devices found.")); + return; + } if (!BinLog.TryFindPropertyValue (rv.BinLogPath, "MlaunchRunArguments", out var mlaunchRunArguments)) Assert.Fail ("Could not find the property 'MlaunchRunArguments' in the binlog."); diff --git a/tests/msbuild/Xamarin.MacDev.Tasks.Tests/TaskTests/GetMlaunchArgumentsTaskTests.cs b/tests/msbuild/Xamarin.MacDev.Tasks.Tests/TaskTests/GetMlaunchArgumentsTaskTests.cs new file mode 100644 index 000000000000..9042df3d7196 --- /dev/null +++ b/tests/msbuild/Xamarin.MacDev.Tasks.Tests/TaskTests/GetMlaunchArgumentsTaskTests.cs @@ -0,0 +1,139 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +using System.IO; +using System.Linq; +using System.Text; + +using Microsoft.Build.Utilities; + +using NUnit.Framework; + +using Xamarin.Tests; +using Xamarin.Utils; + +#nullable enable + +namespace Xamarin.MacDev.Tasks { + [TestFixture] + public class GetMlaunchArgumentsTaskTests : TestBase { + + [Test] + public void SelectSimulatorDeviceUsesFirstAvailableSimulator () + { + var task = CreateTask (); + task.TargetFrameworkMoniker = TargetFramework.GetTargetFramework (ApplePlatform.iOS).ToString (); + task.AppManifestPath = CreateAppManifest (1, 2); + task.Devices = CreateDevices ( + ("DEVICE-1", "Connected iPhone", "Device"), + ("SIM-2", "Preferred Simulator", "Simulator"), + ("SIM-1", "Another Simulator", "Simulator") + ); + task.LaunchApp = "MySimpleApp.app"; + task.MlaunchPath = "/usr/bin/false"; + task.SdkIsSimulator = true; + task.SdkVersion = "26.2"; + task.WaitForExit = true; + + ExecuteTask (task); + + Assert.That (task.MlaunchArguments, Does.Contain ("--device :v2:udid=SIM-2")); + } + + [Test] + public void ErrorsIfDevicesItemGroupIsEmpty () + { + var task = CreateTask (); + task.TargetFrameworkMoniker = TargetFramework.GetTargetFramework (ApplePlatform.iOS).ToString (); + task.AppManifestPath = CreateAppManifest (1, 2); + task.Devices = CreateDevices ( + ("DEVICE-2", "Connected iPhone", "Device") + ); + task.DiscardedDevices = CreateDiscardedDevices ( + ("SIM-1", "Unsupported Simulator", "Simulator", "Device is not an iPad, but the app only supports iPads"), + ("DEVICE-1", "Old Phone", "Device", "Device OS version '17.0' is lower than the app's minimum OS version '18.0'") + ); + task.LaunchApp = "MySimpleApp.app"; + task.MlaunchPath = "/usr/bin/false"; + task.SdkIsSimulator = true; + task.SdkVersion = "26.2"; + task.WaitForExit = true; + + ExecuteTask (task, expectedErrorCount: 1); + + Assert.That (Engine.Logger.ErrorEvents [0].Message, Does.Contain ("No applicable and available devices found.")); + Assert.That (Engine.Logger.ErrorEvents [0].Message, Does.Contain ("Unsupported Simulator (SIM-1): Device is not an iPad, but the app only supports iPads")); + Assert.That (Engine.Logger.ErrorEvents [0].Message, Does.Not.Contain ("Connected iPhone")); + Assert.That (Engine.Logger.ErrorEvents [0].Message, Does.Not.Contain ("Old Phone")); + } + + [Test] + public void HelpListsDiscardedDevicesWhenNoDevicesAreAvailable () + { + var task = CreateTask (); + task.TargetFrameworkMoniker = TargetFramework.GetTargetFramework (ApplePlatform.iOS).ToString (); + task.AppManifestPath = CreateAppManifest (1, 2); + task.Devices = CreateDevices ( + ("DEVICE-2", "Connected iPhone", "Device") + ); + task.DiscardedDevices = CreateDiscardedDevices ( + ("SIM-1", "Unsupported Simulator", "Simulator", "Device is not an iPad, but the app only supports iPads"), + ("DEVICE-1", "Old Phone", "Device", "Device OS version '17.0' is lower than the app's minimum OS version '18.0'") + ); + task.Help = "true"; + task.MlaunchPath = "/usr/bin/false"; + task.SdkIsSimulator = true; + task.SdkVersion = "26.2"; + + ExecuteTask (task); + + Assert.That (Engine.Logger.WarningsEvents [0].Message, Does.Contain ("The following devices were discarded:")); + Assert.That (Engine.Logger.WarningsEvents [0].Message, Does.Contain ("Unsupported Simulator (SIM-1): Device is not an iPad, but the app only supports iPads")); + Assert.That (Engine.Logger.WarningsEvents [0].Message, Does.Contain ("Connected iPhone")); + Assert.That (Engine.Logger.WarningsEvents [0].Message, Does.Contain ("Old Phone (DEVICE-1): Device OS version '17.0' is lower than the app's minimum OS version '18.0'")); + } + + static TaskItem [] CreateDevices (params (string Udid, string Name, string Type) [] devices) + { + return devices.Select (v => { + return CreateDevice (v.Udid, v.Name, v.Type); + }).ToArray (); + } + + static TaskItem [] CreateDiscardedDevices (params (string Udid, string Name, string Type, string DiscardedReason) [] devices) + { + return devices.Select (v => CreateDevice (v.Udid, v.Name, v.Type, v.DiscardedReason)).ToArray (); + } + + static TaskItem CreateDevice (string udid, string name, string type, string? discardedReason = null) + { + var item = new TaskItem (udid); + item.SetMetadata ("Description", name); + item.SetMetadata ("Name", name); + item.SetMetadata ("Type", type); + item.SetMetadata ("UDID", udid); + if (!string.IsNullOrEmpty (discardedReason)) + item.SetMetadata ("DiscardedReason", discardedReason); + return item; + } + + static string CreateAppManifest (params int [] deviceFamilies) + { + var appManifestPath = Path.Combine (Cache.CreateTemporaryDirectory ("msbuild-tests"), "Info.plist"); + var plist = new StringBuilder (); + plist.AppendLine (@""); + plist.AppendLine (@""); + plist.AppendLine (@""); + plist.AppendLine (""); + plist.AppendLine ("\tUIDeviceFamily"); + plist.AppendLine ("\t"); + foreach (var family in deviceFamilies) + plist.AppendLine ($"\t\t{family}"); + plist.AppendLine ("\t"); + plist.AppendLine (""); + plist.AppendLine (""); + File.WriteAllText (appManifestPath, plist.ToString ()); + return appManifestPath; + } + } +} From b16c0257a8b3fb174467aeab40600f8a6699b6f1 Mon Sep 17 00:00:00 2001 From: Rolf Bjarne Kvinge Date: Tue, 14 Apr 2026 20:05:11 +0200 Subject: [PATCH 03/47] [dotnet-linker] Use [DynamicDependency] attributes instead of manual marking when marking static registrar methods. (#25018) This makes it easier to move this code out of a custom linker step in the future. Contributes towards https://github.com/dotnet/macios/issues/17693. --- dotnet/targets/Xamarin.Shared.Sdk.targets | 2 + tools/common/DerivedLinkContext.cs | 1 + tools/dotnet-linker/MarkForStaticRegistrar.cs | 4 ++ .../MarkForStaticRegistrarStep.cs | 66 +++++++++++++++++++ 4 files changed, 73 insertions(+) create mode 100644 tools/dotnet-linker/MarkForStaticRegistrarStep.cs diff --git a/dotnet/targets/Xamarin.Shared.Sdk.targets b/dotnet/targets/Xamarin.Shared.Sdk.targets index 3d51bcbfefc2..7c03a3e56412 100644 --- a/dotnet/targets/Xamarin.Shared.Sdk.targets +++ b/dotnet/targets/Xamarin.Shared.Sdk.targets @@ -553,6 +553,7 @@ <_UseDynamicDependenciesForGeneratedCodeOptimizations Condition="'$(_UseDynamicDependenciesForGeneratedCodeOptimizations)' == ''">$(_UseDynamicDependenciesInsteadOfMarking) <_UseLinkDescriptionForApplyPreserveAttribute Condition="'$(_UseLinkDescriptionForApplyPreserveAttribute)' == '' And '$(_XamarinRuntime)' == 'NativeAOT'">true <_UseLinkDescriptionForApplyPreserveAttribute Condition="'$(_UseLinkDescriptionForApplyPreserveAttribute)' == ''">$(_UseDynamicDependenciesInsteadOfMarking) + <_UseDynamicDependenciesForMarkStaticRegistrar Condition="'$(_UseDynamicDependenciesForMarkStaticRegistrar)' == ''">$(_UseDynamicDependenciesInsteadOfMarking) @@ -759,6 +760,7 @@ <_TrimmerCustomSteps Include="$(_AdditionalTaskAssembly)" BeforeStep="MarkStep" Type="Xamarin.Linker.Steps.PreserveBlockCodeStep" Condition="'$(_AreAnyAssembliesTrimmed)' == 'true' And '$(_UseDynamicDependenciesForBlockCodePreservation)' == 'true'" /> <_TrimmerCustomSteps Include="$(_AdditionalTaskAssembly)" BeforeStep="MarkStep" Type="Xamarin.Linker.Steps.OptimizeGeneratedCodeStep" Condition="'$(_AreAnyAssembliesTrimmed)' == 'true' And '$(_UseDynamicDependenciesForGeneratedCodeOptimizations)' == 'true'" /> <_TrimmerCustomSteps Include="$(_AdditionalTaskAssembly)" BeforeStep="MarkStep" Type="Xamarin.Linker.Steps.ApplyPreserveAttributeStep" Condition="'$(_AreAnyAssembliesTrimmed)' == 'true' And '$(_UseLinkDescriptionForApplyPreserveAttribute)' == 'true'" /> + <_TrimmerCustomSteps Include="$(_AdditionalTaskAssembly)" BeforeStep="MarkStep" Type="Xamarin.Linker.Steps.MarkForStaticRegistrarStep" Condition="'$(_AreAnyAssembliesTrimmed)' == 'true' And '$(_UseDynamicDependenciesForMarkStaticRegistrar)' == 'true'" /> <_TrimmerCustomSteps Include="$(_AdditionalTaskAssembly)" BeforeStep="MarkStep" Type="MonoTouch.Tuner.RegistrarRemovalTrackingStep" /> diff --git a/tools/common/DerivedLinkContext.cs b/tools/common/DerivedLinkContext.cs index 1cc8f9e0e187..70ec1490e4f7 100644 --- a/tools/common/DerivedLinkContext.cs +++ b/tools/common/DerivedLinkContext.cs @@ -49,6 +49,7 @@ public class DerivedLinkContext : LinkContext { Dictionary LinkedAwayTypeMap = new Dictionary (); public bool DidRunApplyPreserveAttributeStep { get; set; } + public bool DidRunMarkForStaticRegistrarStep { get; set; } public DerivedLinkContext (LinkerConfiguration configuration, Application app) #if !LEGACY_TOOLS diff --git a/tools/dotnet-linker/MarkForStaticRegistrar.cs b/tools/dotnet-linker/MarkForStaticRegistrar.cs index e78759e16057..9590920980cb 100644 --- a/tools/dotnet-linker/MarkForStaticRegistrar.cs +++ b/tools/dotnet-linker/MarkForStaticRegistrar.cs @@ -23,6 +23,10 @@ public class MarkForStaticRegistrar : ConfigurationAwareSubStep { public override bool IsActiveFor (AssemblyDefinition assembly) { + // It's either this step, or MarkForStaticRegistrarStep. If MarkForStaticRegistrarStep already ran, then we shouldn't run this step. + if (Configuration.DerivedLinkContext.DidRunMarkForStaticRegistrarStep) + return false; + if (Configuration.Application.Optimizations.OptimizeBlockLiteralSetupBlock != true) return false; diff --git a/tools/dotnet-linker/MarkForStaticRegistrarStep.cs b/tools/dotnet-linker/MarkForStaticRegistrarStep.cs new file mode 100644 index 000000000000..55b18ecd053f --- /dev/null +++ b/tools/dotnet-linker/MarkForStaticRegistrarStep.cs @@ -0,0 +1,66 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +using System.Linq; + +using Mono.Cecil; +using Mono.Linker; +using Registrar; +using Xamarin.Bundler; + +#nullable enable + +namespace Xamarin.Linker.Steps { + + // This class marks APIs referenced by the native code generated by the static registrar. + public class MarkForStaticRegistrarStep : AssemblyModifierStep { + protected override string Name { get => "Mark For Static Registrar"; } + + protected override int ErrorCode { get => 2460; } + + protected override bool IsActiveFor (AssemblyDefinition assembly) + { + if (Configuration.Application.Optimizations.OptimizeBlockLiteralSetupBlock != true) + return false; + + if (Configuration.Application.Registrar != RegistrarMode.Static) + return false; + + return Annotations.GetAction (assembly) == AssemblyAction.Link; + } + + protected override void TryProcess () + { + DerivedLinkContext.DidRunMarkForStaticRegistrarStep = true; + base.TryProcess (); + } + + protected override bool ProcessType (TypeDefinition type) + { + return base.ProcessMethods (type); + } + + protected override bool ProcessMethod (MethodDefinition method) + { + return ProcessDelegateProxyAttribute (method); + } + + // Mark the Invoke method in the type pointed to by the DelegateProxy attribute, + // because it may only be referenced from native code when using the static registrar. + bool ProcessDelegateProxyAttribute (MethodDefinition method) + { + if (!StaticRegistrar.IsDelegate (method.ReturnType.Resolve ())) + return false; + + var getDelegateProxyType = DerivedLinkContext.StaticRegistrar.GetDelegateProxyType (method); + if (getDelegateProxyType is null) + return false; + + var invokeMethod = getDelegateProxyType.Methods.SingleOrDefault (m => m.Name == "Invoke"); + if (invokeMethod is null) + return false; + + return abr.AddDynamicDependencyAttribute (method, invokeMethod); + } + } +} From 31b5bd9c4d75e5c60afadfffe685f595eb05869b Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 14 Apr 2026 18:06:35 +0000 Subject: [PATCH 04/47] Reset files to net11.0 Reset patterns: - global.json - NuGet.config - eng/Version.Details.xml - eng/Version.Details.props - eng/common/* --- NuGet.config | 23 +- eng/Version.Details.props | 56 +-- eng/Version.Details.xml | 112 ++--- eng/common/SetupNugetSources.ps1 | 17 +- eng/common/SetupNugetSources.sh | 17 +- eng/common/build.ps1 | 2 + eng/common/build.sh | 8 +- eng/common/core-templates/job/job.yml | 8 + .../job/publish-build-assets.yml | 16 +- eng/common/core-templates/job/renovate.yml | 196 ++++++++ .../job/source-index-stage1.yml | 6 +- .../core-templates/post-build/post-build.yml | 461 +++++++++--------- eng/common/core-templates/stages/renovate.yml | 111 +++++ .../core-templates/steps/generate-sbom.yml | 2 +- .../steps/install-microbuild-impl.yml | 34 ++ .../steps/install-microbuild.yml | 64 +-- .../core-templates/steps/source-build.yml | 2 +- .../steps/source-index-stage1-publish.yml | 8 +- eng/common/cross/build-rootfs.sh | 81 ++- eng/common/cross/toolchain.cmake | 15 +- eng/common/darc-init.sh | 2 +- eng/common/dotnet-install.sh | 2 +- eng/common/dotnet.sh | 2 +- eng/common/internal-feed-operations.sh | 2 +- eng/common/native/init-distro-rid.sh | 2 + eng/common/native/install-dependencies.sh | 11 +- eng/common/post-build/redact-logs.ps1 | 3 +- eng/common/renovate.env | 42 ++ eng/common/sdk-task.ps1 | 2 +- eng/common/sdk-task.sh | 2 +- eng/common/template-guidance.md | 3 - eng/common/templates-official/job/job.yml | 7 +- eng/common/templates/job/job.yml | 6 +- eng/common/tools.ps1 | 119 ++++- eng/common/tools.sh | 105 +++- global.json | 6 +- 36 files changed, 1039 insertions(+), 516 deletions(-) create mode 100644 eng/common/core-templates/job/renovate.yml create mode 100644 eng/common/core-templates/stages/renovate.yml create mode 100644 eng/common/core-templates/steps/install-microbuild-impl.yml create mode 100644 eng/common/renovate.env diff --git a/NuGet.config b/NuGet.config index 4a1ba428e474..1a682cee0a8b 100644 --- a/NuGet.config +++ b/NuGet.config @@ -9,10 +9,9 @@ - - - + + @@ -26,27 +25,13 @@ - - + + - - - - - - - - - - - - - - diff --git a/eng/Version.Details.props b/eng/Version.Details.props index 05cab507b167..4707f81fea59 100644 --- a/eng/Version.Details.props +++ b/eng/Version.Details.props @@ -6,36 +6,27 @@ This file should be imported by eng/Versions.props - 10.0.0-beta.26208.105 - 10.0.0-beta.26208.105 - 0.11.5-alpha.26070.104 - 10.0.0-beta.26208.105 - 10.0.3-servicing.26070.104 - 10.0.3 - 10.0.3 - 10.0.300-preview.0.26208.105 - 10.0.3 - 10.0.300-preview.26208.105 + 11.0.0-beta.26210.111 + 11.0.0-beta.26210.111 + 0.11.5-preview.26210.111 + 11.0.0-beta.26210.111 + 11.0.0-preview.4.26210.111 + 11.0.0-preview.4.26210.111 + 11.0.0-preview.4.26210.111 + 11.0.100-preview.4.26210.111 + 11.0.0-preview.4.26210.111 + 11.0.100-preview.4.26210.111 26.0.11017 - 18.5.9227 - 26.4.9011 + 26.4.10247 26.0.11017 - 18.5.9227 - 26.4.9011 + 26.4.10247 26.0.11017 - 15.5.9227 - 26.4.9011 + 26.4.10247 26.0.11017 - 18.5.9227 - 26.4.9011 + 26.4.10247 - 11.0.0-prerelease.26204.1 - - 18.0.9617 - 18.0.9617 - 15.0.9617 - 18.0.9617 + 10.0.0-prerelease.25516.4 @@ -52,23 +43,14 @@ This file should be imported by eng/Versions.props $(MicrosoftTemplateEngineAuthoringTasksPackageVersion) $(MicrosoftiOSSdknet100_260PackageVersion) - $(MicrosoftiOSSdknet90_185PackageVersion) - $(MicrosoftiOSSdknet90_264PackageVersion) + $(MicrosoftiOSSdknet100_264PackageVersion) $(MicrosoftMacCatalystSdknet100_260PackageVersion) - $(MicrosoftMacCatalystSdknet90_185PackageVersion) - $(MicrosoftMacCatalystSdknet90_264PackageVersion) + $(MicrosoftMacCatalystSdknet100_264PackageVersion) $(MicrosoftmacOSSdknet100_260PackageVersion) - $(MicrosoftmacOSSdknet90_155PackageVersion) - $(MicrosoftmacOSSdknet90_264PackageVersion) + $(MicrosoftmacOSSdknet100_264PackageVersion) $(MicrosofttvOSSdknet100_260PackageVersion) - $(MicrosofttvOSSdknet90_185PackageVersion) - $(MicrosofttvOSSdknet90_264PackageVersion) + $(MicrosofttvOSSdknet100_264PackageVersion) $(MicrosoftDotNetXHarnessiOSSharedPackageVersion) - - $(MicrosoftiOSSdknet90_180PackageVersion) - $(MicrosoftMacCatalystSdknet90_180PackageVersion) - $(MicrosoftmacOSSdknet90_150PackageVersion) - $(MicrosofttvOSSdknet90_180PackageVersion) diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 247bede398de..d5af9bf7a12a 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -1,80 +1,29 @@ - + https://github.com/dotnet/dotnet - b510aa83c1ffafde50d015e37bff96bc8a08ea91 + 5bed4499b04cbbaec57ac4209ae993acca3648cc - + https://github.com/dotnet/dotnet - 455f1358f39b4d38fa3893c327a45027c4a81843 + 5bed4499b04cbbaec57ac4209ae993acca3648cc - + https://github.com/dotnet/dotnet - 455f1358f39b4d38fa3893c327a45027c4a81843 + 5bed4499b04cbbaec57ac4209ae993acca3648cc - + https://github.com/dotnet/dotnet - 455f1358f39b4d38fa3893c327a45027c4a81843 + 5bed4499b04cbbaec57ac4209ae993acca3648cc - + https://github.com/dotnet/dotnet - 455f1358f39b4d38fa3893c327a45027c4a81843 + 5bed4499b04cbbaec57ac4209ae993acca3648cc - + https://github.com/dotnet/dotnet - 455f1358f39b4d38fa3893c327a45027c4a81843 - - - - https://github.com/dotnet/macios - 4681bf928d70aa79cff2c33ad324b3be9c62b66d - - - https://github.com/dotnet/macios - 4681bf928d70aa79cff2c33ad324b3be9c62b66d - - - https://github.com/dotnet/macios - 4681bf928d70aa79cff2c33ad324b3be9c62b66d - - - https://github.com/dotnet/macios - 4681bf928d70aa79cff2c33ad324b3be9c62b66d - - - - https://github.com/xamarin/xamarin-macios - 797d30720e5e629d23eb146935da94cb1b61047e - - - https://github.com/xamarin/xamarin-macios - 797d30720e5e629d23eb146935da94cb1b61047e - - - https://github.com/xamarin/xamarin-macios - 797d30720e5e629d23eb146935da94cb1b61047e - - - https://github.com/xamarin/xamarin-macios - 797d30720e5e629d23eb146935da94cb1b61047e - - - - https://github.com/dotnet/macios - 9b4af11858de7ad9d06125466dd8fdb282e7f138 - - - https://github.com/dotnet/macios - 9b4af11858de7ad9d06125466dd8fdb282e7f138 - - - https://github.com/dotnet/macios - 9b4af11858de7ad9d06125466dd8fdb282e7f138 - - - https://github.com/dotnet/macios - 9b4af11858de7ad9d06125466dd8fdb282e7f138 + 5bed4499b04cbbaec57ac4209ae993acca3648cc @@ -93,27 +42,44 @@ https://github.com/dotnet/macios 23eb1c2c9465fe76c810c8a69982c1254161f4b0 + + + https://github.com/dotnet/macios + 3898844ae5188edf80ba9602702cf4da89df9cd4 + + + https://github.com/dotnet/macios + 3898844ae5188edf80ba9602702cf4da89df9cd4 + + + https://github.com/dotnet/macios + 3898844ae5188edf80ba9602702cf4da89df9cd4 + + + https://github.com/dotnet/macios + 3898844ae5188edf80ba9602702cf4da89df9cd4 + - + https://github.com/dotnet/dotnet - b510aa83c1ffafde50d015e37bff96bc8a08ea91 + 5bed4499b04cbbaec57ac4209ae993acca3648cc - + https://github.com/dotnet/dotnet - b510aa83c1ffafde50d015e37bff96bc8a08ea91 + 5bed4499b04cbbaec57ac4209ae993acca3648cc - + https://github.com/dotnet/dotnet - b510aa83c1ffafde50d015e37bff96bc8a08ea91 + 5bed4499b04cbbaec57ac4209ae993acca3648cc - + https://github.com/dotnet/xharness - 0668c80ec27851f3c7f1b3e4536110a1d39af587 + 88399512021dfa8b5f45d91f84c8ce6f0959b127 - + https://github.com/dotnet/dotnet - b510aa83c1ffafde50d015e37bff96bc8a08ea91 + 5bed4499b04cbbaec57ac4209ae993acca3648cc diff --git a/eng/common/SetupNugetSources.ps1 b/eng/common/SetupNugetSources.ps1 index 65ed3a8adef0..fc8d618014e0 100644 --- a/eng/common/SetupNugetSources.ps1 +++ b/eng/common/SetupNugetSources.ps1 @@ -1,7 +1,6 @@ # This script adds internal feeds required to build commits that depend on internal package sources. For instance, -# dotnet6-internal would be added automatically if dotnet6 was found in the nuget.config file. Similarly, -# dotnet-eng-internal and dotnet-tools-internal are added if dotnet-eng and dotnet-tools are present. -# In addition, this script also enables disabled internal Maestro (darc-int*) feeds. +# dotnet6-internal would be added automatically if dotnet6 was found in the nuget.config file. In addition also enables +# disabled internal Maestro (darc-int*) feeds. # # Optionally, this script also adds a credential entry for each of the internal feeds if supplied. # @@ -174,16 +173,4 @@ foreach ($dotnetVersion in $dotnetVersions) { } } -# Check for dotnet-eng and add dotnet-eng-internal if present -$dotnetEngSource = $sources.SelectSingleNode("add[@key='dotnet-eng']") -if ($dotnetEngSource -ne $null) { - AddOrEnablePackageSource -Sources $sources -DisabledPackageSources $disabledSources -SourceName "dotnet-eng-internal" -SourceEndPoint "https://pkgs.dev.azure.com/dnceng/internal/_packaging/dotnet-eng-internal/nuget/$feedSuffix" -Creds $creds -Username $userName -pwd $Password -} - -# Check for dotnet-tools and add dotnet-tools-internal if present -$dotnetToolsSource = $sources.SelectSingleNode("add[@key='dotnet-tools']") -if ($dotnetToolsSource -ne $null) { - AddOrEnablePackageSource -Sources $sources -DisabledPackageSources $disabledSources -SourceName "dotnet-tools-internal" -SourceEndPoint "https://pkgs.dev.azure.com/dnceng/internal/_packaging/dotnet-tools-internal/nuget/$feedSuffix" -Creds $creds -Username $userName -pwd $Password -} - $doc.Save($filename) diff --git a/eng/common/SetupNugetSources.sh b/eng/common/SetupNugetSources.sh index b2163abbe71b..b97cc536379d 100644 --- a/eng/common/SetupNugetSources.sh +++ b/eng/common/SetupNugetSources.sh @@ -1,9 +1,8 @@ #!/usr/bin/env bash # This script adds internal feeds required to build commits that depend on internal package sources. For instance, -# dotnet6-internal would be added automatically if dotnet6 was found in the nuget.config file. Similarly, -# dotnet-eng-internal and dotnet-tools-internal are added if dotnet-eng and dotnet-tools are present. -# In addition, this script also enables disabled internal Maestro (darc-int*) feeds. +# dotnet6-internal would be added automatically if dotnet6 was found in the nuget.config file. In addition also enables +# disabled internal Maestro (darc-int*) feeds. # # Optionally, this script also adds a credential entry for each of the internal feeds if supplied. # @@ -174,18 +173,6 @@ for DotNetVersion in ${DotNetVersions[@]} ; do fi done -# Check for dotnet-eng and add dotnet-eng-internal if present -grep -i " /dev/null -if [ "$?" == "0" ]; then - AddOrEnablePackageSource "dotnet-eng-internal" "https://pkgs.dev.azure.com/dnceng/internal/_packaging/dotnet-eng-internal/nuget/$FeedSuffix" -fi - -# Check for dotnet-tools and add dotnet-tools-internal if present -grep -i " /dev/null -if [ "$?" == "0" ]; then - AddOrEnablePackageSource "dotnet-tools-internal" "https://pkgs.dev.azure.com/dnceng/internal/_packaging/dotnet-tools-internal/nuget/$FeedSuffix" -fi - # I want things split line by line PrevIFS=$IFS IFS=$'\n' diff --git a/eng/common/build.ps1 b/eng/common/build.ps1 index 8cfee107e7a3..18397a60eb85 100644 --- a/eng/common/build.ps1 +++ b/eng/common/build.ps1 @@ -6,6 +6,7 @@ Param( [string][Alias('v')]$verbosity = "minimal", [string] $msbuildEngine = $null, [bool] $warnAsError = $true, + [string] $warnNotAsError = '', [bool] $nodeReuse = $true, [switch] $buildCheck = $false, [switch][Alias('r')]$restore, @@ -70,6 +71,7 @@ function Print-Usage() { Write-Host " -excludeCIBinarylog Don't output binary log (short: -nobl)" Write-Host " -prepareMachine Prepare machine for CI run, clean up processes after build" Write-Host " -warnAsError Sets warnaserror msbuild parameter ('true' or 'false')" + Write-Host " -warnNotAsError Sets a semi-colon delimited list of warning codes that should not be treated as errors" Write-Host " -msbuildEngine Msbuild engine to use to run build ('dotnet', 'vs', or unspecified)." Write-Host " -excludePrereleaseVS Set to exclude build engines in prerelease versions of Visual Studio" Write-Host " -nativeToolsOnMachine Sets the native tools on machine environment variable (indicating that the script should use native tools on machine)" diff --git a/eng/common/build.sh b/eng/common/build.sh index 9767bb411a4f..5883e53bcfb1 100644 --- a/eng/common/build.sh +++ b/eng/common/build.sh @@ -42,6 +42,7 @@ usage() echo " --prepareMachine Prepare machine for CI run, clean up processes after build" echo " --nodeReuse Sets nodereuse msbuild parameter ('true' or 'false')" echo " --warnAsError Sets warnaserror msbuild parameter ('true' or 'false')" + echo " --warnNotAsError Sets a semi-colon delimited list of warning codes that should not be treated as errors" echo " --buildCheck Sets /check msbuild parameter" echo " --fromVMR Set when building from within the VMR" echo "" @@ -78,6 +79,7 @@ ci=false clean=false warn_as_error=true +warn_not_as_error='' node_reuse=true build_check=false binary_log=false @@ -92,7 +94,7 @@ runtime_source_feed='' runtime_source_feed_key='' properties=() -while [[ $# > 0 ]]; do +while [[ $# -gt 0 ]]; do opt="$(echo "${1/#--/-}" | tr "[:upper:]" "[:lower:]")" case "$opt" in -help|-h) @@ -176,6 +178,10 @@ while [[ $# > 0 ]]; do warn_as_error=$2 shift ;; + -warnnotaserror) + warn_not_as_error=$2 + shift + ;; -nodereuse) node_reuse=$2 shift diff --git a/eng/common/core-templates/job/job.yml b/eng/common/core-templates/job/job.yml index 5ce518406198..748c4f07a64d 100644 --- a/eng/common/core-templates/job/job.yml +++ b/eng/common/core-templates/job/job.yml @@ -19,6 +19,8 @@ parameters: # publishing defaults artifacts: '' enableMicrobuild: false + enablePreviewMicrobuild: false + microbuildPluginVersion: 'latest' enableMicrobuildForMacAndLinux: false microbuildUseESRP: true enablePublishBuildArtifacts: false @@ -71,6 +73,8 @@ jobs: templateContext: ${{ parameters.templateContext }} variables: + - name: AllowPtrToDetectTestRunRetryFiles + value: true - ${{ if ne(parameters.enableTelemetry, 'false') }}: - name: DOTNET_CLI_TELEMETRY_PROFILE value: '$(Build.Repository.Uri)' @@ -128,6 +132,8 @@ jobs: - template: /eng/common/core-templates/steps/install-microbuild.yml parameters: enableMicrobuild: ${{ parameters.enableMicrobuild }} + enablePreviewMicrobuild: ${{ parameters.enablePreviewMicrobuild }} + microbuildPluginVersion: ${{ parameters.microbuildPluginVersion }} enableMicrobuildForMacAndLinux: ${{ parameters.enableMicrobuildForMacAndLinux }} microbuildUseESRP: ${{ parameters.microbuildUseESRP }} continueOnError: ${{ parameters.continueOnError }} @@ -153,6 +159,8 @@ jobs: - template: /eng/common/core-templates/steps/cleanup-microbuild.yml parameters: enableMicrobuild: ${{ parameters.enableMicrobuild }} + enablePreviewMicrobuild: ${{ parameters.enablePreviewMicrobuild }} + microbuildPluginVersion: ${{ parameters.microbuildPluginVersion }} enableMicrobuildForMacAndLinux: ${{ parameters.enableMicrobuildForMacAndLinux }} continueOnError: ${{ parameters.continueOnError }} diff --git a/eng/common/core-templates/job/publish-build-assets.yml b/eng/common/core-templates/job/publish-build-assets.yml index 9afcb8ae1590..9d7490518c48 100644 --- a/eng/common/core-templates/job/publish-build-assets.yml +++ b/eng/common/core-templates/job/publish-build-assets.yml @@ -91,8 +91,8 @@ jobs: fetchDepth: 3 clean: true - - ${{ if eq(parameters.isAssetlessBuild, 'false') }}: - - ${{ if eq(parameters.publishingVersion, 3) }}: + - ${{ if eq(parameters.isAssetlessBuild, 'false') }}: + - ${{ if eq(parameters.publishingVersion, 3) }}: - task: DownloadPipelineArtifact@2 displayName: Download Asset Manifests inputs: @@ -117,7 +117,7 @@ jobs: flattenFolders: true condition: ${{ parameters.condition }} continueOnError: ${{ parameters.continueOnError }} - + - task: NuGetAuthenticate@1 # Populate internal runtime variables. @@ -125,7 +125,7 @@ jobs: ${{ if eq(variables['System.TeamProject'], 'DevDiv') }}: parameters: legacyCredential: $(dn-bot-dnceng-artifact-feeds-rw) - + - template: /eng/common/templates/steps/enable-internal-runtimes.yml - task: AzureCLI@2 @@ -145,7 +145,7 @@ jobs: condition: ${{ parameters.condition }} continueOnError: ${{ parameters.continueOnError }} - + - task: powershell@2 displayName: Create ReleaseConfigs Artifact inputs: @@ -173,7 +173,7 @@ jobs: artifactName: AssetManifests displayName: 'Publish Merged Manifest' retryCountOnTaskFailure: 10 # for any logs being locked - sbomEnabled: false # we don't need SBOM for logs + sbomEnabled: false # we don't need SBOM for logs - template: /eng/common/core-templates/steps/publish-build-artifacts.yml parameters: @@ -190,7 +190,7 @@ jobs: BARBuildId: ${{ parameters.BARBuildId }} PromoteToChannelIds: ${{ parameters.PromoteToChannelIds }} is1ESPipeline: ${{ parameters.is1ESPipeline }} - + # Darc is targeting 8.0, so make sure it's installed - task: UseDotNet@2 inputs: @@ -218,4 +218,4 @@ jobs: - template: /eng/common/core-templates/steps/publish-logs.yml parameters: is1ESPipeline: ${{ parameters.is1ESPipeline }} - JobLabel: 'Publish_Artifacts_Logs' + JobLabel: 'Publish_Artifacts_Logs' diff --git a/eng/common/core-templates/job/renovate.yml b/eng/common/core-templates/job/renovate.yml new file mode 100644 index 000000000000..ab233539b5dc --- /dev/null +++ b/eng/common/core-templates/job/renovate.yml @@ -0,0 +1,196 @@ +# -------------------------------------------------------------------------------------- +# Renovate Bot Job Template +# -------------------------------------------------------------------------------------- +# This Azure DevOps pipeline job template runs Renovate (https://docs.renovatebot.com/) +# to automatically update dependencies in a GitHub repository. +# +# Renovate scans the repository for dependency files and creates pull requests to update +# outdated dependencies based on the configuration specified in the renovateConfigPath +# parameter. +# +# Usage: +# For each product repo wanting to make use of Renovate, this template is called from +# an internal Azure DevOps pipeline, typically with a schedule trigger, to check for +# and propose dependency updates. +# +# For more info, see https://github.com/dotnet/arcade/blob/main/Documentation/Renovate.md +# -------------------------------------------------------------------------------------- + +parameters: + +# Path to the Renovate configuration file within the repository. +- name: renovateConfigPath + type: string + default: 'eng/renovate.json' + +# GitHub repository to run Renovate against, in the format 'owner/repo'. +# This could technically be any repo but convention is to target the same +# repo that contains the calling pipeline. The Renovate config file would +# be co-located with the pipeline's repo and, in most cases, the config +# file is specific to the repo being targeted. +- name: gitHubRepo + type: string + +# List of base branches to target for Renovate PRs. +# NOTE: The Renovate configuration file is always read from the branch where the +# pipeline is run, NOT from the target branches specified here. If you need different +# configurations for different branches, run the pipeline from each branch separately. +- name: baseBranches + type: object + default: + - main + +# When true, Renovate will run in dry run mode, which previews changes without creating PRs. +# See the 'Run Renovate' step log output for details of what would have been changed. +- name: dryRun + type: boolean + default: false + +# By default, Renovate will not recreate a PR for a given dependency/version pair that was +# previously closed. This allows opting in to always recreating PRs even if they were +# previously closed. +- name: forceRecreatePR + type: boolean + default: false + +# Name of the arcade repository resource in the pipeline. +# This allows repos which haven't been onboarded to Arcade to still use this +# template by checking out the repo as a resource with a custom name and pointing +# this parameter to it. +- name: arcadeRepoResource + type: string + default: self + +# Directory name for the self repo under $(Build.SourcesDirectory) in multi-checkout. +# In multi-checkout (when arcadeRepoResource != 'self'), Azure DevOps checks out the +# self repo to $(Build.SourcesDirectory)/. Set this to match the auto-generated +# directory name. Using the auto-generated name is necessary rather than explicitly +# defining a checkout path because container jobs expect repos to live under the agent's +# workspace ($(Pipeline.Workspace)). On some self-hosted setups the host path +# (e.g., /mnt/vss/_work) differs from the container path (e.g., /__w), and a custom checkout +# path can fail validation. Using the default checkout location keeps the paths consistent +# and avoids this issue. +- name: selfRepoName + type: string + default: '' +- name: arcadeRepoName + type: string + default: '' + +# Pool configuration for the job. +- name: pool + type: object + default: + name: NetCore1ESPool-Internal + image: build.azurelinux.3.amd64 + os: linux + +jobs: +- job: Renovate + displayName: Run Renovate + container: RenovateContainer + variables: + - group: dotnet-renovate-bot + # The Renovate version is automatically updated by https://github.com/dotnet/arcade/blob/main/azure-pipelines-renovate.yml. + # Changing the variable name here would require updating the name in https://github.com/dotnet/arcade/blob/main/eng/renovate.json as well. + - name: renovateVersion + value: '42' + readonly: true + - name: renovateLogFilePath + value: '$(Build.ArtifactStagingDirectory)/renovate.json' + readonly: true + - name: dryRunArg + readonly: true + ${{ if eq(parameters.dryRun, true) }}: + value: 'full' + ${{ else }}: + value: '' + - name: recreateWhenArg + readonly: true + ${{ if eq(parameters.forceRecreatePR, true) }}: + value: 'always' + ${{ else }}: + value: '' + # In multi-checkout (without custom paths), Azure DevOps places each repo under + # $(Build.SourcesDirectory)/. selfRepoName must be provided in that case. + - name: selfRepoPath + readonly: true + ${{ if eq(parameters.arcadeRepoResource, 'self') }}: + value: '$(Build.SourcesDirectory)' + ${{ else }}: + value: '$(Build.SourcesDirectory)/${{ parameters.selfRepoName }}' + - name: arcadeRepoPath + readonly: true + ${{ if eq(parameters.arcadeRepoResource, 'self') }}: + value: '$(Build.SourcesDirectory)' + ${{ else }}: + value: '$(Build.SourcesDirectory)/${{ parameters.arcadeRepoName }}' + pool: ${{ parameters.pool }} + + templateContext: + outputParentDirectory: $(Build.ArtifactStagingDirectory) + outputs: + - output: pipelineArtifact + displayName: Publish Renovate Log + condition: succeededOrFailed() + targetPath: $(Build.ArtifactStagingDirectory) + artifactName: $(Agent.JobName)_Logs_Attempt$(System.JobAttempt) + sbomEnabled: false + + steps: + - checkout: self + fetchDepth: 1 + + - ${{ if ne(parameters.arcadeRepoResource, 'self') }}: + - checkout: ${{ parameters.arcadeRepoResource }} + fetchDepth: 1 + + - script: | + renovate-config-validator $(selfRepoPath)/${{parameters.renovateConfigPath}} 2>&1 | tee /tmp/renovate-config-validator.out + validatorExit=${PIPESTATUS[0]} + if grep -q '^ WARN:' /tmp/renovate-config-validator.out; then + echo "##vso[task.logissue type=warning]Renovate config validator produced warnings." + echo "##vso[task.complete result=SucceededWithIssues]" + fi + exit $validatorExit + displayName: Validate Renovate config + env: + LOG_LEVEL: info + LOG_FILE_LEVEL: debug + LOG_FILE: $(Build.ArtifactStagingDirectory)/renovate-config-validator.json + + - script: | + . $(arcadeRepoPath)/eng/common/renovate.env + renovate 2>&1 | tee /tmp/renovate.out + renovateExit=${PIPESTATUS[0]} + if grep -q '^ WARN:' /tmp/renovate.out; then + echo "##vso[task.logissue type=warning]Renovate produced warnings." + echo "##vso[task.complete result=SucceededWithIssues]" + fi + exit $renovateExit + displayName: Run Renovate + env: + RENOVATE_FORK_TOKEN: $(BotAccount-dotnet-renovate-bot-PAT) + RENOVATE_TOKEN: $(BotAccount-dotnet-renovate-bot-PAT) + RENOVATE_REPOSITORIES: ${{parameters.gitHubRepo}} + RENOVATE_BASE_BRANCHES: ${{ convertToJson(parameters.baseBranches) }} + RENOVATE_DRY_RUN: $(dryRunArg) + RENOVATE_RECREATE_WHEN: $(recreateWhenArg) + LOG_LEVEL: info + LOG_FILE_LEVEL: debug + LOG_FILE: $(renovateLogFilePath) + RENOVATE_CONFIG_FILE: $(selfRepoPath)/${{parameters.renovateConfigPath}} + + - script: | + echo "PRs created by Renovate:" + if [ -s "$(renovateLogFilePath)" ]; then + if ! jq -r 'select(.msg == "PR created" and .pr != null) | "https://github.com/\(.repository)/pull/\(.pr)"' "$(renovateLogFilePath)" | sort -u; then + echo "##vso[task.logissue type=warning]Failed to parse Renovate log file with jq." + echo "##vso[task.complete result=SucceededWithIssues]" + fi + else + echo "##vso[task.logissue type=warning]No Renovate log file found or file is empty." + echo "##vso[task.complete result=SucceededWithIssues]" + fi + displayName: List created PRs + condition: and(succeededOrFailed(), eq('${{ parameters.dryRun }}', false)) diff --git a/eng/common/core-templates/job/source-index-stage1.yml b/eng/common/core-templates/job/source-index-stage1.yml index 76baf5c27258..bac6ac5faac3 100644 --- a/eng/common/core-templates/job/source-index-stage1.yml +++ b/eng/common/core-templates/job/source-index-stage1.yml @@ -15,6 +15,8 @@ jobs: variables: - name: BinlogPath value: ${{ parameters.binlogPath }} + - name: skipComponentGovernanceDetection + value: true - template: /eng/common/core-templates/variables/pool-providers.yml parameters: is1ESPipeline: ${{ parameters.is1ESPipeline }} @@ -25,10 +27,10 @@ jobs: pool: ${{ if eq(variables['System.TeamProject'], 'public') }}: name: $(DncEngPublicBuildPool) - image: windows.vs2026preview.scout.amd64.open + image: windows.vs2026.amd64.open ${{ if eq(variables['System.TeamProject'], 'internal') }}: name: $(DncEngInternalBuildPool) - image: windows.vs2026preview.scout.amd64 + image: windows.vs2026.amd64 steps: - ${{ if eq(parameters.is1ESPipeline, '') }}: diff --git a/eng/common/core-templates/post-build/post-build.yml b/eng/common/core-templates/post-build/post-build.yml index 2df4acb76859..0994189969f3 100644 --- a/eng/common/core-templates/post-build/post-build.yml +++ b/eng/common/core-templates/post-build/post-build.yml @@ -1,117 +1,107 @@ parameters: - # Which publishing infra should be used. THIS SHOULD MATCH THE VERSION ON THE BUILD MANIFEST. - # Publishing V1 is no longer supported - # Publishing V2 is no longer supported - # Publishing V3 is the default - - name: publishingInfraVersion - displayName: Which version of publishing should be used to promote the build definition? - type: number - default: 3 - values: - - 3 - - - name: BARBuildId - displayName: BAR Build Id - type: number - default: 0 - - - name: PromoteToChannelIds - displayName: Channel to promote BARBuildId to - type: string - default: '' - - - name: enableSourceLinkValidation - displayName: Enable SourceLink validation - type: boolean - default: false - - - name: enableSigningValidation - displayName: Enable signing validation - type: boolean - default: true - - - name: enableSymbolValidation - displayName: Enable symbol validation - type: boolean - default: false - - - name: enableNugetValidation - displayName: Enable NuGet validation - type: boolean - default: true - - - name: publishInstallersAndChecksums - displayName: Publish installers and checksums - type: boolean - default: true - - - name: requireDefaultChannels - displayName: Fail the build if there are no default channel(s) registrations for the current build - type: boolean - default: false - - - name: SDLValidationParameters - type: object - default: - enable: false - publishGdn: false - continueOnError: false - params: '' - artifactNames: '' - downloadArtifacts: true - - - name: isAssetlessBuild - type: boolean - displayName: Is Assetless Build - default: false - - # These parameters let the user customize the call to sdk-task.ps1 for publishing - # symbols & general artifacts as well as for signing validation - - name: symbolPublishingAdditionalParameters - displayName: Symbol publishing additional parameters - type: string - default: '' - - - name: artifactsPublishingAdditionalParameters - displayName: Artifact publishing additional parameters - type: string - default: '' - - - name: signingValidationAdditionalParameters - displayName: Signing validation additional parameters - type: string - default: '' - - # Which stages should finish execution before post-build stages start - - name: validateDependsOn - type: object - default: - - build - - - name: publishDependsOn - type: object - default: - - Validate - - # Optional: Call asset publishing rather than running in a separate stage - - name: publishAssetsImmediately - type: boolean - default: false - - - name: is1ESPipeline - type: boolean - default: false +# Which publishing infra should be used. THIS SHOULD MATCH THE VERSION ON THE BUILD MANIFEST. +# Publishing V1 is no longer supported +# Publishing V2 is no longer supported +# Publishing V3 is the default +- name: publishingInfraVersion + displayName: Which version of publishing should be used to promote the build definition? + type: number + default: 3 + values: + - 3 + +- name: BARBuildId + displayName: BAR Build Id + type: number + default: 0 + +- name: PromoteToChannelIds + displayName: Channel to promote BARBuildId to + type: string + default: '' + +- name: enableSourceLinkValidation + displayName: Enable SourceLink validation + type: boolean + default: false + +- name: enableSigningValidation + displayName: Enable signing validation + type: boolean + default: true + +- name: enableSymbolValidation + displayName: Enable symbol validation + type: boolean + default: false + +- name: enableNugetValidation + displayName: Enable NuGet validation + type: boolean + default: true + +- name: publishInstallersAndChecksums + displayName: Publish installers and checksums + type: boolean + default: true + +- name: requireDefaultChannels + displayName: Fail the build if there are no default channel(s) registrations for the current build + type: boolean + default: false + +- name: isAssetlessBuild + type: boolean + displayName: Is Assetless Build + default: false + +# These parameters let the user customize the call to sdk-task.ps1 for publishing +# symbols & general artifacts as well as for signing validation +- name: symbolPublishingAdditionalParameters + displayName: Symbol publishing additional parameters + type: string + default: '' + +- name: artifactsPublishingAdditionalParameters + displayName: Artifact publishing additional parameters + type: string + default: '' + +- name: signingValidationAdditionalParameters + displayName: Signing validation additional parameters + type: string + default: '' + +# Which stages should finish execution before post-build stages start +- name: validateDependsOn + type: object + default: + - build + +- name: publishDependsOn + type: object + default: + - Validate + +# Optional: Call asset publishing rather than running in a separate stage +- name: publishAssetsImmediately + type: boolean + default: false + +- name: is1ESPipeline + type: boolean + default: false stages: -- ${{ if or(eq( parameters.enableNugetValidation, 'true'), eq(parameters.enableSigningValidation, 'true'), eq(parameters.enableSourceLinkValidation, 'true'), eq(parameters.SDLValidationParameters.enable, 'true')) }}: +- ${{ if or(eq( parameters.enableNugetValidation, 'true'), eq(parameters.enableSigningValidation, 'true'), eq(parameters.enableSourceLinkValidation, 'true')) }}: - stage: Validate dependsOn: ${{ parameters.validateDependsOn }} displayName: Validate Build Assets variables: - - template: /eng/common/core-templates/post-build/common-variables.yml - - template: /eng/common/core-templates/variables/pool-providers.yml - parameters: - is1ESPipeline: ${{ parameters.is1ESPipeline }} + - template: /eng/common/core-templates/post-build/common-variables.yml + - template: /eng/common/core-templates/variables/pool-providers.yml + parameters: + is1ESPipeline: ${{ parameters.is1ESPipeline }} jobs: - job: displayName: NuGet Validation @@ -127,35 +117,35 @@ stages: ${{ else }}: ${{ if eq(parameters.is1ESPipeline, true) }}: name: $(DncEngInternalBuildPool) - image: windows.vs2026preview.scout.amd64 + image: windows.vs2026.amd64 os: windows ${{ else }}: name: $(DncEngInternalBuildPool) - demands: ImageOverride -equals windows.vs2026preview.scout.amd64 + demands: ImageOverride -equals windows.vs2026.amd64 steps: - - template: /eng/common/core-templates/post-build/setup-maestro-vars.yml - parameters: - BARBuildId: ${{ parameters.BARBuildId }} - PromoteToChannelIds: ${{ parameters.PromoteToChannelIds }} - is1ESPipeline: ${{ parameters.is1ESPipeline }} - - - task: DownloadBuildArtifacts@0 - displayName: Download Package Artifacts - inputs: - buildType: specific - buildVersionToDownload: specific - project: $(AzDOProjectName) - pipeline: $(AzDOPipelineId) - buildId: $(AzDOBuildId) - artifactName: PackageArtifacts - checkDownloadedFiles: true - - - task: PowerShell@2 - displayName: Validate - inputs: - filePath: $(System.DefaultWorkingDirectory)/eng/common/post-build/nuget-validation.ps1 - arguments: -PackagesPath $(Build.ArtifactStagingDirectory)/PackageArtifacts/ + - template: /eng/common/core-templates/post-build/setup-maestro-vars.yml + parameters: + BARBuildId: ${{ parameters.BARBuildId }} + PromoteToChannelIds: ${{ parameters.PromoteToChannelIds }} + is1ESPipeline: ${{ parameters.is1ESPipeline }} + + - task: DownloadBuildArtifacts@0 + displayName: Download Package Artifacts + inputs: + buildType: specific + buildVersionToDownload: specific + project: $(AzDOProjectName) + pipeline: $(AzDOPipelineId) + buildId: $(AzDOBuildId) + artifactName: PackageArtifacts + checkDownloadedFiles: true + + - task: PowerShell@2 + displayName: Validate + inputs: + filePath: $(System.DefaultWorkingDirectory)/eng/common/post-build/nuget-validation.ps1 + arguments: -PackagesPath $(Build.ArtifactStagingDirectory)/PackageArtifacts/ - job: displayName: Signing Validation @@ -169,54 +159,54 @@ stages: os: windows # If it's not devdiv, it's dnceng ${{ else }}: - ${{ if eq(parameters.is1ESPipeline, true) }}: + ${{ if eq(parameters.is1ESPipeline, true) }}: name: $(DncEngInternalBuildPool) image: windows.vs2026.amd64 os: windows ${{ else }}: name: $(DncEngInternalBuildPool) - demands: ImageOverride -equals windows.vs2026preview.scout.amd64 + demands: ImageOverride -equals windows.vs2026.amd64 steps: - - template: /eng/common/core-templates/post-build/setup-maestro-vars.yml - parameters: - BARBuildId: ${{ parameters.BARBuildId }} - PromoteToChannelIds: ${{ parameters.PromoteToChannelIds }} - is1ESPipeline: ${{ parameters.is1ESPipeline }} - - - task: DownloadBuildArtifacts@0 - displayName: Download Package Artifacts - inputs: - buildType: specific - buildVersionToDownload: specific - project: $(AzDOProjectName) - pipeline: $(AzDOPipelineId) - buildId: $(AzDOBuildId) - artifactName: PackageArtifacts - checkDownloadedFiles: true - - # This is necessary whenever we want to publish/restore to an AzDO private feed - # Since sdk-task.ps1 tries to restore packages we need to do this authentication here - # otherwise it'll complain about accessing a private feed. - - task: NuGetAuthenticate@1 - displayName: 'Authenticate to AzDO Feeds' - - # Signing validation will optionally work with the buildmanifest file which is downloaded from - # Azure DevOps above. - - task: PowerShell@2 - displayName: Validate - inputs: - filePath: eng\common\sdk-task.ps1 - arguments: -task SigningValidation -restore -msbuildEngine vs - /p:PackageBasePath='$(Build.ArtifactStagingDirectory)/PackageArtifacts' - /p:SignCheckExclusionsFile='$(System.DefaultWorkingDirectory)/eng/SignCheckExclusionsFile.txt' - ${{ parameters.signingValidationAdditionalParameters }} - - - template: /eng/common/core-templates/steps/publish-logs.yml - parameters: - is1ESPipeline: ${{ parameters.is1ESPipeline }} - StageLabel: 'Validation' - JobLabel: 'Signing' - BinlogToolVersion: $(BinlogToolVersion) + - template: /eng/common/core-templates/post-build/setup-maestro-vars.yml + parameters: + BARBuildId: ${{ parameters.BARBuildId }} + PromoteToChannelIds: ${{ parameters.PromoteToChannelIds }} + is1ESPipeline: ${{ parameters.is1ESPipeline }} + + - task: DownloadBuildArtifacts@0 + displayName: Download Package Artifacts + inputs: + buildType: specific + buildVersionToDownload: specific + project: $(AzDOProjectName) + pipeline: $(AzDOPipelineId) + buildId: $(AzDOBuildId) + artifactName: PackageArtifacts + checkDownloadedFiles: true + + # This is necessary whenever we want to publish/restore to an AzDO private feed + # Since sdk-task.ps1 tries to restore packages we need to do this authentication here + # otherwise it'll complain about accessing a private feed. + - task: NuGetAuthenticate@1 + displayName: 'Authenticate to AzDO Feeds' + + # Signing validation will optionally work with the buildmanifest file which is downloaded from + # Azure DevOps above. + - task: PowerShell@2 + displayName: Validate + inputs: + filePath: eng\common\sdk-task.ps1 + arguments: -task SigningValidation -restore + /p:PackageBasePath='$(Build.ArtifactStagingDirectory)/PackageArtifacts' + /p:SignCheckExclusionsFile='$(System.DefaultWorkingDirectory)/eng/SignCheckExclusionsFile.txt' + ${{ parameters.signingValidationAdditionalParameters }} + + - template: /eng/common/core-templates/steps/publish-logs.yml + parameters: + is1ESPipeline: ${{ parameters.is1ESPipeline }} + StageLabel: 'Validation' + JobLabel: 'Signing' + BinlogToolVersion: $(BinlogToolVersion) - job: displayName: SourceLink Validation @@ -230,54 +220,54 @@ stages: os: windows # If it's not devdiv, it's dnceng ${{ else }}: - ${{ if eq(parameters.is1ESPipeline, true) }}: + ${{ if eq(parameters.is1ESPipeline, true) }}: name: $(DncEngInternalBuildPool) image: windows.vs2026.amd64 os: windows ${{ else }}: name: $(DncEngInternalBuildPool) - demands: ImageOverride -equals windows.vs2026preview.scout.amd64 + demands: ImageOverride -equals windows.vs2026.amd64 steps: - - template: /eng/common/core-templates/post-build/setup-maestro-vars.yml - parameters: - BARBuildId: ${{ parameters.BARBuildId }} - PromoteToChannelIds: ${{ parameters.PromoteToChannelIds }} - is1ESPipeline: ${{ parameters.is1ESPipeline }} - - - task: DownloadBuildArtifacts@0 - displayName: Download Blob Artifacts - inputs: - buildType: specific - buildVersionToDownload: specific - project: $(AzDOProjectName) - pipeline: $(AzDOPipelineId) - buildId: $(AzDOBuildId) - artifactName: BlobArtifacts - checkDownloadedFiles: true - - - task: PowerShell@2 - displayName: Validate - inputs: - filePath: $(System.DefaultWorkingDirectory)/eng/common/post-build/sourcelink-validation.ps1 - arguments: -InputPath $(Build.ArtifactStagingDirectory)/BlobArtifacts/ - -ExtractPath $(Agent.BuildDirectory)/Extract/ - -GHRepoName $(Build.Repository.Name) - -GHCommit $(Build.SourceVersion) - -SourcelinkCliVersion $(SourceLinkCLIVersion) - continueOnError: true + - template: /eng/common/core-templates/post-build/setup-maestro-vars.yml + parameters: + BARBuildId: ${{ parameters.BARBuildId }} + PromoteToChannelIds: ${{ parameters.PromoteToChannelIds }} + is1ESPipeline: ${{ parameters.is1ESPipeline }} + + - task: DownloadBuildArtifacts@0 + displayName: Download Blob Artifacts + inputs: + buildType: specific + buildVersionToDownload: specific + project: $(AzDOProjectName) + pipeline: $(AzDOPipelineId) + buildId: $(AzDOBuildId) + artifactName: BlobArtifacts + checkDownloadedFiles: true + + - task: PowerShell@2 + displayName: Validate + inputs: + filePath: $(System.DefaultWorkingDirectory)/eng/common/post-build/sourcelink-validation.ps1 + arguments: -InputPath $(Build.ArtifactStagingDirectory)/BlobArtifacts/ + -ExtractPath $(Agent.BuildDirectory)/Extract/ + -GHRepoName $(Build.Repository.Name) + -GHCommit $(Build.SourceVersion) + -SourcelinkCliVersion $(SourceLinkCLIVersion) + continueOnError: true - ${{ if ne(parameters.publishAssetsImmediately, 'true') }}: - stage: publish_using_darc - ${{ if or(eq(parameters.enableNugetValidation, 'true'), eq(parameters.enableSigningValidation, 'true'), eq(parameters.enableSourceLinkValidation, 'true'), eq(parameters.SDLValidationParameters.enable, 'true')) }}: + ${{ if or(eq(parameters.enableNugetValidation, 'true'), eq(parameters.enableSigningValidation, 'true'), eq(parameters.enableSourceLinkValidation, 'true')) }}: dependsOn: ${{ parameters.publishDependsOn }} ${{ else }}: dependsOn: ${{ parameters.validateDependsOn }} displayName: Publish using Darc variables: - - template: /eng/common/core-templates/post-build/common-variables.yml - - template: /eng/common/core-templates/variables/pool-providers.yml - parameters: - is1ESPipeline: ${{ parameters.is1ESPipeline }} + - template: /eng/common/core-templates/post-build/common-variables.yml + - template: /eng/common/core-templates/variables/pool-providers.yml + parameters: + is1ESPipeline: ${{ parameters.is1ESPipeline }} jobs: - job: displayName: Publish Using Darc @@ -291,7 +281,7 @@ stages: os: windows # If it's not devdiv, it's dnceng ${{ else }}: - ${{ if eq(parameters.is1ESPipeline, true) }}: + ${{ if eq(parameters.is1ESPipeline, true) }}: name: NetCore1ESPool-Publishing-Internal image: windows.vs2026.amd64 os: windows @@ -299,34 +289,33 @@ stages: name: NetCore1ESPool-Publishing-Internal demands: ImageOverride -equals windows.vs2026.amd64 steps: - - template: /eng/common/core-templates/post-build/setup-maestro-vars.yml - parameters: - BARBuildId: ${{ parameters.BARBuildId }} - PromoteToChannelIds: ${{ parameters.PromoteToChannelIds }} - is1ESPipeline: ${{ parameters.is1ESPipeline }} - - - task: NuGetAuthenticate@1 - - # Populate internal runtime variables. - - template: /eng/common/templates/steps/enable-internal-sources.yml - parameters: - legacyCredential: $(dn-bot-dnceng-artifact-feeds-rw) - - - template: /eng/common/templates/steps/enable-internal-runtimes.yml - - # Darc is targeting 8.0, so make sure it's installed - - task: UseDotNet@2 - inputs: - version: 8.0.x - - - task: AzureCLI@2 - displayName: Publish Using Darc - inputs: - azureSubscription: "Darc: Maestro Production" - scriptType: ps - scriptLocation: scriptPath - scriptPath: $(System.DefaultWorkingDirectory)/eng/common/post-build/publish-using-darc.ps1 - arguments: > + - template: /eng/common/core-templates/post-build/setup-maestro-vars.yml + parameters: + BARBuildId: ${{ parameters.BARBuildId }} + PromoteToChannelIds: ${{ parameters.PromoteToChannelIds }} + is1ESPipeline: ${{ parameters.is1ESPipeline }} + + - task: NuGetAuthenticate@1 + + # Populate internal runtime variables. + - template: /eng/common/templates/steps/enable-internal-sources.yml + parameters: + legacyCredential: $(dn-bot-dnceng-artifact-feeds-rw) + + - template: /eng/common/templates/steps/enable-internal-runtimes.yml + + - task: UseDotNet@2 + inputs: + version: 8.0.x + + - task: AzureCLI@2 + displayName: Publish Using Darc + inputs: + azureSubscription: "Darc: Maestro Production" + scriptType: ps + scriptLocation: scriptPath + scriptPath: $(System.DefaultWorkingDirectory)/eng/common/post-build/publish-using-darc.ps1 + arguments: > -BuildId $(BARBuildId) -PublishingInfraVersion ${{ parameters.publishingInfraVersion }} -AzdoToken '$(System.AccessToken)' diff --git a/eng/common/core-templates/stages/renovate.yml b/eng/common/core-templates/stages/renovate.yml new file mode 100644 index 000000000000..edab28182585 --- /dev/null +++ b/eng/common/core-templates/stages/renovate.yml @@ -0,0 +1,111 @@ +# -------------------------------------------------------------------------------------- +# Renovate Pipeline Template +# -------------------------------------------------------------------------------------- +# This template provides a complete reusable pipeline definition for running Renovate +# in a 1ES Official pipeline. Pipelines can extend from this template and only need +# to pass the Renovate job parameters. +# +# For more info, see https://github.com/dotnet/arcade/blob/main/Documentation/Renovate.md +# -------------------------------------------------------------------------------------- + +parameters: + +# Path to the Renovate configuration file within the repository. +- name: renovateConfigPath + type: string + default: 'eng/renovate.json' + +# GitHub repository to run Renovate against, in the format 'owner/repo'. +- name: gitHubRepo + type: string + +# List of base branches to target for Renovate PRs. +- name: baseBranches + type: object + default: + - main + +# When true, Renovate will run in dry run mode. +- name: dryRun + type: boolean + default: false + +# When true, Renovate will recreate PRs even if they were previously closed. +- name: forceRecreatePR + type: boolean + default: false + +# Name of the arcade repository resource in the pipeline. +# This allows repos which haven't been onboarded to Arcade to still use this +# template by checking out the repo as a resource with a custom name and pointing +# this parameter to it. +- name: arcadeRepoResource + type: string + default: 'self' + +- name: selfRepoName + type: string + default: '' +- name: arcadeRepoName + type: string + default: '' + +# Pool configuration for the pipeline. +- name: pool + type: object + default: + name: NetCore1ESPool-Internal + image: build.azurelinux.3.amd64 + os: linux + +# Renovate version used in the container image tag. +- name: renovateVersion + default: 43 + type: number + +# Pool configuration for SDL analysis. +- name: sdlPool + type: object + default: + name: NetCore1ESPool-Internal + image: windows.vs2026.amd64 + os: windows + +resources: + repositories: + - repository: 1ESPipelineTemplates + type: git + name: 1ESPipelineTemplates/1ESPipelineTemplates + ref: refs/tags/release + +extends: + template: v1/1ES.Official.PipelineTemplate.yml@1ESPipelineTemplates + parameters: + pool: ${{ parameters.pool }} + sdl: + sourceAnalysisPool: ${{ parameters.sdlPool }} + # When repos that aren't onboarded to Arcade use this template, they set the + # arcadeRepoResource parameter to point to their Arcade repo resource. In that case, + # Aracde will be excluded from SDL analysis. + ${{ if ne(parameters.arcadeRepoResource, 'self') }}: + sourceRepositoriesToScan: + exclude: + - repository: ${{ parameters.arcadeRepoResource }} + containers: + RenovateContainer: + image: mcr.microsoft.com/dotnet-buildtools/prereqs:azurelinux-3.0-renovate-${{ parameters.renovateVersion }}-amd64 + stages: + - stage: Renovate + displayName: Run Renovate + jobs: + - template: /eng/common/core-templates/job/renovate.yml@${{ parameters.arcadeRepoResource }} + parameters: + renovateConfigPath: ${{ parameters.renovateConfigPath }} + gitHubRepo: ${{ parameters.gitHubRepo }} + baseBranches: ${{ parameters.baseBranches }} + dryRun: ${{ parameters.dryRun }} + forceRecreatePR: ${{ parameters.forceRecreatePR }} + pool: ${{ parameters.pool }} + arcadeRepoResource: ${{ parameters.arcadeRepoResource }} + selfRepoName: ${{ parameters.selfRepoName }} + arcadeRepoName: ${{ parameters.arcadeRepoName }} diff --git a/eng/common/core-templates/steps/generate-sbom.yml b/eng/common/core-templates/steps/generate-sbom.yml index c05f65027979..003f7eae0fa5 100644 --- a/eng/common/core-templates/steps/generate-sbom.yml +++ b/eng/common/core-templates/steps/generate-sbom.yml @@ -5,7 +5,7 @@ # IgnoreDirectories - Directories to ignore for SBOM generation. This will be passed through to the CG component detector. parameters: - PackageVersion: 10.0.0 + PackageVersion: 11.0.0 BuildDropPath: '$(System.DefaultWorkingDirectory)/artifacts' PackageName: '.NET' ManifestDirPath: $(Build.ArtifactStagingDirectory)/sbom diff --git a/eng/common/core-templates/steps/install-microbuild-impl.yml b/eng/common/core-templates/steps/install-microbuild-impl.yml new file mode 100644 index 000000000000..da22beb3f60c --- /dev/null +++ b/eng/common/core-templates/steps/install-microbuild-impl.yml @@ -0,0 +1,34 @@ +parameters: + - name: microbuildTaskInputs + type: object + default: {} + + - name: microbuildEnv + type: object + default: {} + + - name: enablePreviewMicrobuild + type: boolean + default: false + + - name: condition + type: string + + - name: continueOnError + type: boolean + +steps: +- ${{ if eq(parameters.enablePreviewMicrobuild, true) }}: + - task: MicroBuildSigningPluginPreview@4 + displayName: Install Preview MicroBuild plugin + inputs: ${{ parameters.microbuildTaskInputs }} + env: ${{ parameters.microbuildEnv }} + continueOnError: ${{ parameters.continueOnError }} + condition: ${{ parameters.condition }} +- ${{ else }}: + - task: MicroBuildSigningPlugin@4 + displayName: Install MicroBuild plugin + inputs: ${{ parameters.microbuildTaskInputs }} + env: ${{ parameters.microbuildEnv }} + continueOnError: ${{ parameters.continueOnError }} + condition: ${{ parameters.condition }} diff --git a/eng/common/core-templates/steps/install-microbuild.yml b/eng/common/core-templates/steps/install-microbuild.yml index 553fce66b940..76a54e157fda 100644 --- a/eng/common/core-templates/steps/install-microbuild.yml +++ b/eng/common/core-templates/steps/install-microbuild.yml @@ -4,6 +4,8 @@ parameters: # Enable install tasks for MicroBuild on Mac and Linux # Will be ignored if 'enableMicrobuild' is false or 'Agent.Os' is 'Windows_NT' enableMicrobuildForMacAndLinux: false + # Enable preview version of MB signing plugin + enablePreviewMicrobuild: false # Determines whether the ESRP service connection information should be passed to the signing plugin. # This overlaps with _SignType to some degree. We only need the service connection for real signing. # It's important that the service connection not be passed to the MicroBuildSigningPlugin task in this place. @@ -13,6 +15,8 @@ parameters: microbuildUseESRP: true # Microbuild installation directory microBuildOutputFolder: $(Agent.TempDirectory)/MicroBuild + # Microbuild version + microbuildPluginVersion: 'latest' continueOnError: false @@ -69,42 +73,46 @@ steps: # YAML expansion, and Windows vs. Linux/Mac uses different service connections. However, # we can avoid including the MB install step if not enabled at all. This avoids a bunch of # extra pipeline authorizations, since most pipelines do not sign on non-Windows. - - task: MicroBuildSigningPlugin@4 - displayName: Install MicroBuild plugin (Windows) - inputs: - signType: $(_SignType) - zipSources: false - feedSource: https://dnceng.pkgs.visualstudio.com/_packaging/MicroBuildToolset/nuget/v3/index.json - ${{ if eq(parameters.microbuildUseESRP, true) }}: - ConnectedServiceName: 'MicroBuild Signing Task (DevDiv)' - ${{ if eq(variables['System.TeamProject'], 'DevDiv') }}: - ConnectedPMEServiceName: 6cc74545-d7b9-4050-9dfa-ebefcc8961ea - ${{ else }}: - ConnectedPMEServiceName: 248d384a-b39b-46e3-8ad5-c2c210d5e7ca - env: - TeamName: $(_TeamName) - MicroBuildOutputFolderOverride: ${{ parameters.microBuildOutputFolder }} - SYSTEM_ACCESSTOKEN: $(System.AccessToken) - continueOnError: ${{ parameters.continueOnError }} - condition: and(succeeded(), eq(variables['Agent.Os'], 'Windows_NT'), in(variables['_SignType'], 'real', 'test')) - - - ${{ if eq(parameters.enableMicrobuildForMacAndLinux, true) }}: - - task: MicroBuildSigningPlugin@4 - displayName: Install MicroBuild plugin (non-Windows) - inputs: + - template: /eng/common/core-templates/steps/install-microbuild-impl.yml + parameters: + enablePreviewMicrobuild: ${{ parameters.enablePreviewMicrobuild }} + microbuildTaskInputs: signType: $(_SignType) zipSources: false feedSource: https://dnceng.pkgs.visualstudio.com/_packaging/MicroBuildToolset/nuget/v3/index.json - workingDirectory: ${{ parameters.microBuildOutputFolder }} + version: ${{ parameters.microbuildPluginVersion }} ${{ if eq(parameters.microbuildUseESRP, true) }}: ConnectedServiceName: 'MicroBuild Signing Task (DevDiv)' ${{ if eq(variables['System.TeamProject'], 'DevDiv') }}: - ConnectedPMEServiceName: beb8cb23-b303-4c95-ab26-9e44bc958d39 + ConnectedPMEServiceName: 6cc74545-d7b9-4050-9dfa-ebefcc8961ea ${{ else }}: - ConnectedPMEServiceName: c24de2a5-cc7a-493d-95e4-8e5ff5cad2bc - env: + ConnectedPMEServiceName: 248d384a-b39b-46e3-8ad5-c2c210d5e7ca + microbuildEnv: TeamName: $(_TeamName) MicroBuildOutputFolderOverride: ${{ parameters.microBuildOutputFolder }} SYSTEM_ACCESSTOKEN: $(System.AccessToken) continueOnError: ${{ parameters.continueOnError }} - condition: and(succeeded(), ne(variables['Agent.Os'], 'Windows_NT'), eq(variables['_SignType'], 'real')) + condition: and(succeeded(), eq(variables['Agent.Os'], 'Windows_NT'), in(variables['_SignType'], 'real', 'test')) + + - ${{ if eq(parameters.enableMicrobuildForMacAndLinux, true) }}: + - template: /eng/common/core-templates/steps/install-microbuild-impl.yml + parameters: + enablePreviewMicrobuild: ${{ parameters.enablePreviewMicrobuild }} + microbuildTaskInputs: + signType: $(_SignType) + zipSources: false + feedSource: https://dnceng.pkgs.visualstudio.com/_packaging/MicroBuildToolset/nuget/v3/index.json + version: ${{ parameters.microbuildPluginVersion }} + workingDirectory: ${{ parameters.microBuildOutputFolder }} + ${{ if eq(parameters.microbuildUseESRP, true) }}: + ConnectedServiceName: 'MicroBuild Signing Task (DevDiv)' + ${{ if eq(variables['System.TeamProject'], 'DevDiv') }}: + ConnectedPMEServiceName: beb8cb23-b303-4c95-ab26-9e44bc958d39 + ${{ else }}: + ConnectedPMEServiceName: c24de2a5-cc7a-493d-95e4-8e5ff5cad2bc + microbuildEnv: + TeamName: $(_TeamName) + MicroBuildOutputFolderOverride: ${{ parameters.microBuildOutputFolder }} + SYSTEM_ACCESSTOKEN: $(System.AccessToken) + continueOnError: ${{ parameters.continueOnError }} + condition: and(succeeded(), ne(variables['Agent.Os'], 'Windows_NT'), eq(variables['_SignType'], 'real')) diff --git a/eng/common/core-templates/steps/source-build.yml b/eng/common/core-templates/steps/source-build.yml index b9c86c18ae42..acf16ed34963 100644 --- a/eng/common/core-templates/steps/source-build.yml +++ b/eng/common/core-templates/steps/source-build.yml @@ -24,7 +24,7 @@ steps: # in the default public locations. internalRuntimeDownloadArgs= if [ '$(dotnetbuilds-internal-container-read-token-base64)' != '$''(dotnetbuilds-internal-container-read-token-base64)' ]; then - internalRuntimeDownloadArgs='/p:DotNetRuntimeSourceFeed=https://ci.dot.net/internal /p:DotNetRuntimeSourceFeedKey=$(dotnetbuilds-internal-container-read-token-base64) --runtimesourcefeed https://ci.dot.net/internal --runtimesourcefeedkey '$(dotnetbuilds-internal-container-read-token-base64)'' + internalRuntimeDownloadArgs='/p:DotNetRuntimeSourceFeed=https://ci.dot.net/internal /p:DotNetRuntimeSourceFeedKey=$(dotnetbuilds-internal-container-read-token-base64) --runtimesourcefeed https://ci.dot.net/internal --runtimesourcefeedkey $(dotnetbuilds-internal-container-read-token-base64)' fi buildConfig=Release diff --git a/eng/common/core-templates/steps/source-index-stage1-publish.yml b/eng/common/core-templates/steps/source-index-stage1-publish.yml index e9a694afa58e..3ad83b8c3075 100644 --- a/eng/common/core-templates/steps/source-index-stage1-publish.yml +++ b/eng/common/core-templates/steps/source-index-stage1-publish.yml @@ -1,6 +1,6 @@ parameters: - sourceIndexUploadPackageVersion: 2.0.0-20250818.1 - sourceIndexProcessBinlogPackageVersion: 1.0.1-20250818.1 + sourceIndexUploadPackageVersion: 2.0.0-20250906.1 + sourceIndexProcessBinlogPackageVersion: 1.0.1-20250906.1 sourceIndexPackageSource: https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-tools/nuget/v3/index.json binlogPath: artifacts/log/Debug/Build.binlog @@ -14,8 +14,8 @@ steps: workingDirectory: $(Agent.TempDirectory) - script: | - $(Agent.TempDirectory)/dotnet/dotnet tool install BinLogToSln --version ${{parameters.sourceIndexProcessBinlogPackageVersion}} --add-source ${{parameters.SourceIndexPackageSource}} --tool-path $(Agent.TempDirectory)/.source-index/tools - $(Agent.TempDirectory)/dotnet/dotnet tool install UploadIndexStage1 --version ${{parameters.sourceIndexUploadPackageVersion}} --add-source ${{parameters.SourceIndexPackageSource}} --tool-path $(Agent.TempDirectory)/.source-index/tools + $(Agent.TempDirectory)/dotnet/dotnet tool install BinLogToSln --version ${{parameters.sourceIndexProcessBinlogPackageVersion}} --source ${{parameters.sourceIndexPackageSource}} --tool-path $(Agent.TempDirectory)/.source-index/tools + $(Agent.TempDirectory)/dotnet/dotnet tool install UploadIndexStage1 --version ${{parameters.sourceIndexUploadPackageVersion}} --source ${{parameters.sourceIndexPackageSource}} --tool-path $(Agent.TempDirectory)/.source-index/tools displayName: "Source Index: Download netsourceindex Tools" # Set working directory to temp directory so 'dotnet' doesn't try to use global.json and use the repo's sdk. workingDirectory: $(Agent.TempDirectory) diff --git a/eng/common/cross/build-rootfs.sh b/eng/common/cross/build-rootfs.sh index 8abfb71f7275..314c93c57598 100644 --- a/eng/common/cross/build-rootfs.sh +++ b/eng/common/cross/build-rootfs.sh @@ -9,6 +9,7 @@ usage() echo "CodeName - optional, Code name for Linux, can be: xenial(default), zesty, bionic, alpine" echo " for alpine can be specified with version: alpineX.YY or alpineedge" echo " for FreeBSD can be: freebsd13, freebsd14" + echo " for OpenBSD can be: openbsd" echo " for illumos can be: illumos" echo " for Haiku can be: haiku." echo "lldbx.y - optional, LLDB version, can be: lldb3.9(default), lldb4.0, lldb5.0, lldb6.0 no-lldb. Ignored for alpine and FreeBSD" @@ -27,6 +28,8 @@ __BuildArch=arm __AlpineArch=armv7 __FreeBSDArch=arm __FreeBSDMachineArch=armv7 +__OpenBSDArch=arm +__OpenBSDMachineArch=armv7 __IllumosArch=arm7 __HaikuArch=arm __QEMUArch=arm @@ -72,7 +75,7 @@ __AlpinePackages+=" krb5-dev" __AlpinePackages+=" openssl-dev" __AlpinePackages+=" zlib-dev" -__FreeBSDBase="13.4-RELEASE" +__FreeBSDBase="13.5-RELEASE" __FreeBSDPkg="1.21.3" __FreeBSDABI="13" __FreeBSDPackages="libunwind" @@ -82,6 +85,12 @@ __FreeBSDPackages+=" openssl" __FreeBSDPackages+=" krb5" __FreeBSDPackages+=" terminfo-db" +__OpenBSDVersion="7.8" +__OpenBSDPackages="heimdal-libs" +__OpenBSDPackages+=" icu4c" +__OpenBSDPackages+=" inotify-tools" +__OpenBSDPackages+=" openssl" + __IllumosPackages="icu" __IllumosPackages+=" mit-krb5" __IllumosPackages+=" openssl" @@ -160,6 +169,8 @@ while :; do __QEMUArch=aarch64 __FreeBSDArch=arm64 __FreeBSDMachineArch=aarch64 + __OpenBSDArch=arm64 + __OpenBSDMachineArch=aarch64 ;; armel) __BuildArch=armel @@ -235,6 +246,8 @@ while :; do __UbuntuArch=amd64 __FreeBSDArch=amd64 __FreeBSDMachineArch=amd64 + __OpenBSDArch=amd64 + __OpenBSDMachineArch=amd64 __illumosArch=x86_64 __HaikuArch=x86_64 __UbuntuRepo="http://archive.ubuntu.com/ubuntu/" @@ -295,9 +308,7 @@ while :; do ;; noble) # Ubuntu 24.04 __CodeName=noble - if [[ -z "$__LLDB_Package" ]]; then - __LLDB_Package="liblldb-19-dev" - fi + __LLDB_Package="liblldb-19-dev" ;; stretch) # Debian 9 __CodeName=stretch @@ -383,10 +394,14 @@ while :; do ;; freebsd14) __CodeName=freebsd - __FreeBSDBase="14.2-RELEASE" + __FreeBSDBase="14.3-RELEASE" __FreeBSDABI="14" __SkipUnmount=1 ;; + openbsd) + __CodeName=openbsd + __SkipUnmount=1 + ;; illumos) __CodeName=illumos __SkipUnmount=1 @@ -595,6 +610,62 @@ elif [[ "$__CodeName" == "freebsd" ]]; then INSTALL_AS_USER=$(whoami) "$__RootfsDir"/host/sbin/pkg -r "$__RootfsDir" -C "$__RootfsDir"/usr/local/etc/pkg.conf update # shellcheck disable=SC2086 INSTALL_AS_USER=$(whoami) "$__RootfsDir"/host/sbin/pkg -r "$__RootfsDir" -C "$__RootfsDir"/usr/local/etc/pkg.conf install --yes $__FreeBSDPackages +elif [[ "$__CodeName" == "openbsd" ]]; then + # determine mirrors + OPENBSD_MIRROR="https://cdn.openbsd.org/pub/OpenBSD/$__OpenBSDVersion/$__OpenBSDMachineArch" + + # download base system sets + ensureDownloadTool + + BASE_SETS=(base comp) + for set in "${BASE_SETS[@]}"; do + FILE="${set}${__OpenBSDVersion//./}.tgz" + echo "Downloading $FILE..." + if [[ "$__hasWget" == 1 ]]; then + wget -O- "$OPENBSD_MIRROR/$FILE" | tar -C "$__RootfsDir" -xzpf - + else + curl -SL "$OPENBSD_MIRROR/$FILE" | tar -C "$__RootfsDir" -xzpf - + fi + done + + PKG_MIRROR="https://cdn.openbsd.org/pub/OpenBSD/${__OpenBSDVersion}/packages/${__OpenBSDMachineArch}" + + echo "Installing packages into sysroot..." + + # Fetch package index once + if [[ "$__hasWget" == 1 ]]; then + PKG_INDEX=$(wget -qO- "$PKG_MIRROR/") + else + PKG_INDEX=$(curl -s "$PKG_MIRROR/") + fi + + for pkg in $__OpenBSDPackages; do + PKG_FILE=$(echo "$PKG_INDEX" | grep -Po ">\K${pkg}-[0-9][^\" ]*\.tgz" \ + | sort -V | tail -n1) + + echo "Resolved package filename for $pkg: $PKG_FILE" + + [[ -z "$PKG_FILE" ]] && { echo "ERROR: Package $pkg not found"; exit 1; } + + if [[ "$__hasWget" == 1 ]]; then + wget -O- "$PKG_MIRROR/$PKG_FILE" | tar -C "$__RootfsDir" -xzpf - + else + curl -SL "$PKG_MIRROR/$PKG_FILE" | tar -C "$__RootfsDir" -xzpf - + fi + done + + echo "Creating versionless symlinks for shared libraries..." + # Find all versioned .so files and create the base .so symlink + for lib in "$__RootfsDir/usr/lib/libc++.so."* "$__RootfsDir/usr/lib/libc++abi.so."* "$__RootfsDir/usr/lib/libpthread.so."*; do + if [ -f "$lib" ]; then + # Extract the filename (e.g., libc++.so.12.0) + VERSIONED_NAME=$(basename "$lib") + # Remove the trailing version numbers (e.g., libc++.so) + BASE_NAME=${VERSIONED_NAME%.so.*}.so + # Create the symlink in the same directory + ln -sf "$VERSIONED_NAME" "$__RootfsDir/usr/lib/$BASE_NAME" + fi + done elif [[ "$__CodeName" == "illumos" ]]; then mkdir "$__RootfsDir/tmp" pushd "$__RootfsDir/tmp" diff --git a/eng/common/cross/toolchain.cmake b/eng/common/cross/toolchain.cmake index 0ff85cf0367e..ff2dfdb4a5bf 100644 --- a/eng/common/cross/toolchain.cmake +++ b/eng/common/cross/toolchain.cmake @@ -3,15 +3,22 @@ set(CROSS_ROOTFS $ENV{ROOTFS_DIR}) # reset platform variables (e.g. cmake 3.25 sets LINUX=1) unset(LINUX) unset(FREEBSD) +unset(OPENBSD) unset(ILLUMOS) unset(ANDROID) unset(TIZEN) unset(HAIKU) set(TARGET_ARCH_NAME $ENV{TARGET_BUILD_ARCH}) + +file(GLOB OPENBSD_PROBE "${CROSS_ROOTFS}/etc/signify/openbsd-*.pub") + if(EXISTS ${CROSS_ROOTFS}/bin/freebsd-version) set(CMAKE_SYSTEM_NAME FreeBSD) set(FREEBSD 1) +elseif(OPENBSD_PROBE) + set(CMAKE_SYSTEM_NAME OpenBSD) + set(OPENBSD 1) elseif(EXISTS ${CROSS_ROOTFS}/usr/platform/i86pc) set(CMAKE_SYSTEM_NAME SunOS) set(ILLUMOS 1) @@ -53,6 +60,8 @@ elseif(TARGET_ARCH_NAME STREQUAL "arm64") endif() elseif(FREEBSD) set(triple "aarch64-unknown-freebsd12") + elseif(OPENBSD) + set(triple "aarch64-unknown-openbsd") endif() elseif(TARGET_ARCH_NAME STREQUAL "armel") set(CMAKE_SYSTEM_PROCESSOR armv7l) @@ -109,6 +118,8 @@ elseif(TARGET_ARCH_NAME STREQUAL "x64") endif() elseif(FREEBSD) set(triple "x86_64-unknown-freebsd12") + elseif(OPENBSD) + set(triple "x86_64-unknown-openbsd") elseif(ILLUMOS) set(TOOLCHAIN "x86_64-illumos") elseif(HAIKU) @@ -193,7 +204,7 @@ if(ANDROID) # include official NDK toolchain script include(${CROSS_ROOTFS}/../build/cmake/android.toolchain.cmake) -elseif(FREEBSD) +elseif(FREEBSD OR OPENBSD) # we cross-compile by instructing clang set(CMAKE_C_COMPILER_TARGET ${triple}) set(CMAKE_CXX_COMPILER_TARGET ${triple}) @@ -291,7 +302,7 @@ endif() # Specify compile options -if((TARGET_ARCH_NAME MATCHES "^(arm|arm64|armel|armv6|loongarch64|ppc64le|riscv64|s390x|x64|x86)$" AND NOT ANDROID AND NOT FREEBSD) OR ILLUMOS OR HAIKU) +if((TARGET_ARCH_NAME MATCHES "^(arm|arm64|armel|armv6|loongarch64|ppc64le|riscv64|s390x|x64|x86)$" AND NOT ANDROID AND NOT FREEBSD AND NOT OPENBSD) OR ILLUMOS OR HAIKU) set(CMAKE_C_COMPILER_TARGET ${TOOLCHAIN}) set(CMAKE_CXX_COMPILER_TARGET ${TOOLCHAIN}) set(CMAKE_ASM_COMPILER_TARGET ${TOOLCHAIN}) diff --git a/eng/common/darc-init.sh b/eng/common/darc-init.sh index e889f439b8dc..9f5ad6b763b5 100644 --- a/eng/common/darc-init.sh +++ b/eng/common/darc-init.sh @@ -5,7 +5,7 @@ darcVersion='' versionEndpoint='https://maestro.dot.net/api/assets/darc-version?api-version=2020-02-20' verbosity='minimal' -while [[ $# > 0 ]]; do +while [[ $# -gt 0 ]]; do opt="$(echo "$1" | tr "[:upper:]" "[:lower:]")" case "$opt" in --darcversion) diff --git a/eng/common/dotnet-install.sh b/eng/common/dotnet-install.sh index 7b9d97e3bd4d..61f302bb6775 100644 --- a/eng/common/dotnet-install.sh +++ b/eng/common/dotnet-install.sh @@ -18,7 +18,7 @@ architecture='' runtime='dotnet' runtimeSourceFeed='' runtimeSourceFeedKey='' -while [[ $# > 0 ]]; do +while [[ $# -gt 0 ]]; do opt="$(echo "$1" | tr "[:upper:]" "[:lower:]")" case "$opt" in -version|-v) diff --git a/eng/common/dotnet.sh b/eng/common/dotnet.sh index 2ef68235675f..f6d24871c1d4 100644 --- a/eng/common/dotnet.sh +++ b/eng/common/dotnet.sh @@ -19,7 +19,7 @@ source $scriptroot/tools.sh InitializeDotNetCli true # install # Invoke acquired SDK with args if they are provided -if [[ $# > 0 ]]; then +if [[ $# -gt 0 ]]; then __dotnetDir=${_InitializeDotNetCli} dotnetPath=${__dotnetDir}/dotnet ${dotnetPath} "$@" diff --git a/eng/common/internal-feed-operations.sh b/eng/common/internal-feed-operations.sh index 9378223ba095..6299e7effd4c 100644 --- a/eng/common/internal-feed-operations.sh +++ b/eng/common/internal-feed-operations.sh @@ -100,7 +100,7 @@ operation='' authToken='' repoName='' -while [[ $# > 0 ]]; do +while [[ $# -gt 0 ]]; do opt="$(echo "$1" | tr "[:upper:]" "[:lower:]")" case "$opt" in --operation) diff --git a/eng/common/native/init-distro-rid.sh b/eng/common/native/init-distro-rid.sh index 83ea7aab0e08..8fc6d2fec78d 100644 --- a/eng/common/native/init-distro-rid.sh +++ b/eng/common/native/init-distro-rid.sh @@ -39,6 +39,8 @@ getNonPortableDistroRid() # $rootfsDir can be empty. freebsd-version is a shell script and should always work. __freebsd_major_version=$("$rootfsDir"/bin/freebsd-version | cut -d'.' -f1) nonPortableRid="freebsd.$__freebsd_major_version-${targetArch}" + elif [ "$targetOs" = "openbsd" ]; then + nonPortableRid="openbsd.$(uname -r)-${targetArch}" elif command -v getprop >/dev/null && getprop ro.product.system.model | grep -qi android; then __android_sdk_version=$(getprop ro.build.version.sdk) nonPortableRid="android.$__android_sdk_version-${targetArch}" diff --git a/eng/common/native/install-dependencies.sh b/eng/common/native/install-dependencies.sh index 477a44f335be..4742177a7685 100644 --- a/eng/common/native/install-dependencies.sh +++ b/eng/common/native/install-dependencies.sh @@ -24,14 +24,16 @@ case "$os" in apt update apt install -y build-essential gettext locales cmake llvm clang lld lldb liblldb-dev libunwind8-dev libicu-dev liblttng-ust-dev \ - libssl-dev libkrb5-dev pigz cpio + libssl-dev libkrb5-dev pigz cpio ninja-build localedef -i en_US -c -f UTF-8 -A /usr/share/locale/locale.alias en_US.UTF-8 - elif [ "$ID" = "fedora" ] || [ "$ID" = "rhel" ] || [ "$ID" = "azurelinux" ]; then + elif [ "$ID" = "fedora" ] || [ "$ID" = "rhel" ] || [ "$ID" = "azurelinux" ] || [ "$ID" = "centos" ]; then pkg_mgr="$(command -v tdnf 2>/dev/null || command -v dnf)" - $pkg_mgr install -y cmake llvm lld lldb clang python curl libicu-devel openssl-devel krb5-devel lttng-ust-devel pigz cpio + $pkg_mgr install -y cmake llvm lld lldb clang python curl libicu-devel openssl-devel krb5-devel lttng-ust-devel pigz cpio ninja-build + elif [ "$ID" = "amzn" ]; then + dnf install -y cmake llvm lld lldb clang python libicu-devel openssl-devel krb5-devel lttng-ust-devel pigz cpio ninja-build elif [ "$ID" = "alpine" ]; then - apk add build-base cmake bash curl clang llvm-dev lld lldb krb5-dev lttng-ust-dev icu-dev openssl-dev pigz cpio + apk add build-base cmake bash curl clang llvm llvm-dev lld lldb-dev krb5-dev lttng-ust-dev icu-dev openssl-dev pigz cpio ninja else echo "Unsupported distro. distro: $ID" exit 1 @@ -52,6 +54,7 @@ brew "openssl@3" brew "pkgconf" brew "python3" brew "pigz" +brew "ninja" EOF ;; diff --git a/eng/common/post-build/redact-logs.ps1 b/eng/common/post-build/redact-logs.ps1 index 472d5bb562c9..fc0218a013d1 100644 --- a/eng/common/post-build/redact-logs.ps1 +++ b/eng/common/post-build/redact-logs.ps1 @@ -9,7 +9,8 @@ param( [Parameter(Mandatory=$false)][string] $TokensFilePath, [Parameter(ValueFromRemainingArguments=$true)][String[]]$TokensToRedact, [Parameter(Mandatory=$false)][string] $runtimeSourceFeed, - [Parameter(Mandatory=$false)][string] $runtimeSourceFeedKey) + [Parameter(Mandatory=$false)][string] $runtimeSourceFeedKey +) try { $ErrorActionPreference = 'Stop' diff --git a/eng/common/renovate.env b/eng/common/renovate.env new file mode 100644 index 000000000000..17ecc05d9b19 --- /dev/null +++ b/eng/common/renovate.env @@ -0,0 +1,42 @@ +# Renovate Global Configuration +# https://docs.renovatebot.com/self-hosted-configuration/ +# +# NOTE: This file uses bash/shell format and is sourced via `. renovate.env`. +# Values containing spaces or special characters must be quoted. + +# Author to use for git commits made by Renovate +# https://docs.renovatebot.com/configuration-options/#gitauthor +export RENOVATE_GIT_AUTHOR='.NET Renovate ' + +# Disable rate limiting for PR creation (0 = unlimited) +# https://docs.renovatebot.com/presets-default/#prhourlylimitnone +# https://docs.renovatebot.com/presets-default/#prconcurrentlimitnone +export RENOVATE_PR_HOURLY_LIMIT=0 +export RENOVATE_PR_CONCURRENT_LIMIT=0 + +# Skip the onboarding PR that Renovate normally creates for new repos +# https://docs.renovatebot.com/config-overview/#onboarding +export RENOVATE_ONBOARDING=false + +# Any Renovate config file in the cloned repository is ignored. Only +# the Renovate config file from the repo where the pipeline is running +# is used (yes, those are the same repo but the sources may be different). +# https://docs.renovatebot.com/self-hosted-configuration/#requireconfig +export RENOVATE_REQUIRE_CONFIG=ignored + +# Customize the PR body content. This removes some of the default +# sections that aren't relevant in a self-hosted config. +# https://docs.renovatebot.com/configuration-options/#prheader +# https://docs.renovatebot.com/configuration-options/#prbodynotes +# https://docs.renovatebot.com/configuration-options/#prbodytemplate +export RENOVATE_PR_HEADER='## Automated Dependency Update' +export RENOVATE_PR_BODY_NOTES='["This PR has been created automatically by the [.NET Renovate Bot](https://github.com/dotnet/arcade/blob/main/Documentation/Renovate.md) to update one or more dependencies in your repo. Please review the changes and merge the PR if everything looks good."]' +export RENOVATE_PR_BODY_TEMPLATE='{{{header}}}{{{table}}}{{{warnings}}}{{{notes}}}{{{changelogs}}}' + +# Extend the global config with additional presets +# https://docs.renovatebot.com/self-hosted-configuration/#globalextends +# Disable the Dependency Dashboard issue that tracks all updates +export RENOVATE_GLOBAL_EXTENDS='[":disableDependencyDashboard"]' + +# Allow all commands for post-upgrade commands. +export RENOVATE_ALLOWED_COMMANDS='[".*"]' diff --git a/eng/common/sdk-task.ps1 b/eng/common/sdk-task.ps1 index b64b66a6275b..4017ff15ebf4 100644 --- a/eng/common/sdk-task.ps1 +++ b/eng/common/sdk-task.ps1 @@ -22,7 +22,7 @@ $warnAsError = if ($noWarnAsError) { $false } else { $true } function Print-Usage() { Write-Host "Common settings:" - Write-Host " -task Name of Arcade task (name of a project in SdkTasks directory of the Arcade SDK package)" + Write-Host " -task Name of Arcade task (name of a project in toolset directory of the Arcade SDK package)" Write-Host " -restore Restore dependencies" Write-Host " -verbosity Msbuild verbosity: q[uiet], m[inimal], n[ormal], d[etailed], and diag[nostic]" Write-Host " -help Print help and exit" diff --git a/eng/common/sdk-task.sh b/eng/common/sdk-task.sh index 3270f83fa9a7..1cf71bb2aea4 100644 --- a/eng/common/sdk-task.sh +++ b/eng/common/sdk-task.sh @@ -2,7 +2,7 @@ show_usage() { echo "Common settings:" - echo " --task Name of Arcade task (name of a project in SdkTasks directory of the Arcade SDK package)" + echo " --task Name of Arcade task (name of a project in toolset directory of the Arcade SDK package)" echo " --restore Restore dependencies" echo " --verbosity Msbuild verbosity: q[uiet], m[inimal], n[ormal], d[etailed], and diag[nostic]" echo " --help Print help and exit" diff --git a/eng/common/template-guidance.md b/eng/common/template-guidance.md index 4bf4cf41bd7c..cdc62e72b077 100644 --- a/eng/common/template-guidance.md +++ b/eng/common/template-guidance.md @@ -71,7 +71,6 @@ eng\common\ source-build.yml (shim) source-index-stage1.yml (shim) jobs\ - codeql-build.yml (shim) jobs.yml (shim) source-build.yml (shim) post-build\ @@ -89,7 +88,6 @@ eng\common\ source-build.yml (shim) variables\ pool-providers.yml (logic + redirect) # templates/variables/pool-providers.yml will redirect to templates-official/variables/pool-providers.yml if you are running in the internal project - sdl-variables.yml (logic) core-templates\ job\ job.yml (logic) @@ -98,7 +96,6 @@ eng\common\ source-build.yml (logic) source-index-stage1.yml (logic) jobs\ - codeql-build.yml (logic) jobs.yml (logic) source-build.yml (logic) post-build\ diff --git a/eng/common/templates-official/job/job.yml b/eng/common/templates-official/job/job.yml index 92a0664f5647..f70224eaa456 100644 --- a/eng/common/templates-official/job/job.yml +++ b/eng/common/templates-official/job/job.yml @@ -44,11 +44,10 @@ jobs: sbomEnabled: false # we don't need SBOM for logs - ${{ if eq(parameters.enablePublishBuildArtifacts, true) }}: - - output: buildArtifacts + - output: pipelineArtifact displayName: Publish Logs - PathtoPublish: '$(Build.ArtifactStagingDirectory)/artifacts/log/$(_BuildConfig)' - publishLocation: Container - ArtifactName: ${{ coalesce(parameters.enablePublishBuildArtifacts.artifactName, '$(Agent.Os)_$(Agent.JobName)_Attempt$(System.JobAttempt)' ) }} + targetPath: '$(Build.ArtifactStagingDirectory)/artifacts/log/$(_BuildConfig)' + artifactName: ${{ coalesce(parameters.enablePublishBuildArtifacts.artifactName, '$(Agent.Os)_$(Agent.JobName)_Attempt$(System.JobAttempt)' ) }} continueOnError: true condition: always() sbomEnabled: false # we don't need SBOM for logs diff --git a/eng/common/templates/job/job.yml b/eng/common/templates/job/job.yml index 238fa0818f7b..7f1b5d97d1ab 100644 --- a/eng/common/templates/job/job.yml +++ b/eng/common/templates/job/job.yml @@ -61,16 +61,16 @@ jobs: sbomEnabled: false # we don't need SBOM for logs - ${{ if ne(parameters.enablePublishBuildArtifacts, 'false') }}: - - template: /eng/common/core-templates/steps/publish-build-artifacts.yml + - template: /eng/common/core-templates/steps/publish-pipeline-artifacts.yml parameters: is1ESPipeline: false args: displayName: Publish Logs - pathToPublish: '$(Build.ArtifactStagingDirectory)/artifacts/log/$(_BuildConfig)' - publishLocation: Container + targetPath: '$(Build.ArtifactStagingDirectory)/artifacts/log/$(_BuildConfig)' artifactName: ${{ coalesce(parameters.enablePublishBuildArtifacts.artifactName, '$(Agent.Os)_$(Agent.JobName)_Attempt$(System.JobAttempt)' ) }} continueOnError: true condition: always() + sbomEnabled: false - ${{ if eq(parameters.enableBuildRetry, 'true') }}: - template: /eng/common/core-templates/steps/publish-pipeline-artifacts.yml diff --git a/eng/common/tools.ps1 b/eng/common/tools.ps1 index 977a2d4b1039..6710ffb884bb 100644 --- a/eng/common/tools.ps1 +++ b/eng/common/tools.ps1 @@ -34,6 +34,9 @@ # Configures warning treatment in msbuild. [bool]$warnAsError = if (Test-Path variable:warnAsError) { $warnAsError } else { $true } +# Specifies semi-colon delimited list of warning codes that should not be treated as errors. +[string]$warnNotAsError = if (Test-Path variable:warnNotAsError) { $warnNotAsError } else { '' } + # Specifies which msbuild engine to use for build: 'vs', 'dotnet' or unspecified (determined based on presence of tools.vs in global.json). [string]$msbuildEngine = if (Test-Path variable:msbuildEngine) { $msbuildEngine } else { $null } @@ -157,9 +160,6 @@ function InitializeDotNetCli([bool]$install, [bool]$createSdkLocationFile) { return $global:_DotNetInstallDir } - # Don't resolve runtime, shared framework, or SDK from other locations to ensure build determinism - $env:DOTNET_MULTILEVEL_LOOKUP=0 - # Disable first run since we do not need all ASP.NET packages restored. $env:DOTNET_NOLOGO=1 @@ -225,7 +225,6 @@ function InitializeDotNetCli([bool]$install, [bool]$createSdkLocationFile) { # Make Sure that our bootstrapped dotnet cli is available in future steps of the Azure Pipelines build Write-PipelinePrependPath -Path $dotnetRoot - Write-PipelineSetVariable -Name 'DOTNET_MULTILEVEL_LOOKUP' -Value '0' Write-PipelineSetVariable -Name 'DOTNET_NOLOGO' -Value '1' return $global:_DotNetInstallDir = $dotnetRoot @@ -299,6 +298,8 @@ function InstallDotNet([string] $dotnetRoot, $dotnetVersionLabel = "'sdk v$version'" + # For performance this check is duplicated in src/Microsoft.DotNet.Arcade.Sdk/src/InstallDotNetCore.cs + # if you are making changes here, consider if you need to make changes there as well. if ($runtime -ne '' -and $runtime -ne 'sdk') { $runtimePath = $dotnetRoot $runtimePath = $runtimePath + "\shared" @@ -544,7 +545,6 @@ function LocateVisualStudio([object]$vsRequirements = $null){ if (Get-Member -InputObject $GlobalJson.tools -Name 'vswhere') { $vswhereVersion = $GlobalJson.tools.vswhere } else { - # keep this in sync with the VSWhereVersion in DefaultVersions.props $vswhereVersion = '3.1.7' } @@ -592,6 +592,11 @@ function LocateVisualStudio([object]$vsRequirements = $null){ return $null } + if ($null -eq $vsInfo -or $vsInfo.Count -eq 0) { + throw "No instance of Visual Studio meeting the requirements specified was found. Requirements: $($args -join ' ')" + return $null + } + # use first matching instance return $vsInfo[0] } @@ -674,7 +679,17 @@ function GetNuGetPackageCachePath() { # Returns a full path to an Arcade SDK task project file. function GetSdkTaskProject([string]$taskName) { - return Join-Path (Split-Path (InitializeToolset) -Parent) "SdkTasks\$taskName.proj" + $toolsetDir = Split-Path (InitializeToolset) -Parent + $proj = Join-Path $toolsetDir "$taskName.proj" + if (Test-Path $proj) { + return $proj + } + # TODO: Remove this fallback once all supported versions use the new layout. + $legacyProj = Join-Path $toolsetDir "SdkTasks\$taskName.proj" + if (Test-Path $legacyProj) { + return $legacyProj + } + throw "Unable to find $taskName.proj in toolset at: $toolsetDir" } function InitializeNativeTools() { @@ -711,13 +726,18 @@ function InitializeToolset() { $nugetCache = GetNuGetPackageCachePath $toolsetVersion = Read-ArcadeSdkVersion - $toolsetLocationFile = Join-Path $ToolsetDir "$toolsetVersion.txt" + $toolsetToolsDir = Join-Path $ToolsetDir $toolsetVersion - if (Test-Path $toolsetLocationFile) { - $path = Get-Content $toolsetLocationFile -TotalCount 1 - if (Test-Path $path) { - return $global:_InitializeToolset = $path - } + # Check if the toolset has already been extracted + $toolsetBuildProj = $null + $buildProjPath = Join-Path $toolsetToolsDir 'Build.proj' + + if (Test-Path $buildProjPath) { + $toolsetBuildProj = $buildProjPath + } + + if ($toolsetBuildProj -ne $null) { + return $global:_InitializeToolset = $toolsetBuildProj } if (-not $restore) { @@ -725,21 +745,40 @@ function InitializeToolset() { ExitWithExitCode 1 } - $buildTool = InitializeBuildTool + $downloadArgs = @("package", "download", "Microsoft.DotNet.Arcade.Sdk@$toolsetVersion", "--prerelease", "--output", "$nugetCache") + if ($env:NUGET_CONFIG) { + $downloadArgs += "--configfile" + $downloadArgs += $env:NUGET_CONFIG + } + DotNet @downloadArgs - $proj = Join-Path $ToolsetDir 'restore.proj' - $bl = if ($binaryLog) { '/bl:' + (Join-Path $LogDir 'ToolsetRestore.binlog') } else { '' } + $packageDir = Join-Path $nugetCache (Join-Path 'microsoft.dotnet.arcade.sdk' $toolsetVersion) + $packageToolsetDir = Join-Path $packageDir 'toolset' + $packageToolsDir = Join-Path $packageDir 'tools' - '' | Set-Content $proj + # TODO: Remove the tools/ check once all supported versions have the toolset folder. + if (!(Test-Path $packageToolsetDir) -and !(Test-Path $packageToolsDir)) { + Write-PipelineTelemetryError -Category 'InitializeToolset' -Message "Arcade SDK package does not contain a toolset or tools folder: $packageDir" + ExitWithExitCode 3 + } - MSBuild-Core $proj $bl /t:__WriteToolsetLocation /clp:ErrorsOnly`;NoSummary /p:__ToolsetLocationOutputFile=$toolsetLocationFile + New-Item -ItemType Directory -Path $toolsetToolsDir -Force | Out-Null - $path = Get-Content $toolsetLocationFile -Encoding UTF8 -TotalCount 1 - if (!(Test-Path $path)) { - throw "Invalid toolset path: $path" + # Copy toolset if present at the package root (new layout), otherwise fall back to tools + if (Test-Path $packageToolsetDir) { + Copy-Item -Path "$packageToolsetDir\*" -Destination $toolsetToolsDir -Recurse -Force + } else { + # TODO: Remove this fallback once all supported versions have the toolset folder. + Copy-Item -Path "$packageToolsDir\*" -Destination $toolsetToolsDir -Recurse -Force } - return $global:_InitializeToolset = $path + if (Test-Path $buildProjPath) { + $toolsetBuildProj = $buildProjPath + } else { + throw "Unable to find Build.proj in toolset at: $toolsetToolsDir" + } + + return $global:_InitializeToolset = $toolsetBuildProj } function ExitWithExitCode([int] $exitCode) { @@ -800,6 +839,40 @@ function MSBuild() { MSBuild-Core @args } +# +# Executes a dotnet command with arguments passed to the function. +# Terminates the script if the command fails. +# +function DotNet() { + $dotnetRoot = InitializeDotNetCli -install:$restore + $dotnetPath = Join-Path $dotnetRoot (GetExecutableFileName 'dotnet') + + $cmdArgs = "" + foreach ($arg in $args) { + if ($null -ne $arg -and $arg.Trim() -ne "") { + if ($arg.EndsWith('\')) { + $arg = $arg + "\" + } + $cmdArgs += " `"$arg`"" + } + } + + $env:ARCADE_BUILD_TOOL_COMMAND = "`"$dotnetPath`" $cmdArgs" + + $exitCode = Exec-Process $dotnetPath $cmdArgs + + if ($exitCode -ne 0) { + Write-Host "dotnet command failed with exit code $exitCode. Check errors above." -ForegroundColor Red + + if ($ci -and $env:SYSTEM_TEAMPROJECT -ne $null -and !$fromVMR) { + Write-PipelineSetResult -Result "Failed" -Message "dotnet command execution failed." + ExitWithExitCode 0 + } else { + ExitWithExitCode $exitCode + } + } +} + # # Executes msbuild (or 'dotnet msbuild') with arguments passed to the function. # The arguments are automatically quoted. @@ -836,6 +909,10 @@ function MSBuild-Core() { $cmdArgs += ' /p:TreatWarningsAsErrors=false' } + if ($warnAsError -and $warnNotAsError) { + $cmdArgs += " /warnnotaserror:$warnNotAsError /p:AdditionalWarningsNotAsErrors=$warnNotAsError" + } + foreach ($arg in $args) { if ($null -ne $arg -and $arg.Trim() -ne "") { if ($arg.EndsWith('\')) { diff --git a/eng/common/tools.sh b/eng/common/tools.sh index 1b296f646c23..d2339eb21d59 100644 --- a/eng/common/tools.sh +++ b/eng/common/tools.sh @@ -52,6 +52,9 @@ fi # Configures warning treatment in msbuild. warn_as_error=${warn_as_error:-true} +# Specifies semi-colon delimited list of warning codes that should not be treated as errors. +warn_not_as_error=${warn_not_as_error:-''} + # True to attempt using .NET Core already that meets requirements specified in global.json # installed on the machine instead of downloading one. use_installed_dotnet_cli=${use_installed_dotnet_cli:-true} @@ -115,9 +118,6 @@ function InitializeDotNetCli { local install=$1 - # Don't resolve runtime, shared framework, or SDK from other locations to ensure build determinism - export DOTNET_MULTILEVEL_LOOKUP=0 - # Disable first run since we want to control all package sources export DOTNET_NOLOGO=1 @@ -166,7 +166,6 @@ function InitializeDotNetCli { # build steps from using anything other than what we've downloaded. Write-PipelinePrependPath -path "$dotnet_root" - Write-PipelineSetVariable -name "DOTNET_MULTILEVEL_LOOKUP" -value "0" Write-PipelineSetVariable -name "DOTNET_NOLOGO" -value "1" # return value @@ -188,6 +187,8 @@ function InstallDotNet { local version=$2 local runtime=$4 + # For performance this check is duplicated in src/Microsoft.DotNet.Arcade.Sdk/src/InstallDotNetCore.cs + # if you are making changes here, consider if you need to make changes there as well. local dotnetVersionLabel="'$runtime v$version'" if [[ -n "${4:-}" ]] && [ "$4" != 'sdk' ]; then runtimePath="$root" @@ -406,15 +407,18 @@ function InitializeToolset { ReadGlobalVersion "Microsoft.DotNet.Arcade.Sdk" local toolset_version=$_ReadGlobalVersion - local toolset_location_file="$toolset_dir/$toolset_version.txt" + local toolset_tools_dir="$toolset_dir/$toolset_version" - if [[ -a "$toolset_location_file" ]]; then - local path=`cat "$toolset_location_file"` - if [[ -a "$path" ]]; then - # return value - _InitializeToolset="$path" - return - fi + # Check if the toolset has already been extracted + local toolset_build_proj="" + if [[ -a "$toolset_tools_dir/Build.proj" ]]; then + toolset_build_proj="$toolset_tools_dir/Build.proj" + fi + + if [[ -n "$toolset_build_proj" ]]; then + # return value + _InitializeToolset="$toolset_build_proj" + return fi if [[ "$restore" != true ]]; then @@ -422,20 +426,34 @@ function InitializeToolset { ExitWithExitCode 2 fi - local proj="$toolset_dir/restore.proj" + local download_args=("package" "download" "Microsoft.DotNet.Arcade.Sdk@$toolset_version" "--prerelease" "--output" "$_GetNuGetPackageCachePath") + if [[ -n "${NUGET_CONFIG:-}" ]]; then + download_args+=("--configfile" "$NUGET_CONFIG") + fi + DotNet "${download_args[@]}" - local bl="" - if [[ "$binary_log" == true ]]; then - bl="/bl:$log_dir/ToolsetRestore.binlog" + local package_dir="$_GetNuGetPackageCachePath/microsoft.dotnet.arcade.sdk/$toolset_version" + + # TODO: Remove the tools/ check once all supported versions have the toolset folder. + if [[ ! -d "$package_dir/toolset" && ! -d "$package_dir/tools" ]]; then + Write-PipelineTelemetryError -category 'InitializeToolset' "Arcade SDK package does not contain a toolset or tools folder: $package_dir" + ExitWithExitCode 3 fi - echo '' > "$proj" - MSBuild-Core "$proj" $bl /t:__WriteToolsetLocation /clp:ErrorsOnly\;NoSummary /p:__ToolsetLocationOutputFile="$toolset_location_file" + mkdir -p "$toolset_tools_dir" - local toolset_build_proj=`cat "$toolset_location_file"` + # Copy toolset if present at the package root (new layout), otherwise fall back to tools + if [[ -d "$package_dir/toolset" ]]; then + cp -r "$package_dir/toolset/." "$toolset_tools_dir" + else + # TODO: Remove this fallback once all supported versions have the toolset folder. + cp -r "$package_dir/tools/." "$toolset_tools_dir" + fi - if [[ ! -a "$toolset_build_proj" ]]; then - Write-PipelineTelemetryError -category 'Build' "Invalid toolset path: $toolset_build_proj" + if [[ -a "$toolset_tools_dir/Build.proj" ]]; then + toolset_build_proj="$toolset_tools_dir/Build.proj" + else + Write-PipelineTelemetryError -category 'Build' "Unable to find Build.proj in toolset at: $toolset_tools_dir" ExitWithExitCode 3 fi @@ -457,6 +475,26 @@ function StopProcesses { return 0 } +function DotNet { + InitializeDotNetCli $restore + + local dotnet_path="$_InitializeDotNetCli/dotnet" + + export ARCADE_BUILD_TOOL_COMMAND="$dotnet_path $@" + + "$dotnet_path" "$@" || { + local exit_code=$? + echo "dotnet command failed with exit code $exit_code. Check errors above." + + if [[ "$ci" == true && -n ${SYSTEM_TEAMPROJECT:-} && "$from_vmr" != true ]]; then + Write-PipelineSetResult -result "Failed" -message "dotnet command execution failed." + ExitWithExitCode 0 + else + ExitWithExitCode $exit_code + fi + } +} + function MSBuild { local args=( "$@" ) if [[ "$pipelines_log" == true ]]; then @@ -532,7 +570,12 @@ function MSBuild-Core { mt_switch="-mt" fi - RunBuildTool "$_InitializeBuildToolCommand" /m /nologo /clp:Summary /v:$verbosity /nr:$node_reuse $warnaserror_switch $mt_switch /p:TreatWarningsAsErrors=$warn_as_error /p:ContinuousIntegrationBuild=$ci "$@" + local warnnotaserror_switch="" + if [[ -n "$warn_not_as_error" && "$warn_as_error" == true ]]; then + warnnotaserror_switch="/warnnotaserror:$warn_not_as_error /p:AdditionalWarningsNotAsErrors=$warn_not_as_error" + fi + + RunBuildTool "$_InitializeBuildToolCommand" /m /nologo /clp:Summary /v:$verbosity /nr:$node_reuse $warnaserror_switch $mt_switch $warnnotaserror_switch /p:TreatWarningsAsErrors=$warn_as_error /p:ContinuousIntegrationBuild=$ci "$@" } function GetDarc { @@ -549,8 +592,22 @@ function GetDarc { # Returns a full path to an Arcade SDK task project file. function GetSdkTaskProject { - taskName=$1 - echo "$(dirname $_InitializeToolset)/SdkTasks/$taskName.proj" + local taskName=$1 + local toolsetDir + toolsetDir="$(dirname "$_InitializeToolset")" + local proj="$toolsetDir/$taskName.proj" + if [[ -a "$proj" ]]; then + echo "$proj" + return + fi + # TODO: Remove this fallback once all supported versions use the new layout. + local legacyProj="$toolsetDir/SdkTasks/$taskName.proj" + if [[ -a "$legacyProj" ]]; then + echo "$legacyProj" + return + fi + Write-PipelineTelemetryError -category 'Build' "Unable to find $taskName.proj in toolset at: $toolsetDir" + ExitWithExitCode 3 } ResolvePath "${BASH_SOURCE[0]}" diff --git a/global.json b/global.json index f3698d5d7068..73f387f3d324 100644 --- a/global.json +++ b/global.json @@ -1,6 +1,6 @@ { "sdk": { - "version": "10.0.300-preview.0.26208.105", + "version": "11.0.100-preview.4.26210.111", "paths": [ "builds/downloads/dotnet", "$host$" @@ -8,9 +8,9 @@ "errorMessage": "The .NET SDK could not be found, please run 'make dotnet -C builds'." }, "tools": { - "dotnet": "10.0.300-preview.0.26208.105" + "dotnet": "11.0.100-preview.4.26210.111" }, "msbuild-sdks": { - "Microsoft.DotNet.Arcade.Sdk": "10.0.0-beta.26208.105" + "Microsoft.DotNet.Arcade.Sdk": "11.0.0-beta.26210.111" } } From 8376df7fcd3ffa42b52380451133b7dcfb55a018 Mon Sep 17 00:00:00 2001 From: Rolf Bjarne Kvinge Date: Wed, 15 Apr 2026 07:47:42 +0200 Subject: [PATCH 05/47] [xharness] Add TestReporter implementation to detect crashes properly. (#25150) xharness regressed detecting crashing tests as crashing (https://github.com/dotnet/xharness/commit/a6f9fe6b9be89a1bd8ab67acfc49f1b873558102), so clone the TestReporter class and modify it to properly detect crashes and report them as such. --------- Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- tests/xharness/TestReporter.cs | 524 ++++++++++++++++++++++++++ tests/xharness/TestReporterFactory.cs | 59 +++ tests/xharness/xharness.csproj | 2 + 3 files changed, 585 insertions(+) create mode 100644 tests/xharness/TestReporter.cs create mode 100644 tests/xharness/TestReporterFactory.cs diff --git a/tests/xharness/TestReporter.cs b/tests/xharness/TestReporter.cs new file mode 100644 index 000000000000..8277d81eeec8 --- /dev/null +++ b/tests/xharness/TestReporter.cs @@ -0,0 +1,524 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +using System; +using System.Collections.Generic; +using System.Diagnostics; +using System.IO; +using System.Runtime.Serialization.Json; +using System.Text; +using System.Threading; +using System.Threading.Tasks; +using System.Xml; +using Microsoft.DotNet.XHarness.Common; +using Microsoft.DotNet.XHarness.Common.Execution; +using Microsoft.DotNet.XHarness.Common.Logging; +using Microsoft.DotNet.XHarness.Common.Utilities; +using Microsoft.DotNet.XHarness.iOS.Shared; +using Microsoft.DotNet.XHarness.iOS.Shared.Execution; +using Microsoft.DotNet.XHarness.iOS.Shared.Listeners; +using Microsoft.DotNet.XHarness.iOS.Shared.Logging; +using Microsoft.DotNet.XHarness.iOS.Shared.XmlResults; + +using ExceptionLogger = System.Action; + +namespace Xharness { + public class TestReporter : ITestReporter { + const string timeoutMessage = "Test run timed out after {0} minute(s)."; + const string completionMessage = "Test run completed"; + const string failureMessage = "Test run failed"; + + readonly ISimpleListener listener; + readonly IFileBackedLog mainLog; + readonly ILogs crashLogs; + readonly IReadableLog runLog; + readonly ILogs logs; + readonly ICrashSnapshotReporter crashReporter; + readonly IResultParser resultParser; + readonly AppBundleInformation appInfo; + readonly RunMode runMode; + readonly XmlResultJargon xmlJargon; + readonly IMlaunchProcessManager processManager; + readonly string deviceName; + readonly TimeSpan timeout; + readonly Stopwatch timeoutWatch; + readonly string additionalLogsDirectory; + readonly CancellationTokenSource cancellationTokenSource = new (); + readonly ExceptionLogger exceptionLogger; + readonly bool generateHtml; + + bool waitedForExit = true; + bool launchFailure; + bool isSimulatorTest; + bool timedout; + + public ILog CallbackLog { get; private set; } + + public bool? Success { get; private set; } + + public CancellationToken CancellationToken => cancellationTokenSource.Token; + + public bool ResultsUseXml => xmlJargon != XmlResultJargon.Missing; + + bool TestExecutionStarted => listener.ConnectedTask.IsCompletedSuccessfully && listener.ConnectedTask.Result; + + public TestReporter ( + IMlaunchProcessManager processManager, + IFileBackedLog mainLog, + IReadableLog runLog, + ILogs logs, + ICrashSnapshotReporter crashReporter, + ISimpleListener simpleListener, + IResultParser parser, + AppBundleInformation appInformation, + RunMode runMode, + XmlResultJargon xmlJargon, + string device, + TimeSpan timeout, + string additionalLogsDirectory = null, + ExceptionLogger exceptionLogger = null, + bool generateHtml = false) + { + this.processManager = processManager ?? throw new ArgumentNullException (nameof (processManager)); + deviceName = device; + listener = simpleListener ?? throw new ArgumentNullException (nameof (simpleListener)); + this.mainLog = mainLog ?? throw new ArgumentNullException (nameof (mainLog)); + this.runLog = runLog ?? throw new ArgumentNullException (nameof (runLog)); + this.logs = logs ?? throw new ArgumentNullException (nameof (logs)); + this.crashReporter = crashReporter ?? throw new ArgumentNullException (nameof (crashReporter)); + crashLogs = new Logs (logs.Directory); + resultParser = parser ?? throw new ArgumentNullException (nameof (parser)); + appInfo = appInformation ?? throw new ArgumentNullException (nameof (appInformation)); + this.runMode = runMode; + this.xmlJargon = xmlJargon; + this.timeout = timeout; + this.additionalLogsDirectory = additionalLogsDirectory; + this.exceptionLogger = exceptionLogger; + timeoutWatch = Stopwatch.StartNew (); + this.generateHtml = generateHtml; + + CallbackLog = new CallbackLog ((line) => { + waitedForExit &= line?.Contains ("MT1111: ") != true; + if (line?.Contains ("error MT1007") == true) + launchFailure = true; + }); + } + + async Task GetPidFromRunLog () + { + int pid = -1; + + using var reader = runLog.GetReader (); + if (reader.Peek () == -1) { + if (!listener.ConnectedTask.IsCompletedSuccessfully || !listener.ConnectedTask.Result) + launchFailure = true; + } else { + string line; + while ((line = await reader.ReadLineAsync ()) is not null) { + if (line.StartsWith ("Application launched. PID = ", StringComparison.Ordinal)) { + var pidstr = line.Substring ("Application launched. PID = ".Length); + if (!int.TryParse (pidstr, out pid)) + mainLog.WriteLine ("Could not parse pid: {0}", pidstr); + } else if (line.Contains ("Xamarin.Hosting: Launched ") && line.Contains (" with pid ")) { + var pidstr = line.Substring (line.LastIndexOf (' ')); + if (!int.TryParse (pidstr, out pid)) + mainLog.WriteLine ("Could not parse pid: {0}", pidstr); + } else if (line.Contains ("error MT1008")) { + launchFailure = true; + } + } + } + + return pid; + } + + async Task GetPidFromMainLog () + { + int pid = -1; + using var logReader = mainLog.GetReader (); + string line; + while ((line = await logReader.ReadLineAsync ()) is not null) { + const string str = "was launched with pid '"; + var idx = line.IndexOf (str, StringComparison.Ordinal); + if (idx > 0) { + idx += str.Length; + var nextIdx = line.IndexOf ('\'', idx); + if (nextIdx > idx) + int.TryParse (line.Substring (idx, nextIdx - idx), out pid); + } + if (pid != -1) + return pid; + } + return pid; + } + + void GetCrashReason (int pid, IReadableLog crashLog, out string crashReason) + { + crashReason = null; + using var crashReader = crashLog.GetReader (); + var text = crashReader.ReadToEnd (); + + var reader = JsonReaderWriterFactory.CreateJsonReader (Encoding.UTF8.GetBytes (text), new XmlDictionaryReaderQuotas ()); + var doc = new XmlDocument (); + doc.Load (reader); + foreach (XmlNode node in doc.SelectNodes ($"/root/processes/item[pid = '" + pid + "']")) { + Console.WriteLine (node?.InnerXml); + Console.WriteLine (node?.SelectSingleNode ("reason")?.InnerText); + crashReason = node?.SelectSingleNode ("reason")?.InnerText; + } + } + + async Task TcpConnectionFailed () + { + using var reader = new StreamReader (mainLog.FullPath); + string line; + while ((line = await reader.ReadLineAsync ()) is not null) { + if (line.Contains ("Couldn't establish a TCP connection with any of the hostnames")) + return true; + } + return false; + } + + Task KillAppProcess (int pid, CancellationTokenSource cancellationSource) + { + var launchTimedout = cancellationSource.IsCancellationRequested; + var timeoutType = launchTimedout ? "Launch" : "Completion"; + mainLog.WriteLine ($"{timeoutType} timed out after {timeoutWatch.Elapsed.TotalSeconds} seconds"); + return processManager.KillTreeAsync (pid, mainLog, true); + } + + async Task CollectResult (ProcessExecutionResult runResult) + { + if (!waitedForExit && !runResult.TimedOut) { + mainLog.WriteLine ("Waiting for listener to complete, since mlaunch won't tell."); + if (!await listener.CompletionTask.TimeoutAfter (timeout - timeoutWatch.Elapsed)) + runResult.TimedOut = true; + } + + if (runResult.TimedOut) { + timedout = true; + Success = false; + mainLog.WriteLine (timeoutMessage, timeout.TotalMinutes); + } else if (runResult.Succeeded) { + mainLog.WriteLine (completionMessage); + Success = true; + } else { + mainLog.WriteLine (failureMessage); + Success = false; + } + } + + public void LaunchCallback (Task launchResult) + { + if (launchResult.IsFaulted) { + mainLog.WriteLine ($"Test execution failed: {launchResult.Exception}"); + return; + } + + if (launchResult.IsCanceled) { + mainLog.WriteLine ("Test execution was cancelled"); + return; + } + + if (launchResult.Result) { + mainLog.WriteLine ("Test execution started"); + return; + } + + cancellationTokenSource.Cancel (); + timedout = true; + + if (TestExecutionStarted) { + mainLog.WriteLine ($"Test execution timed out after {timeoutWatch.Elapsed.TotalMinutes:0.##} minutes"); + return; + } + + mainLog.WriteLine ($"Test failed to start in {timeoutWatch.Elapsed.TotalMinutes:0.##} minutes"); + } + + public async Task CollectSimulatorResult (ProcessExecutionResult runResult) + { + isSimulatorTest = true; + await CollectResult (runResult); + + if (Success is not null && !Success.Value) { + var pid = await GetPidFromRunLog (); + if (pid > 0) { + await KillAppProcess (pid, cancellationTokenSource); + } else { + mainLog.WriteLine ("Could not find pid in mtouch output."); + } + } + } + + public async Task CollectDeviceResult (ProcessExecutionResult runResult) + { + isSimulatorTest = false; + await CollectResult (runResult); + } + + async Task<(string ResultLine, bool Failed)> GetResultLine (string logPath) + { + string resultLine = null; + bool failed = false; + using var reader = new StreamReader (logPath); + string line; + while ((line = await reader.ReadLineAsync ()) is not null) { + if (line.Contains ("Tests run:")) { + Console.WriteLine (line); + resultLine = line; + break; + } else if (line.Contains ("[FAIL]")) { + Console.WriteLine (line); + failed = true; + } + } + return (ResultLine: resultLine, Failed: failed); + } + + async Task<(string resultLine, bool failed, bool crashed)> ParseResultFile (AppBundleInformation appInfo, string testLogPath, bool timedOut) + { + (string resultLine, bool failed, bool crashed) parseResult = (null, false, false); + if (!File.Exists (testLogPath)) { + parseResult.crashed = true; + return parseResult; + } + + var path = Path.ChangeExtension (testLogPath, "xml"); + if (path == testLogPath) + path = Path.Combine (Path.GetDirectoryName (path), Path.GetFileNameWithoutExtension (path) + "-clean.xml"); + + resultParser.CleanXml (testLogPath, path); + + if (ResultsUseXml && resultParser.IsValidXml (path, out var xmlType)) { + try { + var newFilename = resultParser.GetXmlFilePath (path, xmlType); + var testRunName = $"{appInfo.AppName} {appInfo.Variation}"; + if (xmlType == XmlResultJargon.NUnitV3) { + var logFiles = new List (); + logFiles.AddRange (Directory.GetFiles (crashLogs.Directory)); + if (additionalLogsDirectory is not null) + logFiles.AddRange (Directory.GetFiles (additionalLogsDirectory)); + newFilename = XmlResultParser.GetVSTSFilename (newFilename); + resultParser.UpdateMissingData (path, newFilename, testRunName, logFiles); + } else { + File.Move (path, newFilename); + } + path = newFilename; + + if (generateHtml) { + var humanReadableLog = logs.CreateFile (Path.GetFileNameWithoutExtension (testLogPath) + ".log", LogType.NUnitResult); + (parseResult.resultLine, parseResult.failed) = resultParser.ParseResults (path, xmlType, humanReadableLog); + } else { + (parseResult.resultLine, parseResult.failed) = resultParser.ParseResults (path, xmlType, (StreamWriter) null); + } + + logs.AddFile (path, LogType.XmlLog.ToString ()); + return parseResult; + } catch (Exception e) { + mainLog.WriteLine ("Could not parse xml result file: {0}", e); + mainLog.WriteLine ("File data is:"); + mainLog.WriteLine (new string ('#', 10)); + using (var stream = new StreamReader (path)) { + string line; + while ((line = await stream.ReadLineAsync ()) is not null) + mainLog.WriteLine (line); + } + mainLog.WriteLine (new string ('#', 10)); + mainLog.WriteLine ("End of xml results."); + if (timedOut) { + WrenchLog.WriteLine ($"AddSummary: {runMode} timed out
"); + return parseResult; + } else { + WrenchLog.WriteLine ($"AddSummary: {runMode} crashed
"); + mainLog.WriteLine ("Test run crashed"); + parseResult.crashed = true; + return parseResult; + } + } + } + + File.Delete (path); + (parseResult.resultLine, parseResult.failed) = await GetResultLine (testLogPath); + return parseResult; + } + + async Task<(bool Succeeded, bool Crashed, string ResultLine)> TestsSucceeded (AppBundleInformation appInfo, string testLogPath, bool timedOut) + { + var (resultLine, failed, crashed) = await ParseResultFile (appInfo, testLogPath, timedOut); + if (resultLine is not null) { + var testsRun = resultLine.Replace ("Tests run: ", ""); + if (failed) { + WrenchLog.WriteLine ("AddSummary: {0} failed: {1}
", runMode, testsRun); + mainLog.WriteLine ("Test run failed"); + return (false, crashed, resultLine); + } else { + WrenchLog.WriteLine ("AddSummary: {0} succeeded: {1}
", runMode, testsRun); + mainLog.WriteLine ("Test run succeeded"); + return (true, crashed, resultLine); + } + } else if (timedOut) { + WrenchLog.WriteLine ("AddSummary: {0} timed out
", runMode); + mainLog.WriteLine ("Test run timed out"); + return (false, false, "Test run timed out"); + } else { + WrenchLog.WriteLine ("AddSummary: {0} crashed
", runMode); + mainLog.WriteLine ("Test run crashed"); + return (false, true, "Test run crashed"); + } + } + + async Task GenerateXmlFailures (string failure, bool crashed, string crashReason) + { + if (!ResultsUseXml) + return; + + if (!string.IsNullOrEmpty (crashReason)) { + resultParser.GenerateFailure ( + logs, + "crash", + appInfo.AppName, + appInfo.Variation, + $"App Crash {appInfo.AppName} {appInfo.Variation}", + $"App crashed: {failure}", + mainLog.FullPath, + xmlJargon); + + return; + } + + if (launchFailure) { + resultParser.GenerateFailure ( + logs, + "launch", + appInfo.AppName, + appInfo.Variation, + $"App Launch {appInfo.AppName} {appInfo.Variation} on {deviceName}", + $"{failure} on {deviceName}", + mainLog.FullPath, + xmlJargon); + + return; + } + + if (!isSimulatorTest && crashed && string.IsNullOrEmpty (crashReason)) { + if (await TcpConnectionFailed ()) { + resultParser.GenerateFailure ( + logs, + "tcp-connection", + appInfo.AppName, + appInfo.Variation, + $"TcpConnection on {deviceName}", + $"Device {deviceName} could not reach the host over tcp.", + mainLog.FullPath, + xmlJargon); + } + } else if (timedout) { + resultParser.GenerateFailure ( + logs, + "timeout", + appInfo.AppName, + appInfo.Variation, + $"App Timeout {appInfo.AppName} {appInfo.Variation} on bot {deviceName}", + $"{appInfo.AppName} {appInfo.Variation} Test run timed out after {timeout.TotalMinutes} minute(s) on bot {deviceName}.", + mainLog.FullPath, + xmlJargon); + } + } + + public async Task<(TestExecutingResult ExecutingResult, string ResultMessage)> ParseResult () + { + (TestExecutingResult ExecutingResult, string ResultMessage) result = (TestExecutingResult.Finished, null); + var crashed = false; + if (File.Exists (listener.TestLog.FullPath)) { + WrenchLog.WriteLine ("AddFile: {0}", listener.TestLog.FullPath); + (Success, crashed, result.ResultMessage) = await TestsSucceeded (appInfo, listener.TestLog.FullPath, timedout); + } else if (timedout) { + WrenchLog.WriteLine ("AddSummary: {0} never launched
", runMode); + mainLog.WriteLine ("Test run never launched"); + result.ResultMessage = "Test runner never started"; + Success = false; + } else if (launchFailure) { + WrenchLog.WriteLine ("AddSummary: {0} failed to launch
", runMode); + mainLog.WriteLine ("Test run failed to launch"); + result.ResultMessage = "Test runner failed to launch"; + Success = false; + } else { + WrenchLog.WriteLine ("AddSummary: {0} crashed at startup (no log)
", runMode); + mainLog.WriteLine ("Test run started but crashed and no test results were reported"); + result.ResultMessage = "No test log file was produced"; + crashed = true; + Success = false; + } + + if (!Success.HasValue) + Success = false; + + var crashLogWaitTime = 0; + if (!Success.Value) + crashLogWaitTime = 5; + + if (crashed) + crashLogWaitTime = 30; + + await crashReporter.EndCaptureAsync (TimeSpan.FromSeconds (crashLogWaitTime)); + + if (timedout) { + if (TestExecutionStarted) { + result.ExecutingResult = TestExecutingResult.TimedOut; + } else { + result.ExecutingResult = TestExecutingResult.LaunchTimedOut; + } + } else if (launchFailure) { + result.ExecutingResult = TestExecutingResult.LaunchFailure; + } else if (crashed) { + result.ExecutingResult = TestExecutingResult.Crashed; + } else if (Success.Value) { + result.ExecutingResult = TestExecutingResult.Succeeded; + } else { + result.ExecutingResult = TestExecutingResult.Failed; + } + + if (!Success.Value) { + int pid = -1; + string crashReason = null; + foreach (var crashLog in crashLogs) { + try { + logs.Add (crashLog); + + if (pid == -1) + pid = await GetPidFromMainLog (); + + GetCrashReason (pid, crashLog, out crashReason); + if (crashReason is not null) + break; + } catch (Exception e) { + var message = string.Format ("Failed to process crash report '{1}': {0}", e.Message, crashLog.Description); + mainLog.WriteLine (message); + exceptionLogger?.Invoke (2, message); + } + } + + if (!string.IsNullOrEmpty (crashReason)) { + if (crashReason == "per-process-limit") { + result.ResultMessage = "Killed due to using too much memory (per-process-limit)."; + } else { + result.ResultMessage = $"Killed by the OS ({crashReason})"; + } + } else if (launchFailure) { + result.ResultMessage = "Launch failure"; + } + + await GenerateXmlFailures (result.ResultMessage, crashed, crashReason); + } + + return result; + } + + public void Dispose () + { + crashLogs.Dispose (); + GC.SuppressFinalize (this); + } + } +} diff --git a/tests/xharness/TestReporterFactory.cs b/tests/xharness/TestReporterFactory.cs new file mode 100644 index 000000000000..eb70d9156a2b --- /dev/null +++ b/tests/xharness/TestReporterFactory.cs @@ -0,0 +1,59 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +using System; +using Microsoft.DotNet.XHarness.Common; +using Microsoft.DotNet.XHarness.Common.Execution; +using Microsoft.DotNet.XHarness.Common.Logging; +using Microsoft.DotNet.XHarness.iOS.Shared; +using Microsoft.DotNet.XHarness.iOS.Shared.Execution; +using Microsoft.DotNet.XHarness.iOS.Shared.Listeners; +using Microsoft.DotNet.XHarness.iOS.Shared.Logging; +using Microsoft.DotNet.XHarness.iOS.Shared.XmlResults; + +using ExceptionLogger = System.Action; + +namespace Xharness { + public class TestReporterFactory : ITestReporterFactory { + readonly IMlaunchProcessManager processManager; + + public TestReporterFactory (IMlaunchProcessManager processManager) + { + this.processManager = processManager ?? throw new ArgumentNullException (nameof (processManager)); + } + + public ITestReporter Create ( + IFileBackedLog mainLog, + IReadableLog runLog, + ILogs logs, + ICrashSnapshotReporter crashSnapshotReporter, + ISimpleListener simpleListener, + IResultParser parser, + AppBundleInformation appInformation, + RunMode runMode, + XmlResultJargon xmlJargon, + string device, + TimeSpan timeout, + string additionalLogsDirectory = null, + ExceptionLogger exceptionLogger = null, + bool generateHtml = false) + { + return new TestReporter ( + processManager, + mainLog, + runLog, + logs, + crashSnapshotReporter, + simpleListener, + parser, + appInformation, + runMode, + xmlJargon, + device, + timeout, + additionalLogsDirectory, + exceptionLogger, + generateHtml); + } + } +} diff --git a/tests/xharness/xharness.csproj b/tests/xharness/xharness.csproj index 5b160168cb37..66e4fe3fe19e 100644 --- a/tests/xharness/xharness.csproj +++ b/tests/xharness/xharness.csproj @@ -101,6 +101,8 @@ + + From c74d594c87568bf7ab58929e83d4773efac00935 Mon Sep 17 00:00:00 2001 From: Rolf Bjarne Kvinge Date: Wed, 15 Apr 2026 08:31:10 +0200 Subject: [PATCH 06/47] [tests] Update expected sizes. --- .../MacCatalyst-CoreCLR-Interpreter-size.txt | 6 +++--- .../expected/MacCatalyst-CoreCLR-R2R-size.txt | 8 ++++---- .../MacCatalyst-MonoVM-interpreter-size.txt | 6 +++--- .../expected/MacCatalyst-MonoVM-size.txt | 6 +++--- .../expected/MacCatalyst-NativeAOT-size.txt | 6 +++--- .../MacOSX-CoreCLR-Interpreter-size.txt | 6 +++--- .../expected/MacOSX-CoreCLR-R2R-size.txt | 8 ++++---- .../expected/MacOSX-NativeAOT-size.txt | 13 ++++-------- .../TVOS-CoreCLR-Interpreter-size.txt | 14 ++++++------- .../expected/TVOS-CoreCLR-R2R-size.txt | 18 ++++++++--------- .../expected/TVOS-MonoVM-interpreter-size.txt | 6 +++--- .../UnitTests/expected/TVOS-MonoVM-size.txt | 6 +++--- .../expected/TVOS-NativeAOT-size.txt | 6 +++--- .../expected/iOS-CoreCLR-Interpreter-size.txt | 16 +++++++-------- .../expected/iOS-CoreCLR-R2R-size.txt | 20 +++++++++---------- .../expected/iOS-MonoVM-interpreter-size.txt | 6 +++--- .../UnitTests/expected/iOS-MonoVM-size.txt | 6 +++--- .../UnitTests/expected/iOS-NativeAOT-size.txt | 6 +++--- 18 files changed, 79 insertions(+), 84 deletions(-) diff --git a/tests/dotnet/UnitTests/expected/MacCatalyst-CoreCLR-Interpreter-size.txt b/tests/dotnet/UnitTests/expected/MacCatalyst-CoreCLR-Interpreter-size.txt index a2649b3c9573..883e287a2028 100644 --- a/tests/dotnet/UnitTests/expected/MacCatalyst-CoreCLR-Interpreter-size.txt +++ b/tests/dotnet/UnitTests/expected/MacCatalyst-CoreCLR-Interpreter-size.txt @@ -1,8 +1,8 @@ -AppBundleSize: 10,462,959 bytes (10,217.7 KB = 10.0 MB) +AppBundleSize: 10,462,403 bytes (10,217.2 KB = 10.0 MB) # The following list of files and their sizes is just informational / for review, and isn't used in the test: Contents/_CodeSignature/CodeResources: 4,951 bytes (4.8 KB = 0.0 MB) -Contents/Info.plist: 1,127 bytes (1.1 KB = 0.0 MB) -Contents/MacOS/SizeTestApp: 242,464 bytes (236.8 KB = 0.2 MB) +Contents/Info.plist: 1,099 bytes (1.1 KB = 0.0 MB) +Contents/MacOS/SizeTestApp: 241,936 bytes (236.3 KB = 0.2 MB) Contents/MonoBundle/libcoreclr.dylib: 6,386,800 bytes (6,237.1 KB = 6.1 MB) Contents/MonoBundle/libSystem.Globalization.Native.dylib: 110,432 bytes (107.8 KB = 0.1 MB) Contents/MonoBundle/libSystem.IO.Compression.Native.dylib: 1,442,208 bytes (1,408.4 KB = 1.4 MB) diff --git a/tests/dotnet/UnitTests/expected/MacCatalyst-CoreCLR-R2R-size.txt b/tests/dotnet/UnitTests/expected/MacCatalyst-CoreCLR-R2R-size.txt index 04dc8c152add..d15a6e854c58 100644 --- a/tests/dotnet/UnitTests/expected/MacCatalyst-CoreCLR-R2R-size.txt +++ b/tests/dotnet/UnitTests/expected/MacCatalyst-CoreCLR-R2R-size.txt @@ -1,15 +1,15 @@ -AppBundleSize: 19,848,953 bytes (19,383.7 KB = 18.9 MB) +AppBundleSize: 19,847,885 bytes (19,382.7 KB = 18.9 MB) # The following list of files and their sizes is just informational / for review, and isn't used in the test: Contents/_CodeSignature/CodeResources: 5,105 bytes (5.0 KB = 0.0 MB) -Contents/Info.plist: 1,127 bytes (1.1 KB = 0.0 MB) -Contents/MacOS/SizeTestApp: 242,512 bytes (236.8 KB = 0.2 MB) +Contents/Info.plist: 1,099 bytes (1.1 KB = 0.0 MB) +Contents/MacOS/SizeTestApp: 241,984 bytes (236.3 KB = 0.2 MB) Contents/MonoBundle/libcoreclr.dylib: 6,386,800 bytes (6,237.1 KB = 6.1 MB) Contents/MonoBundle/libSystem.Globalization.Native.dylib: 110,432 bytes (107.8 KB = 0.1 MB) Contents/MonoBundle/libSystem.IO.Compression.Native.dylib: 1,442,208 bytes (1,408.4 KB = 1.4 MB) Contents/MonoBundle/libSystem.Native.dylib: 146,720 bytes (143.3 KB = 0.1 MB) Contents/MonoBundle/libSystem.Net.Security.Native.dylib: 71,120 bytes (69.5 KB = 0.1 MB) Contents/MonoBundle/libSystem.Security.Cryptography.Native.Apple.dylib: 204,768 bytes (200.0 KB = 0.2 MB) -Contents/MonoBundle/Microsoft.MacCatalyst.dll: 101,888 bytes (99.5 KB = 0.1 MB) +Contents/MonoBundle/Microsoft.MacCatalyst.dll: 101,376 bytes (99.0 KB = 0.1 MB) Contents/MonoBundle/runtimeconfig.bin: 1,481 bytes (1.4 KB = 0.0 MB) Contents/MonoBundle/SizeTestApp.dll: 7,680 bytes (7.5 KB = 0.0 MB) Contents/MonoBundle/SizeTestApp.r2r.dylib: 9,371,968 bytes (9,152.3 KB = 8.9 MB) diff --git a/tests/dotnet/UnitTests/expected/MacCatalyst-MonoVM-interpreter-size.txt b/tests/dotnet/UnitTests/expected/MacCatalyst-MonoVM-interpreter-size.txt index c4c846dd0be6..e43e0cff8d51 100644 --- a/tests/dotnet/UnitTests/expected/MacCatalyst-MonoVM-interpreter-size.txt +++ b/tests/dotnet/UnitTests/expected/MacCatalyst-MonoVM-interpreter-size.txt @@ -1,8 +1,8 @@ -AppBundleSize: 5,812,970 bytes (5,676.7 KB = 5.5 MB) +AppBundleSize: 5,810,670 bytes (5,674.5 KB = 5.5 MB) # The following list of files and their sizes is just informational / for review, and isn't used in the test: Contents/_CodeSignature/CodeResources: 3,310 bytes (3.2 KB = 0.0 MB) -Contents/Info.plist: 1,127 bytes (1.1 KB = 0.0 MB) -Contents/MacOS/SizeTestApp: 4,569,744 bytes (4,462.6 KB = 4.4 MB) +Contents/Info.plist: 1,099 bytes (1.1 KB = 0.0 MB) +Contents/MacOS/SizeTestApp: 4,567,472 bytes (4,460.4 KB = 4.4 MB) Contents/MonoBundle/Microsoft.MacCatalyst.dll: 157,184 bytes (153.5 KB = 0.1 MB) Contents/MonoBundle/runtimeconfig.bin: 1,405 bytes (1.4 KB = 0.0 MB) Contents/MonoBundle/SizeTestApp.dll: 7,680 bytes (7.5 KB = 0.0 MB) diff --git a/tests/dotnet/UnitTests/expected/MacCatalyst-MonoVM-size.txt b/tests/dotnet/UnitTests/expected/MacCatalyst-MonoVM-size.txt index 92be9057e92e..91e818b5f590 100644 --- a/tests/dotnet/UnitTests/expected/MacCatalyst-MonoVM-size.txt +++ b/tests/dotnet/UnitTests/expected/MacCatalyst-MonoVM-size.txt @@ -1,8 +1,8 @@ -AppBundleSize: 16,521,278 bytes (16,134.1 KB = 15.8 MB) +AppBundleSize: 16,518,962 bytes (16,131.8 KB = 15.8 MB) # The following list of files and their sizes is just informational / for review, and isn't used in the test: Contents/_CodeSignature/CodeResources: 4,134 bytes (4.0 KB = 0.0 MB) -Contents/Info.plist: 1,127 bytes (1.1 KB = 0.0 MB) -Contents/MacOS/SizeTestApp: 13,981,888 bytes (13,654.2 KB = 13.3 MB) +Contents/Info.plist: 1,099 bytes (1.1 KB = 0.0 MB) +Contents/MacOS/SizeTestApp: 13,979,600 bytes (13,652.0 KB = 13.3 MB) Contents/MonoBundle/aot-instances.aotdata.arm64: 1,037,632 bytes (1,013.3 KB = 1.0 MB) Contents/MonoBundle/Microsoft.MacCatalyst.aotdata.arm64: 35,896 bytes (35.1 KB = 0.0 MB) Contents/MonoBundle/Microsoft.MacCatalyst.dll: 50,688 bytes (49.5 KB = 0.0 MB) diff --git a/tests/dotnet/UnitTests/expected/MacCatalyst-NativeAOT-size.txt b/tests/dotnet/UnitTests/expected/MacCatalyst-NativeAOT-size.txt index 093edf407164..01e865f827eb 100644 --- a/tests/dotnet/UnitTests/expected/MacCatalyst-NativeAOT-size.txt +++ b/tests/dotnet/UnitTests/expected/MacCatalyst-NativeAOT-size.txt @@ -1,7 +1,7 @@ -AppBundleSize: 2,599,110 bytes (2,538.2 KB = 2.5 MB) +AppBundleSize: 2,649,577 bytes (2,587.5 KB = 2.5 MB) # The following list of files and their sizes is just informational / for review, and isn't used in the test: Contents/_CodeSignature/CodeResources: 2,358 bytes (2.3 KB = 0.0 MB) -Contents/Info.plist: 1,128 bytes (1.1 KB = 0.0 MB) -Contents/MacOS/SizeTestApp: 2,593,808 bytes (2,533.0 KB = 2.5 MB) +Contents/Info.plist: 1,099 bytes (1.1 KB = 0.0 MB) +Contents/MacOS/SizeTestApp: 2,644,304 bytes (2,582.3 KB = 2.5 MB) Contents/MonoBundle/runtimeconfig.bin: 1,808 bytes (1.8 KB = 0.0 MB) Contents/PkgInfo: 8 bytes (0.0 KB = 0.0 MB) diff --git a/tests/dotnet/UnitTests/expected/MacOSX-CoreCLR-Interpreter-size.txt b/tests/dotnet/UnitTests/expected/MacOSX-CoreCLR-Interpreter-size.txt index f7b9c50090e1..38a5ce9a6dc6 100644 --- a/tests/dotnet/UnitTests/expected/MacOSX-CoreCLR-Interpreter-size.txt +++ b/tests/dotnet/UnitTests/expected/MacOSX-CoreCLR-Interpreter-size.txt @@ -1,8 +1,8 @@ -AppBundleSize: 251,560,324 bytes (245,664.4 KB = 239.9 MB) +AppBundleSize: 251,559,640 bytes (245,663.7 KB = 239.9 MB) # The following list of files and their sizes is just informational / for review, and isn't used in the test: Contents/_CodeSignature/CodeResources: 70,698 bytes (69.0 KB = 0.1 MB) -Contents/Info.plist: 758 bytes (0.7 KB = 0.0 MB) -Contents/MacOS/SizeTestApp: 7,964,368 bytes (7,777.7 KB = 7.6 MB) +Contents/Info.plist: 730 bytes (0.7 KB = 0.0 MB) +Contents/MacOS/SizeTestApp: 7,963,712 bytes (7,777.1 KB = 7.6 MB) Contents/MonoBundle/.xamarin/osx-arm64/Microsoft.CSharp.dll: 894,728 bytes (873.8 KB = 0.9 MB) Contents/MonoBundle/.xamarin/osx-arm64/Microsoft.Extensions.Caching.Abstractions.dll: 66,832 bytes (65.3 KB = 0.1 MB) Contents/MonoBundle/.xamarin/osx-arm64/Microsoft.Extensions.Configuration.Abstractions.dll: 38,664 bytes (37.8 KB = 0.0 MB) diff --git a/tests/dotnet/UnitTests/expected/MacOSX-CoreCLR-R2R-size.txt b/tests/dotnet/UnitTests/expected/MacOSX-CoreCLR-R2R-size.txt index 68e12b64bb67..04546716c7fa 100644 --- a/tests/dotnet/UnitTests/expected/MacOSX-CoreCLR-R2R-size.txt +++ b/tests/dotnet/UnitTests/expected/MacOSX-CoreCLR-R2R-size.txt @@ -1,8 +1,8 @@ -AppBundleSize: 318,433,156 bytes (310,969.9 KB = 303.7 MB) +AppBundleSize: 318,431,960 bytes (310,968.7 KB = 303.7 MB) # The following list of files and their sizes is just informational / for review, and isn't used in the test: Contents/_CodeSignature/CodeResources: 70,698 bytes (69.0 KB = 0.1 MB) -Contents/Info.plist: 758 bytes (0.7 KB = 0.0 MB) -Contents/MacOS/SizeTestApp: 7,964,368 bytes (7,777.7 KB = 7.6 MB) +Contents/Info.plist: 730 bytes (0.7 KB = 0.0 MB) +Contents/MacOS/SizeTestApp: 7,963,712 bytes (7,777.1 KB = 7.6 MB) Contents/MonoBundle/.xamarin/osx-arm64/Microsoft.CSharp.dll: 894,728 bytes (873.8 KB = 0.9 MB) Contents/MonoBundle/.xamarin/osx-arm64/Microsoft.Extensions.Caching.Abstractions.dll: 66,832 bytes (65.3 KB = 0.1 MB) Contents/MonoBundle/.xamarin/osx-arm64/Microsoft.Extensions.Configuration.Abstractions.dll: 38,664 bytes (37.8 KB = 0.0 MB) @@ -13,7 +13,7 @@ Contents/MonoBundle/.xamarin/osx-arm64/Microsoft.Extensions.Hosting.Abstractions Contents/MonoBundle/.xamarin/osx-arm64/Microsoft.Extensions.Logging.Abstractions.dll: 157,960 bytes (154.3 KB = 0.2 MB) Contents/MonoBundle/.xamarin/osx-arm64/Microsoft.Extensions.Options.dll: 144,176 bytes (140.8 KB = 0.1 MB) Contents/MonoBundle/.xamarin/osx-arm64/Microsoft.Extensions.Primitives.dll: 80,648 bytes (78.8 KB = 0.1 MB) -Contents/MonoBundle/.xamarin/osx-arm64/Microsoft.macOS.dll: 75,899,904 bytes (74,121.0 KB = 72.4 MB) +Contents/MonoBundle/.xamarin/osx-arm64/Microsoft.macOS.dll: 75,899,392 bytes (74,120.5 KB = 72.4 MB) Contents/MonoBundle/.xamarin/osx-arm64/Microsoft.VisualBasic.Core.dll: 1,335,056 bytes (1,303.8 KB = 1.3 MB) Contents/MonoBundle/.xamarin/osx-arm64/Microsoft.VisualBasic.dll: 17,672 bytes (17.3 KB = 0.0 MB) Contents/MonoBundle/.xamarin/osx-arm64/Microsoft.Win32.Primitives.dll: 16,136 bytes (15.8 KB = 0.0 MB) diff --git a/tests/dotnet/UnitTests/expected/MacOSX-NativeAOT-size.txt b/tests/dotnet/UnitTests/expected/MacOSX-NativeAOT-size.txt index ce539ee72a41..f46eac64062d 100644 --- a/tests/dotnet/UnitTests/expected/MacOSX-NativeAOT-size.txt +++ b/tests/dotnet/UnitTests/expected/MacOSX-NativeAOT-size.txt @@ -1,13 +1,8 @@ -AppBundleSize: 8,440,007 bytes (8,242.2 KB = 8.0 MB) +AppBundleSize: 5,676,301 bytes (5,543.3 KB = 5.4 MB) # The following list of files and their sizes is just informational / for review, and isn't used in the test: -Contents/_CodeSignature/CodeResources: 3,489 bytes (3.4 KB = 0.0 MB) -Contents/Info.plist: 759 bytes (0.7 KB = 0.0 MB) -Contents/MacOS/SizeTestApp: 5,446,400 bytes (5,318.8 KB = 5.2 MB) -Contents/MonoBundle/libSystem.Globalization.Native.dylib: 252,176 bytes (246.3 KB = 0.2 MB) -Contents/MonoBundle/libSystem.IO.Compression.Native.dylib: 2,005,440 bytes (1,958.4 KB = 1.9 MB) -Contents/MonoBundle/libSystem.Native.dylib: 292,176 bytes (285.3 KB = 0.3 MB) -Contents/MonoBundle/libSystem.Net.Security.Native.dylib: 136,656 bytes (133.5 KB = 0.1 MB) -Contents/MonoBundle/libSystem.Security.Cryptography.Native.Apple.dylib: 300,896 bytes (293.8 KB = 0.3 MB) +Contents/_CodeSignature/CodeResources: 2,644 bytes (2.6 KB = 0.0 MB) +Contents/Info.plist: 730 bytes (0.7 KB = 0.0 MB) +Contents/MacOS/SizeTestApp: 5,670,912 bytes (5,538.0 KB = 5.4 MB) Contents/MonoBundle/runtimeconfig.bin: 1,766 bytes (1.7 KB = 0.0 MB) Contents/PkgInfo: 8 bytes (0.0 KB = 0.0 MB) Contents/Resources/archived-expanded-entitlements.xcent: 241 bytes (0.2 KB = 0.0 MB) diff --git a/tests/dotnet/UnitTests/expected/TVOS-CoreCLR-Interpreter-size.txt b/tests/dotnet/UnitTests/expected/TVOS-CoreCLR-Interpreter-size.txt index 11b5bc40233f..f04264f52768 100644 --- a/tests/dotnet/UnitTests/expected/TVOS-CoreCLR-Interpreter-size.txt +++ b/tests/dotnet/UnitTests/expected/TVOS-CoreCLR-Interpreter-size.txt @@ -1,23 +1,23 @@ -AppBundleSize: 9,185,730 bytes (8,970.4 KB = 8.8 MB) +AppBundleSize: 9,185,562 bytes (8,970.3 KB = 8.8 MB) # The following list of files and their sizes is just informational / for review, and isn't used in the test: _CodeSignature/CodeResources: 9,851 bytes (9.6 KB = 0.0 MB) archived-expanded-entitlements.xcent: 384 bytes (0.4 KB = 0.0 MB) Frameworks/libcoreclr.framework/_CodeSignature/CodeResources: 1,798 bytes (1.8 KB = 0.0 MB) -Frameworks/libcoreclr.framework/Info.plist: 817 bytes (0.8 KB = 0.0 MB) +Frameworks/libcoreclr.framework/Info.plist: 789 bytes (0.8 KB = 0.0 MB) Frameworks/libcoreclr.framework/libcoreclr: 5,216,464 bytes (5,094.2 KB = 5.0 MB) Frameworks/libSystem.Globalization.Native.framework/_CodeSignature/CodeResources: 1,798 bytes (1.8 KB = 0.0 MB) -Frameworks/libSystem.Globalization.Native.framework/Info.plist: 859 bytes (0.8 KB = 0.0 MB) +Frameworks/libSystem.Globalization.Native.framework/Info.plist: 831 bytes (0.8 KB = 0.0 MB) Frameworks/libSystem.Globalization.Native.framework/libSystem.Globalization.Native: 109,776 bytes (107.2 KB = 0.1 MB) Frameworks/libSystem.IO.Compression.Native.framework/_CodeSignature/CodeResources: 1,798 bytes (1.8 KB = 0.0 MB) -Frameworks/libSystem.IO.Compression.Native.framework/Info.plist: 861 bytes (0.8 KB = 0.0 MB) +Frameworks/libSystem.IO.Compression.Native.framework/Info.plist: 833 bytes (0.8 KB = 0.0 MB) Frameworks/libSystem.IO.Compression.Native.framework/libSystem.IO.Compression.Native: 1,439,536 bytes (1,405.8 KB = 1.4 MB) Frameworks/libSystem.Native.framework/_CodeSignature/CodeResources: 1,798 bytes (1.8 KB = 0.0 MB) -Frameworks/libSystem.Native.framework/Info.plist: 831 bytes (0.8 KB = 0.0 MB) +Frameworks/libSystem.Native.framework/Info.plist: 803 bytes (0.8 KB = 0.0 MB) Frameworks/libSystem.Native.framework/libSystem.Native: 162,480 bytes (158.7 KB = 0.2 MB) Frameworks/libSystem.Security.Cryptography.Native.Apple.framework/_CodeSignature/CodeResources: 1,798 bytes (1.8 KB = 0.0 MB) -Frameworks/libSystem.Security.Cryptography.Native.Apple.framework/Info.plist: 887 bytes (0.9 KB = 0.0 MB) +Frameworks/libSystem.Security.Cryptography.Native.Apple.framework/Info.plist: 859 bytes (0.8 KB = 0.0 MB) Frameworks/libSystem.Security.Cryptography.Native.Apple.framework/libSystem.Security.Cryptography.Native.Apple: 195,232 bytes (190.7 KB = 0.2 MB) -Info.plist: 1,145 bytes (1.1 KB = 0.0 MB) +Info.plist: 1,117 bytes (1.1 KB = 0.0 MB) Microsoft.tvOS.dll: 98,816 bytes (96.5 KB = 0.1 MB) PkgInfo: 8 bytes (0.0 KB = 0.0 MB) runtimeconfig.bin: 1,481 bytes (1.4 KB = 0.0 MB) diff --git a/tests/dotnet/UnitTests/expected/TVOS-CoreCLR-R2R-size.txt b/tests/dotnet/UnitTests/expected/TVOS-CoreCLR-R2R-size.txt index ba7959ac9759..75480cbb3fbc 100644 --- a/tests/dotnet/UnitTests/expected/TVOS-CoreCLR-R2R-size.txt +++ b/tests/dotnet/UnitTests/expected/TVOS-CoreCLR-R2R-size.txt @@ -1,27 +1,27 @@ -AppBundleSize: 13,139,618 bytes (12,831.7 KB = 12.5 MB) +AppBundleSize: 13,138,910 bytes (12,831.0 KB = 12.5 MB) # The following list of files and their sizes is just informational / for review, and isn't used in the test: _CodeSignature/CodeResources: 10,705 bytes (10.5 KB = 0.0 MB) archived-expanded-entitlements.xcent: 384 bytes (0.4 KB = 0.0 MB) Frameworks/libcoreclr.framework/_CodeSignature/CodeResources: 1,798 bytes (1.8 KB = 0.0 MB) -Frameworks/libcoreclr.framework/Info.plist: 817 bytes (0.8 KB = 0.0 MB) +Frameworks/libcoreclr.framework/Info.plist: 789 bytes (0.8 KB = 0.0 MB) Frameworks/libcoreclr.framework/libcoreclr: 5,216,464 bytes (5,094.2 KB = 5.0 MB) Frameworks/libSystem.Globalization.Native.framework/_CodeSignature/CodeResources: 1,798 bytes (1.8 KB = 0.0 MB) -Frameworks/libSystem.Globalization.Native.framework/Info.plist: 859 bytes (0.8 KB = 0.0 MB) +Frameworks/libSystem.Globalization.Native.framework/Info.plist: 831 bytes (0.8 KB = 0.0 MB) Frameworks/libSystem.Globalization.Native.framework/libSystem.Globalization.Native: 109,776 bytes (107.2 KB = 0.1 MB) Frameworks/libSystem.IO.Compression.Native.framework/_CodeSignature/CodeResources: 1,798 bytes (1.8 KB = 0.0 MB) -Frameworks/libSystem.IO.Compression.Native.framework/Info.plist: 861 bytes (0.8 KB = 0.0 MB) +Frameworks/libSystem.IO.Compression.Native.framework/Info.plist: 833 bytes (0.8 KB = 0.0 MB) Frameworks/libSystem.IO.Compression.Native.framework/libSystem.IO.Compression.Native: 1,439,536 bytes (1,405.8 KB = 1.4 MB) Frameworks/libSystem.Native.framework/_CodeSignature/CodeResources: 1,798 bytes (1.8 KB = 0.0 MB) -Frameworks/libSystem.Native.framework/Info.plist: 831 bytes (0.8 KB = 0.0 MB) +Frameworks/libSystem.Native.framework/Info.plist: 803 bytes (0.8 KB = 0.0 MB) Frameworks/libSystem.Native.framework/libSystem.Native: 162,480 bytes (158.7 KB = 0.2 MB) Frameworks/libSystem.Security.Cryptography.Native.Apple.framework/_CodeSignature/CodeResources: 1,798 bytes (1.8 KB = 0.0 MB) -Frameworks/libSystem.Security.Cryptography.Native.Apple.framework/Info.plist: 887 bytes (0.9 KB = 0.0 MB) +Frameworks/libSystem.Security.Cryptography.Native.Apple.framework/Info.plist: 859 bytes (0.8 KB = 0.0 MB) Frameworks/libSystem.Security.Cryptography.Native.Apple.framework/libSystem.Security.Cryptography.Native.Apple: 195,232 bytes (190.7 KB = 0.2 MB) Frameworks/SizeTestApp.framework/_CodeSignature/CodeResources: 1,798 bytes (1.8 KB = 0.0 MB) -Frameworks/SizeTestApp.framework/Info.plist: 820 bytes (0.8 KB = 0.0 MB) +Frameworks/SizeTestApp.framework/Info.plist: 792 bytes (0.8 KB = 0.0 MB) Frameworks/SizeTestApp.framework/SizeTestApp: 3,936,512 bytes (3,844.2 KB = 3.8 MB) -Info.plist: 1,145 bytes (1.1 KB = 0.0 MB) -Microsoft.tvOS.dll: 98,816 bytes (96.5 KB = 0.1 MB) +Info.plist: 1,117 bytes (1.1 KB = 0.0 MB) +Microsoft.tvOS.dll: 98,304 bytes (96.0 KB = 0.1 MB) PkgInfo: 8 bytes (0.0 KB = 0.0 MB) runtimeconfig.bin: 1,481 bytes (1.4 KB = 0.0 MB) SizeTestApp: 197,104 bytes (192.5 KB = 0.2 MB) diff --git a/tests/dotnet/UnitTests/expected/TVOS-MonoVM-interpreter-size.txt b/tests/dotnet/UnitTests/expected/TVOS-MonoVM-interpreter-size.txt index 384ad734243a..e175f4f30f6e 100644 --- a/tests/dotnet/UnitTests/expected/TVOS-MonoVM-interpreter-size.txt +++ b/tests/dotnet/UnitTests/expected/TVOS-MonoVM-interpreter-size.txt @@ -1,9 +1,9 @@ -AppBundleSize: 3,636,285 bytes (3,551.1 KB = 3.5 MB) +AppBundleSize: 3,635,745 bytes (3,550.5 KB = 3.5 MB) # The following list of files and their sizes is just informational / for review, and isn't used in the test: _CodeSignature/CodeResources: 3,999 bytes (3.9 KB = 0.0 MB) archived-expanded-entitlements.xcent: 384 bytes (0.4 KB = 0.0 MB) -Info.plist: 1,145 bytes (1.1 KB = 0.0 MB) -Microsoft.tvOS.dll: 154,624 bytes (151.0 KB = 0.1 MB) +Info.plist: 1,117 bytes (1.1 KB = 0.0 MB) +Microsoft.tvOS.dll: 154,112 bytes (150.5 KB = 0.1 MB) PkgInfo: 8 bytes (0.0 KB = 0.0 MB) runtimeconfig.bin: 1,405 bytes (1.4 KB = 0.0 MB) SizeTestApp: 2,404,688 bytes (2,348.3 KB = 2.3 MB) diff --git a/tests/dotnet/UnitTests/expected/TVOS-MonoVM-size.txt b/tests/dotnet/UnitTests/expected/TVOS-MonoVM-size.txt index 329c025207ce..ef49a58931ae 100644 --- a/tests/dotnet/UnitTests/expected/TVOS-MonoVM-size.txt +++ b/tests/dotnet/UnitTests/expected/TVOS-MonoVM-size.txt @@ -1,11 +1,11 @@ -AppBundleSize: 9,502,243 bytes (9,279.5 KB = 9.1 MB) +AppBundleSize: 9,501,703 bytes (9,279.0 KB = 9.1 MB) # The following list of files and their sizes is just informational / for review, and isn't used in the test: _CodeSignature/CodeResources: 5,233 bytes (5.1 KB = 0.0 MB) aot-instances.aotdata.arm64: 818,536 bytes (799.4 KB = 0.8 MB) archived-expanded-entitlements.xcent: 384 bytes (0.4 KB = 0.0 MB) -Info.plist: 1,145 bytes (1.1 KB = 0.0 MB) +Info.plist: 1,117 bytes (1.1 KB = 0.0 MB) Microsoft.tvOS.aotdata.arm64: 22,552 bytes (22.0 KB = 0.0 MB) -Microsoft.tvOS.dll: 49,152 bytes (48.0 KB = 0.0 MB) +Microsoft.tvOS.dll: 48,640 bytes (47.5 KB = 0.0 MB) PkgInfo: 8 bytes (0.0 KB = 0.0 MB) runtimeconfig.bin: 1,481 bytes (1.4 KB = 0.0 MB) SizeTestApp: 7,377,120 bytes (7,204.2 KB = 7.0 MB) diff --git a/tests/dotnet/UnitTests/expected/TVOS-NativeAOT-size.txt b/tests/dotnet/UnitTests/expected/TVOS-NativeAOT-size.txt index a88b9788bf10..be5b8350db85 100644 --- a/tests/dotnet/UnitTests/expected/TVOS-NativeAOT-size.txt +++ b/tests/dotnet/UnitTests/expected/TVOS-NativeAOT-size.txt @@ -1,8 +1,8 @@ -AppBundleSize: 2,616,495 bytes (2,555.2 KB = 2.5 MB) +AppBundleSize: 2,682,786 bytes (2,619.9 KB = 2.6 MB) # The following list of files and their sizes is just informational / for review, and isn't used in the test: _CodeSignature/CodeResources: 2,589 bytes (2.5 KB = 0.0 MB) archived-expanded-entitlements.xcent: 384 bytes (0.4 KB = 0.0 MB) -Info.plist: 1,146 bytes (1.1 KB = 0.0 MB) +Info.plist: 1,117 bytes (1.1 KB = 0.0 MB) PkgInfo: 8 bytes (0.0 KB = 0.0 MB) runtimeconfig.bin: 1,808 bytes (1.8 KB = 0.0 MB) -SizeTestApp: 2,610,560 bytes (2,549.4 KB = 2.5 MB) +SizeTestApp: 2,676,880 bytes (2,614.1 KB = 2.6 MB) diff --git a/tests/dotnet/UnitTests/expected/iOS-CoreCLR-Interpreter-size.txt b/tests/dotnet/UnitTests/expected/iOS-CoreCLR-Interpreter-size.txt index fe39a69fde8a..e260e77427c3 100644 --- a/tests/dotnet/UnitTests/expected/iOS-CoreCLR-Interpreter-size.txt +++ b/tests/dotnet/UnitTests/expected/iOS-CoreCLR-Interpreter-size.txt @@ -1,26 +1,26 @@ -AppBundleSize: 9,253,965 bytes (9,037.1 KB = 8.8 MB) +AppBundleSize: 9,253,769 bytes (9,036.9 KB = 8.8 MB) # The following list of files and their sizes is just informational / for review, and isn't used in the test: _CodeSignature/CodeResources: 10,847 bytes (10.6 KB = 0.0 MB) archived-expanded-entitlements.xcent: 384 bytes (0.4 KB = 0.0 MB) Frameworks/libcoreclr.framework/_CodeSignature/CodeResources: 1,798 bytes (1.8 KB = 0.0 MB) -Frameworks/libcoreclr.framework/Info.plist: 841 bytes (0.8 KB = 0.0 MB) +Frameworks/libcoreclr.framework/Info.plist: 813 bytes (0.8 KB = 0.0 MB) Frameworks/libcoreclr.framework/libcoreclr: 5,203,952 bytes (5,082.0 KB = 5.0 MB) Frameworks/libSystem.Globalization.Native.framework/_CodeSignature/CodeResources: 1,798 bytes (1.8 KB = 0.0 MB) -Frameworks/libSystem.Globalization.Native.framework/Info.plist: 883 bytes (0.9 KB = 0.0 MB) +Frameworks/libSystem.Globalization.Native.framework/Info.plist: 855 bytes (0.8 KB = 0.0 MB) Frameworks/libSystem.Globalization.Native.framework/libSystem.Globalization.Native: 109,232 bytes (106.7 KB = 0.1 MB) Frameworks/libSystem.IO.Compression.Native.framework/_CodeSignature/CodeResources: 1,798 bytes (1.8 KB = 0.0 MB) -Frameworks/libSystem.IO.Compression.Native.framework/Info.plist: 885 bytes (0.9 KB = 0.0 MB) +Frameworks/libSystem.IO.Compression.Native.framework/Info.plist: 857 bytes (0.8 KB = 0.0 MB) Frameworks/libSystem.IO.Compression.Native.framework/libSystem.IO.Compression.Native: 1,431,280 bytes (1,397.7 KB = 1.4 MB) Frameworks/libSystem.Native.framework/_CodeSignature/CodeResources: 1,798 bytes (1.8 KB = 0.0 MB) -Frameworks/libSystem.Native.framework/Info.plist: 855 bytes (0.8 KB = 0.0 MB) +Frameworks/libSystem.Native.framework/Info.plist: 827 bytes (0.8 KB = 0.0 MB) Frameworks/libSystem.Native.framework/libSystem.Native: 162,208 bytes (158.4 KB = 0.2 MB) Frameworks/libSystem.Net.Security.Native.framework/_CodeSignature/CodeResources: 1,798 bytes (1.8 KB = 0.0 MB) -Frameworks/libSystem.Net.Security.Native.framework/Info.plist: 881 bytes (0.9 KB = 0.0 MB) +Frameworks/libSystem.Net.Security.Native.framework/Info.plist: 853 bytes (0.8 KB = 0.0 MB) Frameworks/libSystem.Net.Security.Native.framework/libSystem.Net.Security.Native: 88,000 bytes (85.9 KB = 0.1 MB) Frameworks/libSystem.Security.Cryptography.Native.Apple.framework/_CodeSignature/CodeResources: 1,798 bytes (1.8 KB = 0.0 MB) -Frameworks/libSystem.Security.Cryptography.Native.Apple.framework/Info.plist: 911 bytes (0.9 KB = 0.0 MB) +Frameworks/libSystem.Security.Cryptography.Native.Apple.framework/Info.plist: 883 bytes (0.9 KB = 0.0 MB) Frameworks/libSystem.Security.Cryptography.Native.Apple.framework/libSystem.Security.Cryptography.Native.Apple: 194,256 bytes (189.7 KB = 0.2 MB) -Info.plist: 1,169 bytes (1.1 KB = 0.0 MB) +Info.plist: 1,141 bytes (1.1 KB = 0.0 MB) Microsoft.iOS.dll: 98,816 bytes (96.5 KB = 0.1 MB) PkgInfo: 8 bytes (0.0 KB = 0.0 MB) runtimeconfig.bin: 1,481 bytes (1.4 KB = 0.0 MB) diff --git a/tests/dotnet/UnitTests/expected/iOS-CoreCLR-R2R-size.txt b/tests/dotnet/UnitTests/expected/iOS-CoreCLR-R2R-size.txt index 76d27fc0717c..4689c1729746 100644 --- a/tests/dotnet/UnitTests/expected/iOS-CoreCLR-R2R-size.txt +++ b/tests/dotnet/UnitTests/expected/iOS-CoreCLR-R2R-size.txt @@ -1,30 +1,30 @@ -AppBundleSize: 13,185,061 bytes (12,876.0 KB = 12.6 MB) +AppBundleSize: 13,184,325 bytes (12,875.3 KB = 12.6 MB) # The following list of files and their sizes is just informational / for review, and isn't used in the test: _CodeSignature/CodeResources: 11,701 bytes (11.4 KB = 0.0 MB) archived-expanded-entitlements.xcent: 384 bytes (0.4 KB = 0.0 MB) Frameworks/libcoreclr.framework/_CodeSignature/CodeResources: 1,798 bytes (1.8 KB = 0.0 MB) -Frameworks/libcoreclr.framework/Info.plist: 841 bytes (0.8 KB = 0.0 MB) +Frameworks/libcoreclr.framework/Info.plist: 813 bytes (0.8 KB = 0.0 MB) Frameworks/libcoreclr.framework/libcoreclr: 5,203,952 bytes (5,082.0 KB = 5.0 MB) Frameworks/libSystem.Globalization.Native.framework/_CodeSignature/CodeResources: 1,798 bytes (1.8 KB = 0.0 MB) -Frameworks/libSystem.Globalization.Native.framework/Info.plist: 883 bytes (0.9 KB = 0.0 MB) +Frameworks/libSystem.Globalization.Native.framework/Info.plist: 855 bytes (0.8 KB = 0.0 MB) Frameworks/libSystem.Globalization.Native.framework/libSystem.Globalization.Native: 109,232 bytes (106.7 KB = 0.1 MB) Frameworks/libSystem.IO.Compression.Native.framework/_CodeSignature/CodeResources: 1,798 bytes (1.8 KB = 0.0 MB) -Frameworks/libSystem.IO.Compression.Native.framework/Info.plist: 885 bytes (0.9 KB = 0.0 MB) +Frameworks/libSystem.IO.Compression.Native.framework/Info.plist: 857 bytes (0.8 KB = 0.0 MB) Frameworks/libSystem.IO.Compression.Native.framework/libSystem.IO.Compression.Native: 1,431,280 bytes (1,397.7 KB = 1.4 MB) Frameworks/libSystem.Native.framework/_CodeSignature/CodeResources: 1,798 bytes (1.8 KB = 0.0 MB) -Frameworks/libSystem.Native.framework/Info.plist: 855 bytes (0.8 KB = 0.0 MB) +Frameworks/libSystem.Native.framework/Info.plist: 827 bytes (0.8 KB = 0.0 MB) Frameworks/libSystem.Native.framework/libSystem.Native: 162,208 bytes (158.4 KB = 0.2 MB) Frameworks/libSystem.Net.Security.Native.framework/_CodeSignature/CodeResources: 1,798 bytes (1.8 KB = 0.0 MB) -Frameworks/libSystem.Net.Security.Native.framework/Info.plist: 881 bytes (0.9 KB = 0.0 MB) +Frameworks/libSystem.Net.Security.Native.framework/Info.plist: 853 bytes (0.8 KB = 0.0 MB) Frameworks/libSystem.Net.Security.Native.framework/libSystem.Net.Security.Native: 88,000 bytes (85.9 KB = 0.1 MB) Frameworks/libSystem.Security.Cryptography.Native.Apple.framework/_CodeSignature/CodeResources: 1,798 bytes (1.8 KB = 0.0 MB) -Frameworks/libSystem.Security.Cryptography.Native.Apple.framework/Info.plist: 911 bytes (0.9 KB = 0.0 MB) +Frameworks/libSystem.Security.Cryptography.Native.Apple.framework/Info.plist: 883 bytes (0.9 KB = 0.0 MB) Frameworks/libSystem.Security.Cryptography.Native.Apple.framework/libSystem.Security.Cryptography.Native.Apple: 194,256 bytes (189.7 KB = 0.2 MB) Frameworks/SizeTestApp.framework/_CodeSignature/CodeResources: 1,798 bytes (1.8 KB = 0.0 MB) -Frameworks/SizeTestApp.framework/Info.plist: 844 bytes (0.8 KB = 0.0 MB) +Frameworks/SizeTestApp.framework/Info.plist: 816 bytes (0.8 KB = 0.0 MB) Frameworks/SizeTestApp.framework/SizeTestApp: 3,913,728 bytes (3,822.0 KB = 3.7 MB) -Info.plist: 1,169 bytes (1.1 KB = 0.0 MB) -Microsoft.iOS.dll: 98,816 bytes (96.5 KB = 0.1 MB) +Info.plist: 1,141 bytes (1.1 KB = 0.0 MB) +Microsoft.iOS.dll: 98,304 bytes (96.0 KB = 0.1 MB) PkgInfo: 8 bytes (0.0 KB = 0.0 MB) runtimeconfig.bin: 1,481 bytes (1.4 KB = 0.0 MB) SizeTestApp: 196,048 bytes (191.5 KB = 0.2 MB) diff --git a/tests/dotnet/UnitTests/expected/iOS-MonoVM-interpreter-size.txt b/tests/dotnet/UnitTests/expected/iOS-MonoVM-interpreter-size.txt index 5f8d1fde0231..87dca5eef107 100644 --- a/tests/dotnet/UnitTests/expected/iOS-MonoVM-interpreter-size.txt +++ b/tests/dotnet/UnitTests/expected/iOS-MonoVM-interpreter-size.txt @@ -1,9 +1,9 @@ -AppBundleSize: 3,622,723 bytes (3,537.8 KB = 3.5 MB) +AppBundleSize: 3,622,183 bytes (3,537.3 KB = 3.5 MB) # The following list of files and their sizes is just informational / for review, and isn't used in the test: _CodeSignature/CodeResources: 3,997 bytes (3.9 KB = 0.0 MB) archived-expanded-entitlements.xcent: 384 bytes (0.4 KB = 0.0 MB) -Info.plist: 1,169 bytes (1.1 KB = 0.0 MB) -Microsoft.iOS.dll: 154,624 bytes (151.0 KB = 0.1 MB) +Info.plist: 1,141 bytes (1.1 KB = 0.0 MB) +Microsoft.iOS.dll: 154,112 bytes (150.5 KB = 0.1 MB) PkgInfo: 8 bytes (0.0 KB = 0.0 MB) runtimeconfig.bin: 1,405 bytes (1.4 KB = 0.0 MB) SizeTestApp: 2,391,104 bytes (2,335.1 KB = 2.3 MB) diff --git a/tests/dotnet/UnitTests/expected/iOS-MonoVM-size.txt b/tests/dotnet/UnitTests/expected/iOS-MonoVM-size.txt index 1b7f9cbe3c5d..ce1db03d0bc2 100644 --- a/tests/dotnet/UnitTests/expected/iOS-MonoVM-size.txt +++ b/tests/dotnet/UnitTests/expected/iOS-MonoVM-size.txt @@ -1,11 +1,11 @@ -AppBundleSize: 9,459,495 bytes (9,237.8 KB = 9.0 MB) +AppBundleSize: 9,458,955 bytes (9,237.3 KB = 9.0 MB) # The following list of files and their sizes is just informational / for review, and isn't used in the test: _CodeSignature/CodeResources: 5,229 bytes (5.1 KB = 0.0 MB) aot-instances.aotdata.arm64: 818,536 bytes (799.4 KB = 0.8 MB) archived-expanded-entitlements.xcent: 384 bytes (0.4 KB = 0.0 MB) -Info.plist: 1,169 bytes (1.1 KB = 0.0 MB) +Info.plist: 1,141 bytes (1.1 KB = 0.0 MB) Microsoft.iOS.aotdata.arm64: 22,904 bytes (22.4 KB = 0.0 MB) -Microsoft.iOS.dll: 49,152 bytes (48.0 KB = 0.0 MB) +Microsoft.iOS.dll: 48,640 bytes (47.5 KB = 0.0 MB) PkgInfo: 8 bytes (0.0 KB = 0.0 MB) runtimeconfig.bin: 1,481 bytes (1.4 KB = 0.0 MB) SizeTestApp: 7,334,000 bytes (7,162.1 KB = 7.0 MB) diff --git a/tests/dotnet/UnitTests/expected/iOS-NativeAOT-size.txt b/tests/dotnet/UnitTests/expected/iOS-NativeAOT-size.txt index 238ecfc35830..c95a8dd82c75 100644 --- a/tests/dotnet/UnitTests/expected/iOS-NativeAOT-size.txt +++ b/tests/dotnet/UnitTests/expected/iOS-NativeAOT-size.txt @@ -1,8 +1,8 @@ -AppBundleSize: 2,602,055 bytes (2,541.1 KB = 2.5 MB) +AppBundleSize: 2,667,434 bytes (2,604.9 KB = 2.5 MB) # The following list of files and their sizes is just informational / for review, and isn't used in the test: _CodeSignature/CodeResources: 2,589 bytes (2.5 KB = 0.0 MB) archived-expanded-entitlements.xcent: 384 bytes (0.4 KB = 0.0 MB) -Info.plist: 1,170 bytes (1.1 KB = 0.0 MB) +Info.plist: 1,141 bytes (1.1 KB = 0.0 MB) PkgInfo: 8 bytes (0.0 KB = 0.0 MB) runtimeconfig.bin: 1,808 bytes (1.8 KB = 0.0 MB) -SizeTestApp: 2,596,096 bytes (2,535.2 KB = 2.5 MB) +SizeTestApp: 2,661,504 bytes (2,599.1 KB = 2.5 MB) From be8a2ca1057242f745ef58011a02ffe21326d180 Mon Sep 17 00:00:00 2001 From: Rolf Bjarne Kvinge Date: Wed, 15 Apr 2026 08:52:12 +0200 Subject: [PATCH 07/47] [tests] Improve LinkSdk.DllImportTest.PingSend to try to ping multiple hosts. (#25147) Pinging localhost doesn't work for me, so try pinging a few other hosts as well, and pass the test if any ping succeeds. Also add a timeout, so the entire test run doesn't fail if a ping blocks for some reason. --- tests/linker/link sdk/DllImportTest.cs | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/tests/linker/link sdk/DllImportTest.cs b/tests/linker/link sdk/DllImportTest.cs index 23c59e77a317..1c014a4fe788 100644 --- a/tests/linker/link sdk/DllImportTest.cs +++ b/tests/linker/link sdk/DllImportTest.cs @@ -8,6 +8,9 @@ // using System.Net.NetworkInformation; +using System.Linq; +using System.Threading.Tasks; + #if !__MACOS__ using UIKit; #endif @@ -78,10 +81,17 @@ public void Sqlite3 () [Test] public void PingSend () { - var p = new Ping (); // support was implemented with https://github.com/dotnet/runtime/pull/52240 - var reply = p.Send ("localhost"); - Assert.That (reply.Status, Is.EqualTo (IPStatus.Success), "Pong"); + var hosts = new string [] { + "localhost", + "www.microsoft.com", + "microsoft.com", + }; + var timeout = TimeSpan.FromSeconds (10); + var tasks = hosts.Select (host => (new Ping ()).SendPingAsync (host, timeout)).ToArray (); + Assert.IsTrue (Task.WaitAll (tasks, timeout.Add (TimeSpan.FromSeconds (10))), "One or more of the ping requests timed out."); + var results = tasks.Select (task => task.Result.Status).ToArray (); + Assert.That (results, Has.Some.EqualTo (IPStatus.Success), "Pong any host"); } } } From aaef2d9a90d8e8b64946195c7a574c60c3999793 Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" <42748379+dotnet-maestro[bot]@users.noreply.github.com> Date: Wed, 15 Apr 2026 14:08:30 +0000 Subject: [PATCH 08/47] [main] Update dependencies from dotnet/dotnet (#25140) This pull request updates the following dependencies ## From https://github.com/dotnet/dotnet - **Subscription**: [30303172-6f12-44a9-887a-ea8520fce068](https://maestro.dot.net/subscriptions?search=30303172-6f12-44a9-887a-ea8520fce068) - **Build**: [20260413.4](https://dev.azure.com/dnceng/internal/_build/results?buildId=2949726) ([310341](https://maestro.dot.net/channel/9626/github:dotnet:dotnet/build/310341)) - **Date Produced**: April 14, 2026 10:22:10 PM UTC - **Commit**: [2476be2e45bb47d8dd6604fac803cef03198f2a7](https://github.com/dotnet/dotnet/commit/2476be2e45bb47d8dd6604fac803cef03198f2a7) - **Branch**: [release/10.0.3xx](https://github.com/dotnet/dotnet/tree/release/10.0.3xx) - **Dependency Updates**: - From [10.0.0-beta.26208.105 to 10.0.0-beta.26213.104][3] - Microsoft.DotNet.Arcade.Sdk - Microsoft.DotNet.Build.Tasks.Feed - Microsoft.DotNet.SharedFramework.Sdk - From [10.0.300-preview.0.26208.105 to 10.0.300-preview.0.26213.104][3] - Microsoft.NET.Sdk - From [10.0.300-preview.26208.105 to 10.0.300-preview.26213.104][3] - Microsoft.TemplateEngine.Authoring.Tasks [3]: https://github.com/dotnet/dotnet/compare/b510aa83c1...2476be2e45 --- eng/Version.Details.props | 10 +- eng/Version.Details.xml | 20 ++-- eng/common/core-templates/job/job.yml | 5 +- .../job/publish-build-assets.yml | 14 ++- eng/common/core-templates/jobs/jobs.yml | 5 + .../core-templates/post-build/post-build.yml | 105 ++++++++++++------ .../post-build/setup-maestro-vars.yml | 5 +- .../steps/component-governance.yml | 16 --- .../core-templates/steps/generate-sbom.yml | 60 ++-------- .../core-templates/steps/publish-logs.yml | 9 +- .../core-templates/steps/source-build.yml | 2 +- eng/common/generate-sbom-prep.ps1 | 29 ----- eng/common/generate-sbom-prep.sh | 39 ------- eng/common/template-guidance.md | 2 - eng/common/templates-official/job/job.yml | 64 ++++++----- .../steps/component-governance.yml | 7 -- .../steps/publish-pipeline-artifacts.yml | 4 +- eng/common/templates/job/job.yml | 57 +++++----- .../templates/steps/component-governance.yml | 7 -- global.json | 6 +- 20 files changed, 190 insertions(+), 276 deletions(-) delete mode 100644 eng/common/core-templates/steps/component-governance.yml delete mode 100644 eng/common/generate-sbom-prep.ps1 delete mode 100644 eng/common/generate-sbom-prep.sh delete mode 100644 eng/common/templates-official/steps/component-governance.yml delete mode 100644 eng/common/templates/steps/component-governance.yml diff --git a/eng/Version.Details.props b/eng/Version.Details.props index 05cab507b167..7c88318f639e 100644 --- a/eng/Version.Details.props +++ b/eng/Version.Details.props @@ -6,16 +6,16 @@ This file should be imported by eng/Versions.props - 10.0.0-beta.26208.105 - 10.0.0-beta.26208.105 + 10.0.0-beta.26213.104 + 10.0.0-beta.26213.104 0.11.5-alpha.26070.104 - 10.0.0-beta.26208.105 + 10.0.0-beta.26213.104 10.0.3-servicing.26070.104 10.0.3 10.0.3 - 10.0.300-preview.0.26208.105 + 10.0.300-preview.0.26213.104 10.0.3 - 10.0.300-preview.26208.105 + 10.0.300-preview.26213.104 26.0.11017 18.5.9227 diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 247bede398de..3035b3e40b7a 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -1,8 +1,8 @@ - + https://github.com/dotnet/dotnet - b510aa83c1ffafde50d015e37bff96bc8a08ea91 + 2476be2e45bb47d8dd6604fac803cef03198f2a7 https://github.com/dotnet/dotnet @@ -95,25 +95,25 @@ - + https://github.com/dotnet/dotnet - b510aa83c1ffafde50d015e37bff96bc8a08ea91 + 2476be2e45bb47d8dd6604fac803cef03198f2a7 - + https://github.com/dotnet/dotnet - b510aa83c1ffafde50d015e37bff96bc8a08ea91 + 2476be2e45bb47d8dd6604fac803cef03198f2a7 - + https://github.com/dotnet/dotnet - b510aa83c1ffafde50d015e37bff96bc8a08ea91 + 2476be2e45bb47d8dd6604fac803cef03198f2a7 https://github.com/dotnet/xharness 0668c80ec27851f3c7f1b3e4536110a1d39af587 - + https://github.com/dotnet/dotnet - b510aa83c1ffafde50d015e37bff96bc8a08ea91 + 2476be2e45bb47d8dd6604fac803cef03198f2a7 diff --git a/eng/common/core-templates/job/job.yml b/eng/common/core-templates/job/job.yml index 5ce518406198..eaed6d87e653 100644 --- a/eng/common/core-templates/job/job.yml +++ b/eng/common/core-templates/job/job.yml @@ -24,12 +24,12 @@ parameters: enablePublishBuildArtifacts: false enablePublishBuildAssets: false enablePublishTestResults: false + enablePublishing: false enableBuildRetry: false mergeTestResults: false testRunTitle: '' testResultsFormat: '' name: '' - componentGovernanceSteps: [] preSteps: [] artifactPublishSteps: [] runAsPublic: false @@ -146,9 +146,6 @@ jobs: - ${{ each step in parameters.steps }}: - ${{ step }} - - ${{ each step in parameters.componentGovernanceSteps }}: - - ${{ step }} - - ${{ if and(eq(parameters.runAsPublic, 'false'), ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}: - template: /eng/common/core-templates/steps/cleanup-microbuild.yml parameters: diff --git a/eng/common/core-templates/job/publish-build-assets.yml b/eng/common/core-templates/job/publish-build-assets.yml index 9afcb8ae1590..06f2eed0323d 100644 --- a/eng/common/core-templates/job/publish-build-assets.yml +++ b/eng/common/core-templates/job/publish-build-assets.yml @@ -172,17 +172,18 @@ jobs: targetPath: '$(Build.ArtifactStagingDirectory)/MergedManifest.xml' artifactName: AssetManifests displayName: 'Publish Merged Manifest' - retryCountOnTaskFailure: 10 # for any logs being locked - sbomEnabled: false # we don't need SBOM for logs + retryCountOnTaskFailure: 10 # for any files being locked + isProduction: false # just metadata for publishing - - template: /eng/common/core-templates/steps/publish-build-artifacts.yml + - template: /eng/common/core-templates/steps/publish-pipeline-artifacts.yml parameters: is1ESPipeline: ${{ parameters.is1ESPipeline }} args: displayName: Publish ReleaseConfigs Artifact - pathToPublish: '$(Build.StagingDirectory)/ReleaseConfigs' - publishLocation: Container + targetPath: '$(Build.StagingDirectory)/ReleaseConfigs' artifactName: ReleaseConfigs + retryCountOnTaskFailure: 10 # for any files being locked + isProduction: false # just metadata for publishing - ${{ if or(eq(parameters.publishAssetsImmediately, 'true'), eq(parameters.isAssetlessBuild, 'true')) }}: - template: /eng/common/core-templates/post-build/setup-maestro-vars.yml @@ -218,4 +219,5 @@ jobs: - template: /eng/common/core-templates/steps/publish-logs.yml parameters: is1ESPipeline: ${{ parameters.is1ESPipeline }} - JobLabel: 'Publish_Artifacts_Logs' + StageLabel: 'BuildAssetRegistry' + JobLabel: 'Publish_Artifacts_Logs' diff --git a/eng/common/core-templates/jobs/jobs.yml b/eng/common/core-templates/jobs/jobs.yml index 01ada7476651..cc8cce452786 100644 --- a/eng/common/core-templates/jobs/jobs.yml +++ b/eng/common/core-templates/jobs/jobs.yml @@ -43,6 +43,10 @@ parameters: artifacts: {} is1ESPipeline: '' + + # Publishing version w/default. + publishingVersion: 3 + repositoryAlias: self officialBuildId: '' @@ -102,6 +106,7 @@ jobs: parameters: is1ESPipeline: ${{ parameters.is1ESPipeline }} continueOnError: ${{ parameters.continueOnError }} + publishingVersion: ${{ parameters.publishingVersion }} dependsOn: - ${{ if ne(parameters.publishBuildAssetsDependsOn, '') }}: - ${{ each job in parameters.publishBuildAssetsDependsOn }}: diff --git a/eng/common/core-templates/post-build/post-build.yml b/eng/common/core-templates/post-build/post-build.yml index 2df4acb76859..905a6315e2d5 100644 --- a/eng/common/core-templates/post-build/post-build.yml +++ b/eng/common/core-templates/post-build/post-build.yml @@ -9,6 +9,7 @@ parameters: default: 3 values: - 3 + - 4 - name: BARBuildId displayName: BAR Build Id @@ -140,16 +141,30 @@ stages: PromoteToChannelIds: ${{ parameters.PromoteToChannelIds }} is1ESPipeline: ${{ parameters.is1ESPipeline }} - - task: DownloadBuildArtifacts@0 - displayName: Download Package Artifacts - inputs: - buildType: specific - buildVersionToDownload: specific - project: $(AzDOProjectName) - pipeline: $(AzDOPipelineId) - buildId: $(AzDOBuildId) - artifactName: PackageArtifacts - checkDownloadedFiles: true + - ${{ if ne(parameters.publishingInfraVersion, 4) }}: + - task: DownloadBuildArtifacts@0 + displayName: Download Package Artifacts + inputs: + buildType: specific + buildVersionToDownload: specific + project: $(AzDOProjectName) + pipeline: $(AzDOPipelineId) + buildId: $(AzDOBuildId) + artifactName: PackageArtifacts + checkDownloadedFiles: true + - ${{ if eq(parameters.publishingInfraVersion, 4) }}: + - task: DownloadPipelineArtifact@2 + displayName: Download Pipeline Artifacts (V4) + inputs: + itemPattern: '*/packages/**/*.nupkg' + targetPath: '$(Build.ArtifactStagingDirectory)/PipelineArtifactsDownload' + - task: CopyFiles@2 + displayName: Flatten packages to PackageArtifacts + inputs: + SourceFolder: '$(Build.ArtifactStagingDirectory)/PipelineArtifactsDownload' + Contents: '**/*.nupkg' + TargetFolder: '$(Build.ArtifactStagingDirectory)/PackageArtifacts' + flattenFolders: true - task: PowerShell@2 displayName: Validate @@ -183,16 +198,30 @@ stages: PromoteToChannelIds: ${{ parameters.PromoteToChannelIds }} is1ESPipeline: ${{ parameters.is1ESPipeline }} - - task: DownloadBuildArtifacts@0 - displayName: Download Package Artifacts - inputs: - buildType: specific - buildVersionToDownload: specific - project: $(AzDOProjectName) - pipeline: $(AzDOPipelineId) - buildId: $(AzDOBuildId) - artifactName: PackageArtifacts - checkDownloadedFiles: true + - ${{ if ne(parameters.publishingInfraVersion, 4) }}: + - task: DownloadBuildArtifacts@0 + displayName: Download Package Artifacts + inputs: + buildType: specific + buildVersionToDownload: specific + project: $(AzDOProjectName) + pipeline: $(AzDOPipelineId) + buildId: $(AzDOBuildId) + artifactName: PackageArtifacts + checkDownloadedFiles: true + - ${{ if eq(parameters.publishingInfraVersion, 4) }}: + - task: DownloadPipelineArtifact@2 + displayName: Download Pipeline Artifacts (V4) + inputs: + itemPattern: '*/packages/**/*.nupkg' + targetPath: '$(Build.ArtifactStagingDirectory)/PipelineArtifactsDownload' + - task: CopyFiles@2 + displayName: Flatten packages to PackageArtifacts + inputs: + SourceFolder: '$(Build.ArtifactStagingDirectory)/PipelineArtifactsDownload' + Contents: '**/*.nupkg' + TargetFolder: '$(Build.ArtifactStagingDirectory)/PackageArtifacts' + flattenFolders: true # This is necessary whenever we want to publish/restore to an AzDO private feed # Since sdk-task.ps1 tries to restore packages we need to do this authentication here @@ -244,16 +273,30 @@ stages: PromoteToChannelIds: ${{ parameters.PromoteToChannelIds }} is1ESPipeline: ${{ parameters.is1ESPipeline }} - - task: DownloadBuildArtifacts@0 - displayName: Download Blob Artifacts - inputs: - buildType: specific - buildVersionToDownload: specific - project: $(AzDOProjectName) - pipeline: $(AzDOPipelineId) - buildId: $(AzDOBuildId) - artifactName: BlobArtifacts - checkDownloadedFiles: true + - ${{ if ne(parameters.publishingInfraVersion, 4) }}: + - task: DownloadBuildArtifacts@0 + displayName: Download Blob Artifacts + inputs: + buildType: specific + buildVersionToDownload: specific + project: $(AzDOProjectName) + pipeline: $(AzDOPipelineId) + buildId: $(AzDOBuildId) + artifactName: BlobArtifacts + checkDownloadedFiles: true + - ${{ if eq(parameters.publishingInfraVersion, 4) }}: + - task: DownloadPipelineArtifact@2 + displayName: Download Pipeline Artifacts (V4) + inputs: + itemPattern: '*/assets/**' + targetPath: '$(Build.ArtifactStagingDirectory)/PipelineArtifactsDownload' + - task: CopyFiles@2 + displayName: Flatten assets to BlobArtifacts + inputs: + SourceFolder: '$(Build.ArtifactStagingDirectory)/PipelineArtifactsDownload' + Contents: '**/*' + TargetFolder: '$(Build.ArtifactStagingDirectory)/BlobArtifacts' + flattenFolders: true - task: PowerShell@2 displayName: Validate @@ -328,7 +371,7 @@ stages: scriptPath: $(System.DefaultWorkingDirectory)/eng/common/post-build/publish-using-darc.ps1 arguments: > -BuildId $(BARBuildId) - -PublishingInfraVersion ${{ parameters.publishingInfraVersion }} + -PublishingInfraVersion 3 -AzdoToken '$(System.AccessToken)' -WaitPublishingFinish true -RequireDefaultChannels ${{ parameters.requireDefaultChannels }} diff --git a/eng/common/core-templates/post-build/setup-maestro-vars.yml b/eng/common/core-templates/post-build/setup-maestro-vars.yml index a7abd58c4bb6..6dfa99ec5e37 100644 --- a/eng/common/core-templates/post-build/setup-maestro-vars.yml +++ b/eng/common/core-templates/post-build/setup-maestro-vars.yml @@ -8,12 +8,11 @@ steps: - 'Illegal entry point, is1ESPipeline is not defined. Repository yaml should not directly reference templates in core-templates folder.': error - ${{ if eq(coalesce(parameters.PromoteToChannelIds, 0), 0) }}: - - task: DownloadBuildArtifacts@0 + - task: DownloadPipelineArtifact@2 displayName: Download Release Configs inputs: - buildType: current artifactName: ReleaseConfigs - checkDownloadedFiles: true + targetPath: '$(Build.StagingDirectory)/ReleaseConfigs' - task: AzureCLI@2 name: setReleaseVars diff --git a/eng/common/core-templates/steps/component-governance.yml b/eng/common/core-templates/steps/component-governance.yml deleted file mode 100644 index cf0649aa9565..000000000000 --- a/eng/common/core-templates/steps/component-governance.yml +++ /dev/null @@ -1,16 +0,0 @@ -parameters: - disableComponentGovernance: false - componentGovernanceIgnoreDirectories: '' - is1ESPipeline: false - displayName: 'Component Detection' - -steps: -- ${{ if eq(parameters.disableComponentGovernance, 'true') }}: - - script: echo "##vso[task.setvariable variable=skipComponentGovernanceDetection]true" - displayName: Set skipComponentGovernanceDetection variable -- ${{ if ne(parameters.disableComponentGovernance, 'true') }}: - - task: ComponentGovernanceComponentDetection@0 - continueOnError: true - displayName: ${{ parameters.displayName }} - inputs: - ignoreDirectories: ${{ parameters.componentGovernanceIgnoreDirectories }} diff --git a/eng/common/core-templates/steps/generate-sbom.yml b/eng/common/core-templates/steps/generate-sbom.yml index c05f65027979..aad0a8aeda33 100644 --- a/eng/common/core-templates/steps/generate-sbom.yml +++ b/eng/common/core-templates/steps/generate-sbom.yml @@ -1,54 +1,14 @@ -# BuildDropPath - The root folder of the drop directory for which the manifest file will be generated. -# PackageName - The name of the package this SBOM represents. -# PackageVersion - The version of the package this SBOM represents. -# ManifestDirPath - The path of the directory where the generated manifest files will be placed -# IgnoreDirectories - Directories to ignore for SBOM generation. This will be passed through to the CG component detector. - parameters: - PackageVersion: 10.0.0 - BuildDropPath: '$(System.DefaultWorkingDirectory)/artifacts' - PackageName: '.NET' - ManifestDirPath: $(Build.ArtifactStagingDirectory)/sbom - IgnoreDirectories: '' - sbomContinueOnError: true - is1ESPipeline: false - # disable publishArtifacts if some other step is publishing the artifacts (like job.yml). - publishArtifacts: true + PackageVersion: unused + BuildDropPath: unused + PackageName: unused + ManifestDirPath: unused + IgnoreDirectories: unused + sbomContinueOnError: unused + is1ESPipeline: unused + publishArtifacts: unused steps: -- task: PowerShell@2 - displayName: Prep for SBOM generation in (Non-linux) - condition: or(eq(variables['Agent.Os'], 'Windows_NT'), eq(variables['Agent.Os'], 'Darwin')) - inputs: - filePath: ./eng/common/generate-sbom-prep.ps1 - arguments: ${{parameters.manifestDirPath}} - -# Chmodding is a workaround for https://github.com/dotnet/arcade/issues/8461 - script: | - chmod +x ./eng/common/generate-sbom-prep.sh - ./eng/common/generate-sbom-prep.sh ${{parameters.manifestDirPath}} - displayName: Prep for SBOM generation in (Linux) - condition: eq(variables['Agent.Os'], 'Linux') - continueOnError: ${{ parameters.sbomContinueOnError }} - -- task: AzureArtifacts.manifest-generator-task.manifest-generator-task.ManifestGeneratorTask@0 - displayName: 'Generate SBOM manifest' - continueOnError: ${{ parameters.sbomContinueOnError }} - inputs: - PackageName: ${{ parameters.packageName }} - BuildDropPath: ${{ parameters.buildDropPath }} - PackageVersion: ${{ parameters.packageVersion }} - ManifestDirPath: ${{ parameters.manifestDirPath }}/$(ARTIFACT_NAME) - ${{ if ne(parameters.IgnoreDirectories, '') }}: - AdditionalComponentDetectorArgs: '--IgnoreDirectories ${{ parameters.IgnoreDirectories }}' - -- ${{ if eq(parameters.publishArtifacts, 'true')}}: - - template: /eng/common/core-templates/steps/publish-pipeline-artifacts.yml - parameters: - is1ESPipeline: ${{ parameters.is1ESPipeline }} - args: - displayName: Publish SBOM manifest - continueOnError: ${{parameters.sbomContinueOnError}} - targetPath: '${{ parameters.manifestDirPath }}' - artifactName: $(ARTIFACT_NAME) - + echo "##vso[task.logissue type=warning]Including generate-sbom.yml is deprecated, SBOM generation is handled 1ES PT now. Remove this include." + displayName: Issue generate-sbom.yml deprecation warning diff --git a/eng/common/core-templates/steps/publish-logs.yml b/eng/common/core-templates/steps/publish-logs.yml index a9ea99ba6aaa..4eed0312b807 100644 --- a/eng/common/core-templates/steps/publish-logs.yml +++ b/eng/common/core-templates/steps/publish-logs.yml @@ -50,13 +50,14 @@ steps: TargetFolder: '$(Build.ArtifactStagingDirectory)/PostBuildLogs' condition: always() -- template: /eng/common/core-templates/steps/publish-build-artifacts.yml +- template: /eng/common/core-templates/steps/publish-pipeline-artifacts.yml parameters: is1ESPipeline: ${{ parameters.is1ESPipeline }} args: displayName: Publish Logs - pathToPublish: '$(Build.ArtifactStagingDirectory)/PostBuildLogs' - publishLocation: Container - artifactName: PostBuildLogs + targetPath: '$(Build.ArtifactStagingDirectory)/PostBuildLogs' + artifactName: PostBuildLogs_${{ parameters.StageLabel }}_${{ parameters.JobLabel }}_Attempt$(System.JobAttempt) continueOnError: true condition: always() + retryCountOnTaskFailure: 10 # for any files being locked + isProduction: false # logs are non-production artifacts diff --git a/eng/common/core-templates/steps/source-build.yml b/eng/common/core-templates/steps/source-build.yml index b9c86c18ae42..09ae5cd73ae3 100644 --- a/eng/common/core-templates/steps/source-build.yml +++ b/eng/common/core-templates/steps/source-build.yml @@ -62,4 +62,4 @@ steps: artifactName: BuildLogs_SourceBuild_${{ parameters.platform.name }}_Attempt$(System.JobAttempt) continueOnError: true condition: succeededOrFailed() - sbomEnabled: false # we don't need SBOM for logs + isProduction: false # logs are non-production artifacts diff --git a/eng/common/generate-sbom-prep.ps1 b/eng/common/generate-sbom-prep.ps1 deleted file mode 100644 index a0c7d792a76f..000000000000 --- a/eng/common/generate-sbom-prep.ps1 +++ /dev/null @@ -1,29 +0,0 @@ -Param( - [Parameter(Mandatory=$true)][string] $ManifestDirPath # Manifest directory where sbom will be placed -) - -. $PSScriptRoot\pipeline-logging-functions.ps1 - -# Normally - we'd listen to the manifest path given, but 1ES templates will overwrite if this level gets uploaded directly -# with their own overwriting ours. So we create it as a sub directory of the requested manifest path. -$ArtifactName = "${env:SYSTEM_STAGENAME}_${env:AGENT_JOBNAME}_SBOM" -$SafeArtifactName = $ArtifactName -replace '["/:<>\\|?@*"() ]', '_' -$SbomGenerationDir = Join-Path $ManifestDirPath $SafeArtifactName - -Write-Host "Artifact name before : $ArtifactName" -Write-Host "Artifact name after : $SafeArtifactName" - -Write-Host "Creating dir $ManifestDirPath" - -# create directory for sbom manifest to be placed -if (!(Test-Path -path $SbomGenerationDir)) -{ - New-Item -ItemType Directory -path $SbomGenerationDir - Write-Host "Successfully created directory $SbomGenerationDir" -} -else{ - Write-PipelineTelemetryError -category 'Build' "Unable to create sbom folder." -} - -Write-Host "Updating artifact name" -Write-Host "##vso[task.setvariable variable=ARTIFACT_NAME]$SafeArtifactName" diff --git a/eng/common/generate-sbom-prep.sh b/eng/common/generate-sbom-prep.sh deleted file mode 100644 index b8ecca72bbf5..000000000000 --- a/eng/common/generate-sbom-prep.sh +++ /dev/null @@ -1,39 +0,0 @@ -#!/usr/bin/env bash - -source="${BASH_SOURCE[0]}" - -# resolve $SOURCE until the file is no longer a symlink -while [[ -h $source ]]; do - scriptroot="$( cd -P "$( dirname "$source" )" && pwd )" - source="$(readlink "$source")" - - # if $source was a relative symlink, we need to resolve it relative to the path where the - # symlink file was located - [[ $source != /* ]] && source="$scriptroot/$source" -done -scriptroot="$( cd -P "$( dirname "$source" )" && pwd )" -. $scriptroot/pipeline-logging-functions.sh - - -# replace all special characters with _, some builds use special characters like : in Agent.Jobname, that is not a permissible name while uploading artifacts. -artifact_name=$SYSTEM_STAGENAME"_"$AGENT_JOBNAME"_SBOM" -safe_artifact_name="${artifact_name//["/:<>\\|?@*$" ]/_}" -manifest_dir=$1 - -# Normally - we'd listen to the manifest path given, but 1ES templates will overwrite if this level gets uploaded directly -# with their own overwriting ours. So we create it as a sub directory of the requested manifest path. -sbom_generation_dir="$manifest_dir/$safe_artifact_name" - -if [ ! -d "$sbom_generation_dir" ] ; then - mkdir -p "$sbom_generation_dir" - echo "Sbom directory created." $sbom_generation_dir -else - Write-PipelineTelemetryError -category 'Build' "Unable to create sbom folder." -fi - -echo "Artifact name before : "$artifact_name -echo "Artifact name after : "$safe_artifact_name -export ARTIFACT_NAME=$safe_artifact_name -echo "##vso[task.setvariable variable=ARTIFACT_NAME]$safe_artifact_name" - -exit 0 diff --git a/eng/common/template-guidance.md b/eng/common/template-guidance.md index 4bf4cf41bd7c..e2b07a865f10 100644 --- a/eng/common/template-guidance.md +++ b/eng/common/template-guidance.md @@ -82,7 +82,6 @@ eng\common\ publish-build-artifacts.yml (logic) publish-pipeline-artifacts.yml (logic) component-governance.yml (shim) - generate-sbom.yml (shim) publish-logs.yml (shim) retain-build.yml (shim) send-to-helix.yml (shim) @@ -107,7 +106,6 @@ eng\common\ setup-maestro-vars.yml (logic) steps\ component-governance.yml (logic) - generate-sbom.yml (logic) publish-build-artifacts.yml (redirect) publish-logs.yml (logic) publish-pipeline-artifacts.yml (redirect) diff --git a/eng/common/templates-official/job/job.yml b/eng/common/templates-official/job/job.yml index 92a0664f5647..d68e9fbc2656 100644 --- a/eng/common/templates-official/job/job.yml +++ b/eng/common/templates-official/job/job.yml @@ -1,24 +1,15 @@ parameters: -# Sbom related params - enableSbom: true runAsPublic: false - PackageVersion: 9.0.0 - BuildDropPath: '$(System.DefaultWorkingDirectory)/artifacts' +# Sbom related params, unused now and can eventually be removed + enableSbom: unused + PackageVersion: unused + BuildDropPath: unused jobs: - template: /eng/common/core-templates/job/job.yml parameters: is1ESPipeline: true - componentGovernanceSteps: - - ${{ if and(eq(parameters.runAsPublic, 'false'), ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest'), eq(parameters.enableSbom, 'true')) }}: - - template: /eng/common/templates/steps/generate-sbom.yml - parameters: - PackageVersion: ${{ parameters.packageVersion }} - BuildDropPath: ${{ parameters.buildDropPath }} - ManifestDirPath: $(Build.ArtifactStagingDirectory)/sbom - publishArtifacts: false - # publish artifacts # for 1ES managed templates, use the templateContext.output to handle multiple outputs. templateContext: @@ -26,12 +17,19 @@ jobs: outputs: - ${{ if ne(parameters.artifacts.publish, '') }}: - ${{ if and(ne(parameters.artifacts.publish.artifacts, 'false'), ne(parameters.artifacts.publish.artifacts, '')) }}: - - output: buildArtifacts + - output: pipelineArtifact displayName: Publish pipeline artifacts - PathtoPublish: '$(Build.ArtifactStagingDirectory)/artifacts' - ArtifactName: ${{ coalesce(parameters.artifacts.publish.artifacts.name , 'Artifacts_$(Agent.Os)_$(_BuildConfig)') }} - condition: always() - retryCountOnTaskFailure: 10 # for any logs being locked + targetPath: '$(Build.ArtifactStagingDirectory)/artifacts' + artifactName: ${{ coalesce(parameters.artifacts.publish.artifacts.name , 'Artifacts_$(Agent.Os)_$(_BuildConfig)') }} + condition: succeeded() + retryCountOnTaskFailure: 10 # for any files being locked + continueOnError: true + - output: pipelineArtifact + displayName: Publish pipeline artifacts + targetPath: '$(Build.ArtifactStagingDirectory)/artifacts' + artifactName: ${{ coalesce(parameters.artifacts.publish.artifacts.name , 'Artifacts_$(Agent.Os)_$(_BuildConfig)') }}_Attempt$(System.JobAttempt) + condition: not(succeeded()) + retryCountOnTaskFailure: 10 # for any files being locked continueOnError: true - ${{ if and(ne(parameters.artifacts.publish.logs, 'false'), ne(parameters.artifacts.publish.logs, '')) }}: - output: pipelineArtifact @@ -40,18 +38,18 @@ jobs: displayName: 'Publish logs' continueOnError: true condition: always() - retryCountOnTaskFailure: 10 # for any logs being locked - sbomEnabled: false # we don't need SBOM for logs + retryCountOnTaskFailure: 10 # for any files being locked + isProduction: false # logs are non-production artifacts - ${{ if eq(parameters.enablePublishBuildArtifacts, true) }}: - - output: buildArtifacts + - output: pipelineArtifact displayName: Publish Logs - PathtoPublish: '$(Build.ArtifactStagingDirectory)/artifacts/log/$(_BuildConfig)' - publishLocation: Container - ArtifactName: ${{ coalesce(parameters.enablePublishBuildArtifacts.artifactName, '$(Agent.Os)_$(Agent.JobName)_Attempt$(System.JobAttempt)' ) }} + targetPath: '$(Build.ArtifactStagingDirectory)/artifacts/log/$(_BuildConfig)' + artifactName: ${{ coalesce(parameters.enablePublishBuildArtifacts.artifactName, '$(Agent.Os)_$(Agent.JobName)_Attempt$(System.JobAttempt)' ) }} continueOnError: true condition: always() - sbomEnabled: false # we don't need SBOM for logs + retryCountOnTaskFailure: 10 # for any files being locked + isProduction: false # logs are non-production artifacts - ${{ if eq(parameters.enableBuildRetry, 'true') }}: - output: pipelineArtifact @@ -59,14 +57,20 @@ jobs: artifactName: 'BuildConfiguration' displayName: 'Publish build retry configuration' continueOnError: true - sbomEnabled: false # we don't need SBOM for BuildConfiguration + retryCountOnTaskFailure: 10 # for any files being locked + isProduction: false # BuildConfiguration is a non-production artifact - - ${{ if and(eq(parameters.runAsPublic, 'false'), ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest'), eq(parameters.enableSbom, 'true')) }}: + # V4 publishing: automatically publish staged artifacts as a pipeline artifact. + # The artifact name matches the SDK's FutureArtifactName ($(System.PhaseName)_Artifacts), + # which is encoded in the asset manifest for downstream publishing to discover. + # Jobs can opt in by setting enablePublishing: true. + - ${{ if and(eq(parameters.publishingVersion, 4), eq(parameters.enablePublishing, 'true')) }}: - output: pipelineArtifact - displayName: Publish SBOM manifest + displayName: 'Publish V4 pipeline artifacts' + targetPath: '$(Build.ArtifactStagingDirectory)/artifacts' + artifactName: '$(System.PhaseName)_Artifacts' continueOnError: true - targetPath: $(Build.ArtifactStagingDirectory)/sbom - artifactName: $(ARTIFACT_NAME) + retryCountOnTaskFailure: 10 # for any files being locked # add any outputs provided via root yaml - ${{ if ne(parameters.templateContext.outputs, '') }}: diff --git a/eng/common/templates-official/steps/component-governance.yml b/eng/common/templates-official/steps/component-governance.yml deleted file mode 100644 index 30bb3985ca2b..000000000000 --- a/eng/common/templates-official/steps/component-governance.yml +++ /dev/null @@ -1,7 +0,0 @@ -steps: -- template: /eng/common/core-templates/steps/component-governance.yml - parameters: - is1ESPipeline: true - - ${{ each parameter in parameters }}: - ${{ parameter.key }}: ${{ parameter.value }} diff --git a/eng/common/templates-official/steps/publish-pipeline-artifacts.yml b/eng/common/templates-official/steps/publish-pipeline-artifacts.yml index 172f9f0fdc97..9e5981365e56 100644 --- a/eng/common/templates-official/steps/publish-pipeline-artifacts.yml +++ b/eng/common/templates-official/steps/publish-pipeline-artifacts.yml @@ -24,5 +24,7 @@ steps: artifactName: ${{ parameters.args.artifactName }} ${{ if parameters.args.properties }}: properties: ${{ parameters.args.properties }} - ${{ if parameters.args.sbomEnabled }}: + ${{ if ne(parameters.args.sbomEnabled, '') }}: sbomEnabled: ${{ parameters.args.sbomEnabled }} + ${{ if ne(parameters.args.isProduction, '') }}: + isProduction: ${{ parameters.args.isProduction }} diff --git a/eng/common/templates/job/job.yml b/eng/common/templates/job/job.yml index 238fa0818f7b..5e261f34db42 100644 --- a/eng/common/templates/job/job.yml +++ b/eng/common/templates/job/job.yml @@ -1,12 +1,12 @@ parameters: enablePublishBuildArtifacts: false - disableComponentGovernance: '' - componentGovernanceIgnoreDirectories: '' -# Sbom related params - enableSbom: true runAsPublic: false - PackageVersion: 9.0.0 - BuildDropPath: '$(System.DefaultWorkingDirectory)/artifacts' +# CG related params, unused now and can eventually be removed + disableComponentGovernance: unused +# Sbom related params, unused now and can eventually be removed + enableSbom: unused + PackageVersion: unused + BuildDropPath: unused jobs: - template: /eng/common/core-templates/job/job.yml @@ -21,32 +21,34 @@ jobs: - ${{ each step in parameters.steps }}: - ${{ step }} - componentGovernanceSteps: - - template: /eng/common/templates/steps/component-governance.yml - parameters: - ${{ if eq(parameters.disableComponentGovernance, '') }}: - ${{ if and(ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest'), eq(parameters.runAsPublic, 'false'), or(startsWith(variables['Build.SourceBranch'], 'refs/heads/release/'), startsWith(variables['Build.SourceBranch'], 'refs/heads/dotnet/'), startsWith(variables['Build.SourceBranch'], 'refs/heads/microsoft/'), eq(variables['Build.SourceBranch'], 'refs/heads/main'))) }}: - disableComponentGovernance: false - ${{ else }}: - disableComponentGovernance: true - ${{ else }}: - disableComponentGovernance: ${{ parameters.disableComponentGovernance }} - componentGovernanceIgnoreDirectories: ${{ parameters.componentGovernanceIgnoreDirectories }} + # we don't run CG in public + - ${{ if eq(variables['System.TeamProject'], 'public') }}: + - script: echo "##vso[task.setvariable variable=skipComponentGovernanceDetection]true" + displayName: Set skipComponentGovernanceDetection variable artifactPublishSteps: - ${{ if ne(parameters.artifacts.publish, '') }}: - ${{ if and(ne(parameters.artifacts.publish.artifacts, 'false'), ne(parameters.artifacts.publish.artifacts, '')) }}: - - template: /eng/common/core-templates/steps/publish-build-artifacts.yml + - template: /eng/common/core-templates/steps/publish-pipeline-artifacts.yml parameters: is1ESPipeline: false args: displayName: Publish pipeline artifacts - pathToPublish: '$(Build.ArtifactStagingDirectory)/artifacts' - publishLocation: Container + targetPath: '$(Build.ArtifactStagingDirectory)/artifacts' artifactName: ${{ coalesce(parameters.artifacts.publish.artifacts.name , 'Artifacts_$(Agent.Os)_$(_BuildConfig)') }} continueOnError: true - condition: always() - retryCountOnTaskFailure: 10 # for any logs being locked + condition: succeeded() + retryCountOnTaskFailure: 10 # for any files being locked + - template: /eng/common/core-templates/steps/publish-pipeline-artifacts.yml + parameters: + is1ESPipeline: false + args: + displayName: Publish pipeline artifacts + targetPath: '$(Build.ArtifactStagingDirectory)/artifacts' + artifactName: ${{ coalesce(parameters.artifacts.publish.artifacts.name , 'Artifacts_$(Agent.Os)_$(_BuildConfig)') }}_Attempt$(System.JobAttempt) + continueOnError: true + condition: not(succeeded()) + retryCountOnTaskFailure: 10 # for any files being locked - ${{ if and(ne(parameters.artifacts.publish.logs, 'false'), ne(parameters.artifacts.publish.logs, '')) }}: - template: /eng/common/core-templates/steps/publish-pipeline-artifacts.yml parameters: @@ -57,20 +59,19 @@ jobs: displayName: 'Publish logs' continueOnError: true condition: always() - retryCountOnTaskFailure: 10 # for any logs being locked - sbomEnabled: false # we don't need SBOM for logs + retryCountOnTaskFailure: 10 # for any files being locked - ${{ if ne(parameters.enablePublishBuildArtifacts, 'false') }}: - - template: /eng/common/core-templates/steps/publish-build-artifacts.yml + - template: /eng/common/core-templates/steps/publish-pipeline-artifacts.yml parameters: is1ESPipeline: false args: displayName: Publish Logs - pathToPublish: '$(Build.ArtifactStagingDirectory)/artifacts/log/$(_BuildConfig)' - publishLocation: Container + targetPath: '$(Build.ArtifactStagingDirectory)/artifacts/log/$(_BuildConfig)' artifactName: ${{ coalesce(parameters.enablePublishBuildArtifacts.artifactName, '$(Agent.Os)_$(Agent.JobName)_Attempt$(System.JobAttempt)' ) }} continueOnError: true condition: always() + retryCountOnTaskFailure: 10 # for any files being locked - ${{ if eq(parameters.enableBuildRetry, 'true') }}: - template: /eng/common/core-templates/steps/publish-pipeline-artifacts.yml @@ -81,4 +82,4 @@ jobs: artifactName: 'BuildConfiguration' displayName: 'Publish build retry configuration' continueOnError: true - sbomEnabled: false # we don't need SBOM for BuildConfiguration + retryCountOnTaskFailure: 10 # for any files being locked diff --git a/eng/common/templates/steps/component-governance.yml b/eng/common/templates/steps/component-governance.yml deleted file mode 100644 index c12a5f8d21d7..000000000000 --- a/eng/common/templates/steps/component-governance.yml +++ /dev/null @@ -1,7 +0,0 @@ -steps: -- template: /eng/common/core-templates/steps/component-governance.yml - parameters: - is1ESPipeline: false - - ${{ each parameter in parameters }}: - ${{ parameter.key }}: ${{ parameter.value }} diff --git a/global.json b/global.json index f3698d5d7068..0a777ae9f9bc 100644 --- a/global.json +++ b/global.json @@ -1,6 +1,6 @@ { "sdk": { - "version": "10.0.300-preview.0.26208.105", + "version": "10.0.300-preview.0.26213.104", "paths": [ "builds/downloads/dotnet", "$host$" @@ -8,9 +8,9 @@ "errorMessage": "The .NET SDK could not be found, please run 'make dotnet -C builds'." }, "tools": { - "dotnet": "10.0.300-preview.0.26208.105" + "dotnet": "10.0.300-preview.0.26213.104" }, "msbuild-sdks": { - "Microsoft.DotNet.Arcade.Sdk": "10.0.0-beta.26208.105" + "Microsoft.DotNet.Arcade.Sdk": "10.0.0-beta.26213.104" } } From 18f0646c1e26307c370aae6bcf0744d7c33341bc Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" <42748379+dotnet-maestro[bot]@users.noreply.github.com> Date: Wed, 15 Apr 2026 14:26:32 +0000 Subject: [PATCH 09/47] [main] Update dependencies from dotnet/xharness (#25153) This pull request updates the following dependencies ## From https://github.com/dotnet/xharness - **Subscription**: [02e03784-16b3-4ced-b02a-3715797fc7da](https://maestro.dot.net/subscriptions?search=02e03784-16b3-4ced-b02a-3715797fc7da) - **Build**: [20260414.1](https://dev.azure.com/dnceng/internal/_build/results?buildId=2950778) ([310284](https://maestro.dot.net/channel/2/github:dotnet:xharness/build/310284)) - **Date Produced**: April 14, 2026 2:47:53 PM UTC - **Commit**: [84f48de9bd52fdee2a3b42e45e0b21b79413005e](https://github.com/dotnet/xharness/commit/84f48de9bd52fdee2a3b42e45e0b21b79413005e) - **Branch**: [main](https://github.com/dotnet/xharness/tree/main) - **Dependency Updates**: - From [11.0.0-prerelease.26204.1 to 11.0.0-prerelease.26214.1][1] - Microsoft.DotNet.XHarness.iOS.Shared [1]: https://github.com/dotnet/xharness/compare/0668c80ec2...84f48de9bd --- eng/Version.Details.props | 2 +- eng/Version.Details.xml | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/eng/Version.Details.props b/eng/Version.Details.props index 7c88318f639e..0641fac63c61 100644 --- a/eng/Version.Details.props +++ b/eng/Version.Details.props @@ -30,7 +30,7 @@ This file should be imported by eng/Versions.props 18.5.9227 26.4.9011 - 11.0.0-prerelease.26204.1 + 11.0.0-prerelease.26214.1 18.0.9617 18.0.9617 diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 3035b3e40b7a..7288fb4dd92e 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -107,9 +107,9 @@ https://github.com/dotnet/dotnet 2476be2e45bb47d8dd6604fac803cef03198f2a7 - + https://github.com/dotnet/xharness - 0668c80ec27851f3c7f1b3e4536110a1d39af587 + 84f48de9bd52fdee2a3b42e45e0b21b79413005e https://github.com/dotnet/dotnet From 43c4600c1dab3a46e58fc6ec6f6ba13b6ac73de1 Mon Sep 17 00:00:00 2001 From: Alex Soto Date: Wed, 15 Apr 2026 13:53:07 -0400 Subject: [PATCH 10/47] [apidiff] Update reference/stable versions to latest .NET 10 / Xcode 26.3 (#25157) --- Make.config | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Make.config b/Make.config index e6812926afd8..89eed0961897 100644 --- a/Make.config +++ b/Make.config @@ -50,10 +50,10 @@ include $(TOP)/Make.versions # The value is taken from the name + version of the Ref pack. # Example: given the Ref pack "Microsoft.iOS.Ref.net8.0_17.5" with the version "17.5.8030", the value # to write here would be the part after "Microsoft.iOS.Ref." + "/" + version: "net8.0_17.5/17.5.8030" -STABLE_NUGET_VERSION_iOS=net10.0_26.2/26.2.10191 -STABLE_NUGET_VERSION_tvOS=net10.0_26.2/26.2.10191 -STABLE_NUGET_VERSION_MacCatalyst=net10.0_26.2/26.2.10191 -STABLE_NUGET_VERSION_macOS=net10.0_26.2/26.2.10191 +STABLE_NUGET_VERSION_iOS=net10.0_26.2/26.2.10233 +STABLE_NUGET_VERSION_tvOS=net10.0_26.2/26.2.10233 +STABLE_NUGET_VERSION_MacCatalyst=net10.0_26.2/26.2.10233 +STABLE_NUGET_VERSION_macOS=net10.0_26.2/26.2.10233 PACKAGE_HEAD_REV=$(shell git rev-parse HEAD) From 5d419e3855092886450da58de1df0b4643931081 Mon Sep 17 00:00:00 2001 From: Sai Asish Y Date: Wed, 15 Apr 2026 23:14:24 -0700 Subject: [PATCH 11/47] CoreSpotlight: fix 'occured' -> 'occurred' in CSEnums XML doc comment (#25164) XML doc comment in `src/CoreSpotlight/CSEnums.cs` line 20 reads `An unknown error occured`. Fixed to `occurred`. Comment-only change. Signed-off-by: SAY-5 Co-authored-by: SAY-5 --- src/CoreSpotlight/CSEnums.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/CoreSpotlight/CSEnums.cs b/src/CoreSpotlight/CSEnums.cs index 837479749382..7b328b651f6c 100644 --- a/src/CoreSpotlight/CSEnums.cs +++ b/src/CoreSpotlight/CSEnums.cs @@ -17,7 +17,7 @@ namespace CoreSpotlight { [Native] [ErrorDomain ("CSIndexErrorDomain")] public enum CSIndexErrorCode : long { - /// An unknown error occured. + /// An unknown error occurred. UnknownError = -1, /// The index was not available. IndexUnavailableError = -1000, From 9d6da6618f6dd1860dbaca1d947daeebd6e4361a Mon Sep 17 00:00:00 2001 From: Rolf Bjarne Kvinge Date: Fri, 17 Apr 2026 08:05:38 +0200 Subject: [PATCH 12/47] [xharness] Enable nullability, and fix any errors. (#25160) Also remove the tests, they're not running and have bitrotted. --- tests/xharness/.vscode/launch.json | 22 - tests/xharness/.vscode/tasks.json | 12 - tests/xharness/AppBundleLocator.cs | 24 +- tests/xharness/AppRunner.cs | 53 +- .../xharness/CrashSnapshotReporterFactory.cs | 8 +- tests/xharness/DeviceLogCapturerFactory.cs | 8 +- tests/xharness/GitHub.cs | 6 +- tests/xharness/Harness.cs | 76 +- .../IAppBundleInformationParserExtensions.cs | 2 +- tests/xharness/IHarness.cs | 63 - tests/xharness/Jenkins/Jenkins.cs | 38 +- tests/xharness/Jenkins/JenkinsDeviceLoader.cs | 2 +- tests/xharness/Jenkins/MacTaskTestsFactory.cs | 4 +- .../Jenkins/Reports/HtmlReportWriter.cs | 10 +- .../xharness/Jenkins/Reports/IReportWriter.cs | 2 +- .../Jenkins/Reports/MarkdownReportWriter.cs | 6 +- .../Jenkins/RunSimulatorTasksFactory.cs | 2 +- tests/xharness/Jenkins/TestData.cs | 14 +- tests/xharness/Jenkins/TestSelector.cs | 4 +- tests/xharness/Jenkins/TestServer.cs | 20 +- .../Jenkins/TestTasks/AppleTestTask.cs | 6 +- .../Jenkins/TestTasks/BuildProjectTask.cs | 6 +- tests/xharness/Jenkins/TestTasks/BuildTool.cs | 8 +- .../Jenkins/TestTasks/BuildToolTask.cs | 10 +- .../xharness/Jenkins/TestTasks/DotNetBuild.cs | 2 +- .../Jenkins/TestTasks/DotNetTestTask.cs | 4 +- .../Jenkins/TestTasks/IBuildToolTask.cs | 20 - .../Jenkins/TestTasks/IRunDeviceTask.cs | 9 - .../Jenkins/TestTasks/IRunSimulatorTask.cs | 9 - .../Jenkins/TestTasks/IRunTestTask.cs | 13 - .../xharness/Jenkins/TestTasks/IRunXITask.cs | 14 - tests/xharness/Jenkins/TestTasks/ITestTask.cs | 70 - .../Jenkins/TestTasks/ITestTaskExtensions.cs | 4 +- tests/xharness/Jenkins/TestTasks/MSBuild.cs | 8 +- .../xharness/Jenkins/TestTasks/MSBuildTask.cs | 18 +- .../Jenkins/TestTasks/MacExecuteTask.cs | 22 +- tests/xharness/Jenkins/TestTasks/MacTask.cs | 2 +- tests/xharness/Jenkins/TestTasks/Resource.cs | 8 +- tests/xharness/Jenkins/TestTasks/RunDevice.cs | 10 +- .../Jenkins/TestTasks/RunDeviceTask.cs | 4 +- .../Jenkins/TestTasks/RunSimulator.cs | 14 +- .../Jenkins/TestTasks/RunSimulatorTask.cs | 12 +- tests/xharness/Jenkins/TestTasks/RunTest.cs | 10 +- .../xharness/Jenkins/TestTasks/RunTestTask.cs | 10 +- tests/xharness/Jenkins/TestTasks/RunXITask.cs | 16 +- tests/xharness/Jenkins/TestTasks/TestTask.cs | 61 +- .../xharness/Jenkins/TestVariationsFactory.cs | 22 +- tests/xharness/Program.cs | 4 +- tests/xharness/TestPlatformExtensions.cs | 2 +- tests/xharness/TestProject.cs | 8 +- tests/xharness/TestReporter.cs | 46 +- tests/xharness/TestReporterFactory.cs | 6 +- .../Jenkins/ErrorKnowledgeBaseTests.cs | 72 - .../Jenkins/ITestTaskExtensionsTests.cs | 193 - .../Jenkins/JenkinsDeviceLoadterTests.cs | 130 - .../Jenkins/MarkdownReportWriterTests.cs | 195 - .../Jenkins/PeriodicCommandTests.cs | 94 - .../Jenkins/ResourceManagerTests.cs | 126 - .../Jenkins/TestSelectionTests.cs | 126 - .../Jenkins/TestSelectorTests.cs | 40 - .../Xharness.Tests/Samples/NUnitV2Sample.xml | 190 - .../Xharness.Tests/Samples/NUnitV3Sample.xml | 125 - .../Samples/NUnitV3SampleFailure.xml | 61 - .../Samples/NUnitV3SampleSuccess.xml | 33 - .../Samples/TestProject/Info.plist | 41 - .../Samples/TestProject/SystemXunit.csproj | 192 - .../Samples/TouchUnitSample.xml | 8842 ----------------- .../Xharness.Tests/Samples/devices.xml | 277 - .../Xharness.Tests/Samples/run-log.txt | 47 - .../Xharness.Tests/Samples/simulators.xml | 925 -- .../Xharness.Tests/Samples/xUnitSample.xml | 54 - .../Templates/Tests/PListExtensionsTests.cs | 98 - .../Tests/ProjectDefinitionTests.cs | 33 - .../Xamarin/Tests/AssemblyLocatorTest.cs | 25 - .../Tests/TestAssemblyDefinitionTest.cs | 46 - .../Xamarin/Tests/XamariniOSTemplateTest.cs | 109 - .../Xharness.Tests/Tests/AppRunnerTests.cs | 803 -- .../Tests/TestPlatformExtensionsTests.cs | 46 - .../Tests/TestTargetExtensionsTests.cs | 21 - .../Xharness.Tests/Xharness.Tests.csproj | 62 - tests/xharness/Xharness.Tests/app.config | 15 - tests/xharness/XmlDocumentExtensions.cs | 4 +- tests/xharness/xharness.csproj | 94 +- tests/xharness/xharness.slnx | 1 - 84 files changed, 312 insertions(+), 13642 deletions(-) delete mode 100644 tests/xharness/.vscode/launch.json delete mode 100644 tests/xharness/.vscode/tasks.json delete mode 100644 tests/xharness/IHarness.cs delete mode 100644 tests/xharness/Jenkins/TestTasks/IBuildToolTask.cs delete mode 100644 tests/xharness/Jenkins/TestTasks/IRunDeviceTask.cs delete mode 100644 tests/xharness/Jenkins/TestTasks/IRunSimulatorTask.cs delete mode 100644 tests/xharness/Jenkins/TestTasks/IRunTestTask.cs delete mode 100644 tests/xharness/Jenkins/TestTasks/IRunXITask.cs delete mode 100644 tests/xharness/Jenkins/TestTasks/ITestTask.cs delete mode 100644 tests/xharness/Xharness.Tests/Jenkins/ErrorKnowledgeBaseTests.cs delete mode 100644 tests/xharness/Xharness.Tests/Jenkins/ITestTaskExtensionsTests.cs delete mode 100644 tests/xharness/Xharness.Tests/Jenkins/JenkinsDeviceLoadterTests.cs delete mode 100644 tests/xharness/Xharness.Tests/Jenkins/MarkdownReportWriterTests.cs delete mode 100644 tests/xharness/Xharness.Tests/Jenkins/PeriodicCommandTests.cs delete mode 100644 tests/xharness/Xharness.Tests/Jenkins/ResourceManagerTests.cs delete mode 100644 tests/xharness/Xharness.Tests/Jenkins/TestSelectionTests.cs delete mode 100644 tests/xharness/Xharness.Tests/Jenkins/TestSelectorTests.cs delete mode 100644 tests/xharness/Xharness.Tests/Samples/NUnitV2Sample.xml delete mode 100644 tests/xharness/Xharness.Tests/Samples/NUnitV3Sample.xml delete mode 100644 tests/xharness/Xharness.Tests/Samples/NUnitV3SampleFailure.xml delete mode 100644 tests/xharness/Xharness.Tests/Samples/NUnitV3SampleSuccess.xml delete mode 100644 tests/xharness/Xharness.Tests/Samples/TestProject/Info.plist delete mode 100644 tests/xharness/Xharness.Tests/Samples/TestProject/SystemXunit.csproj delete mode 100644 tests/xharness/Xharness.Tests/Samples/TouchUnitSample.xml delete mode 100644 tests/xharness/Xharness.Tests/Samples/devices.xml delete mode 100644 tests/xharness/Xharness.Tests/Samples/run-log.txt delete mode 100644 tests/xharness/Xharness.Tests/Samples/simulators.xml delete mode 100644 tests/xharness/Xharness.Tests/Samples/xUnitSample.xml delete mode 100644 tests/xharness/Xharness.Tests/TestImporter/Templates/Tests/PListExtensionsTests.cs delete mode 100644 tests/xharness/Xharness.Tests/TestImporter/Tests/ProjectDefinitionTests.cs delete mode 100644 tests/xharness/Xharness.Tests/TestImporter/Xamarin/Tests/AssemblyLocatorTest.cs delete mode 100644 tests/xharness/Xharness.Tests/TestImporter/Xamarin/Tests/TestAssemblyDefinitionTest.cs delete mode 100644 tests/xharness/Xharness.Tests/TestImporter/Xamarin/Tests/XamariniOSTemplateTest.cs delete mode 100644 tests/xharness/Xharness.Tests/Tests/AppRunnerTests.cs delete mode 100644 tests/xharness/Xharness.Tests/Tests/TestPlatformExtensionsTests.cs delete mode 100644 tests/xharness/Xharness.Tests/Tests/TestTargetExtensionsTests.cs delete mode 100644 tests/xharness/Xharness.Tests/Xharness.Tests.csproj delete mode 100644 tests/xharness/Xharness.Tests/app.config diff --git a/tests/xharness/.vscode/launch.json b/tests/xharness/.vscode/launch.json deleted file mode 100644 index f3c709410174..000000000000 --- a/tests/xharness/.vscode/launch.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - // Use IntelliSense to learn about possible attributes. - // Hover to view descriptions of existing attributes. - // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 - "version": "0.2.0", - "configurations": [ - { - "name": "C#: xharness Debug Site", - "preLaunchTask": "dotnet: build", - "type": "coreclr", - "request": "launch", - "program": "${workspaceFolder}/bin/Debug/xharness.dll", - "args": [ - "--verbose", - "--jenkins:server", - "--rootdir", - "..", - ], - "cwd": "${workspaceFolder}", - } - ] -} \ No newline at end of file diff --git a/tests/xharness/.vscode/tasks.json b/tests/xharness/.vscode/tasks.json deleted file mode 100644 index b1c79f68e643..000000000000 --- a/tests/xharness/.vscode/tasks.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "version": "2.0.0", - "tasks": [ - { - "type": "dotnet", - "task": "build", - "group": "build", - "problemMatcher": [], - "label": "dotnet: build" - } - ] -} \ No newline at end of file diff --git a/tests/xharness/AppBundleLocator.cs b/tests/xharness/AppBundleLocator.cs index 3257b5f01250..9add4d86f504 100644 --- a/tests/xharness/AppBundleLocator.cs +++ b/tests/xharness/AppBundleLocator.cs @@ -31,7 +31,7 @@ public AppBundleLocator (IProcessManager processManager, Func getLog, stri this.dotnetPath = dotnetPath; } - public async Task LocateAppBundle (XmlDocument projectFile, string projectFilePath, TestTarget target, string buildConfiguration) + public async Task LocateAppBundle (XmlDocument projectFile, string projectFilePath, TestTarget target, string buildConfiguration) { string platform = string.Empty; if (target != TestTarget.None) @@ -47,7 +47,7 @@ public async Task LocateAppBundle (XmlDocument projectFile, string proje return await GetPropertyByMSBuildEvaluationAsync (projectFile, projectFilePath, "OutputPath", "_GenerateBundleName", properties); } else { - return projectFile.GetOutputPath (platform, buildConfiguration).Replace ('\\', Path.DirectorySeparatorChar); + return projectFile.GetOutputPath (platform, buildConfiguration)?.Replace ('\\', Path.DirectorySeparatorChar); } } @@ -56,7 +56,7 @@ public async Task LocateAppBundle (XmlDocument projectFile, string proje // * Will import the project file we're inspecting // * Has a target that will print a given property // and then executing MSBuild on this custom MSBuild file. - private async Task GetPropertyByMSBuildEvaluationAsync (XmlDocument csproj, string projectPath, string evaluateProperty, string dependsOnTargets = "", Dictionary properties = null) + async Task GetPropertyByMSBuildEvaluationAsync (XmlDocument csproj, string projectPath, string evaluateProperty, string dependsOnTargets = "", Dictionary? properties = null) { var xml = @" @@ -74,7 +74,7 @@ private async Task GetPropertyByMSBuildEvaluationAsync (XmlDocument cspr "; - var dir = Path.GetDirectoryName (projectPath); + var dir = Path.GetDirectoryName (projectPath)!; var inspector = Path.Combine (dir, "PropertyInspector.csproj"); var output = Path.Combine (dir, "PropertyInspector.txt"); try { @@ -94,12 +94,14 @@ private async Task GetPropertyByMSBuildEvaluationAsync (XmlDocument cspr args.Add ("/p:ProjectFile=" + projectPath); args.Add ("/p:OutputFile=" + output); - foreach (var prop in properties) - args.Add ($"/p:{prop.Key}={prop.Value}"); + if (properties is not null) { + foreach (var prop in properties) + args.Add ($"/p:{prop.Key}={prop.Value}"); + } args.Add (inspector); - var env = new Dictionary { + var env = new Dictionary { { "MSBUILD_EXE_PATH", null }, }; @@ -146,13 +148,13 @@ public string GetDotNetExecutable (string directory) } // Find the first global.json up the directory hierarchy (stopping at the root directory) - string global_json = null; + string? global_json = null; var dir = directory; while (dir.Length > 2) { global_json = Path.Combine (dir, "global.json"); if (File.Exists (global_json)) break; - dir = Path.GetDirectoryName (dir); + dir = Path.GetDirectoryName (dir)!; } if (!File.Exists (global_json)) throw new Exception ($"Could not find any global.json file in {directory} or above"); @@ -164,7 +166,9 @@ public string GetDotNetExecutable (string directory) var doc = new XmlDocument (); doc.Load (reader); - var version = doc.SelectSingleNode ("/root/sdk").InnerText; + var version = doc.SelectSingleNode ("/root/sdk")?.InnerText; + if (version is null) + throw new Exception ($"Could not find SDK version in {global_json}"); string executable; switch (version [0]) { diff --git a/tests/xharness/AppRunner.cs b/tests/xharness/AppRunner.cs index 4dd6d865ee34..4cc1a11b2690 100644 --- a/tests/xharness/AppRunner.cs +++ b/tests/xharness/AppRunner.cs @@ -25,24 +25,24 @@ public class AppRunner { readonly ISimulatorLoaderFactory simulatorsLoaderFactory; readonly ISimpleListenerFactory listenerFactory; readonly IDeviceLoaderFactory devicesLoaderFactory; - readonly ICrashSnapshotReporterFactory snapshotReporterFactory; + readonly CrashSnapshotReporterFactory snapshotReporterFactory; readonly ICaptureLogFactory captureLogFactory; - readonly IDeviceLogCapturerFactory deviceLogCapturerFactory; + readonly DeviceLogCapturerFactory deviceLogCapturerFactory; readonly ITestReporterFactory testReporterFactory; readonly IAppBundleInformationParser appBundleInformationParser; readonly RunMode runMode; readonly bool isSimulator; readonly TestTarget target; - readonly IHarness harness; + readonly Harness harness; readonly double timeoutMultiplier; - readonly IBuildToolTask buildTask; - readonly string variation; + readonly BuildToolTask? buildTask; + readonly string? variation; readonly string projectFilePath; - readonly string buildConfiguration; + readonly string? buildConfiguration; - string deviceName; - ISimulatorDevice simulator; + string? deviceName; + ISimulatorDevice? simulator; bool ensureCleanSimulatorState = true; bool EnsureCleanSimulatorState { @@ -50,13 +50,16 @@ bool EnsureCleanSimulatorState { set => ensureCleanSimulatorState = value; } - public AppBundleInformation AppInformation { get; private set; } + AppBundleInformation? appInformation; + public AppBundleInformation AppInformation { + get => appInformation!; + } - bool IsExtension => AppInformation.Extension.HasValue; + bool IsExtension => AppInformation?.Extension.HasValue ?? false; public TestExecutingResult Result { get; private set; } - public string FailureMessage { get; private set; } + public string? FailureMessage { get; private set; } public IFileBackedLog MainLog { get; set; } @@ -67,22 +70,22 @@ public AppRunner (IMlaunchProcessManager processManager, ISimulatorLoaderFactory simulatorsFactory, ISimpleListenerFactory simpleListenerFactory, IDeviceLoaderFactory devicesFactory, - ICrashSnapshotReporterFactory snapshotReporterFactory, + CrashSnapshotReporterFactory snapshotReporterFactory, ICaptureLogFactory captureLogFactory, - IDeviceLogCapturerFactory deviceLogCapturerFactory, + DeviceLogCapturerFactory deviceLogCapturerFactory, ITestReporterFactory reporterFactory, TestTarget target, - IHarness harness, + Harness harness, IFileBackedLog mainLog, ILogs logs, string projectFilePath, - string buildConfiguration, - ISimulatorDevice simulator = null, - string deviceName = null, + string? buildConfiguration, + ISimulatorDevice? simulator = null, + string? deviceName = null, bool ensureCleanSimulatorState = false, double timeoutMultiplier = 1, - string variation = null, - IBuildToolTask buildTask = null) + string? variation = null, + BuildToolTask? buildTask = null) { this.processManager = processManager ?? throw new ArgumentNullException (nameof (processManager)); this.simulatorsLoaderFactory = simulatorsFactory ?? throw new ArgumentNullException (nameof (simulatorsFactory)); @@ -112,7 +115,7 @@ public AppRunner (IMlaunchProcessManager processManager, public async Task InitializeAsync () { - AppInformation = await appBundleInformationParser.ParseFromProject2 (harness.AppBundleLocator, projectFilePath, target, buildConfiguration); + appInformation = await appBundleInformationParser.ParseFromProject2 (harness.AppBundleLocator, projectFilePath, target, buildConfiguration!); AppInformation.Variation = variation; } @@ -307,7 +310,7 @@ public async Task RunAsync () args.Add (new SetStdoutArgument (stdout_log)); args.Add (new SetStderrArgument (stderr_log)); - var simulators = new [] { simulator }; + var simulators = new [] { simulator! }; var systemLogs = new List (); foreach (var sim in simulators) { // Upload the system log @@ -344,7 +347,7 @@ public async Task RunAsync () } MainLog.WriteLine ("Enabled verbose logging"); - args.Add (new SimulatorUDIDArgument (simulator.UDID)); + args.Add (new SimulatorUDIDArgument (simulator!.UDID)); await crashReporter.StartCaptureAsync (); @@ -373,7 +376,7 @@ public async Task RunAsync () args.Add (new DeviceNameArgument (deviceName)); var deviceSystemLog = Logs.Create ($"device-{deviceName}-{Harness.Helpers.Timestamp}.log", "Device log"); - var deviceLogCapturer = deviceLogCapturerFactory.Create (harness.HarnessLog, deviceSystemLog, deviceName); + var deviceLogCapturer = deviceLogCapturerFactory.Create (harness.HarnessLog!, deviceSystemLog, deviceName); deviceLogCapturer.StartCapture (); try { @@ -429,14 +432,14 @@ public async Task RunAsync () FailureMessage = "Test app failed to launch."; } - return testReporter.Success.Value ? 0 : 1; + return testReporter?.Success == true ? 0 : 1; } static bool IsLaunchFailure (IFileBackedLog log) { try { using var reader = log.GetReader (); - string line; + string? line; while ((line = reader.ReadLine ()) is not null) { if (line.Contains ("Could not launch the app", StringComparison.Ordinal)) return true; diff --git a/tests/xharness/CrashSnapshotReporterFactory.cs b/tests/xharness/CrashSnapshotReporterFactory.cs index bb8c31af7155..d2bc2158570d 100644 --- a/tests/xharness/CrashSnapshotReporterFactory.cs +++ b/tests/xharness/CrashSnapshotReporterFactory.cs @@ -5,11 +5,7 @@ using Microsoft.DotNet.XHarness.iOS.Shared.Logging; namespace Xharness { - public interface ICrashSnapshotReporterFactory { - ICrashSnapshotReporter Create (ILog log, ILogs logs, bool isDevice, string deviceName); - } - - public class CrashSnapshotReporterFactory : ICrashSnapshotReporterFactory { + public class CrashSnapshotReporterFactory { readonly IMlaunchProcessManager processManager; public CrashSnapshotReporterFactory (IMlaunchProcessManager processManager) @@ -17,7 +13,7 @@ public CrashSnapshotReporterFactory (IMlaunchProcessManager processManager) this.processManager = processManager ?? throw new ArgumentNullException (nameof (processManager)); } - public ICrashSnapshotReporter Create (ILog log, ILogs logs, bool isDevice, string deviceName) => + public ICrashSnapshotReporter Create (ILog log, ILogs logs, bool isDevice, string? deviceName) => new CrashSnapshotReporter (processManager, log, logs, isDevice, deviceName); } } diff --git a/tests/xharness/DeviceLogCapturerFactory.cs b/tests/xharness/DeviceLogCapturerFactory.cs index eafd26927c8e..e70ba1c7d796 100644 --- a/tests/xharness/DeviceLogCapturerFactory.cs +++ b/tests/xharness/DeviceLogCapturerFactory.cs @@ -4,12 +4,8 @@ using Microsoft.DotNet.XHarness.iOS.Shared.Logging; namespace Xharness { - public interface IDeviceLogCapturerFactory { - IDeviceLogCapturer Create (ILog mainLog, ILog deviceLog, string deviceName); - } - - public class DeviceLogCapturerFactory : IDeviceLogCapturerFactory { - public IDeviceLogCapturer Create (ILog mainLog, ILog deviceLog, string deviceName) + public class DeviceLogCapturerFactory { + public IDeviceLogCapturer Create (ILog mainLog, ILog deviceLog, string? deviceName) { return new DeviceLogCapturer (mainLog, deviceLog, deviceName); } diff --git a/tests/xharness/GitHub.cs b/tests/xharness/GitHub.cs index 125e9ac2198a..11d8d4a266cb 100644 --- a/tests/xharness/GitHub.cs +++ b/tests/xharness/GitHub.cs @@ -31,10 +31,10 @@ public class GitHub : IVersionControlSystem { const string PullsApiUrl = "https://api.github.com/repos/dotnet/macios/pulls"; - readonly IHarness harness; + readonly Harness harness; readonly IProcessManager processManager; - public GitHub (IHarness harness, IProcessManager processManager) + public GitHub (Harness harness, IProcessManager processManager) { if (harness is null) throw new ArgumentNullException (nameof (harness)); @@ -196,7 +196,7 @@ IEnumerable GetModifiedFilesRemotely (int pullRequest) var output = new MemoryLog () { Timestamp = false // ensure we do not add the timestap or the logic for the file check will be hard and having it adds no value }; - var rv = processManager.RunAsync (git, harness.HarnessLog, stdoutLog: output, stderrLog: output).Result; + var rv = processManager.RunAsync (git, harness.HarnessLog!, stdoutLog: output, stderrLog: output).Result; if (rv.Succeeded) return output.ToString ().Split (new char [] { '\n' }, StringSplitOptions.RemoveEmptyEntries); diff --git a/tests/xharness/Harness.cs b/tests/xharness/Harness.cs index a281e9f4b701..33cf6b5ffb93 100644 --- a/tests/xharness/Harness.cs +++ b/tests/xharness/Harness.cs @@ -1,6 +1,7 @@ using System; using System.Collections.Generic; using System.Diagnostics; +using System.Diagnostics.CodeAnalysis; using System.IO; using System.Linq; using System.Runtime.InteropServices; @@ -33,14 +34,14 @@ public class HarnessConfiguration { public Dictionary EnvironmentVariables { get; set; } = new Dictionary (); public bool? IncludeSystemPermissionTests { get; set; } public List TestProjects { get; set; } = new List (); - public string JenkinsConfiguration { get; set; } + public string JenkinsConfiguration { get; set; } = string.Empty; public HashSet Labels { get; set; } = new HashSet (); public string LogDirectory { get; set; } = Environment.CurrentDirectory; - public string MarkdownSummaryPath { get; set; } - public string PeriodicCommand { get; set; } - public string PeriodicCommandArguments { get; set; } + public string MarkdownSummaryPath { get; set; } = string.Empty; + public string PeriodicCommand { get; set; } = string.Empty; + public string PeriodicCommandArguments { get; set; } = string.Empty; public TimeSpan PeriodicCommandInterval { get; set; } - public string SdkRoot { get; set; } + public string? SdkRoot { get; set; } public TestTarget Target { get; set; } public double TimeoutInMinutes { get; set; } = 15; public bool UseSystemXamarinIOSMac { get; set; } @@ -48,20 +49,20 @@ public class HarnessConfiguration { public XmlResultJargon XmlJargon { get; set; } = XmlResultJargon.NUnitV3; // This is the maccore/tests directory. - static string root_directory; + static string? root_directory; public static string RootDirectory { get { if (root_directory is null) { - var testAssemblyDirectory = Path.GetDirectoryName (System.Reflection.Assembly.GetExecutingAssembly ().Location); + var testAssemblyDirectory = Path.GetDirectoryName (System.Reflection.Assembly.GetExecutingAssembly ().Location)!; var dir = testAssemblyDirectory; var path = Path.Combine (testAssemblyDirectory, ".git"); while (!Directory.Exists (path) && path.Length > 3) { - dir = Path.GetDirectoryName (dir); + dir = Path.GetDirectoryName (dir)!; path = Path.Combine (dir, ".git"); } if (!Directory.Exists (path)) throw new Exception ("Could not find the xamarin-macios repo."); - path = Path.Combine (Path.GetDirectoryName (path), "tests"); + path = Path.Combine (Path.GetDirectoryName (path)!, "tests"); if (!Directory.Exists (path)) throw new Exception ("Could not find the tests directory."); root_directory = Path.GetFullPath (path); @@ -121,7 +122,7 @@ public static string InjectRootTestsDirectory (string value) } } - public class Harness : IHarness { + public class Harness { readonly TestTarget target; readonly string buildConfiguration = "Debug"; readonly IMlaunchProcessManager processManager; @@ -130,23 +131,23 @@ public class Harness : IHarness { public HarnessAction Action { get; } public int Verbosity { get; } - public IFileBackedLog HarnessLog { get; set; } - public HashSet Labels { get; } + public IFileBackedLog? HarnessLog { get; set; } + public HashSet Labels { get; } = new (); public XmlResultJargon XmlJargon { get; } public IResultParser ResultParser { get; } public ITunnelBore TunnelBore { get; } public AppBundleLocator AppBundleLocator { get; } - string sdkRoot; + string? sdkRoot; string SdkRoot { - get => sdkRoot; + get => sdkRoot!; set { sdkRoot = value; XcodeRoot = FindXcode (sdkRoot); } } - bool TryGetMlaunchDotnetPath (out string value) + bool TryGetMlaunchDotnetPath ([NotNullWhen (true)] out string? value) { value = null; @@ -160,12 +161,12 @@ bool TryGetMlaunchDotnetPath (out string value) } var sdkPlatform = platform.AsString ().ToUpperInvariant (); - var sdkName = GetVariable ($"{sdkPlatform}_NUGET_SDK_NAME"); + var sdkName = GetVariable ($"{sdkPlatform}_NUGET_SDK_NAME") ?? throw new Exception ($"Could not get the SDK name for {sdkPlatform} from the environment variable {sdkPlatform}_NUGET_SDK_NAME"); // there is a diff between getting the path for the current platform when running on CI or off CI. The config files in the CI do not // contain the correct workload version, the reason for this is that the workload is built in a different machine which means that // the Make.config will use the wrong version. The CI set the version in the environment variable {platform}_WORKLOAD_VERSION via a script. - var workloadVersion = GetVariable ($"{sdkPlatform}_WORKLOAD_VERSION"); - var sdkVersion = GetVariable ($"{sdkPlatform}_NUGET_VERSION_NO_METADATA"); + var workloadVersion = GetVariable ($"{sdkPlatform}_WORKLOAD_VERSION", ""); + var sdkVersion = GetVariable ($"{sdkPlatform}_NUGET_VERSION_NO_METADATA") ?? throw new Exception ($"Could not get the SDK version for {sdkPlatform} from the environment variable {sdkPlatform}_NUGET_VERSION_NO_METADATA"); value = Path.Combine (DOTNET_DIR, "packs", sdkName, string.IsNullOrEmpty (workloadVersion) ? sdkVersion : workloadVersion, "tools", "bin", "mlaunch"); return true; } @@ -184,7 +185,8 @@ bool IsVariableSet (string variable) return !string.IsNullOrEmpty (GetVariable (variable)); } - string GetVariable (string variable, string @default = null) + [return: NotNullIfNotNull (nameof (@default))] + string? GetVariable (string variable, string? @default = null) { var result = Environment.GetEnvironmentVariable (variable); if (string.IsNullOrEmpty (result)) @@ -212,7 +214,7 @@ public Version DotNetVersion { // Run - public string XcodeRoot { get; private set; } + public string? XcodeRoot { get; private set; } public string LogDirectory { get; } = Environment.CurrentDirectory; public double Timeout { get; } = 15; // in minutes public double LaunchTimeout { get; } // in minutes @@ -268,17 +270,17 @@ public Harness (IResultParser resultParser, HarnessAction action, HarnessConfigu INCLUDE_IOS = IsVariableSet (nameof (INCLUDE_IOS)); INCLUDE_TVOS = IsVariableSet (nameof (INCLUDE_TVOS)); - JENKINS_RESULTS_DIRECTORY = GetVariable (nameof (JENKINS_RESULTS_DIRECTORY)); + JENKINS_RESULTS_DIRECTORY = GetVariable (nameof (JENKINS_RESULTS_DIRECTORY)) ?? throw new Exception ($"Could not get the Jenkins results directory from the environment variable {nameof (JENKINS_RESULTS_DIRECTORY)}"); INCLUDE_MAC = IsVariableSet (nameof (INCLUDE_MAC)); INCLUDE_MACCATALYST = IsVariableSet (nameof (INCLUDE_MACCATALYST)); - DOTNET_DIR = GetVariable (nameof (DOTNET_DIR)); - DOTNET_TFM = GetVariable (nameof (DOTNET_TFM)); + DOTNET_DIR = GetVariable (nameof (DOTNET_DIR)) ?? throw new Exception ($"Could not get the .NET directory from the environment variable {nameof (DOTNET_DIR)}"); + DOTNET_TFM = GetVariable (nameof (DOTNET_TFM)) ?? throw new Exception ($"Could not get the .NET TFM from the environment variable {nameof (DOTNET_TFM)}"); if (string.IsNullOrEmpty (SdkRoot)) - SdkRoot = GetVariable ("XCODE_DEVELOPER_ROOT", configuration.SdkRoot); + SdkRoot = GetVariable ("XCODE_DEVELOPER_ROOT", configuration.SdkRoot!); processManager = new MlaunchProcessManager (XcodeRoot, MlaunchPath); - AppBundleLocator = new AppBundleLocator (processManager, () => HarnessLog, "/usr/local/share/dotnet/dotnet", GetVariable ("DOTNET")); + AppBundleLocator = new AppBundleLocator (processManager, () => HarnessLog!, "/usr/local/share/dotnet/dotnet", GetVariable ("DOTNET")!); TunnelBore = new TunnelBore (processManager); } @@ -319,7 +321,7 @@ static string FindXcode (string path) return path; } - path = Path.GetDirectoryName (path); + path = Path.GetDirectoryName (path)!; } while (true); } @@ -426,8 +428,8 @@ void PopulateUnitTestProjects () void PopulatePlatformSpecificProjects () { - string [] noConfigurations = null; - var debugAndRelease = new string [] { "Debug", "Release" }; + string []? noConfigurations = null; + string []? debugAndRelease = new string [] { "Debug", "Release" }; var projectInfos = new [] { new { @@ -449,35 +451,35 @@ void PopulatePlatformSpecificProjects () Platforms = TestPlatform.All, ProjectPath = Path.Combine ("linker", "dont link"), IsFSharp = false, - Configurations = debugAndRelease, + Configurations = (string[]?) debugAndRelease, }, new { Label = TestLabel.Linker, Platforms = TestPlatform.All, ProjectPath = Path.Combine ("linker", "link sdk"), IsFSharp = false, - Configurations = debugAndRelease, + Configurations = (string[]?) debugAndRelease, }, new { Label = TestLabel.Linker, Platforms = TestPlatform.All, ProjectPath = Path.Combine ("linker", "link all"), IsFSharp = false, - Configurations = debugAndRelease, + Configurations = (string[]?) debugAndRelease, }, new { Label = TestLabel.Linker, Platforms = TestPlatform.All, ProjectPath = Path.Combine ("linker", "trimmode copy"), IsFSharp = false, - Configurations = debugAndRelease, + Configurations = (string[]?) debugAndRelease, }, new { Label = TestLabel.Linker, Platforms = TestPlatform.All, ProjectPath = Path.Combine ("linker", "trimmode link"), IsFSharp = false, - Configurations = debugAndRelease, + Configurations = (string[]?) debugAndRelease, }, new { Label = TestLabel.Fsharp, @@ -557,7 +559,7 @@ IEnumerable FindConfigFiles (string name) var file = Path.Combine (dir, name); if (File.Exists (file)) yield return file; - dir = Path.GetDirectoryName (dir); + dir = Path.GetDirectoryName (dir)!; } } @@ -677,7 +679,7 @@ public bool UseTcpTunnel { } } - public string VSDropsUri { + public string? VSDropsUri { get { var uri = Environment.GetEnvironmentVariable ("VSDROPS_URI"); return string.IsNullOrEmpty (uri) ? null : uri; @@ -711,7 +713,7 @@ int Jenkins () public void Save (StringWriter doc, string path) { if (!File.Exists (path)) { - Directory.CreateDirectory (Path.GetDirectoryName (path)); + Directory.CreateDirectory (Path.GetDirectoryName (path)!); File.WriteAllText (path, doc.ToString ()); Log (1, "Created {0}", path); } else { @@ -740,7 +742,7 @@ AppRunner CreateAppRunner (TestProject project) new TestReporterFactory (processManager), target, this, - HarnessLog, + HarnessLog!, new Logs (LogDirectory), project.Path, buildConfiguration); diff --git a/tests/xharness/IAppBundleInformationParserExtensions.cs b/tests/xharness/IAppBundleInformationParserExtensions.cs index ac25d71c2157..57b793746ab5 100644 --- a/tests/xharness/IAppBundleInformationParserExtensions.cs +++ b/tests/xharness/IAppBundleInformationParserExtensions.cs @@ -11,7 +11,7 @@ namespace Xharness { public static class IAppBundleInformationParserExtensions { // This is a copy of this method: https://github.com/dotnet/xharness/blob/aa434d0c7e6eb46df1ec11b3c63add37d835c4d0/src/Microsoft.DotNet.XHarness.iOS.Shared/AppBundleInformationParser.cs#L43-L103 // And then augmented to handle that the path to the Info.plist might have $(RootTestsDirectory) in it. - public async static Task ParseFromProject2 (this IAppBundleInformationParser @this, IAppBundleLocator? _appBundleLocator, string projectFilePath, TestTarget target, string buildConfiguration) + public async static Task ParseFromProject2 (this IAppBundleInformationParser @this, AppBundleLocator? _appBundleLocator, string projectFilePath, TestTarget target, string buildConfiguration) { var csproj = new XmlDocument (); csproj.LoadWithoutNetworkAccess (projectFilePath); diff --git a/tests/xharness/IHarness.cs b/tests/xharness/IHarness.cs deleted file mode 100644 index 7a3c0c1ebb4c..000000000000 --- a/tests/xharness/IHarness.cs +++ /dev/null @@ -1,63 +0,0 @@ -using System; -using System.Collections.Generic; -using System.IO; -using Microsoft.DotNet.XHarness.Common; -using Microsoft.DotNet.XHarness.Common.Logging; -using Microsoft.DotNet.XHarness.iOS.Shared; -using Microsoft.DotNet.XHarness.iOS.Shared.Listeners; - -namespace Xharness { - - /// - /// Interface that represents the harness class that contains all the needed info to execute the tests. - /// - public interface IHarness { - - #region Properties - HarnessAction Action { get; } - IFileBackedLog HarnessLog { get; set; } - int Verbosity { get; } - HashSet Labels { get; } - XmlResultJargon XmlJargon { get; } - IResultParser ResultParser { get; } - AppBundleLocator AppBundleLocator { get; } - ITunnelBore TunnelBore { get; } - List TestProjects { get; } - bool INCLUDE_IOS { get; } - bool INCLUDE_TVOS { get; } - bool INCLUDE_MAC { get; } - bool INCLUDE_MACCATALYST { get; } - string JENKINS_RESULTS_DIRECTORY { get; } - string DOTNET_DIR { get; set; } - string DOTNET_TFM { get; } - Version DotNetVersion { get; } - string XcodeRoot { get; } - string LogDirectory { get; } - double Timeout { get; } - double LaunchTimeout { get; } // in minutes - bool DryRun { get; } // Most things don't support this. If you need it somewhere, implement it! - string JenkinsConfiguration { get; } - Dictionary EnvironmentVariables { get; } - string MarkdownSummaryPath { get; } - string PeriodicCommand { get; } - string PeriodicCommandArguments { get; } - TimeSpan PeriodicCommandInterval { get; } - bool? IncludeSystemPermissionTests { get; set; } - bool InCI { get; } - bool UseTcpTunnel { get; } - string VSDropsUri { get; } - - #endregion - - #region methods - - bool GetIncludeSystemPermissionTests (TestPlatform platform, bool device); - void Save (StringWriter doc, string path); - void Log (int minLevel, string message, params object [] args); - void Log (string message); - void Log (string message, params object [] args); - string GetDotNetExecutable (string directory); - - #endregion - } -} diff --git a/tests/xharness/Jenkins/Jenkins.cs b/tests/xharness/Jenkins/Jenkins.cs index 9a9f0e19d75c..d6def49f8554 100644 --- a/tests/xharness/Jenkins/Jenkins.cs +++ b/tests/xharness/Jenkins/Jenkins.cs @@ -17,8 +17,8 @@ using Xharness.Jenkins.TestTasks; namespace Xharness.Jenkins { - class Jenkins { - public readonly ISimulatorLoader Simulators; + public class Jenkins { + public readonly SimulatorLoader Simulators; public readonly IHardwareDeviceLoader Devices; readonly IMlaunchProcessManager processManager; public ITunnelBore TunnelBore { get; private set; } @@ -31,22 +31,30 @@ class Jenkins { // report writers, do need to be a class instance because the have state. readonly HtmlReportWriter xamarinStorageHtmlReportWriter; - readonly HtmlReportWriter vsdropsHtmlReportWriter; + readonly HtmlReportWriter? vsdropsHtmlReportWriter; readonly MarkdownReportWriter markdownReportWriter; public bool Populating { get; private set; } = true; - public IHarness Harness { get; } + public Harness Harness { get; } public bool ForceExtensionBuildOnly; public bool CleanSuccessfulTestRuns = true; public bool UninstallTestApp = true; - public IFileBackedLog MainLog; + IFileBackedLog? mainLog; + public IFileBackedLog MainLog { + get { + return mainLog!; + } + set { + mainLog = value; + } + } public ILog SimulatorLoadLog => DeviceLoader.SimulatorLoadLog; public ILog DeviceLoadLog => DeviceLoader.DeviceLoadLog; - string log_directory; + string? log_directory; public string LogDirectory { get { if (string.IsNullOrEmpty (log_directory)) { @@ -58,19 +66,19 @@ public string LogDirectory { } } - ILogs logs; + ILogs? logs; public ILogs Logs { get { return logs ?? (logs = new Logs (LogDirectory)); } } - public List Tasks { get; private set; } = new List (); + public List Tasks { get; private set; } = new List (); - public IErrorKnowledgeBase ErrorKnowledgeBase => new ErrorKnowledgeBase (); + public ErrorKnowledgeBase ErrorKnowledgeBase => new ErrorKnowledgeBase (); public IResourceManager ResourceManager => resourceManager; - public Jenkins (IHarness harness, IMlaunchProcessManager processManager, IResultParser resultParser, ITunnelBore tunnelBore) + public Jenkins (Harness harness, IMlaunchProcessManager processManager, IResultParser resultParser, ITunnelBore tunnelBore) { this.processManager = processManager ?? throw new ArgumentNullException (nameof (processManager)); this.TunnelBore = tunnelBore ?? throw new ArgumentNullException (nameof (tunnelBore)); @@ -105,7 +113,7 @@ public bool IsIncluded (TestProject project) return rv; } - public bool IsBetaXcode => Harness.XcodeRoot.IndexOf ("beta", StringComparison.OrdinalIgnoreCase) >= 0; + public bool IsBetaXcode => Harness.XcodeRoot?.IndexOf ("beta", StringComparison.OrdinalIgnoreCase) >= 0; async Task PopulateTasksAsync () { @@ -255,7 +263,7 @@ public int Run () command: Harness.PeriodicCommand, processManager: processManager, interval: Harness.PeriodicCommandInterval, - logs: logs, + logs: Logs, arguments: string.IsNullOrEmpty (Harness.PeriodicCommandArguments) ? null : Harness.PeriodicCommandArguments); periodicCommand.Execute ().DoNotAwait (); } @@ -305,7 +313,7 @@ public int Run () void CollectCrashReports () { try { - var dir = Path.Combine (Environment.GetEnvironmentVariable ("HOME"), "Library", "Logs", "DiagnosticReports"); + var dir = Path.Combine (Environment.GetEnvironmentVariable ("HOME")!, "Library", "Logs", "DiagnosticReports"); var reports = Directory.GetFiles (dir).Select (v => { (string Path, DateTime LastWriteTimeUtc) rv = (v, File.GetLastWriteTimeUtc (v)); return rv; @@ -392,7 +400,7 @@ public void GenerateReport () throw new NotImplementedException (); } - var allTasks = new List (); + var allTasks = new List (); if (!Populating) { allTasks.AddRange (allExecuteTasks); allTasks.AddRange (allSimulatorTasks); @@ -437,7 +445,7 @@ public void GenerateReport () File.Move (tmpmarkdown, Harness.MarkdownSummaryPath); } - var dependentFileLocation = Path.GetDirectoryName (System.Reflection.Assembly.GetExecutingAssembly ().Location); + var dependentFileLocation = Path.GetDirectoryName (System.Reflection.Assembly.GetExecutingAssembly ().Location)!; foreach (var file in new string [] { "xharness.js", "xharness.css" }) { File.Copy (Path.Combine (dependentFileLocation, file), Path.Combine (LogDirectory, file), true); } diff --git a/tests/xharness/Jenkins/JenkinsDeviceLoader.cs b/tests/xharness/Jenkins/JenkinsDeviceLoader.cs index 107b8d67c65e..538e0e1f445e 100644 --- a/tests/xharness/Jenkins/JenkinsDeviceLoader.cs +++ b/tests/xharness/Jenkins/JenkinsDeviceLoader.cs @@ -8,7 +8,7 @@ using Microsoft.DotNet.XHarness.iOS.Shared.Utilities; namespace Xharness.Jenkins { - class JenkinsDeviceLoader { + public class JenkinsDeviceLoader { static readonly string devicesName = "Device"; static readonly string simulatorsName = "Simulator"; diff --git a/tests/xharness/Jenkins/MacTaskTestsFactory.cs b/tests/xharness/Jenkins/MacTaskTestsFactory.cs index dfc399b255d6..552f92c70ffc 100644 --- a/tests/xharness/Jenkins/MacTaskTestsFactory.cs +++ b/tests/xharness/Jenkins/MacTaskTestsFactory.cs @@ -12,9 +12,9 @@ namespace Xharness.Jenkins { class MacTestTasksFactory : TaskFactory { - readonly ICrashSnapshotReporterFactory crashReportSnapshotFactory; + readonly CrashSnapshotReporterFactory crashReportSnapshotFactory; - public MacTestTasksFactory (Jenkins jenkins, IMlaunchProcessManager processManager, TestVariationsFactory testVariationsFactory, ICrashSnapshotReporterFactory crashReportSnapshotFactory) + public MacTestTasksFactory (Jenkins jenkins, IMlaunchProcessManager processManager, TestVariationsFactory testVariationsFactory, CrashSnapshotReporterFactory crashReportSnapshotFactory) : base (jenkins, processManager, testVariationsFactory) { this.crashReportSnapshotFactory = crashReportSnapshotFactory; diff --git a/tests/xharness/Jenkins/Reports/HtmlReportWriter.cs b/tests/xharness/Jenkins/Reports/HtmlReportWriter.cs index 494d8e8dbcff..670799a45514 100644 --- a/tests/xharness/Jenkins/Reports/HtmlReportWriter.cs +++ b/tests/xharness/Jenkins/Reports/HtmlReportWriter.cs @@ -29,7 +29,7 @@ class HtmlReportWriter : IReportWriter { string? previous_test_runs; // convenient - IHarness Harness => jenkins.Harness; + Harness Harness => jenkins.Harness; public HtmlReportWriter (Jenkins jenkins, IResourceManager resourceManager, IResultParser resultParser, string? linksPrefix = null, bool embeddedResources = false) { @@ -82,7 +82,7 @@ void IncludeCss (StreamWriter writer) writer.WriteLine (""); } } - public void Write (IList allTasks, StreamWriter writer) + public void Write (IList allTasks, StreamWriter writer) { var id_counter = 0; @@ -343,7 +343,7 @@ public void Write (IList allTasks, StreamWriter writer) state = test.ExecutionResult.ToString (); var log_id = id_counter++; var logs = test.AggregatedLogs.ToList (); - string title; + string? title; if (multipleModes) { title = test.Variation ?? "Default"; } else if (singleTask) { @@ -690,11 +690,11 @@ static string LinkEncode (string path) return System.Web.HttpUtility.UrlEncode (path).Replace ("%2f", "/").Replace ("+", "%20"); } - string RenderTextStates (IEnumerable tests) + string RenderTextStates (IEnumerable tests) { // Create a collection of all non-ignored tests in the group (unless all tests were ignored). var allIgnored = tests.All ((v) => v.ExecutionResult == TestExecutingResult.Ignored); - IEnumerable relevantGroup; + IEnumerable relevantGroup; if (allIgnored) { relevantGroup = tests; } else { diff --git a/tests/xharness/Jenkins/Reports/IReportWriter.cs b/tests/xharness/Jenkins/Reports/IReportWriter.cs index 97fc23b3dd36..6f222c45d8e8 100644 --- a/tests/xharness/Jenkins/Reports/IReportWriter.cs +++ b/tests/xharness/Jenkins/Reports/IReportWriter.cs @@ -8,6 +8,6 @@ namespace Xharness.Jenkins.Reports { /// To be implemented by those classes that write reports regarding the results of the executed tasks. /// interface IReportWriter { - void Write (IList tasks, StreamWriter writer); + void Write (IList tasks, StreamWriter writer); } } diff --git a/tests/xharness/Jenkins/Reports/MarkdownReportWriter.cs b/tests/xharness/Jenkins/Reports/MarkdownReportWriter.cs index c3a9de0562a5..5db4f6c215aa 100644 --- a/tests/xharness/Jenkins/Reports/MarkdownReportWriter.cs +++ b/tests/xharness/Jenkins/Reports/MarkdownReportWriter.cs @@ -13,13 +13,13 @@ namespace Xharness.Jenkins.Reports { /// class MarkdownReportWriter : IReportWriter { - void WriteFailedTestsDetails (IEnumerable failedTests, StreamWriter writer) + void WriteFailedTestsDetails (IEnumerable failedTests, StreamWriter writer) { writer.WriteLine ("## Failed tests"); writer.WriteLine (); foreach (var group in failedTests.GroupBy ((v) => v.TestName)) { - if (group is IEnumerable enumerableGroup) { + if (group is IEnumerable enumerableGroup) { foreach (var test in enumerableGroup) { writer.Write ($" * {group.Key}"); if (!string.IsNullOrEmpty (test.Mode)) @@ -48,7 +48,7 @@ void WriteFailedTestsDetails (IEnumerable failedTests, StreamWriter w } - public void Write (IList allTasks, StreamWriter writer) + public void Write (IList allTasks, StreamWriter writer) { var failedTests = allTasks.Where ((v) => v.Failed); var deviceNotFound = allTasks.Where ((v) => v.DeviceNotFound); diff --git a/tests/xharness/Jenkins/RunSimulatorTasksFactory.cs b/tests/xharness/Jenkins/RunSimulatorTasksFactory.cs index 91f095fec843..87234db22848 100644 --- a/tests/xharness/Jenkins/RunSimulatorTasksFactory.cs +++ b/tests/xharness/Jenkins/RunSimulatorTasksFactory.cs @@ -77,7 +77,7 @@ public async override Task> CreateTasksAsync () simulators: jenkins.Simulators, buildTask: buildTask, processManager: processManager, - candidates: candidates?.Cast () ?? test.Candidates)).ToList (); + candidates: candidates?.Cast () ?? test.Candidates)).ToList (); if (jenkins.IsServerMode) return testVariations; diff --git a/tests/xharness/Jenkins/TestData.cs b/tests/xharness/Jenkins/TestData.cs index 4e240071afbd..234bfdef6535 100644 --- a/tests/xharness/Jenkins/TestData.cs +++ b/tests/xharness/Jenkins/TestData.cs @@ -5,18 +5,18 @@ namespace Xharness.Jenkins { class TestData { - public string Variation; - public KnownIssue KnownFailure; + public string? Variation; + public KnownIssue? KnownFailure; public bool Debug; - public string LinkMode; + public string? LinkMode; public bool? Ignored; public bool EnableSGenConc; public bool UseLlvm; public bool? UseMonoRuntime; - public IEnumerable Candidates; - public string RuntimeIdentifier; - public string Registrar; + public IEnumerable? Candidates; + public string? RuntimeIdentifier; + public string? Registrar; public bool PublishAot; // NativeAOT - public string TestVariation; + public string? TestVariation; } } diff --git a/tests/xharness/Jenkins/TestSelector.cs b/tests/xharness/Jenkins/TestSelector.cs index a3d82d6a7817..08c95ef312e8 100644 --- a/tests/xharness/Jenkins/TestSelector.cs +++ b/tests/xharness/Jenkins/TestSelector.cs @@ -10,7 +10,7 @@ namespace Xharness.Jenkins { - class TestSelection { + public class TestSelection { TestLabel selection = TestLabel.None | TestLabel.Msbuild | @@ -90,7 +90,7 @@ class TestSelector { readonly IVersionControlSystem vcs; ILog? MainLog => jenkins?.MainLog; - IHarness Harness => jenkins.Harness; + Harness Harness => jenkins.Harness; #endregion diff --git a/tests/xharness/Jenkins/TestServer.cs b/tests/xharness/Jenkins/TestServer.cs index 916a06c5c379..9ffc9554ac4b 100644 --- a/tests/xharness/Jenkins/TestServer.cs +++ b/tests/xharness/Jenkins/TestServer.cs @@ -45,7 +45,7 @@ public Task RunAsync (Jenkins jenkins, HtmlReportWriter htmlReportWriter) // Try and find an unused port int attemptsLeft = 50; int port = 51234; // Try this port first, to try to not vary between runs just because. - Random r = new Random ((int) DateTime.Now.Ticks); + var r = new Random ((int) DateTime.Now.Ticks); do { var newPort = port != 0 ? port : r.Next (49152, 65535); // The suggested range for dynamic ports is 49152-65535 (IANA) server = new HttpListener (); @@ -68,10 +68,10 @@ public Task RunAsync (Jenkins jenkins, HtmlReportWriter htmlReportWriter) var context = server.GetContext (); var request = context.Request; var response = context.Response; - var arguments = System.Web.HttpUtility.ParseQueryString (request.Url.Query); + var arguments = System.Web.HttpUtility.ParseQueryString (request.Url?.Query ?? ""); try { var allTasks = jenkins.Tasks.SelectMany ((v) => { - var rv = new List (); + var rv = new List (); var runsim = v as AggregatedRunSimulatorTask; if (runsim is not null) rv.AddRange (runsim.Tasks); @@ -79,9 +79,9 @@ public Task RunAsync (Jenkins jenkins, HtmlReportWriter htmlReportWriter) return rv; }); - IEnumerable find_tasks (StreamWriter writer, string ids) + IEnumerable find_tasks (StreamWriter writer, string ids) { - IEnumerable tasks; + IEnumerable tasks; switch (request.Url.Query) { case "?all": tasks = jenkins.Tasks; @@ -97,7 +97,7 @@ IEnumerable find_tasks (StreamWriter writer, string ids) return Array.Empty (); default: var id_inputs = ids.Substring (1).Split (','); - var rv = new List (id_inputs.Length); + var rv = new List (id_inputs.Length); foreach (var id_input in id_inputs) { if (int.TryParse (id_input, out var id)) { var task = jenkins.Tasks.FirstOrDefault ((t) => t.ID == id); @@ -118,9 +118,9 @@ IEnumerable find_tasks (StreamWriter writer, string ids) return tasks; } - string serveFile = null; + string? serveFile = null; // do not allow requests that are not http or https - if (request.Url.Scheme != Uri.UriSchemeHttp && request.Url.Scheme != Uri.UriSchemeHttps) { + if (request.Url?.Scheme != Uri.UriSchemeHttp && request.Url?.Scheme != Uri.UriSchemeHttps) { response.StatusCode = 400; response.StatusDescription = "Bad Request"; response.OutputStream.Write (System.Text.Encoding.UTF8.GetBytes ("Invalid local path")); @@ -128,7 +128,7 @@ IEnumerable find_tasks (StreamWriter writer, string ids) } var localPath = request.Url.LocalPath; var file = Path.GetFileName (localPath); - var directoryName = Path.GetDirectoryName (localPath); + var directoryName = Path.GetDirectoryName (localPath)!; var jenkinsDirectoryName = $"/{Path.GetFileName (jenkins.LogDirectory)}"; // for the request to be valid the local path has to be one of the following @@ -329,7 +329,7 @@ IEnumerable find_tasks (StreamWriter writer, string ids) } if (serveFile is null) { - serveFile = Path.Combine (Path.GetDirectoryName (jenkins.LogDirectory), localPath.Substring (1)); + serveFile = Path.Combine (Path.GetDirectoryName (jenkins.LogDirectory)!, localPath.Substring (1)); serveFile = Path.GetFullPath (serveFile); if (!serveFile.StartsWith (Path.GetDirectoryName (Path.GetFullPath (jenkins.LogDirectory)) + Path.DirectorySeparatorChar)) { Console.WriteLine ($"400: {localPath}"); diff --git a/tests/xharness/Jenkins/TestTasks/AppleTestTask.cs b/tests/xharness/Jenkins/TestTasks/AppleTestTask.cs index b8e47819e90f..896e9a506d18 100644 --- a/tests/xharness/Jenkins/TestTasks/AppleTestTask.cs +++ b/tests/xharness/Jenkins/TestTasks/AppleTestTask.cs @@ -6,9 +6,9 @@ #nullable enable namespace Xharness.Jenkins.TestTasks { - abstract class AppleTestTask : TestTasks { + public abstract class AppleTestTask : TestTask { public Jenkins Jenkins { get; private set; } - public IHarness Harness { get { return Jenkins.Harness; } } + public Harness Harness { get { return Jenkins.Harness; } } public override string RootDirectory => HarnessConfiguration.RootDirectory; public override IResourceManager ResourceManager => Jenkins.ResourceManager; @@ -28,7 +28,7 @@ public AppleTestTask (Jenkins jenkins) public override void GenerateReport () => Jenkins.GenerateReport (); - protected override void WriteLineToRunnerLog (string message) => Harness.HarnessLog.WriteLine (message); + protected override void WriteLineToRunnerLog (string message) => Harness.HarnessLog?.WriteLine (message); public override void SetEnvironmentVariables (Process process) { diff --git a/tests/xharness/Jenkins/TestTasks/BuildProjectTask.cs b/tests/xharness/Jenkins/TestTasks/BuildProjectTask.cs index ce21abb56c05..34e494bc3b1e 100644 --- a/tests/xharness/Jenkins/TestTasks/BuildProjectTask.cs +++ b/tests/xharness/Jenkins/TestTasks/BuildProjectTask.cs @@ -2,10 +2,10 @@ using Microsoft.DotNet.XHarness.Common.Execution; namespace Xharness.Jenkins.TestTasks { - abstract class BuildProjectTask : BuildToolTask { - BuildProject BuildProject => buildToolTask as BuildProject; + public abstract class BuildProjectTask : BuildToolTask { + BuildProject BuildProject => (BuildProject) buildToolTask; - public string SolutionPath { + public string? SolutionPath { get => BuildProject.SolutionPath; set => BuildProject.SolutionPath = value; } diff --git a/tests/xharness/Jenkins/TestTasks/BuildTool.cs b/tests/xharness/Jenkins/TestTasks/BuildTool.cs index 860e4b96ba72..e393747fc940 100644 --- a/tests/xharness/Jenkins/TestTasks/BuildTool.cs +++ b/tests/xharness/Jenkins/TestTasks/BuildTool.cs @@ -7,11 +7,11 @@ namespace Xharness.Jenkins.TestTasks { public class BuildTool { - public string TestName { get; set; } + public string TestName { get; set; } = ""; public IProcessManager ProcessManager { get; } public TestPlatform Platform { get; set; } - public TestProject TestProject { get; set; } - public IFileBackedLog BuildLog { get; set; } + public TestProject? TestProject { get; set; } + public IFileBackedLog? BuildLog { get; set; } public bool SpecifyPlatform { get; set; } = true; public bool SpecifyConfiguration { get; set; } = true; @@ -27,7 +27,7 @@ public BuildTool (IProcessManager processManager, TestPlatform platform) : this Platform = platform; } - public virtual string Mode { + public virtual string? Mode { get { return Platform.ToString (); } set { throw new NotSupportedException (); } } diff --git a/tests/xharness/Jenkins/TestTasks/BuildToolTask.cs b/tests/xharness/Jenkins/TestTasks/BuildToolTask.cs index a61b60d4a6dc..c0a98763d699 100644 --- a/tests/xharness/Jenkins/TestTasks/BuildToolTask.cs +++ b/tests/xharness/Jenkins/TestTasks/BuildToolTask.cs @@ -5,12 +5,12 @@ using Microsoft.DotNet.XHarness.Common.Logging; namespace Xharness.Jenkins.TestTasks { - abstract class BuildToolTask : AppleTestTask, IBuildToolTask { + public abstract class BuildToolTask : AppleTestTask { protected BuildTool buildToolTask; public IProcessManager ProcessManager { get; } - public IFileBackedLog BuildLog { + public IFileBackedLog? BuildLog { get => buildToolTask.BuildLog; set => buildToolTask.BuildLog = value; } @@ -37,7 +37,7 @@ public List Constants { get => buildToolTask.Constants; } - public override TestProject TestProject { + public override TestProject? TestProject { get => base.TestProject; set { base.TestProject = value; @@ -50,7 +50,7 @@ protected BuildToolTask (Jenkins jenkins, TestProject testProject, IProcessManag base.TestProject = testProject; ProcessManager = processManager ?? throw new ArgumentNullException (nameof (processManager)); InitializeTool (); - buildToolTask.TestProject = testProject; + buildToolTask!.TestProject = testProject; } public override TestPlatform Platform { @@ -61,7 +61,7 @@ public override TestPlatform Platform { } } - public override string Mode { + public override string? Mode { get => buildToolTask.Mode; set => buildToolTask.Mode = value; } diff --git a/tests/xharness/Jenkins/TestTasks/DotNetBuild.cs b/tests/xharness/Jenkins/TestTasks/DotNetBuild.cs index 17d20c21ad30..6b3dcf421a12 100644 --- a/tests/xharness/Jenkins/TestTasks/DotNetBuild.cs +++ b/tests/xharness/Jenkins/TestTasks/DotNetBuild.cs @@ -16,7 +16,7 @@ public DotNetBuild (Func msbuildPath, IErrorKnowledgeBase errorKnowledgeBase) : base (msbuildPath, processManager, resourceManager, eventLogger, envManager, errorKnowledgeBase) { } - public override List GetToolArguments (string projectPlatform, string projectConfiguration, string projectFile, IFileBackedLog buildLog) + public override List GetToolArguments (string? projectPlatform, string? projectConfiguration, string projectFile, IFileBackedLog buildLog) { var args = base.GetToolArguments (projectPlatform, projectConfiguration, projectFile, buildLog); args.Remove ("--"); diff --git a/tests/xharness/Jenkins/TestTasks/DotNetTestTask.cs b/tests/xharness/Jenkins/TestTasks/DotNetTestTask.cs index 73f81acc219c..55f11fabecd6 100644 --- a/tests/xharness/Jenkins/TestTasks/DotNetTestTask.cs +++ b/tests/xharness/Jenkins/TestTasks/DotNetTestTask.cs @@ -50,9 +50,9 @@ public override async Task RunTestAsync () args.Add (filter); } - WorkingDirectory = Path.GetDirectoryName (ProjectFile); + WorkingDirectory = Path.GetDirectoryName (ProjectFile)!; - await ExecuteProcessAsync (Jenkins.Harness.GetDotNetExecutable (Path.GetDirectoryName (ProjectFile)), args); + await ExecuteProcessAsync (Jenkins.Harness.GetDotNetExecutable (Path.GetDirectoryName (ProjectFile)!), args); try { var xmlDoc = new XmlDocument (); diff --git a/tests/xharness/Jenkins/TestTasks/IBuildToolTask.cs b/tests/xharness/Jenkins/TestTasks/IBuildToolTask.cs deleted file mode 100644 index 698884332e74..000000000000 --- a/tests/xharness/Jenkins/TestTasks/IBuildToolTask.cs +++ /dev/null @@ -1,20 +0,0 @@ -using System.Threading.Tasks; -using Microsoft.DotNet.XHarness.Common.Execution; -using Microsoft.DotNet.XHarness.Common.Logging; - -namespace Xharness.Jenkins.TestTasks { - - /// - /// Interface to be implemented by those tasks that represent a build execution. - /// - public interface IBuildToolTask : ITestTask { - IFileBackedLog BuildLog { get; } - bool SpecifyPlatform { get; set; } - bool SpecifyConfiguration { get; set; } - - IProcessManager ProcessManager { get; } - TestProject TestProject { get; set; } - - Task CleanAsync (); - } -} diff --git a/tests/xharness/Jenkins/TestTasks/IRunDeviceTask.cs b/tests/xharness/Jenkins/TestTasks/IRunDeviceTask.cs deleted file mode 100644 index 22d891f389e3..000000000000 --- a/tests/xharness/Jenkins/TestTasks/IRunDeviceTask.cs +++ /dev/null @@ -1,9 +0,0 @@ -using Microsoft.DotNet.XHarness.iOS.Shared.Hardware; -using Microsoft.DotNet.XHarness.iOS.Shared.Listeners; - -namespace Xharness.Jenkins.TestTasks { - public interface IRunDeviceTask : IRunXITask { - - ITunnelBore TunnelBore { get; } - } -} diff --git a/tests/xharness/Jenkins/TestTasks/IRunSimulatorTask.cs b/tests/xharness/Jenkins/TestTasks/IRunSimulatorTask.cs deleted file mode 100644 index 8da7fdd87997..000000000000 --- a/tests/xharness/Jenkins/TestTasks/IRunSimulatorTask.cs +++ /dev/null @@ -1,9 +0,0 @@ -using System.Threading.Tasks; -using Microsoft.DotNet.XHarness.iOS.Shared.Hardware; - -namespace Xharness.Jenkins.TestTasks { - public interface IRunSimulatorTask : IRunXITask { - - Task AcquireResourceAsync (); - } -} diff --git a/tests/xharness/Jenkins/TestTasks/IRunTestTask.cs b/tests/xharness/Jenkins/TestTasks/IRunTestTask.cs deleted file mode 100644 index 73f6163bbb77..000000000000 --- a/tests/xharness/Jenkins/TestTasks/IRunTestTask.cs +++ /dev/null @@ -1,13 +0,0 @@ -using System.Threading.Tasks; -using Microsoft.DotNet.XHarness.iOS.Shared.Execution; - -namespace Xharness.Jenkins.TestTasks { - public interface IRunTestTask : ITestTask { - IHarness Harness { get; } - double TimeoutMultiplier { get; } - IMlaunchProcessManager ProcessManager { get; } - IBuildToolTask BuildTask { get; } - Task RunTestAsync (); - Task VerifyBuildAsync (); - } -} diff --git a/tests/xharness/Jenkins/TestTasks/IRunXITask.cs b/tests/xharness/Jenkins/TestTasks/IRunXITask.cs deleted file mode 100644 index f2aab4b305d9..000000000000 --- a/tests/xharness/Jenkins/TestTasks/IRunXITask.cs +++ /dev/null @@ -1,14 +0,0 @@ -using System.Collections.Generic; -using Microsoft.DotNet.XHarness.iOS.Shared; -using Microsoft.DotNet.XHarness.iOS.Shared.Hardware; - -namespace Xharness.Jenkins.TestTasks { - public interface IRunXITask : IRunTestTask where TDevice : class, IDevice { - - AppRunner Runner { get; set; } - AppRunner AdditionalRunner { get; set; } - TestTarget AppRunnerTarget { get; set; } - IEnumerable Candidates { get; } - TDevice Device { get; set; } - } -} diff --git a/tests/xharness/Jenkins/TestTasks/ITestTask.cs b/tests/xharness/Jenkins/TestTasks/ITestTask.cs deleted file mode 100644 index 77f8d7e9ab6e..000000000000 --- a/tests/xharness/Jenkins/TestTasks/ITestTask.cs +++ /dev/null @@ -1,70 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Threading.Tasks; -using Microsoft.DotNet.XHarness.Common.Logging; -using Microsoft.DotNet.XHarness.iOS.Shared; -using Microsoft.DotNet.XHarness.iOS.Shared.Logging; - -namespace Xharness.Jenkins.TestTasks { - public interface ITestTask { - - #region Status properties - - bool NotStarted { get; } - bool Building { get; } - bool BuildSucceeded { get; } - bool BuildFailure { get; } - bool Waiting { get; } - bool InProgress { get; } - bool Running { get; } - bool Finished { get; } - bool HarnessException { get; } - bool Built { get; } - - bool Succeeded { get; } - bool Failed { get; } - bool TimedOut { get; } - bool Crashed { get; } - bool LaunchFailure { get; } - bool DeviceNotFound { get; } - - public TimeSpan WaitingDuration { get; } - - #endregion - - bool HasCustomTestName { get; } - bool BuildOnly { get; set; } - bool Ignored { get; set; } - - KnownIssue KnownFailure { get; set; } - string ProjectConfiguration { get; set; } - string ProjectPlatform { get; set; } - string ProjectFile { get; } - string Mode { get; set; } - string Variation { get; set; } - string TestName { get; } - string FailureMessage { get; set; } - string LogDirectory { get; } - - public int ID { get; } - - - TimeSpan Duration { get; } - TestPlatform Platform { get; set; } - Task InitialTask { get; set; } - TestExecutingResult ExecutionResult { get; set; } - IEnumerable AggregatedLogs { get; } - ILogs Logs { get; } - Stopwatch DurationStopWatch { get; } - string ProgressMessage { get; } - string RootDirectory { get; } - - - string GuessFailureReason (IReadableLog log); - Task RunAsync (); - Task VerifyRunAsync (); - void Reset (); - Task NotifyBlockingWaitAsync (Task task); - } -} diff --git a/tests/xharness/Jenkins/TestTasks/ITestTaskExtensions.cs b/tests/xharness/Jenkins/TestTasks/ITestTaskExtensions.cs index 51df4e73d483..1992fdc66afa 100644 --- a/tests/xharness/Jenkins/TestTasks/ITestTaskExtensions.cs +++ b/tests/xharness/Jenkins/TestTasks/ITestTaskExtensions.cs @@ -4,7 +4,7 @@ namespace Xharness.Jenkins.TestTasks { public static class ITestTaskExtensions { - public static string GetTestColor (this IEnumerable tests) + public static string GetTestColor (this IEnumerable tests) { if (!tests.Any ()) return "black"; @@ -36,7 +36,7 @@ public static string GetTestColor (this IEnumerable tests) return "black"; } - public static string GetTestColor (this ITestTask test) + public static string GetTestColor (this TestTask test) { if (test.NotStarted) { return "black"; diff --git a/tests/xharness/Jenkins/TestTasks/MSBuild.cs b/tests/xharness/Jenkins/TestTasks/MSBuild.cs index b38ff9043a16..9c91806fc2a4 100644 --- a/tests/xharness/Jenkins/TestTasks/MSBuild.cs +++ b/tests/xharness/Jenkins/TestTasks/MSBuild.cs @@ -17,7 +17,7 @@ public class MSBuild : BuildProject { readonly IErrorKnowledgeBase errorKnowledgeBase; readonly Func msbuildPath; - public virtual List GetToolArguments (string projectPlatform, string projectConfiguration, string projectFile, IFileBackedLog buildLog) + public virtual List GetToolArguments (string? projectPlatform, string? projectConfiguration, string projectFile, IFileBackedLog buildLog) { var binlogPath = buildLog.FullPath.Replace (".txt", ".binlog"); @@ -49,7 +49,7 @@ public MSBuild (Func msbuildPath, this.errorKnowledgeBase = errorKnowledgeBase ?? throw new ArgumentNullException (nameof (errorKnowledgeBase)); } - public async Task<(TestExecutingResult ExecutionResult, KnownIssue KnownFailure)> ExecuteAsync ( + public async Task<(TestExecutingResult ExecutionResult, KnownIssue? KnownFailure)> ExecuteAsync ( string projectPlatform, string projectConfiguration, string projectFile, @@ -59,7 +59,7 @@ public MSBuild (Func msbuildPath, ILog mainLog) { BuildLog = buildLog; - (TestExecutingResult ExecutionResult, KnownIssue KnownFailure) result = (TestExecutingResult.NotStarted, (KnownIssue) null); + (TestExecutingResult ExecutionResult, KnownIssue? KnownFailure) result = default; using (var xbuild = new Process ()) { xbuild.StartInfo.FileName = msbuildPath (); @@ -87,7 +87,7 @@ public MSBuild (Func msbuildPath, return result; } - async Task CleanProjectAsync (string project_file, string project_platform, string project_configuration, ILog log, ILog mainLog) + async Task CleanProjectAsync (string project_file, string? project_platform, string? project_configuration, ILog log, ILog mainLog) { // Don't require the desktop resource here, this shouldn't be that resource sensitive using (var xbuild = new Process ()) { diff --git a/tests/xharness/Jenkins/TestTasks/MSBuildTask.cs b/tests/xharness/Jenkins/TestTasks/MSBuildTask.cs index a4c3008f1186..eb1edff9fcc4 100644 --- a/tests/xharness/Jenkins/TestTasks/MSBuildTask.cs +++ b/tests/xharness/Jenkins/TestTasks/MSBuildTask.cs @@ -6,10 +6,10 @@ using Microsoft.DotNet.XHarness.iOS.Shared.Logging; namespace Xharness.Jenkins.TestTasks { - class MSBuildTask : BuildProjectTask { + public class MSBuildTask : BuildProjectTask { protected virtual string ToolName { get { - return Jenkins.Harness.GetDotNetExecutable (Path.GetDirectoryName (ProjectFile)); + return Jenkins.Harness.GetDotNetExecutable (Path.GetDirectoryName (ProjectFile)!); } } @@ -26,9 +26,9 @@ public override void SetEnvironmentVariables (Process process) } protected virtual List ToolArguments => - MSBuild.GetToolArguments (ProjectPlatform, ProjectConfiguration, ProjectFile, BuildLog); + MSBuild.GetToolArguments (ProjectPlatform, ProjectConfiguration, ProjectFile, BuildLog!); - MSBuild MSBuild => buildToolTask as MSBuild; + MSBuild MSBuild => (MSBuild) buildToolTask; public MSBuildTask (Jenkins jenkins, TestProject testProject, IProcessManager processManager) : base (jenkins, testProject, processManager) { } @@ -49,8 +49,8 @@ protected override async Task ExecuteAsync () using var resource = await NotifyAndAcquireDesktopResourceAsync (); BuildLog = Logs.Create ($"build-{Platform}-{Timestamp}.txt", LogType.BuildLog.ToString ()); (ExecutionResult, KnownFailure) = await MSBuild.ExecuteAsync ( - projectPlatform: ProjectPlatform, - projectConfiguration: ProjectConfiguration, + projectPlatform: ProjectPlatform!, + projectConfiguration: ProjectConfiguration!, projectFile: ProjectFile, resource: resource, dryRun: Jenkins.Harness.DryRun, @@ -62,13 +62,13 @@ protected override async Task ExecuteAsync () public override Task CleanAsync () => MSBuild.CleanAsync ( - projectPlatform: ProjectPlatform, - projectConfiguration: ProjectConfiguration, + projectPlatform: ProjectPlatform!, + projectConfiguration: ProjectConfiguration!, projectFile: ProjectFile, cleanLog: Logs.Create ($"clean-{Platform}-{Timestamp}.txt", "Clean log"), mainLog: Jenkins.MainLog); - public static void SetDotNetEnvironmentVariables (Dictionary environment) + public static void SetDotNetEnvironmentVariables (Dictionary environment) { environment ["MSBUILD_EXE_PATH"] = null; environment ["MSBuildExtensionsPathFallbackPathsOverride"] = null; diff --git a/tests/xharness/Jenkins/TestTasks/MacExecuteTask.cs b/tests/xharness/Jenkins/TestTasks/MacExecuteTask.cs index be8c515719ef..6b43a0205eba 100644 --- a/tests/xharness/Jenkins/TestTasks/MacExecuteTask.cs +++ b/tests/xharness/Jenkins/TestTasks/MacExecuteTask.cs @@ -14,12 +14,12 @@ namespace Xharness.Jenkins.TestTasks { class MacExecuteTask : MacTask { - protected ICrashSnapshotReporterFactory CrashReportSnapshotFactory { get; } + protected CrashSnapshotReporterFactory CrashReportSnapshotFactory { get; } - public string Path; + public string? Path; public bool IsUnitTest; - public MacExecuteTask (Jenkins jenkins, BuildToolTask build_task, IMlaunchProcessManager processManager, ICrashSnapshotReporterFactory crashReportSnapshotFactory) + public MacExecuteTask (Jenkins jenkins, BuildToolTask build_task, IMlaunchProcessManager processManager, CrashSnapshotReporterFactory crashReportSnapshotFactory) : base (jenkins, build_task, processManager) { this.CrashReportSnapshotFactory = crashReportSnapshotFactory ?? throw new ArgumentNullException (nameof (crashReportSnapshotFactory)); @@ -45,20 +45,20 @@ public override async Task RunTestAsync () name = System.IO.Path.GetFileName (System.IO.Path.GetDirectoryName (projectDir)); var suffix = string.Empty; if (ProjectFile.EndsWith (".slnx", StringComparison.Ordinal)) { - Path = System.IO.Path.Combine (System.IO.Path.GetDirectoryName (ProjectFile), "bin", BuildTask.ProjectPlatform, BuildTask.ProjectConfiguration + suffix, name + ".app", "Contents", "MacOS", name); + Path = System.IO.Path.Combine (System.IO.Path.GetDirectoryName (ProjectFile)!, "bin", BuildTask.ProjectPlatform!, BuildTask.ProjectConfiguration + suffix, name + ".app", "Contents", "MacOS", name!); } else { var project = new XmlDocument (); project.LoadWithoutNetworkAccess (ProjectFile); - var outputPath = await Harness.AppBundleLocator.LocateAppBundle (project, ProjectFile, TestTarget.None, BuildTask.ProjectConfiguration); + var outputPath = await Harness.AppBundleLocator.LocateAppBundle (project, ProjectFile, TestTarget.None, BuildTask.ProjectConfiguration!); var assemblyName = project.GetAssemblyName (); - Path = System.IO.Path.Combine (System.IO.Path.GetDirectoryName (ProjectFile), outputPath, assemblyName + ".app", "Contents", "MacOS", assemblyName); + Path = System.IO.Path.Combine (System.IO.Path.GetDirectoryName (ProjectFile)!, outputPath!, assemblyName + ".app", "Contents", "MacOS", assemblyName); } using (var resource = await NotifyAndAcquireDesktopResourceAsync ()) { using (var proc = new Process ()) { proc.StartInfo.FileName = Path; var arguments = new List (); - IFileBackedLog xmlLog = null; + IFileBackedLog? xmlLog = null; var useXmlOutput = Harness.InCI || true; if (IsUnitTest) { var extension = useXmlOutput ? "xml" : "log"; @@ -88,14 +88,14 @@ public override async Task RunTestAsync () proc.StartInfo.Arguments = StringUtils.FormatArguments (arguments); Jenkins.MainLog.WriteLine ("Executing {0} ({1})", TestName, Mode); var log = Logs.Create ($"execute-{Platform}-{Timestamp}.txt", LogType.ExecutionLog.ToString ()); - ICrashSnapshotReporter snapshot = null; + ICrashSnapshotReporter? snapshot = null; if (!Jenkins.Harness.DryRun) { ExecutionResult = TestExecutingResult.Running; snapshot = CrashReportSnapshotFactory.Create (log, Logs, isDevice: false, deviceName: null); await snapshot.StartCaptureAsync (); - ProcessExecutionResult result = null; + ProcessExecutionResult? result = null; try { var timeout = TimeSpan.FromMinutes (20); @@ -119,8 +119,8 @@ public override async Task RunTestAsync () if (IsUnitTest) { var reporterFactory = new TestReporterFactory (ProcessManager); - var listener = new Microsoft.DotNet.XHarness.iOS.Shared.Listeners.SimpleFileListener (xmlLog.FullPath, log, xmlLog, useXmlOutput); - var reporter = reporterFactory.Create (Harness.HarnessLog, log, Logs, snapshot, listener, Harness.ResultParser, new AppBundleInformation ("N/A", "N/A", "N/A", "N/A", true, null), RunMode.MacOS, Harness.XmlJargon, "no device here", TimeSpan.Zero); + var listener = new Microsoft.DotNet.XHarness.iOS.Shared.Listeners.SimpleFileListener (xmlLog!.FullPath, log, xmlLog, useXmlOutput); + var reporter = reporterFactory.Create (Harness.HarnessLog!, log, Logs, snapshot!, listener, Harness.ResultParser, new AppBundleInformation ("N/A", "N/A", "N/A", "N/A", true, null), RunMode.MacOS, Harness.XmlJargon, "no device here", TimeSpan.Zero); var rv = await reporter.ParseResult (); if (ExecutionResult == TestExecutingResult.Succeeded) { diff --git a/tests/xharness/Jenkins/TestTasks/MacTask.cs b/tests/xharness/Jenkins/TestTasks/MacTask.cs index 510fa15564d1..b426712da750 100644 --- a/tests/xharness/Jenkins/TestTasks/MacTask.cs +++ b/tests/xharness/Jenkins/TestTasks/MacTask.cs @@ -8,7 +8,7 @@ public MacTask (Jenkins jenkins, BuildToolTask build_task, IMlaunchProcessManage { } - public override string Mode { + public override string? Mode { get { switch (Platform) { case TestPlatform.Mac: diff --git a/tests/xharness/Jenkins/TestTasks/Resource.cs b/tests/xharness/Jenkins/TestTasks/Resource.cs index 289d8d5c8db5..9b95123d9030 100644 --- a/tests/xharness/Jenkins/TestTasks/Resource.cs +++ b/tests/xharness/Jenkins/TestTasks/Resource.cs @@ -21,7 +21,7 @@ public class Resource { public int QueuedUsers => queue.Count + exclusive_queue.Count; public int MaxConcurrentUsers { get; set; } = 1; - public Resource (string name, int max_concurrent_users = 1, string description = null) + public Resource (string name, int max_concurrent_users = 1, string? description = null) { this.Name = name; this.MaxConcurrentUsers = max_concurrent_users; @@ -62,13 +62,13 @@ void Release () lock (queue) { Users--; exclusive = false; - if (queue.TryDequeue (out TaskCompletionSource tcs)) { + if (queue.TryDequeue (out var tcs)) { Users++; - tcs.SetResult ((IAcquiredResource) tcs.Task.AsyncState); + tcs.SetResult ((IAcquiredResource) tcs.Task.AsyncState!); } else if (Users == 0 && exclusive_queue.TryDequeue (out tcs)) { Users++; exclusive = true; - tcs.SetResult ((IAcquiredResource) tcs.Task.AsyncState); + tcs.SetResult ((IAcquiredResource) tcs.Task.AsyncState!); } } } diff --git a/tests/xharness/Jenkins/TestTasks/RunDevice.cs b/tests/xharness/Jenkins/TestTasks/RunDevice.cs index fcbf1ed59b38..0fb0d644ce53 100644 --- a/tests/xharness/Jenkins/TestTasks/RunDevice.cs +++ b/tests/xharness/Jenkins/TestTasks/RunDevice.cs @@ -11,7 +11,7 @@ namespace Xharness.Jenkins.TestTasks { public class RunDevice { - readonly IRunDeviceTask testTask; + readonly RunDeviceTask testTask; readonly IHardwareDeviceLoader devices; readonly IResultParser resultParser = new XmlResultParser (); readonly IResourceManager resourceManager; @@ -26,9 +26,9 @@ public class RunDevice { readonly XmlResultJargon xmlResultJargon; readonly IErrorKnowledgeBase errorKnowledgeBase; - public AppInstallMonitorLog InstallLog { get; private set; } + public AppInstallMonitorLog? InstallLog { get; private set; } - public RunDevice (IRunDeviceTask testTask, + public RunDevice (RunDeviceTask testTask, IHardwareDeviceLoader devices, IResourceManager resourceManager, ILog mainLog, @@ -77,7 +77,7 @@ public async Task RunTestAsync () testTask.Device = testTask.Candidates.First ((d) => d.UDID == device_resource.Resource.Name); mainLog.WriteLine ("Acquired device '{0}' for '{1}'", testTask.Device.Name, testTask.ProjectFile); - ITunnelBore tunnelBore = null; + ITunnelBore? tunnelBore = null; if (useTcpTunnel && testTask.Device.DevicePlatform != DevicePlatform.iOS && testTask.Device.DevicePlatform != DevicePlatform.tvOS) { mainLog.WriteLine ("Ignoring request to use a tunnel because it is not supported by the specified platform"); @@ -163,7 +163,7 @@ public async Task RunTestAsync () } finally { // Uninstall again, so that we don't leave junk behind and fill up the device. if (uninstallTestApp) { - testTask.Runner.MainLog = uninstall_log; + testTask.Runner!.MainLog = uninstall_log; var uninstall_result = await testTask.Runner.UninstallAsync (); if (!uninstall_result.Succeeded) mainLog.WriteLine ($"Post-run uninstall failed, exit code: {uninstall_result.ExitCode} (this won't affect the test result)"); diff --git a/tests/xharness/Jenkins/TestTasks/RunDeviceTask.cs b/tests/xharness/Jenkins/TestTasks/RunDeviceTask.cs index 19788fbefd1c..c019be39cffe 100644 --- a/tests/xharness/Jenkins/TestTasks/RunDeviceTask.cs +++ b/tests/xharness/Jenkins/TestTasks/RunDeviceTask.cs @@ -8,11 +8,11 @@ using Microsoft.DotNet.XHarness.iOS.Shared.Listeners; namespace Xharness.Jenkins.TestTasks { - class RunDeviceTask : RunXITask, IRunDeviceTask { + public class RunDeviceTask : RunXITask { public ITunnelBore TunnelBore { get; private set; } RunDevice runDevice; - public override string ProgressMessage { + public override string? ProgressMessage { get { var log = runDevice.InstallLog; if (log is null) diff --git a/tests/xharness/Jenkins/TestTasks/RunSimulator.cs b/tests/xharness/Jenkins/TestTasks/RunSimulator.cs index ca5eb393c47f..e94c372e0534 100644 --- a/tests/xharness/Jenkins/TestTasks/RunSimulator.cs +++ b/tests/xharness/Jenkins/TestTasks/RunSimulator.cs @@ -15,8 +15,8 @@ public class RunSimulator { readonly ILog mainLog; readonly ILog simulatorLoadLog; - readonly ISimulatorLoader simulators; - readonly IRunSimulatorTask testTask; + readonly SimulatorLoader simulators; + readonly RunSimulatorTask testTask; readonly IErrorKnowledgeBase errorKnowledgeBase; public IEnumerable Simulators { @@ -29,9 +29,9 @@ public IEnumerable Simulators { } } - public RunSimulator (IRunSimulatorTask testTask, - ISimulatorLoader simulators, - IErrorKnowledgeBase errorKnowledgeBase, + public RunSimulator (RunSimulatorTask testTask, + SimulatorLoader simulators, + ErrorKnowledgeBase errorKnowledgeBase, ILog mainLog, ILog simulatorLoadLog) { @@ -95,7 +95,7 @@ public async Task SelectSimulatorAsync () new TestReporterFactory (testTask.ProcessManager), testTask.AppRunnerTarget, testTask.Harness, - mainLog: testTask.Logs.Create ($"run-{testTask.Device.UDID}-{Harness.Helpers.Timestamp}.log", "Run log"), + mainLog: testTask.Logs.Create ($"run-{testTask.Device!.UDID}-{Harness.Helpers.Timestamp}.log", "Run log"), logs: testTask.Logs, projectFilePath: testTask.ProjectFile, ensureCleanSimulatorState: clean_state, @@ -120,7 +120,7 @@ public async Task RunTestAsync () using (var resource = await testTask.NotifyBlockingWaitAsync (testTask.AcquireResourceAsync ())) { if (testTask.Runner is null) await SelectSimulatorAsync (); - await testTask.Runner.RunAsync (); + await testTask.Runner!.RunAsync (); } testTask.ExecutionResult = testTask.Runner.Result; diff --git a/tests/xharness/Jenkins/TestTasks/RunSimulatorTask.cs b/tests/xharness/Jenkins/TestTasks/RunSimulatorTask.cs index 2b7353c04113..ff2ab887243f 100644 --- a/tests/xharness/Jenkins/TestTasks/RunSimulatorTask.cs +++ b/tests/xharness/Jenkins/TestTasks/RunSimulatorTask.cs @@ -4,14 +4,14 @@ using Microsoft.DotNet.XHarness.iOS.Shared.Hardware; namespace Xharness.Jenkins.TestTasks { - class RunSimulatorTask : RunXITask, IRunSimulatorTask { + public class RunSimulatorTask : RunXITask { readonly RunSimulator runSimulator; - public IAcquiredResource AcquiredResource; + public IAcquiredResource? AcquiredResource; public IEnumerable Simulators => runSimulator.Simulators; - public RunSimulatorTask (Jenkins jenkins, ISimulatorLoader simulators, MSBuildTask buildTask, IMlaunchProcessManager processManager, IEnumerable candidates = null) - : base (jenkins, buildTask, processManager, candidates) => runSimulator = new RunSimulator ( + public RunSimulatorTask (Jenkins jenkins, SimulatorLoader simulators, MSBuildTask buildTask, IMlaunchProcessManager processManager, IEnumerable? candidates = null) + : base (jenkins, buildTask, processManager, candidates ?? []) => runSimulator = new RunSimulator ( testTask: this, simulators: simulators, errorKnowledgeBase: Jenkins.ErrorKnowledgeBase, @@ -41,11 +41,11 @@ protected override string XIMode { } class NondisposedResource : IAcquiredResource { - public IAcquiredResource Wrapped; + public IAcquiredResource? Wrapped; public Resource Resource { get { - return Wrapped.Resource; + return Wrapped!.Resource; } } diff --git a/tests/xharness/Jenkins/TestTasks/RunTest.cs b/tests/xharness/Jenkins/TestTasks/RunTest.cs index de7ed8f96490..46af2d0be5fd 100644 --- a/tests/xharness/Jenkins/TestTasks/RunTest.cs +++ b/tests/xharness/Jenkins/TestTasks/RunTest.cs @@ -14,10 +14,10 @@ namespace Xharness.Jenkins.TestTasks { public class RunTest { public IMlaunchProcessManager ProcessManager { get; private set; } - public IBuildToolTask BuildTask { get; private set; } + public BuildToolTask BuildTask { get; private set; } IResultParser ResultParser { get; } = new XmlResultParser (); - readonly IRunTestTask testTask; + readonly RunTestTask testTask; readonly IEnvManager envManager; readonly ILog mainLog; readonly bool generateXmlFailures; @@ -26,10 +26,10 @@ public class RunTest { public TimeSpan Timeout { get; set; } = TimeSpan.FromMinutes (10); public double TimeoutMultiplier { get; set; } = 1; - public string WorkingDirectory; + public string? WorkingDirectory; - public RunTest (IRunTestTask testTask, - IBuildToolTask buildTask, + public RunTest (RunTestTask testTask, + BuildToolTask buildTask, IMlaunchProcessManager processManager, IEnvManager envManager, ILog mainLog, diff --git a/tests/xharness/Jenkins/TestTasks/RunTestTask.cs b/tests/xharness/Jenkins/TestTasks/RunTestTask.cs index 0f02dc4d4bce..5d8500feaf25 100644 --- a/tests/xharness/Jenkins/TestTasks/RunTestTask.cs +++ b/tests/xharness/Jenkins/TestTasks/RunTestTask.cs @@ -8,17 +8,17 @@ using Microsoft.DotNet.XHarness.iOS.Shared.Logging; namespace Xharness.Jenkins.TestTasks { - internal abstract class RunTestTask : AppleTestTask, IRunTestTask { + public abstract class RunTestTask : AppleTestTask { protected RunTest runTest; public IMlaunchProcessManager ProcessManager => runTest.ProcessManager; - public IBuildToolTask BuildTask => runTest.BuildTask; + public BuildToolTask BuildTask => runTest.BuildTask; public double TimeoutMultiplier { get => runTest.TimeoutMultiplier; set => runTest.TimeoutMultiplier = value; } - public string WorkingDirectory { + public string? WorkingDirectory { get => runTest.WorkingDirectory; set => runTest.WorkingDirectory = value; } @@ -28,7 +28,7 @@ public TimeSpan Timeout { set => runTest.Timeout = value; } - public RunTestTask (Jenkins jenkins, IBuildToolTask build_task, IMlaunchProcessManager processManager) : base (jenkins) + public RunTestTask (Jenkins jenkins, BuildToolTask build_task, IMlaunchProcessManager processManager) : base (jenkins) { runTest = new RunTest ( testTask: this, @@ -98,7 +98,7 @@ protected Task ExecuteProcessAsync (string filename, List arguments) return ExecuteProcessAsync (null, filename, arguments); } - protected Task ExecuteProcessAsync (ILog log, string filename, List arguments) + protected Task ExecuteProcessAsync (ILog? log, string filename, List arguments) { if (log is null) log = Logs.Create ($"execute-{Timestamp}.txt", LogType.ExecutionLog.ToString ()); diff --git a/tests/xharness/Jenkins/TestTasks/RunXITask.cs b/tests/xharness/Jenkins/TestTasks/RunXITask.cs index 24e1f513d10f..463e24b06291 100644 --- a/tests/xharness/Jenkins/TestTasks/RunXITask.cs +++ b/tests/xharness/Jenkins/TestTasks/RunXITask.cs @@ -9,19 +9,17 @@ using Microsoft.DotNet.XHarness.iOS.Shared.Hardware; namespace Xharness.Jenkins.TestTasks { - abstract class RunXITask : RunTestTask where TDevice : class, IDevice { + public abstract class RunXITask : RunTestTask where TDevice : class, IDevice { public TestTarget AppRunnerTarget { get; set; } - public AppRunner Runner { get; set; } - public AppRunner AdditionalRunner { get; set; } + public AppRunner? Runner { get; set; } + public AppRunner? AdditionalRunner { get; set; } public IEnumerable Candidates { get; } - public TDevice Device { get; set; } + public TDevice? Device { get; set; } - public TDevice CompanionDevice { get; set; } - - public string BundleIdentifier => Runner.AppInformation.BundleIdentifier; + public string BundleIdentifier => Runner?.AppInformation.BundleIdentifier ?? string.Empty; public RunXITask (Jenkins jenkins, BuildToolTask build_task, IMlaunchProcessManager processManager, IEnumerable candidates) : base (jenkins, build_task, processManager) @@ -40,7 +38,7 @@ public override IEnumerable AggregatedLogs { } } - public override string Mode { + public override string? Mode { get { switch (Platform) { @@ -65,7 +63,7 @@ public override async Task VerifyRunAsync () var asyncEnumerable = enumerable as IAsyncEnumerable; if (asyncEnumerable is not null) await asyncEnumerable.ReadyTask; - if (!enumerable.Any ()) { + if (enumerable is null || !enumerable.Any ()) { ExecutionResult = TestExecutingResult.DeviceNotFound; FailureMessage = "No applicable devices found."; } diff --git a/tests/xharness/Jenkins/TestTasks/TestTask.cs b/tests/xharness/Jenkins/TestTasks/TestTask.cs index 014c0045b43b..0528e50e8a3a 100644 --- a/tests/xharness/Jenkins/TestTasks/TestTask.cs +++ b/tests/xharness/Jenkins/TestTasks/TestTask.cs @@ -13,26 +13,26 @@ using Microsoft.DotNet.XHarness.iOS.Shared.Utilities; namespace Xharness.Jenkins.TestTasks { - public abstract class TestTasks : IEnvManager, IEventLogger, ITestTask { + public abstract class TestTask : IEnvManager, IEventLogger { static int counter; - static DriveInfo rootDrive; + static DriveInfo? rootDrive; protected readonly Stopwatch waitingDuration = new (); #region Private vars - ILog testLog; + ILog? testLog; bool? supportsParallelExecution; - string testName; - Task executeTask; + string? testName; + Task? executeTask; #endregion #region Public vars - public Dictionary Environment = new (); - public Task InitialTask { get; set; } // a task that's executed before this task's ExecuteAsync method. - public Task CompletedTask; // a task that's executed after this task's ExecuteAsync method. + public Dictionary Environment = new (); + public Task? InitialTask { get; set; } // a task that's executed before this task's ExecuteAsync method. + public Task? CompletedTask; // a task that's executed after this task's ExecuteAsync method. public List Resources = new (); #endregion @@ -41,12 +41,12 @@ public abstract class TestTasks : IEnvManager, IEventLogger, ITestTask { public int ID { get; private set; } public bool BuildOnly { get; set; } - public KnownIssue KnownFailure { get; set; } - public string ProjectConfiguration { get; set; } - public string ProjectPlatform { get; set; } + public KnownIssue? KnownFailure { get; set; } + public string? ProjectConfiguration { get; set; } + public string? ProjectPlatform { get; set; } protected static string Timestamp => Harness.Helpers.Timestamp; - public string ProjectFile => TestProject?.Path; + public string ProjectFile => TestProject?.Path ?? ""; public bool HasCustomTestName => testName is not null; public bool NotStarted => (ExecutionResult & TestExecutingResult.StateMask) == TestExecutingResult.NotStarted; @@ -80,19 +80,19 @@ public bool Ignored { public Stopwatch DurationStopWatch { get; } = new (); public TimeSpan Duration => DurationStopWatch.Elapsed; - string failureMessage; - public string FailureMessage { + string? failureMessage; + public string? FailureMessage { get { return failureMessage; } set { failureMessage = value; - MainLog.WriteLine (failureMessage); + MainLog.WriteLine (failureMessage ?? ""); } } public ILog MainLog => testLog ??= Logs.Create ($"main-{Timestamp}.log", "Main log"); - ILogs logs; + ILogs? logs; public ILogs Logs => logs ??= new Logs (LogDirectory); #endregion @@ -112,11 +112,11 @@ public ILog MainLog #region Virtual - public virtual TestProject TestProject { get; set; } + public virtual TestProject? TestProject { get; set; } public virtual TestPlatform Platform { get; set; } - public virtual string ProgressMessage { get; } - public virtual string Mode { get; set; } - public virtual string Variation { get; set; } + public virtual string? ProgressMessage { get; } + public virtual string? Mode { get; set; } + public virtual string? Variation { get; set; } public virtual bool SupportsParallelExecution { get => supportsParallelExecution ?? true; @@ -174,7 +174,7 @@ public virtual void Reset () #endregion - public TestTasks () + public TestTask () { ID = Interlocked.Increment (ref counter); } @@ -265,7 +265,7 @@ public override string ToString () protected void AddCILogFiles (StreamReader stream) { - string line; + string? line; while ((line = stream.ReadLine ()) is not null) { if (!line.StartsWith ("@MonkeyWrench: ", StringComparison.Ordinal)) continue; @@ -287,11 +287,11 @@ protected void AddCILogFiles (StreamReader stream) } } - public string GuessFailureReason (IReadableLog log) + public string? GuessFailureReason (IReadableLog log) { try { using (var reader = log.GetReader ()) { - string line; + string? line; var error_msg = new System.Text.RegularExpressions.Regex ("([A-Z][A-Z][0-9][0-9][0-9][0-9]:.*)"); while ((line = reader.ReadLine ()) is not null) { var match = error_msg.Match (line); @@ -310,7 +310,9 @@ public string GuessFailureReason (IReadableLog log) // It will also pause the duration. public async Task NotifyBlockingWaitAsync (Task task) { - var rv = new BlockingWait (); + var rv = new BlockingWait () { + OnDispose = DurationStopWatch.Stop, + }; // Stop the timer while we're waiting for a resource DurationStopWatch.Stop (); @@ -320,20 +322,19 @@ public async Task NotifyBlockingWaitAsync (Task CreateTestVariations (IEnumerable tests, Func, T> creator) where T : RunTestTask; - } - - class TestVariationsFactory : ITestVariationsFactory { + class TestVariationsFactory { readonly Jenkins jenkins; readonly IProcessManager processManager; @@ -30,7 +26,7 @@ IEnumerable GetTestData (RunTestTask test) // This function returns additional test configurations (in addition to the default one) for the specific test var supports_interpreter = test.Platform != TestPlatform.Mac; - var ignore = test.TestProject.Ignore; + var ignore = test.TestProject!.Ignore; var mac_supports_arm64 = Harness.CanRunArm64; var arm64_runtime_identifier = string.Empty; var x64_runtime_identifier = string.Empty; @@ -73,7 +69,7 @@ IEnumerable GetTestData (RunTestTask test) switch (test.ProjectPlatform) { case "iPhone": - if (test.ProjectConfiguration.Contains ("Debug")) + if (test.ProjectConfiguration?.Contains ("Debug") == true) yield return new TestData { Variation = "Release", Debug = false }; switch (test.TestName) { @@ -160,18 +156,18 @@ IEnumerable GetTestData (RunTestTask test) } } - public IEnumerable CreateTestVariations (IEnumerable tests, Func, T> creator) where T : RunTestTask + public IEnumerable CreateTestVariations (IEnumerable tests, Func?, T> creator) where T : RunTestTask { foreach (var task in tests) { if (string.IsNullOrEmpty (task.Variation)) - task.Variation = task.ProjectConfiguration.Contains ("Debug") ? "Debug" : "Release"; + task.Variation = task.ProjectConfiguration?.Contains ("Debug") == true ? "Debug" : "Release"; } var rv = new List (tests); foreach (var task in tests.ToArray ()) { foreach (var test_data in GetTestData (task)) { var variation = test_data.Variation; - var configuration = test_data.Debug ? task.ProjectConfiguration : task.ProjectConfiguration.Replace ("Debug", "Release"); + var configuration = test_data.Debug ? task.ProjectConfiguration : task.ProjectConfiguration?.Replace ("Debug", "Release"); var debug = test_data.Debug; var link_mode = test_data.LinkMode; var ignored = test_data.Ignored; @@ -187,9 +183,9 @@ public IEnumerable CreateTestVariations (IEnumerable tests, Func { - await task.BuildTask.InitialTask; // this is the project cloning above + await task.BuildTask.InitialTask!; // this is the project cloning above await clone.CreateCopyAsync (jenkins.MainLog, processManager, task, HarnessConfiguration.RootDirectory); var isMac = task.Platform.IsMac (); @@ -230,7 +226,7 @@ public IEnumerable CreateTestVariations (IEnumerable tests, Func showHelp () }, + { "h|?|help", "Displays the help", (v) => showHelp!.Invoke () }, { "v|verbose", "Show verbose output", (v) => configuration.Verbosity++ }, { "use-system:", "Use the system version of Xamarin.iOS/Xamarin.Mac or the locally build version. Default: the locally build version.", (v) => configuration.UseSystemXamarinIOSMac = v == "1" || v == "true" || string.IsNullOrEmpty (v) }, { "rootdir=", "The root directory for the tests.", (v) => HarnessConfiguration.RootDirectory = v }, diff --git a/tests/xharness/TestPlatformExtensions.cs b/tests/xharness/TestPlatformExtensions.cs index 6deb5d3042a0..187db3b85ad6 100644 --- a/tests/xharness/TestPlatformExtensions.cs +++ b/tests/xharness/TestPlatformExtensions.cs @@ -27,7 +27,7 @@ public static bool IsMac (this TestPlatform platform) } // This must match our $(_PlatformName) variable in our MSBuild logic. - public static string ToPlatformName (this TestPlatform platform) + public static string? ToPlatformName (this TestPlatform platform) { switch (platform) { case TestPlatform.iOS: diff --git a/tests/xharness/TestProject.cs b/tests/xharness/TestProject.cs index fb40da8a461d..3aef099deeef 100644 --- a/tests/xharness/TestProject.cs +++ b/tests/xharness/TestProject.cs @@ -22,7 +22,7 @@ public class TestProject { public TestPlatform TestPlatform; public TestLabel Label; public string Path; - public string? Name; + public string Name = ""; public bool IsExecutableProject; public string []? Configurations; public string? FailureMessage; @@ -80,13 +80,13 @@ protected virtual TestProject CompleteClone (TestProject rv) return rv; } - public Task CreateCopyAsync (ILog log, IProcessManager processManager, ITestTask test, string rootDirectory) + public Task CreateCopyAsync (ILog log, IProcessManager processManager, TestTask test, string rootDirectory) { var pr = new Dictionary (); return CreateCopyAsync (log, processManager, test, rootDirectory, pr); } - async Task CreateCopyAsync (ILog log, IProcessManager processManager, ITestTask test, string rootDirectory, Dictionary allProjectReferences) + async Task CreateCopyAsync (ILog log, IProcessManager processManager, TestTask test, string rootDirectory, Dictionary allProjectReferences) { var directory = Cache.CreateTemporaryDirectory (test.TestName ?? System.IO.Path.GetFileNameWithoutExtension (Path)); Directory.CreateDirectory (directory); @@ -220,7 +220,7 @@ void InlineSharedImports (XmlDocument doc, string original_path, Dictionary GetPidFromRunLog () if (!listener.ConnectedTask.IsCompletedSuccessfully || !listener.ConnectedTask.Result) launchFailure = true; } else { - string line; + string? line; while ((line = await reader.ReadLineAsync ()) is not null) { if (line.StartsWith ("Application launched. PID = ", StringComparison.Ordinal)) { var pidstr = line.Substring ("Application launched. PID = ".Length); @@ -136,7 +136,7 @@ async Task GetPidFromMainLog () { int pid = -1; using var logReader = mainLog.GetReader (); - string line; + string? line; while ((line = await logReader.ReadLineAsync ()) is not null) { const string str = "was launched with pid '"; var idx = line.IndexOf (str, StringComparison.Ordinal); @@ -152,7 +152,7 @@ async Task GetPidFromMainLog () return pid; } - void GetCrashReason (int pid, IReadableLog crashLog, out string crashReason) + void GetCrashReason (int pid, IReadableLog crashLog, out string? crashReason) { crashReason = null; using var crashReader = crashLog.GetReader (); @@ -161,7 +161,7 @@ void GetCrashReason (int pid, IReadableLog crashLog, out string crashReason) var reader = JsonReaderWriterFactory.CreateJsonReader (Encoding.UTF8.GetBytes (text), new XmlDictionaryReaderQuotas ()); var doc = new XmlDocument (); doc.Load (reader); - foreach (XmlNode node in doc.SelectNodes ($"/root/processes/item[pid = '" + pid + "']")) { + foreach (XmlNode node in doc.SelectNodes ($"/root/processes/item[pid = '" + pid + "']")!) { Console.WriteLine (node?.InnerXml); Console.WriteLine (node?.SelectSingleNode ("reason")?.InnerText); crashReason = node?.SelectSingleNode ("reason")?.InnerText; @@ -171,7 +171,7 @@ void GetCrashReason (int pid, IReadableLog crashLog, out string crashReason) async Task TcpConnectionFailed () { using var reader = new StreamReader (mainLog.FullPath); - string line; + string? line; while ((line = await reader.ReadLineAsync ()) is not null) { if (line.Contains ("Couldn't establish a TCP connection with any of the hostnames")) return true; @@ -257,12 +257,12 @@ public async Task CollectDeviceResult (ProcessExecutionResult runResult) await CollectResult (runResult); } - async Task<(string ResultLine, bool Failed)> GetResultLine (string logPath) + async Task<(string? ResultLine, bool Failed)> GetResultLine (string logPath) { - string resultLine = null; + string? resultLine = null; bool failed = false; using var reader = new StreamReader (logPath); - string line; + string? line; while ((line = await reader.ReadLineAsync ()) is not null) { if (line.Contains ("Tests run:")) { Console.WriteLine (line); @@ -276,9 +276,9 @@ public async Task CollectDeviceResult (ProcessExecutionResult runResult) return (ResultLine: resultLine, Failed: failed); } - async Task<(string resultLine, bool failed, bool crashed)> ParseResultFile (AppBundleInformation appInfo, string testLogPath, bool timedOut) + async Task<(string? resultLine, bool failed, bool crashed)> ParseResultFile (AppBundleInformation appInfo, string testLogPath, bool timedOut) { - (string resultLine, bool failed, bool crashed) parseResult = (null, false, false); + (string? resultLine, bool failed, bool crashed) parseResult = (null, false, false); if (!File.Exists (testLogPath)) { parseResult.crashed = true; return parseResult; @@ -286,7 +286,7 @@ public async Task CollectDeviceResult (ProcessExecutionResult runResult) var path = Path.ChangeExtension (testLogPath, "xml"); if (path == testLogPath) - path = Path.Combine (Path.GetDirectoryName (path), Path.GetFileNameWithoutExtension (path) + "-clean.xml"); + path = Path.Combine (Path.GetDirectoryName (path)!, Path.GetFileNameWithoutExtension (path) + "-clean.xml"); resultParser.CleanXml (testLogPath, path); @@ -310,7 +310,7 @@ public async Task CollectDeviceResult (ProcessExecutionResult runResult) var humanReadableLog = logs.CreateFile (Path.GetFileNameWithoutExtension (testLogPath) + ".log", LogType.NUnitResult); (parseResult.resultLine, parseResult.failed) = resultParser.ParseResults (path, xmlType, humanReadableLog); } else { - (parseResult.resultLine, parseResult.failed) = resultParser.ParseResults (path, xmlType, (StreamWriter) null); + (parseResult.resultLine, parseResult.failed) = resultParser.ParseResults (path, xmlType, (StreamWriter?) null); } logs.AddFile (path, LogType.XmlLog.ToString ()); @@ -320,7 +320,7 @@ public async Task CollectDeviceResult (ProcessExecutionResult runResult) mainLog.WriteLine ("File data is:"); mainLog.WriteLine (new string ('#', 10)); using (var stream = new StreamReader (path)) { - string line; + string? line; while ((line = await stream.ReadLineAsync ()) is not null) mainLog.WriteLine (line); } @@ -368,7 +368,7 @@ public async Task CollectDeviceResult (ProcessExecutionResult runResult) } } - async Task GenerateXmlFailures (string failure, bool crashed, string crashReason) + async Task GenerateXmlFailures (string failure, bool crashed, string? crashReason) { if (!ResultsUseXml) return; @@ -426,9 +426,9 @@ async Task GenerateXmlFailures (string failure, bool crashed, string crashReason } } - public async Task<(TestExecutingResult ExecutingResult, string ResultMessage)> ParseResult () + public async Task<(TestExecutingResult ExecutingResult, string? ResultMessage)> ParseResult () { - (TestExecutingResult ExecutingResult, string ResultMessage) result = (TestExecutingResult.Finished, null); + (TestExecutingResult ExecutingResult, string? ResultMessage) result = (TestExecutingResult.Finished, null); var crashed = false; if (File.Exists (listener.TestLog.FullPath)) { WrenchLog.WriteLine ("AddFile: {0}", listener.TestLog.FullPath); @@ -481,7 +481,7 @@ async Task GenerateXmlFailures (string failure, bool crashed, string crashReason if (!Success.Value) { int pid = -1; - string crashReason = null; + string? crashReason = null; foreach (var crashLog in crashLogs) { try { logs.Add (crashLog); diff --git a/tests/xharness/TestReporterFactory.cs b/tests/xharness/TestReporterFactory.cs index eb70d9156a2b..77adb724b219 100644 --- a/tests/xharness/TestReporterFactory.cs +++ b/tests/xharness/TestReporterFactory.cs @@ -32,10 +32,10 @@ public ITestReporter Create ( AppBundleInformation appInformation, RunMode runMode, XmlResultJargon xmlJargon, - string device, + string? device, TimeSpan timeout, - string additionalLogsDirectory = null, - ExceptionLogger exceptionLogger = null, + string? additionalLogsDirectory = null, + ExceptionLogger? exceptionLogger = null, bool generateHtml = false) { return new TestReporter ( diff --git a/tests/xharness/Xharness.Tests/Jenkins/ErrorKnowledgeBaseTests.cs b/tests/xharness/Xharness.Tests/Jenkins/ErrorKnowledgeBaseTests.cs deleted file mode 100644 index 8b337c4b5b85..000000000000 --- a/tests/xharness/Xharness.Tests/Jenkins/ErrorKnowledgeBaseTests.cs +++ /dev/null @@ -1,72 +0,0 @@ -#nullable enable -using System.IO; -using Microsoft.DotNet.XHarness.iOS.Shared.Logging; -using NUnit.Framework; -using Xharness.Jenkins; - -namespace Xharness.Tests.Jenkins { - public class ErrorKnowledgeBaseTests { - - ErrorKnowledgeBase? errorKnowledgeBase; - string? testFile; - - [SetUp] - public void SetUp () - { - errorKnowledgeBase = new ErrorKnowledgeBase (); - testFile = Path.GetTempFileName (); - } - - [TearDown] - public void TearDown () - { - errorKnowledgeBase = null; - } - - [Test] - public void IsMonoMulti3IssuePresentTest () - { - using var log = new LogFile ("test", testFile); - log.WriteLine ("Some noise"); - log.WriteLine ("error MT5210: Native linking failed, undefined symbol: ___multi3"); - log.WriteLine ("Some noise"); - log.Flush (); - Assert.IsTrue (errorKnowledgeBase!.IsKnownBuildIssue (log, out var failureMessage)); - Assert.IsNotNull (failureMessage); - } - - [Test] - public void IsMonoMulti3IssueMissingTest () - { - using var log = new LogFile ("test", testFile); - log.WriteLine ("Some noise"); - log.WriteLine ("Some noise"); - log.Flush (); - Assert.IsFalse (errorKnowledgeBase!.IsKnownBuildIssue (log, out var failureMessage)); - Assert.IsNull (failureMessage); - } - - [Test] - public void IsHE0038ErrorPresentTest () - { - using var log = new LogFile ("test", testFile); - log.WriteLine ("Some noise"); - log.WriteLine ("error HE0038: Failed to launch the app"); - log.WriteLine ("Some noise"); - log.Flush (); - Assert.IsTrue (errorKnowledgeBase!.IsKnownTestIssue (log, out var failureMessage)); - Assert.IsNotNull (failureMessage); - } - - [Test] - public void IsHE0038ErrorMissingTest () - { - using var log = new LogFile ("test", testFile); - log.WriteLine ("Some noise"); - log.WriteLine ("Some noise"); - log.Flush (); - Assert.IsFalse (errorKnowledgeBase!.IsKnownTestIssue (log, out var failureMessage)); - Assert.IsNull (failureMessage); - } - } -} diff --git a/tests/xharness/Xharness.Tests/Jenkins/ITestTaskExtensionsTests.cs b/tests/xharness/Xharness.Tests/Jenkins/ITestTaskExtensionsTests.cs deleted file mode 100644 index 80f38751a729..000000000000 --- a/tests/xharness/Xharness.Tests/Jenkins/ITestTaskExtensionsTests.cs +++ /dev/null @@ -1,193 +0,0 @@ -using System.Collections; -using System.Collections.Generic; -using Microsoft.DotNet.XHarness.iOS.Shared; - -using Moq; -using NUnit.Framework; - -using Xharness.Jenkins.TestTasks; - -namespace Xharness.Tests.Jenkins { - - [TestFixture] - public class ITestTaskExtensionsTests { - - public class TestCasesData { - public static IEnumerable GetColorTestCases { - get { - var task = new Mock (); - task.Setup (t => t.NotStarted).Returns (true); - yield return new TestCaseData (task.Object).Returns ("black"); - - task = new Mock (); - task.Setup (t => t.InProgress).Returns (true); - task.Setup (t => t.Building).Returns (true); - yield return new TestCaseData (task.Object).Returns ("darkblue"); - - task = new Mock (); - task.Setup (t => t.InProgress).Returns (true); - task.Setup (t => t.Building).Returns (false); - task.Setup (t => t.Running).Returns (true); - yield return new TestCaseData (task.Object).Returns ("lightblue"); - - task = new Mock (); - task.Setup (t => t.InProgress).Returns (true); - task.Setup (t => t.Building).Returns (false); - task.Setup (t => t.Running).Returns (false); - yield return new TestCaseData (task.Object).Returns ("blue"); - - task = new Mock (); - task.Setup (t => t.InProgress).Returns (false); - task.Setup (t => t.Crashed).Returns (true); - yield return new TestCaseData (task.Object).Returns ("maroon"); - - task = new Mock (); - task.Setup (t => t.InProgress).Returns (false); - task.Setup (t => t.LaunchFailure).Returns (true); - yield return new TestCaseData (task.Object).Returns ("coral"); - - task = new Mock (); - task.Setup (t => t.InProgress).Returns (false); - task.Setup (t => t.HarnessException).Returns (true); - yield return new TestCaseData (task.Object).Returns ("orange"); - - task = new Mock (); - task.Setup (t => t.InProgress).Returns (false); - task.Setup (t => t.TimedOut).Returns (true); - yield return new TestCaseData (task.Object).Returns ("purple"); - - task = new Mock (); - task.Setup (t => t.InProgress).Returns (false); - task.Setup (t => t.BuildFailure).Returns (true); - yield return new TestCaseData (task.Object).Returns ("darkred"); - - task = new Mock (); - task.Setup (t => t.InProgress).Returns (false); - task.Setup (t => t.Failed).Returns (true); - yield return new TestCaseData (task.Object).Returns ("red"); - - task = new Mock (); - task.Setup (t => t.InProgress).Returns (false); - task.Setup (t => t.BuildSucceeded).Returns (true); - yield return new TestCaseData (task.Object).Returns ("lightgreen"); - - task = new Mock (); - task.Setup (t => t.InProgress).Returns (false); - task.Setup (t => t.Succeeded).Returns (true); - yield return new TestCaseData (task.Object).Returns ("green"); - - task = new Mock (); - task.Setup (t => t.InProgress).Returns (false); - task.Setup (t => t.Ignored).Returns (true); - yield return new TestCaseData (task.Object).Returns ("gray"); - - task = new Mock (); - task.Setup (t => t.InProgress).Returns (false); - task.Setup (t => t.Waiting).Returns (true); - yield return new TestCaseData (task.Object).Returns ("darkgray"); - - task = new Mock (); - task.Setup (t => t.InProgress).Returns (false); - task.Setup (t => t.DeviceNotFound).Returns (true); - yield return new TestCaseData (task.Object).Returns ("orangered"); - - task = new Mock (); - task.Setup (t => t.InProgress).Returns (false); - yield return new TestCaseData (task.Object).Returns ("pink"); - } - } - - public static IEnumerable GetColorCollectionTestCases { - get { - - Mock firstTask = new Mock (); - firstTask.Setup (t => t.Succeeded).Returns (true); - firstTask.Setup (t => t.ExecutionResult).Returns (TestExecutingResult.Succeeded); - Mock secondTask = new Mock (); - secondTask.Setup (t => t.Crashed).Returns (true); - secondTask.Setup (t => t.ExecutionResult).Returns (TestExecutingResult.Crashed); - yield return new TestCaseData (new List { firstTask.Object, secondTask.Object }).Returns ("maroon"); - - firstTask = new Mock (); - firstTask.Setup (t => t.Succeeded).Returns (true); - firstTask.Setup (t => t.ExecutionResult).Returns (TestExecutingResult.Succeeded); - secondTask = new Mock (); - secondTask.Setup (t => t.LaunchFailure).Returns (true); - secondTask.Setup (t => t.ExecutionResult).Returns (TestExecutingResult.LaunchFailure); - yield return new TestCaseData (new List { firstTask.Object, secondTask.Object }).Returns ("coral"); - - firstTask = new Mock (); - firstTask.Setup (t => t.Succeeded).Returns (true); - firstTask.Setup (t => t.ExecutionResult).Returns (TestExecutingResult.Succeeded); - secondTask = new Mock (); - secondTask.Setup (t => t.TimedOut).Returns (true); - secondTask.Setup (t => t.ExecutionResult).Returns (TestExecutingResult.TimedOut); - yield return new TestCaseData (new List { firstTask.Object, secondTask.Object }).Returns ("purple"); - - firstTask = new Mock (); - firstTask.Setup (t => t.Succeeded).Returns (true); - firstTask.Setup (t => t.ExecutionResult).Returns (TestExecutingResult.Succeeded); - secondTask = new Mock (); - secondTask.Setup (t => t.BuildFailure).Returns (true); - secondTask.Setup (t => t.ExecutionResult).Returns (TestExecutingResult.BuildFailure); - yield return new TestCaseData (new List { firstTask.Object, secondTask.Object }).Returns ("darkred"); - - firstTask = new Mock (); - firstTask.Setup (t => t.Succeeded).Returns (true); - firstTask.Setup (t => t.ExecutionResult).Returns (TestExecutingResult.Succeeded); - secondTask = new Mock (); - secondTask.Setup (t => t.Failed).Returns (true); - secondTask.Setup (t => t.ExecutionResult).Returns (TestExecutingResult.Failed); - yield return new TestCaseData (new List { firstTask.Object, secondTask.Object }).Returns ("red"); - - firstTask = new Mock (); - firstTask.Setup (t => t.Succeeded).Returns (true); - firstTask.Setup (t => t.ExecutionResult).Returns (TestExecutingResult.Succeeded); - secondTask = new Mock (); - secondTask.Setup (t => t.NotStarted).Returns (true); - secondTask.Setup (t => t.ExecutionResult).Returns (TestExecutingResult.NotStarted); - yield return new TestCaseData (new List { firstTask.Object, secondTask.Object }).Returns ("black"); - - firstTask = new Mock (); - firstTask.Setup (t => t.Succeeded).Returns (true); - firstTask.Setup (t => t.ExecutionResult).Returns (TestExecutingResult.Succeeded); - secondTask = new Mock (); - secondTask.Setup (t => t.Ignored).Returns (true); - secondTask.Setup (t => t.ExecutionResult).Returns (TestExecutingResult.Ignored); - yield return new TestCaseData (new List { firstTask.Object, secondTask.Object }).Returns ("gray"); - - firstTask = new Mock (); - firstTask.Setup (t => t.Succeeded).Returns (true); - firstTask.Setup (t => t.ExecutionResult).Returns (TestExecutingResult.Succeeded); - secondTask = new Mock (); - secondTask.Setup (t => t.DeviceNotFound).Returns (true); - secondTask.Setup (t => t.ExecutionResult).Returns (TestExecutingResult.DeviceNotFound); - yield return new TestCaseData (new List { firstTask.Object, secondTask.Object }).Returns ("orangered"); - - firstTask = new Mock (); - firstTask.Setup (t => t.BuildSucceeded).Returns (true); - firstTask.Setup (t => t.ExecutionResult).Returns (TestExecutingResult.BuildSucceeded); - secondTask = new Mock (); - secondTask.Setup (t => t.BuildSucceeded).Returns (true); - secondTask.Setup (t => t.ExecutionResult).Returns (TestExecutingResult.BuildSucceeded); - yield return new TestCaseData (new List { firstTask.Object, secondTask.Object }).Returns ("lightgreen"); - - firstTask = new Mock (); - firstTask.Setup (t => t.Succeeded).Returns (true); - firstTask.Setup (t => t.ExecutionResult).Returns (TestExecutingResult.Succeeded); - secondTask = new Mock (); - secondTask.Setup (t => t.Succeeded).Returns (true); - firstTask.Setup (t => t.ExecutionResult).Returns (TestExecutingResult.Succeeded); - yield return new TestCaseData (new List { firstTask.Object, secondTask.Object }).Returns ("green"); - - } - } - } - - [Test, TestCaseSource (typeof (TestCasesData), "GetColorTestCases")] - public string GetTestColorTest (ITestTask task) => task.GetTestColor (); - - [Test, TestCaseSource (typeof (TestCasesData), "GetColorCollectionTestCases")] - public string GetTestColorCollectionTest (IEnumerable tasks) => tasks.GetTestColor (); - } -} diff --git a/tests/xharness/Xharness.Tests/Jenkins/JenkinsDeviceLoadterTests.cs b/tests/xharness/Xharness.Tests/Jenkins/JenkinsDeviceLoadterTests.cs deleted file mode 100644 index f6cd6d2c5ebd..000000000000 --- a/tests/xharness/Xharness.Tests/Jenkins/JenkinsDeviceLoadterTests.cs +++ /dev/null @@ -1,130 +0,0 @@ -using System; -using System.Collections; -using System.Threading.Tasks; -using Microsoft.DotNet.XHarness.Common.Execution; -using Microsoft.DotNet.XHarness.Common.Logging; -using Microsoft.DotNet.XHarness.iOS.Shared.Execution; -using Microsoft.DotNet.XHarness.iOS.Shared.Hardware; -using Microsoft.DotNet.XHarness.iOS.Shared.Logging; -using Moq; -using NUnit.Framework; -using Xharness.Jenkins; - -namespace Xharness.Tests.Jenkins { - - [TestFixture] - public class JenkinsDeviceLoadterTests { - - public class TestCasesData { - public static IEnumerable GetDeviceTestCases { - get { - // set the mock expectations the expected results - var simulators = new Mock (); - var aDevice = new Mock (); - - // no devices found - var devices = new Mock (); - devices.Setup (d => d.Connected32BitIOS).Returns (Array.Empty ()); - devices.Setup (d => d.Connected64BitIOS).Returns (Array.Empty ()); - devices.Setup (d => d.ConnectedTV).Returns (Array.Empty ()); - - yield return new TestCaseData (simulators.Object, devices.Object, $"Device Listing (ok - no devices found)."); - - // iOS 32b - devices = new Mock (); - devices.Setup (d => d.Connected32BitIOS).Returns (new IHardwareDevice [] { aDevice.Object }); - devices.Setup (d => d.Connected64BitIOS).Returns (Array.Empty ()); - devices.Setup (d => d.ConnectedTV).Returns (Array.Empty ()); - - yield return new TestCaseData (simulators.Object, devices.Object, $"Device Listing (ok). Devices types are: iOS 32 bit"); - - devices = new Mock (); - devices.Setup (d => d.Connected32BitIOS).Returns (new IHardwareDevice [] { aDevice.Object }); - devices.Setup (d => d.Connected64BitIOS).Returns (new IHardwareDevice [] { aDevice.Object }); - devices.Setup (d => d.ConnectedTV).Returns (Array.Empty ()); - - yield return new TestCaseData (simulators.Object, devices.Object, $"Device Listing (ok). Devices types are: iOS 32 bit, iOS 64 bit"); - - devices = new Mock (); - devices.Setup (d => d.Connected32BitIOS).Returns (new IHardwareDevice [] { aDevice.Object }); - devices.Setup (d => d.Connected64BitIOS).Returns (new IHardwareDevice [] { aDevice.Object }); - devices.Setup (d => d.ConnectedTV).Returns (new IHardwareDevice [] { aDevice.Object }); - yield return new TestCaseData (simulators.Object, devices.Object, $"Device Listing (ok). Devices types are: iOS 32 bit, iOS 64 bit, tvOS"); - - devices = new Mock (); - devices.Setup (d => d.Connected32BitIOS).Returns (new IHardwareDevice [] { aDevice.Object }); - devices.Setup (d => d.Connected64BitIOS).Returns (new IHardwareDevice [] { aDevice.Object }); - devices.Setup (d => d.ConnectedTV).Returns (new IHardwareDevice [] { aDevice.Object }); - yield return new TestCaseData (simulators.Object, devices.Object, $"Device Listing (ok). Devices types are: iOS 32 bit, iOS 64 bit, tvOS"); - } - } - - public static IEnumerable GetSimulatorTestCases { - get { - var devices = new Mock (); - var simulators = new Mock (); - var processManager = new Mock (); - var db = new Mock (); - - simulators.Setup (s => s.AvailableDevices).Returns (Array.Empty ()); - yield return new TestCaseData (simulators.Object, devices.Object, "Simulator Listing (ok - no simulators found)."); - - simulators = new Mock (); - simulators.Setup (s => s.AvailableDevices).Returns (new SimulatorDevice [] { new SimulatorDevice (processManager.Object, db.Object) }); - yield return new TestCaseData (simulators.Object, devices.Object, $"Simulator Listing (ok - Found 1 simulators)."); - } - } - } - - Mock logs; - Mock log; - - [SetUp] - public void SetUp () - { - logs = new Mock (); - log = new Mock (); - - logs.Setup (l => l.Create ( - It.IsAny (), - It.Is (s => s.Equals ("Simulator Listing", StringComparison.OrdinalIgnoreCase)), - null)).Returns (log.Object); - - logs.Setup (l => l.Create ( - It.IsAny (), - It.Is (s => s.Equals ("Device Listing", StringComparison.OrdinalIgnoreCase)), - null)).Returns (log.Object); - - log.SetupSet (l => l.Description = It.IsAny ()).Verifiable (); - } - - [TearDown] - public void TearDown () - { - logs = null; - log = null; - } - - - [Test, TestCaseSource (typeof (TestCasesData), "GetDeviceTestCases")] - public async Task FoundDevicesTest (ISimulatorLoader simulators, IHardwareDeviceLoader devices, string expectedDescription) - { - var loader = new JenkinsDeviceLoader (simulators, devices, logs.Object); - - await loader.LoadDevicesAsync (); - // validate that the log description will be set as expected - log.VerifySet (l => l.Description = It.Is (s => s.Equals (expectedDescription, StringComparison.OrdinalIgnoreCase))); - } - - [Test, TestCaseSource (typeof (TestCasesData), "GetSimulatorTestCases")] - public async Task FoundSimulatorsTest (ISimulatorLoader simulators, IHardwareDeviceLoader devices, string expectedDescription) - { - var loader = new JenkinsDeviceLoader (simulators, devices, logs.Object); - - await loader.LoadSimulatorsAsync (); - // validate that the log description will be set as expected - log.VerifySet (l => l.Description = It.Is (s => s.Equals (expectedDescription, StringComparison.OrdinalIgnoreCase))); - } - - } -} diff --git a/tests/xharness/Xharness.Tests/Jenkins/MarkdownReportWriterTests.cs b/tests/xharness/Xharness.Tests/Jenkins/MarkdownReportWriterTests.cs deleted file mode 100644 index 53ce059ec74c..000000000000 --- a/tests/xharness/Xharness.Tests/Jenkins/MarkdownReportWriterTests.cs +++ /dev/null @@ -1,195 +0,0 @@ -using System.Collections.Generic; -using System.IO; -using Microsoft.DotNet.XHarness.iOS.Shared; -using Moq; -using NUnit.Framework; -using Xharness.Jenkins.Reports; -using Xharness.Jenkins.TestTasks; - -namespace Xharness.Tests.Jenkins { - [TestFixture] - public class MarkdownReportWriterTests { - - string path; - MarkdownReportWriter reportWriter; - - [SetUp] - public void SetUp () - { - path = Path.GetTempFileName (); - File.Delete (path); - reportWriter = new MarkdownReportWriter (); - } - - [TearDown] - public void TearDown () - { - File.Delete (path); - } - - [Test] - public void AllSuccessfulTest () - { - int count = 10; - List tasks = new List (); - for (var i = 0; i < count; i++) { - var success = new Mock (); - success.Setup (t => t.Finished).Returns (true); - success.Setup (t => t.Succeeded).Returns (true); - success.Setup (t => t.TestName).Returns ($"Success with id {i}"); - tasks.Add (success.Object); - } - - for (var i = 0; i < count; i++) { - var ignored = new Mock (); - ignored.Setup (t => t.ExecutionResult).Returns (TestExecutingResult.Ignored); - ignored.Setup (t => t.Finished).Returns (true); - tasks.Add (ignored.Object); - } - - using (var writer = new StreamWriter (path)) { - reportWriter.Write (tasks, writer); - } - - using (var reader = new StreamReader (path)) { - var report = reader.ReadToEnd (); - Assert.NotNull (report); - Assert.AreEqual ($"# :tada: All {count} tests passed :tada:\n\n", report); - } - } - - [Test] - public void MixResultsFailAndSuccessTest () - { - int count = 10; - List tasks = new List (); - for (var i = 0; i < count / 2; i++) { - var success = new Mock (); - success.Setup (t => t.Finished).Returns (true); - success.Setup (t => t.Succeeded).Returns (true); - success.Setup (t => t.TestName).Returns ($"Success with id {i}"); - tasks.Add (success.Object); - } - - for (var i = 0; i < count / 2; i++) { - var failure = new Mock (); - failure.Setup (t => t.Finished).Returns (true); - failure.Setup (t => t.Succeeded).Returns (false); - failure.Setup (t => t.Failed).Returns (true); - failure.Setup (t => t.ExecutionResult).Returns (TestExecutingResult.Failed); - failure.Setup (t => t.TestName).Returns ($"Failure with id {i}"); - tasks.Add (failure.Object); - } - - for (var i = 0; i < count; i++) { - var ignored = new Mock (); - ignored.Setup (t => t.ExecutionResult).Returns (TestExecutingResult.Ignored); - ignored.Setup (t => t.Finished).Returns (true); - tasks.Add (ignored.Object); - } - - using (var writer = new StreamWriter (path)) { - reportWriter.Write (tasks, writer); - } - - string summaryLine = null; - int failedTestsLineCount = 0; - - using (var reader = new StreamReader (path)) { - string line = null; - while ((line = reader.ReadLine ()) is not null) { - if (line.StartsWith ("{count / 2} tests failed, {count / 2} tests passed.", summaryLine, "summary value"); - Assert.AreEqual (count / 2, failedTestsLineCount, "Error count"); - } - - [Test] - public void MissingDeviceTest () - { - int count = 10; - List tasks = new List (); - for (var i = 0; i < count; i++) { - var success = new Mock (); - success.Setup (t => t.DeviceNotFound).Returns (true); - success.Setup (t => t.Finished).Returns (true); - success.Setup (t => t.ExecutionResult).Returns (TestExecutingResult.DeviceNotFound); - success.Setup (t => t.TestName).Returns ($"Failed with id {i}"); - tasks.Add (success.Object); - } - - using (var writer = new StreamWriter (path)) { - reportWriter.Write (tasks, writer); - } - - using (var reader = new StreamReader (path)) { - var report = reader.ReadToEnd (); - Assert.NotNull (report); - Assert.AreEqual ($"# Test results\n\n{count} tests' device not found, 0 tests passed.\n\n", report); - } - } - - [Test] - public void NotTestsTest () - { - int count = 10; - List tasks = new List (); - for (var i = 0; i < count; i++) { - var ignored = new Mock (); - ignored.Setup (t => t.ExecutionResult).Returns (TestExecutingResult.Ignored); - ignored.Setup (t => t.Finished).Returns (true); - tasks.Add (ignored.Object); - } - - using (var writer = new StreamWriter (path)) { - reportWriter.Write (tasks, writer); - } - - using (var reader = new StreamReader (path)) { - var report = reader.ReadToEnd (); - Assert.NotNull (report); - Assert.AreEqual ("# No tests selected.\n\n", report); - } - } - - [Test] - public void KnownIssueTest () - { - int count = 10; - List tasks = new List (); - - for (var i = 0; i < count; i++) { - var failure = new Mock (); - var knownIssue = new KnownIssue (humanMessage: "Testing known issues", issueLink: "http://github.com"); - failure.Setup (t => t.Finished).Returns (true); - failure.Setup (t => t.Succeeded).Returns (false); - failure.Setup (t => t.Failed).Returns (true); - failure.Setup (t => t.ExecutionResult).Returns (TestExecutingResult.Failed); - failure.Setup (t => t.TestName).Returns ($"Failure with id {i}"); - failure.Setup (t => t.KnownFailure).Returns (knownIssue); - tasks.Add (failure.Object); - } - - - using (var writer = new StreamWriter (path)) { - reportWriter.Write (tasks, writer); - } - - int failureCount = 0; - using (var reader = new StreamReader (path)) { - string line = null; - while ((line = reader.ReadLine ()) is not null) { - if (line.Contains ("Failure")) { - Assert.AreEqual ($" * Failure with id {failureCount}: Failed Known issue: [Testing known issues](http://github.com)", line, line); - failureCount++; - } - } - } - } - } -} diff --git a/tests/xharness/Xharness.Tests/Jenkins/PeriodicCommandTests.cs b/tests/xharness/Xharness.Tests/Jenkins/PeriodicCommandTests.cs deleted file mode 100644 index 0e8fcb3610af..000000000000 --- a/tests/xharness/Xharness.Tests/Jenkins/PeriodicCommandTests.cs +++ /dev/null @@ -1,94 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Threading; -using System.Threading.Tasks; -using Microsoft.DotNet.XHarness.Common.Execution; -using Microsoft.DotNet.XHarness.Common.Logging; -using Microsoft.DotNet.XHarness.iOS.Shared.Execution; -using Microsoft.DotNet.XHarness.iOS.Shared.Logging; -using Moq; -using NUnit.Framework; -using Xharness.Jenkins; - -namespace Xharness.Tests.Jenkins { - - [TestFixture] - public class PeriodicCommandTests { - - Mock processManager; - Mock logs; - Mock log; - TimeSpan interval; - string command; - string arguments; - - [SetUp] - public void SetUp () - { - processManager = new Mock (MockBehavior.Strict); - logs = new Mock (); - log = new Mock (); - - // common setup for the mocks - logs.Setup (l => l.Create (It.Is (s => true), It.Is (s => true), null)).Returns (log.Object); - interval = TimeSpan.FromMilliseconds (100); - command = "test"; - arguments = "periodic"; - } - - // we do not test the options without the cancellation task because we want to be nice people when running - // the tests and do not leave a thread doing nothing - [Test] - public async Task TestExecuteNoArgs () - { - var periodicCommand = new PeriodicCommand (command, processManager.Object, interval, logs.Object); - var executionTcs = new TaskCompletionSource (); - var threadCs = new CancellationTokenSource (); - - processManager.Setup (pm => pm.RunAsync ( - It.Is (p => p.StartInfo.FileName == command && p.StartInfo.Arguments == string.Empty), - It.IsAny (), - interval, - null, - It.IsAny (), - null)).Callback, CancellationToken?, bool?> ( - (p, l, i, env, t, d) => { - executionTcs.TrySetResult (true); - }).ReturnsAsync (new ProcessExecutionResult { ExitCode = 0, TimedOut = false }).Verifiable (); - - var task = periodicCommand.Execute (threadCs.Token); - await executionTcs.Task; // wait for the callback in the mock, which is in another thread to set the source - processManager.VerifyAll (); - processManager.VerifyNoOtherCalls (); - threadCs.Cancel (); // clean - } - - [Test] - public async Task TestExecuteArgs () - { - // all similar logic to the above one, but with arguments - var periodicCommand = new PeriodicCommand (command, processManager.Object, interval, logs.Object, arguments: arguments); - var executionTcs = new TaskCompletionSource (); - var threadCs = new CancellationTokenSource (); - - processManager.Setup (pm => pm.RunAsync ( - It.Is (p => p.StartInfo.FileName == command && p.StartInfo.Arguments == arguments), - It.IsAny (), - interval, - null, - It.IsAny (), - null)).Callback, CancellationToken?, bool?> ( - (p, l, i, env, t, d) => { - executionTcs.TrySetResult (true); - }).ReturnsAsync (new ProcessExecutionResult { ExitCode = 0, TimedOut = false }).Verifiable (); - - var task = periodicCommand.Execute (threadCs.Token); - await executionTcs.Task; // wait for the callback in the mock, which is in another thread to set the source - processManager.VerifyAll (); - processManager.VerifyNoOtherCalls (); - threadCs.Cancel (); // clean - } - - } -} diff --git a/tests/xharness/Xharness.Tests/Jenkins/ResourceManagerTests.cs b/tests/xharness/Xharness.Tests/Jenkins/ResourceManagerTests.cs deleted file mode 100644 index bdd8eb0bb6e7..000000000000 --- a/tests/xharness/Xharness.Tests/Jenkins/ResourceManagerTests.cs +++ /dev/null @@ -1,126 +0,0 @@ -using System.Collections.Generic; -using System.Resources; -using Microsoft.DotNet.XHarness.iOS.Shared.Hardware; -using Xharness.Jenkins; -using Moq; -using NUnit.Framework; -using System.Linq; - -namespace Xharness.Tests.Jenkins { - [TestFixture] - public class ResourceManagerTests { - - Mock device1; - Mock device2; - Xharness.Jenkins.ResourceManager resourceManager; - - [SetUp] - public void SetUp () - { - device1 = new Mock (); - device2 = new Mock (); - resourceManager = new Xharness.Jenkins.ResourceManager (); - } - - [Test] - public void GetDeviceResourceMissingTest () - { - var devices = new List { device1.Object, device2.Object }; - // set the device expectations - device1.Setup (d => d.UDID).Returns ("device1"); - device1.Setup (d => d.Name).Returns ("device1"); - - device2.Setup (d => d.UDID).Returns ("device2"); - device2.Setup (d => d.Name).Returns ("device2"); - - var resources = resourceManager.GetDeviceResources (devices); - - // assert that both are present - Assert.NotNull (resources, "resources"); - Assert.AreEqual (2, resources.Count ()); - Assert.AreEqual (1, resources.Where (r => r.Name == "device1").Count (), "device1"); - Assert.AreEqual (1, resources.Where (r => r.Name == "device2").Count (), "device2"); - } - - [Test] - public void GetDeviceResourcePresent () - { - // call it twice to make sure we get the same results - var devices = new List { device1.Object, device2.Object }; - // set the device expectations - device1.Setup (d => d.UDID).Returns ("device1"); - device1.Setup (d => d.Name).Returns ("device1"); - - device2.Setup (d => d.UDID).Returns ("device2"); - device2.Setup (d => d.Name).Returns ("device2"); - - var resources = resourceManager.GetDeviceResources (devices); - - // assert that both are present - Assert.NotNull (resources, "resources"); - Assert.AreEqual (2, resources.Count ()); - Assert.AreEqual (1, resources.Where (r => r.Name == "device1").Count (), "first device1"); - Assert.AreEqual (1, resources.Where (r => r.Name == "device2").Count (), "first device2"); - - var resources2 = resourceManager.GetDeviceResources (devices); - - // assert that both are present - Assert.NotNull (resources2, "resources2"); - Assert.AreEqual (2, resources2.Count ()); - Assert.AreEqual (1, resources2.Where (r => r.Name == "device1").Count (), "second device1"); - Assert.AreEqual (1, resources2.Where (r => r.Name == "device2").Count (), "decond device2"); - } - - [Test] - public void GetDeviceResourcesAddMissingTest () - { - var devices = new List { device1.Object }; - // set the device expectations - device1.Setup (d => d.UDID).Returns ("device1"); - device1.Setup (d => d.Name).Returns ("device1"); - - device2.Setup (d => d.UDID).Returns ("device2"); - device2.Setup (d => d.Name).Returns ("device2"); - - var resources = resourceManager.GetDeviceResources (devices); - - // assert that both are present - Assert.NotNull (resources, "resources"); - Assert.AreEqual (1, resources.Count ()); - Assert.AreEqual (1, resources.Where (r => r.Name == "device1").Count (), "first device1"); - Assert.AreEqual (0, resources.Where (r => r.Name == "device2").Count (), "first device2"); - - var devices2 = new List { device1.Object, device2.Object }; - var resources2 = resourceManager.GetDeviceResources (devices2); - - // assert that both are present - Assert.NotNull (resources2, "resources2"); - Assert.AreEqual (2, resources2.Count ()); - Assert.AreEqual (1, resources2.Where (r => r.Name == "device1").Count (), "second device1"); - Assert.AreEqual (1, resources2.Where (r => r.Name == "device2").Count (), "decond device2"); - } - - [Test] - public void GetAllTest () - { - var devices = new List { device1.Object, device2.Object }; - // set the device expectations - device1.Setup (d => d.UDID).Returns ("device1"); - device1.Setup (d => d.Name).Returns ("device1"); - - device2.Setup (d => d.UDID).Returns ("device2"); - device2.Setup (d => d.Name).Returns ("device2"); - - var deviceResources = resourceManager.GetDeviceResources (devices); - - // now get all of the present resources and assert we have the desktop and nuget - var allResources = resourceManager.GetAll (); - - Assert.AreEqual (deviceResources.Count () + 2, allResources.Count (), "count"); - Assert.AreEqual (1, allResources.Where (r => r.Name == "device1").Count ()); - Assert.AreEqual (1, allResources.Where (r => r.Name == "device2").Count ()); - Assert.AreEqual (1, allResources.Where (r => r.Name == "Desktop").Count ()); - Assert.AreEqual (1, allResources.Where (r => r.Name == "Nuget").Count ()); - } - } -} diff --git a/tests/xharness/Xharness.Tests/Jenkins/TestSelectionTests.cs b/tests/xharness/Xharness.Tests/Jenkins/TestSelectionTests.cs deleted file mode 100644 index f7f61230451a..000000000000 --- a/tests/xharness/Xharness.Tests/Jenkins/TestSelectionTests.cs +++ /dev/null @@ -1,126 +0,0 @@ -using System; -using NUnit.Framework; -using Xharness.Jenkins; - -#nullable enable - -namespace Xharness.Tests.Jenkins { - - [TestFixture] - public class TestSelectionTests { - - TestSelection selection = new TestSelection (); - - [SetUp] - public void Setup () - { - selection = new TestSelection (); - } - - [Test] - public void DefaultSelectionTest () - { - // Assert tests - Assert.IsTrue (selection.SelectedTests.HasFlag (TestLabel.Msbuild), "msbuild"); - Assert.IsTrue (selection.IsEnabled (TestLabel.Msbuild), "IsEnabled (msbuild)"); - - Assert.IsTrue (selection.SelectedTests.HasFlag (TestLabel.Monotouch), "monotouch"); - Assert.IsTrue (selection.IsEnabled (TestLabel.Monotouch), "IsEnabled (monotouch)"); - - Assert.IsTrue (selection.SelectedTests.HasFlag (TestLabel.DotnetTest), "dotnet"); - Assert.IsTrue (selection.IsEnabled (TestLabel.DotnetTest), "IsEnabled (dotnet)"); - - // Assert platforms - Assert.IsTrue (selection.SelectedPlatforms.HasFlag (PlatformLabel.tvOS), "tvos"); - Assert.IsTrue (selection.IsEnabled (PlatformLabel.tvOS), "IsEnabled (tvOS)"); - - Assert.IsTrue (selection.SelectedPlatforms.HasFlag (PlatformLabel.iOS), "iOS"); - Assert.IsTrue (selection.IsEnabled (PlatformLabel.iOS), "IsEnabled (iOS)"); - - Assert.IsTrue (selection.SelectedPlatforms.HasFlag (PlatformLabel.iOSSimulator), "iOSSimulator"); - Assert.IsTrue (selection.IsEnabled (PlatformLabel.iOSSimulator), "IsEnabled (iOSSimulator)"); - - Assert.IsTrue (selection.SelectedPlatforms.HasFlag (PlatformLabel.MacCatalyst), "maccatalyst"); - Assert.IsTrue (selection.IsEnabled (PlatformLabel.MacCatalyst), "IsEnabled (maccatalyst)"); - } - - [Test] - public void DisableAllTests () - { - selection.SetEnabled (TestLabel.All, false); - // loop over all tests labels and except None and All, assert they are not enabled - foreach (var obj in Enum.GetValues (typeof (TestLabel))) { - if (obj is TestLabel label) { - switch (label) { - case TestLabel.All: - case TestLabel.None: - continue; - default: - Assert.IsFalse (selection.IsEnabled (label), label.ToString ()); - break; - } - } - } - } - - [Test] - public void EnableAllTests () - { - selection.SetEnabled (TestLabel.All, true); - // loop over all tests labels and except None and All, assert they are not enabled - foreach (var obj in Enum.GetValues (typeof (TestLabel))) { - if (obj is TestLabel label) { - switch (label) { - case TestLabel.All: - case TestLabel.None: - continue; - default: - Assert.IsTrue (selection.IsEnabled (label), label.ToString ()); - break; - } - } - } - } - - [Test] - public void EnableSingleTest () - { - // disable all, then enable a single tests - selection.SetEnabled (TestLabel.All, false); - foreach (var obj in Enum.GetValues (typeof (TestLabel))) { - if (obj is TestLabel label) { - switch (label) { - case TestLabel.All: - case TestLabel.None: - continue; - default: - Assert.IsFalse (selection.IsEnabled (label), label.ToString ()); - break; - } - } - } - } - - [Test] - public void EnableSeveralTests () - { - selection.SetEnabled (TestLabel.All, false); - selection.SetEnabled (TestLabel.Monotouch, true); - foreach (var obj in Enum.GetValues ()) { - if (obj is TestLabel label) { - switch (label) { - case TestLabel.All: - case TestLabel.None: - continue; - case TestLabel.Monotouch: - Assert.IsTrue (selection.IsEnabled (label), label.ToString ()); - break; - default: - Assert.IsFalse (selection.IsEnabled (label), label.ToString ()); - break; - } - } - } - } - } -} diff --git a/tests/xharness/Xharness.Tests/Jenkins/TestSelectorTests.cs b/tests/xharness/Xharness.Tests/Jenkins/TestSelectorTests.cs deleted file mode 100644 index e3a51e31f933..000000000000 --- a/tests/xharness/Xharness.Tests/Jenkins/TestSelectorTests.cs +++ /dev/null @@ -1,40 +0,0 @@ -using System.Collections.Generic; -using System.Linq.Expressions; -using Moq; -using NUnit.Framework; -using Xharness.Jenkins; - -namespace Xharness.Tests.Jenkins { - public class TestSelectorTests { - TestSelector selector; - Mock versionControlSystem; - - [SetUp] - public void SetUp () - { - versionControlSystem = new Mock (); - selector = new TestSelector (null, versionControlSystem.Object); - } - - [TearDown] - public void TearDown () - { - selector = null; - } - - [TestCase ("run-all-tests", TestLabel.All, PlatformLabel.All)] - [TestCase ("skip-all-tests", TestLabel.None, PlatformLabel.None)] - [TestCase ("skip-all-tests, run-monotouch-tests", TestLabel.Monotouch, PlatformLabel.None)] - [TestCase ("skip-all-tests, run-monotouch-tests, run-ios-tests", TestLabel.Monotouch, PlatformLabel.iOS)] - [TestCase ("run-monotouch-tests, run-bgen-tests, run-all-tests", TestLabel.All, PlatformLabel.All)] - public void SelectTestByLabelsTest (string cmdLabels, TestLabel expectedResult, PlatformLabel expectedPlatform) - { - var labels = new HashSet (); - labels.UnionWith (cmdLabels.Split (',')); - var selection = new TestSelection (); - selector.SelectTestsByLabel (labels, selection); - Assert.AreEqual (expectedResult, selection.SelectedTests, "Test selection failed."); - Assert.AreEqual (expectedPlatform, selection.SelectedPlatforms, "Platform selection failed."); - } - } -} diff --git a/tests/xharness/Xharness.Tests/Samples/NUnitV2Sample.xml b/tests/xharness/Xharness.Tests/Samples/NUnitV2Sample.xml deleted file mode 100644 index 70c61a15c04e..000000000000 --- a/tests/xharness/Xharness.Tests/Samples/NUnitV2Sample.xml +++ /dev/null @@ -1,190 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/tests/xharness/Xharness.Tests/Samples/NUnitV3Sample.xml b/tests/xharness/Xharness.Tests/Samples/NUnitV3Sample.xml deleted file mode 100644 index f78fceb28368..000000000000 --- a/tests/xharness/Xharness.Tests/Samples/NUnitV3Sample.xml +++ /dev/null @@ -1,125 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/tests/xharness/Xharness.Tests/Samples/NUnitV3SampleFailure.xml b/tests/xharness/Xharness.Tests/Samples/NUnitV3SampleFailure.xml deleted file mode 100644 index bf83ae78c02a..000000000000 --- a/tests/xharness/Xharness.Tests/Samples/NUnitV3SampleFailure.xml +++ /dev/null @@ -1,61 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/tests/xharness/Xharness.Tests/Samples/NUnitV3SampleSuccess.xml b/tests/xharness/Xharness.Tests/Samples/NUnitV3SampleSuccess.xml deleted file mode 100644 index 79714282cbf3..000000000000 --- a/tests/xharness/Xharness.Tests/Samples/NUnitV3SampleSuccess.xml +++ /dev/null @@ -1,33 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/tests/xharness/Xharness.Tests/Samples/TestProject/Info.plist b/tests/xharness/Xharness.Tests/Samples/TestProject/Info.plist deleted file mode 100644 index b06447712c80..000000000000 --- a/tests/xharness/Xharness.Tests/Samples/TestProject/Info.plist +++ /dev/null @@ -1,41 +0,0 @@ - - - - - CFBundleName - com.xamarin.bcltests.SystemXunit - CFBundleIdentifier - com.xamarin.bcltests.SystemXunit - CFBundleShortVersionString - 1.0 - CFBundleVersion - 1.0 - LSRequiresIPhoneOS - - MinimumOSVersion - 7.0 - UIDeviceFamily - - 1 - 2 - - UIRequiredDeviceCapabilities - - arm64 - - UISupportedInterfaceOrientations - - UIInterfaceOrientationPortrait - UIInterfaceOrientationPortraitUpsideDown - UIInterfaceOrientationLandscapeLeft - UIInterfaceOrientationLandscapeRight - - XSAppIconAssets - Assets.xcassets/AppIcon.appiconset - NSAppTransportSecurity - - NSAllowsArbitraryLoads - - - - diff --git a/tests/xharness/Xharness.Tests/Samples/TestProject/SystemXunit.csproj b/tests/xharness/Xharness.Tests/Samples/TestProject/SystemXunit.csproj deleted file mode 100644 index e66c2cb29ba1..000000000000 --- a/tests/xharness/Xharness.Tests/Samples/TestProject/SystemXunit.csproj +++ /dev/null @@ -1,192 +0,0 @@ - - - - - Debug - iPhoneSimulator - {3A835432-B054-32FD-07CB-F9A8FFCFB44D} - {FEACFBD2-3405-455C-9665-78FE426C6842};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} - Exe - com.xamarin.bcltests.SystemXunit - com.xamarin.bcltests.SystemXunit - 67,168,169,219,414,612,618,649,672 - Xamarin.iOS - Resources - latest - - - True - full - False - bin - DEBUG;NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5;NET_2_1;MOBILE;MONOTOUCH;FULL_AOT_RUNTIME;DISABLE_CAS_USE;$(DefineConstants) - prompt - 4 - True - None - True - x86_64 - cjk,mideast,other,rare,west - - - True - full - False - bin - DEBUG;NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5;NET_2_1;MOBILE;MONOTOUCH;FULL_AOT_RUNTIME;DISABLE_CAS_USE;$(DefineConstants) - prompt - 4 - iPhone Developer - True - True - ARM64 - cjk,mideast,other,rare,west - - - - - - - - - - - - - - - - - - - - monotouch\nunitlite.dll - - - monotouch\tests\Xunit.NetCore.Extensions.dll - - - monotouch\tests\xunit.execution.dotnet.dll - - - - - monotouch\tests\monotouch_System_xunit-test.dll - - - - - Assets.xcassets\AppIcon.appiconset\Contents.json - - - Assets.xcassets\Contents.json - - - - - - - - Info.plist - - - Entitlements.plist - - - - - TestRunner.NUnit\NUnitTestRunner.cs - - - TestRunner.NUnit\ClassOrNamespaceFilter.cs - - - TestRunner.NUnit\TestMethodFilter.cs - - - TestRunner.Core\Extensions.Bool.cs - - - TestRunner.Core\LogWriter.cs - - - TestRunner.Core\MinimumLogLevel.cs - - - TestRunner.Core\TcpTextWriter.cs - - - TestRunner.Core\TestAssemblyInfo.cs - - - TestRunner.Core\TestCompletionStatus.cs - - - TestRunner.Core\TestExecutionState.cs - - - TestRunner.Core\TestFailureInfo.cs - - - TestRunner.Core\TestRunner.cs - - - TestRunner.Core\TestRunSelector.cs - - - TestRunner.Core\TestRunSelectorType.cs - - - TestRunner.xUnit\XUnitFilter.cs - - - TestRunner.xUnit\XUnitFilterType.cs - - - TestRunner.xUnit\XUnitTestRunner.cs - - - ApplicationOptions.cs - - - IgnoreFileParser.cs - - - AppDelegate.cs - - - Main.cs - - - ViewController.cs - - - ViewController.designer.cs - ViewController.cs - - - RegisterType.cs - - - - - TestRunner.xUnit\NUnitXml.xslt - - - TestRunner.xUnit\NUnit3Xml.xslt - - - common-monotouch_System_xunit-test.dll.ignore - PreserveNewest - - - nunit-excludes.txt - PreserveNewest - - - xunit-excludes.txt - PreserveNewest - - - - diff --git a/tests/xharness/Xharness.Tests/Samples/TouchUnitSample.xml b/tests/xharness/Xharness.Tests/Samples/TouchUnitSample.xml deleted file mode 100644 index 213c4c372d76..000000000000 --- a/tests/xharness/Xharness.Tests/Samples/TouchUnitSample.xml +++ /dev/null @@ -1,8842 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/tests/xharness/Xharness.Tests/Samples/devices.xml b/tests/xharness/Xharness.Tests/Samples/devices.xml deleted file mode 100644 index 8a4240022408..000000000000 --- a/tests/xharness/Xharness.Tests/Samples/devices.xml +++ /dev/null @@ -1,277 +0,0 @@ - - - /Applications/Xcode113.app/Contents/Developer - - - - - - - - - - - - - 5696DC36EE3249859D465DA37E6EA912 - - - - Wifi - - False - - True - - Office - - - - - - - - - - - - - Activated - 5650776064 - 100 - b0:19:c6:94:f2:26 - 17D50 - 32789 - arm64 - Development - iPhone - 1 - 1 - 5696DC36EE3249859D465DA37E6EA912 - Standard - - D211AP - Usb - 359401080217877 - True - True - True - MQ8L2 - iPhone - True - 1 - iPhone10,5 - 13.3.1 - C39V7FLJJCM2 - 58561933312 - D9DCBED1EC414ECE9A2353364C2AC454 - 1434502442682426 - True - b0:19:c6:94:f2:25 - - - - - - - - - - - iPhone - - - E383EA784E604083B5B602853A364759 - - - - Usb - - False - - True - - iPhone - - - - - - - 6D6C141F40CC4A4DB7967FCCE974ECE3 - - - - - - - - - - - - - - iPhone - - - D384F1159D5748C2A590420D64FA8CBE - - - - Usb - - False - - True - - XQAiPhone5Sa - - - - - - - 245481CA878E4AC0825DFBFDBCFD16BB - - - - - - - - - - - - - - iPod - - - 5D61F84BC2804AA698C2DFC1B7FDD200 - - - - Usb - - False - - True - - XQAiPodTouch5f - - - - - - - 1CBD36A8F42441A78D57443EFE0BD666 - - - - - - Activated - 43999293440 - 100 - 88:64:40:5c:ee:c5 - 17A577 - 32816 - arm64e - Development - iPhone - 1 - 1 - 8A450AA31EA94191AD6B02455F377CC1 - Standard - False - N104AP - Usb - 353981100627011 - True - True - True - MWL72 - Manuel’s iPhone - True - 1 - iPhone12,1 - 13.0 - DNPZ893NN72J - 54814302208 - 58F21118E4D34FD69EAB7860BB9B38A0 - 2852055891869742 - True - 88:64:40:67:a1:06 - - - - - - - - - - - Watch - - - 9608C09A197C4A6EB41B454D91976654 - - - - 3 - - False - - True - - Manuel’s Apple Watch - - - - - - - BC87FE47DA2A421CA791AD667E7E57E8 - - - - bd3fd054136767445ff47819f65b74867a48e591 - - - Activated - 22636388352 - 90 - a4:d1:d2:74:24:89 - 13G36 - 35136 - armv7f - - iPad - white - unknown - E854B2C3E7C8451BAF8053EC4DAAEE49 - Standard - - K93AP - Usb - - True - True - True - MC980 - Manuel de la Pena Saenz’s iPad - False - 1 - iPad2,1 - 9.3.5 - DN6FV2LSDKPJ - 29631791104 - 51F3354D448D4814825D07DC5658C19B - 4130031754541 - False - a4:d1:d2:74:24:88 - - \ No newline at end of file diff --git a/tests/xharness/Xharness.Tests/Samples/run-log.txt b/tests/xharness/Xharness.Tests/Samples/run-log.txt deleted file mode 100644 index 4de9a92f07d3..000000000000 --- a/tests/xharness/Xharness.Tests/Samples/run-log.txt +++ /dev/null @@ -1,47 +0,0 @@ -14:48:45.0272010 Test log server listening on: 0.0.0.0:49987 -14:48:45.0308310 System log for the 'iPhone X (iOS 13.3) - created by xharness' simulator is: /Users/mandel/Library/Logs/CoreSimulator/96EBF3D8-393E-4166-B1AF-4A3BDEAC5021/system.log -14:48:45.0314300 *** Executing com.xamarin.bcltests.mscorlib Part 1/Classic in the simulator *** -14:48:45.0328640 Starting test run -14:48:45.0332180 /Users/mandel/dotnet/macios/master/xamarin-macios/_ios-build/Library/Frameworks/Xamarin.iOS.framework/Versions/Current/bin/mlaunch --sdkroot /Applications/Xcode113.app -v -argument=-connection-mode -argument=none -argument=-app-arg:-autostart -setenv=NUNIT_AUTOSTART=true -argument=-app-arg:-autoexit -setenv=NUNIT_AUTOEXIT=true -argument=-app-arg:-enablenetwork -setenv=NUNIT_ENABLE_NETWORK=true -argument=-app-arg:-hostname:127.0.0.1 -setenv=NUNIT_HOSTNAME=127.0.0.1 -argument=-app-arg:-transport:Tcp -setenv=NUNIT_TRANSPORT=TCP -argument=-app-arg:-hostport:49987 -setenv=NUNIT_HOSTPORT=49987 --launchsim "/Users/mandel/dotnet/macios/master/xamarin-macios/tests/xharness/tmp-test-dir/mscorlib Part 1/bin/mscorlib Part 1/iPhoneSimulator/Debug-unified/com.xamarin.bcltests.mscorlib Part 1.app" --stdout=/dev/ttys000 --stderr=/dev/ttys000 --device=:v2:udid=96EBF3D8-393E-4166-B1AF-4A3BDEAC5021 -14:48:45.2834160 Using Xcode 11.3 found in /Applications/Xcode113.app -14:48:45.2865790 Xamarin.Hosting: Xamarin.Hosting -14:48:45.2867370 Xamarin.Hosting: Version: cec1cba137 (master) -14:48:45.2867590 Xamarin.Hosting: Xcode: /Applications/Xcode113.app -14:48:45.2886960 Xamarin.Hosting: Xcode Version: 11.3 -14:48:45.2892130 Xamarin.Hosting: Verbosity: 11 -14:48:45.2987220 Xamarin.Hosting: Loaded /Applications/Xcode113.app/Contents/SharedFrameworks/DVTFoundation.framework/Versions/A/DVTFoundation -14:48:45.3024060 Xamarin.Hosting: Loaded /Applications/Xcode113.app/Contents/SharedFrameworks/DVTiPhoneSimulatorRemoteClient.framework/DVTiPhoneSimulatorRemoteClient -14:48:45.3024840 Xamarin.Hosting: Loaded /Library/Developer/PrivateFrameworks/CoreSimulator.framework/CoreSimulator -14:48:45.3026130 Xamarin.Hosting: Loaded /Applications/Xcode113.app/Contents/SharedFrameworks/DTDeviceKitBase.framework/DTDeviceKitBase -14:48:45.3154170 Xamarin.Hosting: Loaded /Applications/Xcode113.app/Contents/SharedFrameworks/DVTKit.framework/DVTKit -14:48:45.3159370 Xamarin.Hosting: Loaded /Applications/Xcode113.app/Contents/SharedFrameworks/DTDeviceKit.framework/DTDeviceKit -14:48:45.3160450 Xamarin.Hosting: Loaded /Applications/Xcode113.app/Contents/SharedFrameworks/DTXConnectionServices.framework/DTXConnectionServices -14:48:45.3167760 Xamarin.Hosting: Loaded /Applications/Xcode113.app/Contents/SharedFrameworks/DVTSourceControl.framework/DVTSourceControl -14:48:45.3168970 Xamarin.Hosting: Loaded /Applications/Xcode113.app/Contents/SharedFrameworks/DVTServices.framework/DVTServices -14:48:45.3170070 Xamarin.Hosting: Loaded /Applications/Xcode113.app/Contents/SharedFrameworks/DVTPortal.framework/DVTPortal -14:48:45.3236970 Xamarin.Hosting: Loaded /Applications/Xcode113.app/Contents/SharedFrameworks/DVTDocumentation.framework/DVTDocumentation -14:48:45.3244800 Xamarin.Hosting: Loaded /Applications/Xcode113.app/Contents/SharedFrameworks/DVTAnalyticsClient.framework/DVTAnalyticsClient -14:48:45.3254630 Xamarin.Hosting: Loaded /Applications/Xcode113.app/Contents/SharedFrameworks/DVTAnalytics.framework/DVTAnalytics -14:48:45.3273940 Xamarin.Hosting: Loaded /Applications/Xcode113.app/Contents/SharedFrameworks/SourceKit.framework/SourceKit -14:48:45.3451120 Xamarin.Hosting: Loaded /Applications/Xcode113.app/Contents/Frameworks/IDEFoundation.framework/IDEFoundation -14:48:45.3459620 Xamarin.Hosting: Loaded /Applications/Xcode113.app/Contents/SharedFrameworks/IDEProducts.framework/IDEProducts -14:48:45.4904370 Xamarin.Hosting: Simulator watchdogs are already disabled for 'iOS 13.3 (17C45) - iPhone X'. -14:48:45.5001330 Xamarin.Hosting: Launching simulator application 'com.apple.iphonesimulator' -14:48:45.8284390 Xamarin.Hosting: Ready notification 'com.apple.iphonesimulator.ready' received from the simulator. -14:48:45.8317100 Xamarin.Hosting: Booting iPhone X (iOS 13.3) - created by xharness... -14:48:46.4418970 Xamarin.Hosting: Booted iPhone X (iOS 13.3) - created by xharness successfully. -14:48:46.4461820 Copying in /Users/mandel/dotnet/macios/master/xamarin-macios/tests/xharness/tmp-test-dir/mscorlib Part 1/bin/mscorlib Part 1/iPhoneSimulator/Debug-unified/com.xamarin.bcltests.mscorlib Part 1.app/.monotouch-64 -14:48:48.1443990 Xamarin.Hosting: No need to boot (already booted): iPhone X (iOS 13.3) - created by xharness -14:48:48.1459630 Xamarin.Hosting: Installing /Users/mandel/dotnet/macios/master/xamarin-macios/tests/xharness/tmp-test-dir/mscorlib Part 1/bin/mscorlib Part 1/iPhoneSimulator/Debug-unified/com.xamarin.bcltests.mscorlib Part 1.app with Bundle Identifier com.xamarin.bcltests.mscorlib Part 1 on 'iOS 13.3 (17C45) - iPhone X'... -14:49:25.8788620 Xamarin.Hosting: Installed 'com.xamarin.bcltests.mscorlib Part 1' from /Users/mandel/dotnet/macios/master/xamarin-macios/tests/xharness/tmp-test-dir/mscorlib Part 1/bin/mscorlib Part 1/iPhoneSimulator/Debug-unified/com.xamarin.bcltests.mscorlib Part 1.app -14:49:26.6020030 Xamarin.Hosting: Could not find any potentially troublesome weak load commands. -14:49:26.7037460 Xamarin.Hosting: The bundle id com.xamarin.bcltests.mscorlib Part 1 was successfully installed. -14:49:26.7087350 Xamarin.Hosting: Launching com.xamarin.bcltests.mscorlib Part 1 on 'iOS 13.3 (17C45) - iPhone X' -14:49:26.7808590 Xamarin.Hosting: Launched com.xamarin.bcltests.mscorlib Part 1 with pid 94797 -14:49:26.7861460 Xamarin.Hosting: Device 'iOS 13.3 (17C45) - iPhone X' booted. -14:49:31.0250650 Connection from 127.0.0.1:53085 saving logs to /Users/mandel/dotnet/macios/master/xamarin-macios/jenkins-results/tests/20200320_144720/mscorlib Part 1/122/test-classic-20200320_144845.log -14:49:31.0257860 Test run started -14:50:01.4773140 Tests have finished executing -14:50:01.7897340 Xamarin.Hosting: Simulated process has exited. -14:50:02.0809610 Test run completed -14:50:02.1691940 Test run succeeded \ No newline at end of file diff --git a/tests/xharness/Xharness.Tests/Samples/simulators.xml b/tests/xharness/Xharness.Tests/Samples/simulators.xml deleted file mode 100644 index 700467691560..000000000000 --- a/tests/xharness/Xharness.Tests/Samples/simulators.xml +++ /dev/null @@ -1,925 +0,0 @@ - - - /Applications/Xcode113.app/Contents/Developer - - - - iOS 10.3 - com.apple.CoreSimulator.SimRuntime.iOS-10-3 - 656129 - - - iOS 12.2 - com.apple.CoreSimulator.SimRuntime.iOS-12-2 - 786944 - - - iOS 13.3 - com.apple.CoreSimulator.SimRuntime.iOS-13-3 - 852736 - - - tvOS 10.2 - com.apple.CoreSimulator.SimRuntime.tvOS-10-2 - 655872 - - - tvOS 12.2 - com.apple.CoreSimulator.SimRuntime.tvOS-12-2 - 786944 - - - tvOS 13.3 - com.apple.CoreSimulator.SimRuntime.tvOS-13-3 - 852736 - - - watchOS 3.2 - com.apple.CoreSimulator.SimRuntime.watchOS-3-2 - 197120 - - - watchOS 5.2 - com.apple.CoreSimulator.SimRuntime.watchOS-5-2 - 328192 - - - watchOS 6.1 - com.apple.CoreSimulator.SimRuntime.watchOS-6-1 - 393473 - - - - - iPhone 4s - com.apple.CoreSimulator.SimDeviceType.iPhone-4s - IPhone - 327680 - 655359 - false - - - iPhone 5 - com.apple.CoreSimulator.SimDeviceType.iPhone-5 - IPhone - 393216 - 720895 - false - - - iPhone 5s - com.apple.CoreSimulator.SimDeviceType.iPhone-5s - IPhone - 458752 - 851967 - true - - - iPhone 6 Plus - com.apple.CoreSimulator.SimDeviceType.iPhone-6-Plus - IPhone - 524288 - 851967 - true - - - iPhone 6 - com.apple.CoreSimulator.SimDeviceType.iPhone-6 - IPhone - 524288 - 851967 - true - - - iPhone 6s - com.apple.CoreSimulator.SimDeviceType.iPhone-6s - IPhone - 589824 - 4294967295 - true - - - iPhone 6s Plus - com.apple.CoreSimulator.SimDeviceType.iPhone-6s-Plus - IPhone - 589824 - 4294967295 - true - - - iPhone SE - com.apple.CoreSimulator.SimDeviceType.iPhone-SE - IPhone - 590592 - 4294967295 - true - - - iPhone 7 - com.apple.CoreSimulator.SimDeviceType.iPhone-7 - IPhone - 655360 - 4294967295 - true - - - iPhone 7 Plus - com.apple.CoreSimulator.SimDeviceType.iPhone-7-Plus - IPhone - 655360 - 4294967295 - true - - - iPhone 8 - com.apple.CoreSimulator.SimDeviceType.iPhone-8 - IPhone - 720896 - 4294967295 - true - - - iPhone 8 Plus - com.apple.CoreSimulator.SimDeviceType.iPhone-8-Plus - IPhone - 720896 - 4294967295 - true - - - iPhone X - com.apple.CoreSimulator.SimDeviceType.iPhone-X - IPhone - 720896 - 4294967295 - true - - - iPhone Xs - com.apple.CoreSimulator.SimDeviceType.iPhone-XS - IPhone - 786432 - 4294967295 - true - - - iPhone Xs Max - com.apple.CoreSimulator.SimDeviceType.iPhone-XS-Max - IPhone - 786432 - 4294967295 - true - - - iPhone Xʀ - com.apple.CoreSimulator.SimDeviceType.iPhone-XR - IPhone - 786432 - 4294967295 - true - - - iPhone 11 - com.apple.CoreSimulator.SimDeviceType.iPhone-11 - IPhone - 851968 - 4294967295 - true - - - iPhone 11 Pro - com.apple.CoreSimulator.SimDeviceType.iPhone-11-Pro - IPhone - 851968 - 4294967295 - true - - - iPhone 11 Pro Max - com.apple.CoreSimulator.SimDeviceType.iPhone-11-Pro-Max - IPhone - 851968 - 4294967295 - true - - - iPad 2 - com.apple.CoreSimulator.SimDeviceType.iPad-2 - IPad - 262912 - 655359 - false - - - iPad Retina - com.apple.CoreSimulator.SimDeviceType.iPad-Retina - IPad - 327936 - 655359 - false - - - iPad Air - com.apple.CoreSimulator.SimDeviceType.iPad-Air - IPad - 458752 - 851967 - true - - - iPad mini 2 - com.apple.CoreSimulator.SimDeviceType.iPad-mini-2 - IPad - 458752 - 851967 - true - - - iPad mini 3 - com.apple.CoreSimulator.SimDeviceType.iPad-mini-3 - IPad - 524544 - 851967 - true - - - iPad mini 4 - com.apple.CoreSimulator.SimDeviceType.iPad-mini-4 - IPad - 589824 - 4294967295 - true - - - iPad Air 2 - com.apple.CoreSimulator.SimDeviceType.iPad-Air-2 - IPad - 524288 - 4294967295 - true - - - iPad Pro (9.7-inch) - com.apple.CoreSimulator.SimDeviceType.iPad-Pro--9-7-inch- - IPad - 655360 - 4294967295 - true - - - iPad Pro (12.9-inch) - com.apple.CoreSimulator.SimDeviceType.iPad-Pro - IPad - 590080 - 4294967295 - true - - - iPad (5th generation) - com.apple.CoreSimulator.SimDeviceType.iPad--5th-generation- - IPad - 656128 - 4294967295 - true - - - iPad Pro (12.9-inch) (2nd generation) - com.apple.CoreSimulator.SimDeviceType.iPad-Pro--12-9-inch---2nd-generation- - IPad - 656128 - 4294967295 - true - - - iPad Pro (10.5-inch) - com.apple.CoreSimulator.SimDeviceType.iPad-Pro--10-5-inch- - IPad - 656128 - 4294967295 - true - - - iPad (6th generation) - com.apple.CoreSimulator.SimDeviceType.iPad--6th-generation- - IPad - 721664 - 4294967295 - true - - - iPad (7th generation) - com.apple.CoreSimulator.SimDeviceType.iPad--7th-generation- - IPad - 851968 - 4294967295 - true - - - iPad Pro (11-inch) - com.apple.CoreSimulator.SimDeviceType.iPad-Pro--11-inch- - IPad - 786432 - 4294967295 - true - - - iPad Pro (12.9-inch) (3rd generation) - com.apple.CoreSimulator.SimDeviceType.iPad-Pro--12-9-inch---3rd-generation- - IPad - 786432 - 4294967295 - true - - - iPad mini (5th generation) - com.apple.CoreSimulator.SimDeviceType.iPad-mini--5th-generation- - IPad - 786944 - 4294967295 - true - - - iPad Air (3rd generation) - com.apple.CoreSimulator.SimDeviceType.iPad-Air--3rd-generation- - IPad - 786944 - 4294967295 - true - - - Apple TV - com.apple.CoreSimulator.SimDeviceType.Apple-TV-1080p - TV - 589824 - 4294967295 - true - - - Apple TV 4K - com.apple.CoreSimulator.SimDeviceType.Apple-TV-4K-4K - TV - 720896 - 4294967295 - true - - - Apple TV 4K (at 1080p) - com.apple.CoreSimulator.SimDeviceType.Apple-TV-4K-1080p - TV - 720896 - 4294967295 - true - - - Apple Watch - 38mm - com.apple.CoreSimulator.SimDeviceType.Apple-Watch-38mm - Watch - 131072 - 327679 - false - - - Apple Watch - 42mm - com.apple.CoreSimulator.SimDeviceType.Apple-Watch-42mm - Watch - 131072 - 327679 - false - - - Apple Watch Series 2 - 38mm - com.apple.CoreSimulator.SimDeviceType.Apple-Watch-Series-2-38mm - Watch - 196608 - 4294967295 - false - - - Apple Watch Series 2 - 42mm - com.apple.CoreSimulator.SimDeviceType.Apple-Watch-Series-2-42mm - Watch - 196608 - 4294967295 - false - - - Apple Watch Series 3 - 38mm - com.apple.CoreSimulator.SimDeviceType.Apple-Watch-Series-3-38mm - Watch - 262144 - 4294967295 - false - - - Apple Watch Series 3 - 42mm - com.apple.CoreSimulator.SimDeviceType.Apple-Watch-Series-3-42mm - Watch - 262144 - 4294967295 - false - - - Apple Watch Series 4 - 40mm - com.apple.CoreSimulator.SimDeviceType.Apple-Watch-Series-4-40mm - Watch - 327680 - 4294967295 - false - - - Apple Watch Series 4 - 44mm - com.apple.CoreSimulator.SimDeviceType.Apple-Watch-Series-4-44mm - Watch - 327680 - 4294967295 - false - - - Apple Watch Series 5 - 40mm - com.apple.CoreSimulator.SimDeviceType.Apple-Watch-Series-5-40mm - Watch - 393216 - 4294967295 - false - - - Apple Watch Series 5 - 44mm - com.apple.CoreSimulator.SimDeviceType.Apple-Watch-Series-5-44mm - Watch - 393216 - 4294967295 - false - - - - - com.apple.CoreSimulator.SimRuntime.iOS-10-3 - com.apple.CoreSimulator.SimDeviceType.iPhone-5 - /Users/mandel/Library/Developer/CoreSimulator/Devices/B0CF5BA5-318E-4FC8-8FC1-FB82D9F2FB42 - /Users/mandel/Library/Logs/CoreSimulator/B0CF5BA5-318E-4FC8-8FC1-FB82D9F2FB42 - - - com.apple.CoreSimulator.SimRuntime.iOS-10-3 - com.apple.CoreSimulator.SimDeviceType.iPhone-5s - /Users/mandel/Library/Developer/CoreSimulator/Devices/78A86F96-8333-42DE-81F3-1D8CFEC1FB17 - /Users/mandel/Library/Logs/CoreSimulator/78A86F96-8333-42DE-81F3-1D8CFEC1FB17 - - - com.apple.CoreSimulator.SimRuntime.iOS-10-3 - com.apple.CoreSimulator.SimDeviceType.iPhone-6-Plus - /Users/mandel/Library/Developer/CoreSimulator/Devices/A921DF18-F3A1-4EDC-90DA-20E85D94685C - /Users/mandel/Library/Logs/CoreSimulator/A921DF18-F3A1-4EDC-90DA-20E85D94685C - - - com.apple.CoreSimulator.SimRuntime.iOS-10-3 - com.apple.CoreSimulator.SimDeviceType.iPhone-6 - /Users/mandel/Library/Developer/CoreSimulator/Devices/62992D4C-C669-4C51-AAD4-1877891EC26B - /Users/mandel/Library/Logs/CoreSimulator/62992D4C-C669-4C51-AAD4-1877891EC26B - - - com.apple.CoreSimulator.SimRuntime.iOS-10-3 - com.apple.CoreSimulator.SimDeviceType.iPhone-6s - /Users/mandel/Library/Developer/CoreSimulator/Devices/5C41C297-EDF4-4D97-804C-4186843CAC71 - /Users/mandel/Library/Logs/CoreSimulator/5C41C297-EDF4-4D97-804C-4186843CAC71 - - - com.apple.CoreSimulator.SimRuntime.iOS-10-3 - com.apple.CoreSimulator.SimDeviceType.iPhone-6s-Plus - /Users/mandel/Library/Developer/CoreSimulator/Devices/619E6E2A-1B6E-42AC-93A5-2EE548689274 - /Users/mandel/Library/Logs/CoreSimulator/619E6E2A-1B6E-42AC-93A5-2EE548689274 - - - com.apple.CoreSimulator.SimRuntime.iOS-10-3 - com.apple.CoreSimulator.SimDeviceType.iPhone-SE - /Users/mandel/Library/Developer/CoreSimulator/Devices/B239B550-AB0B-416C-987B-9AD8A856D429 - /Users/mandel/Library/Logs/CoreSimulator/B239B550-AB0B-416C-987B-9AD8A856D429 - - - com.apple.CoreSimulator.SimRuntime.iOS-10-3 - com.apple.CoreSimulator.SimDeviceType.iPhone-7 - /Users/mandel/Library/Developer/CoreSimulator/Devices/216D7E4C-679F-4E57-9680-805930EA9D1E - /Users/mandel/Library/Logs/CoreSimulator/216D7E4C-679F-4E57-9680-805930EA9D1E - - - com.apple.CoreSimulator.SimRuntime.iOS-10-3 - com.apple.CoreSimulator.SimDeviceType.iPhone-7-Plus - /Users/mandel/Library/Developer/CoreSimulator/Devices/71AFDC06-B30E-4B2D-BF63-0EDDA0A62063 - /Users/mandel/Library/Logs/CoreSimulator/71AFDC06-B30E-4B2D-BF63-0EDDA0A62063 - - - com.apple.CoreSimulator.SimRuntime.iOS-10-3 - com.apple.CoreSimulator.SimDeviceType.iPad-Air - /Users/mandel/Library/Developer/CoreSimulator/Devices/8C322CFC-A086-454E-BCA6-2BFC86E60B5E - /Users/mandel/Library/Logs/CoreSimulator/8C322CFC-A086-454E-BCA6-2BFC86E60B5E - - - com.apple.CoreSimulator.SimRuntime.iOS-10-3 - com.apple.CoreSimulator.SimDeviceType.iPad-Air-2 - /Users/mandel/Library/Developer/CoreSimulator/Devices/FD05BCC6-2FE6-4F06-B954-5C835D10F14A - /Users/mandel/Library/Logs/CoreSimulator/FD05BCC6-2FE6-4F06-B954-5C835D10F14A - - - com.apple.CoreSimulator.SimRuntime.iOS-10-3 - com.apple.CoreSimulator.SimDeviceType.iPad-Pro--9-7-inch- - /Users/mandel/Library/Developer/CoreSimulator/Devices/0D858881-E7D8-47CE-A972-CB93727A1184 - /Users/mandel/Library/Logs/CoreSimulator/0D858881-E7D8-47CE-A972-CB93727A1184 - - - com.apple.CoreSimulator.SimRuntime.iOS-10-3 - com.apple.CoreSimulator.SimDeviceType.iPad-Pro - /Users/mandel/Library/Developer/CoreSimulator/Devices/C5DF41A6-4AB2-4427-B4C3-504D59D1D6A2 - /Users/mandel/Library/Logs/CoreSimulator/C5DF41A6-4AB2-4427-B4C3-504D59D1D6A2 - - - com.apple.CoreSimulator.SimRuntime.iOS-10-3 - com.apple.CoreSimulator.SimDeviceType.iPad--5th-generation- - /Users/mandel/Library/Developer/CoreSimulator/Devices/19086AC5-F933-43BD-AEA6-1C1D0737E3DB - /Users/mandel/Library/Logs/CoreSimulator/19086AC5-F933-43BD-AEA6-1C1D0737E3DB - - - com.apple.CoreSimulator.SimRuntime.iOS-10-3 - com.apple.CoreSimulator.SimDeviceType.iPad-Pro--12-9-inch---2nd-generation- - /Users/mandel/Library/Developer/CoreSimulator/Devices/1688E430-E910-46EC-980C-A281C8BA8AAE - /Users/mandel/Library/Logs/CoreSimulator/1688E430-E910-46EC-980C-A281C8BA8AAE - - - com.apple.CoreSimulator.SimRuntime.iOS-10-3 - com.apple.CoreSimulator.SimDeviceType.iPad-Pro--10-5-inch- - /Users/mandel/Library/Developer/CoreSimulator/Devices/356B263C-8516-4F3B-BBF1-CA23FA5478E6 - /Users/mandel/Library/Logs/CoreSimulator/356B263C-8516-4F3B-BBF1-CA23FA5478E6 - - - com.apple.CoreSimulator.SimRuntime.iOS-12-2 - com.apple.CoreSimulator.SimDeviceType.iPhone-5s - /Users/mandel/Library/Developer/CoreSimulator/Devices/711BA51B-6261-4394-84A6-BE9F8B5D3B80 - /Users/mandel/Library/Logs/CoreSimulator/711BA51B-6261-4394-84A6-BE9F8B5D3B80 - - - com.apple.CoreSimulator.SimRuntime.iOS-12-2 - com.apple.CoreSimulator.SimDeviceType.iPhone-6-Plus - /Users/mandel/Library/Developer/CoreSimulator/Devices/1D4E284E-E1F7-48BE-9975-E90C47A39B7C - /Users/mandel/Library/Logs/CoreSimulator/1D4E284E-E1F7-48BE-9975-E90C47A39B7C - - - com.apple.CoreSimulator.SimRuntime.iOS-12-2 - com.apple.CoreSimulator.SimDeviceType.iPhone-6 - /Users/mandel/Library/Developer/CoreSimulator/Devices/0FE1F639-BE0D-42A8-BAE9-09D8656051D4 - /Users/mandel/Library/Logs/CoreSimulator/0FE1F639-BE0D-42A8-BAE9-09D8656051D4 - - - com.apple.CoreSimulator.SimRuntime.iOS-12-2 - com.apple.CoreSimulator.SimDeviceType.iPhone-6s - /Users/mandel/Library/Developer/CoreSimulator/Devices/08ED135B-B33B-439E-B188-2F84C1B478FC - /Users/mandel/Library/Logs/CoreSimulator/08ED135B-B33B-439E-B188-2F84C1B478FC - - - com.apple.CoreSimulator.SimRuntime.iOS-12-2 - com.apple.CoreSimulator.SimDeviceType.iPhone-6s-Plus - /Users/mandel/Library/Developer/CoreSimulator/Devices/96A46A7E-0F6E-4627-A309-9306111A1B33 - /Users/mandel/Library/Logs/CoreSimulator/96A46A7E-0F6E-4627-A309-9306111A1B33 - - - com.apple.CoreSimulator.SimRuntime.iOS-12-2 - com.apple.CoreSimulator.SimDeviceType.iPhone-SE - /Users/mandel/Library/Developer/CoreSimulator/Devices/04DF2D48-4442-46EE-B3BE-695E403136C5 - /Users/mandel/Library/Logs/CoreSimulator/04DF2D48-4442-46EE-B3BE-695E403136C5 - - - com.apple.CoreSimulator.SimRuntime.iOS-12-2 - com.apple.CoreSimulator.SimDeviceType.iPhone-7 - /Users/mandel/Library/Developer/CoreSimulator/Devices/79AB7EDF-3FCB-4D2C-A390-7BB5936736B4 - /Users/mandel/Library/Logs/CoreSimulator/79AB7EDF-3FCB-4D2C-A390-7BB5936736B4 - - - com.apple.CoreSimulator.SimRuntime.iOS-12-2 - com.apple.CoreSimulator.SimDeviceType.iPhone-7-Plus - /Users/mandel/Library/Developer/CoreSimulator/Devices/204656B8-0240-43FE-BF99-3B0F284FFB3C - /Users/mandel/Library/Logs/CoreSimulator/204656B8-0240-43FE-BF99-3B0F284FFB3C - - - com.apple.CoreSimulator.SimRuntime.iOS-12-2 - com.apple.CoreSimulator.SimDeviceType.iPhone-8 - /Users/mandel/Library/Developer/CoreSimulator/Devices/FFFC5F6C-49EE-4796-8881-3416AE5F4708 - /Users/mandel/Library/Logs/CoreSimulator/FFFC5F6C-49EE-4796-8881-3416AE5F4708 - - - com.apple.CoreSimulator.SimRuntime.iOS-12-2 - com.apple.CoreSimulator.SimDeviceType.iPhone-8-Plus - /Users/mandel/Library/Developer/CoreSimulator/Devices/AD320A80-FF13-4D28-8346-7962005732B0 - /Users/mandel/Library/Logs/CoreSimulator/AD320A80-FF13-4D28-8346-7962005732B0 - - - com.apple.CoreSimulator.SimRuntime.iOS-12-2 - com.apple.CoreSimulator.SimDeviceType.iPhone-X - /Users/mandel/Library/Developer/CoreSimulator/Devices/2FD14929-A33B-4690-86CD-42716A4DF2ED - /Users/mandel/Library/Logs/CoreSimulator/2FD14929-A33B-4690-86CD-42716A4DF2ED - - - com.apple.CoreSimulator.SimRuntime.iOS-12-2 - com.apple.CoreSimulator.SimDeviceType.iPhone-XS - /Users/mandel/Library/Developer/CoreSimulator/Devices/E9914E48-7A63-493D-B7AA-D7AD90F0E312 - /Users/mandel/Library/Logs/CoreSimulator/E9914E48-7A63-493D-B7AA-D7AD90F0E312 - - - com.apple.CoreSimulator.SimRuntime.iOS-12-2 - com.apple.CoreSimulator.SimDeviceType.iPhone-XS-Max - /Users/mandel/Library/Developer/CoreSimulator/Devices/FA0C5B13-CC3F-4044-8E7E-48100375A340 - /Users/mandel/Library/Logs/CoreSimulator/FA0C5B13-CC3F-4044-8E7E-48100375A340 - - - com.apple.CoreSimulator.SimRuntime.iOS-12-2 - com.apple.CoreSimulator.SimDeviceType.iPhone-XR - /Users/mandel/Library/Developer/CoreSimulator/Devices/BB062731-8AA4-4A3A-A2A6-D032FC41F3B9 - /Users/mandel/Library/Logs/CoreSimulator/BB062731-8AA4-4A3A-A2A6-D032FC41F3B9 - - - com.apple.CoreSimulator.SimRuntime.iOS-12-2 - com.apple.CoreSimulator.SimDeviceType.iPad-Air - /Users/mandel/Library/Developer/CoreSimulator/Devices/9E8F8D70-7180-495B-853C-D51871E9F102 - /Users/mandel/Library/Logs/CoreSimulator/9E8F8D70-7180-495B-853C-D51871E9F102 - - - com.apple.CoreSimulator.SimRuntime.iOS-12-2 - com.apple.CoreSimulator.SimDeviceType.iPad-Air-2 - /Users/mandel/Library/Developer/CoreSimulator/Devices/4505497B-509A-4246-987D-119064149BF6 - /Users/mandel/Library/Logs/CoreSimulator/4505497B-509A-4246-987D-119064149BF6 - - - com.apple.CoreSimulator.SimRuntime.iOS-12-2 - com.apple.CoreSimulator.SimDeviceType.iPad-Pro--9-7-inch- - /Users/mandel/Library/Developer/CoreSimulator/Devices/09D14A0A-4683-4E42-98A2-AB53310F197A - /Users/mandel/Library/Logs/CoreSimulator/09D14A0A-4683-4E42-98A2-AB53310F197A - - - com.apple.CoreSimulator.SimRuntime.iOS-12-2 - com.apple.CoreSimulator.SimDeviceType.iPad-Pro - /Users/mandel/Library/Developer/CoreSimulator/Devices/1544537F-FDC8-40C9-AC08-A09FC4DD24B6 - /Users/mandel/Library/Logs/CoreSimulator/1544537F-FDC8-40C9-AC08-A09FC4DD24B6 - - - com.apple.CoreSimulator.SimRuntime.iOS-12-2 - com.apple.CoreSimulator.SimDeviceType.iPad--5th-generation- - /Users/mandel/Library/Developer/CoreSimulator/Devices/A83C8C66-A7CF-46FD-8E4B-3A87FD2FF5A4 - /Users/mandel/Library/Logs/CoreSimulator/A83C8C66-A7CF-46FD-8E4B-3A87FD2FF5A4 - - - com.apple.CoreSimulator.SimRuntime.iOS-12-2 - com.apple.CoreSimulator.SimDeviceType.iPad-Pro--12-9-inch---2nd-generation- - /Users/mandel/Library/Developer/CoreSimulator/Devices/257CA31A-CC5A-4C5C-B072-0D3A3D0A9451 - /Users/mandel/Library/Logs/CoreSimulator/257CA31A-CC5A-4C5C-B072-0D3A3D0A9451 - - - com.apple.CoreSimulator.SimRuntime.iOS-12-2 - com.apple.CoreSimulator.SimDeviceType.iPad-Pro--10-5-inch- - /Users/mandel/Library/Developer/CoreSimulator/Devices/C006BEA4-CEDF-46E2-959C-96B8C9E6B6BA - /Users/mandel/Library/Logs/CoreSimulator/C006BEA4-CEDF-46E2-959C-96B8C9E6B6BA - - - com.apple.CoreSimulator.SimRuntime.iOS-12-2 - com.apple.CoreSimulator.SimDeviceType.iPad--6th-generation- - /Users/mandel/Library/Developer/CoreSimulator/Devices/43F3F691-8B57-47D6-898B-B2AAFCA53BFA - /Users/mandel/Library/Logs/CoreSimulator/43F3F691-8B57-47D6-898B-B2AAFCA53BFA - - - com.apple.CoreSimulator.SimRuntime.iOS-12-2 - com.apple.CoreSimulator.SimDeviceType.iPad-Pro--11-inch- - /Users/mandel/Library/Developer/CoreSimulator/Devices/3DF2CFFC-C279-485D-8379-CC50C2297EDD - /Users/mandel/Library/Logs/CoreSimulator/3DF2CFFC-C279-485D-8379-CC50C2297EDD - - - com.apple.CoreSimulator.SimRuntime.iOS-12-2 - com.apple.CoreSimulator.SimDeviceType.iPad-Pro--12-9-inch---3rd-generation- - /Users/mandel/Library/Developer/CoreSimulator/Devices/4F2E05BB-4945-445E-99E7-D81D4F83E248 - /Users/mandel/Library/Logs/CoreSimulator/4F2E05BB-4945-445E-99E7-D81D4F83E248 - - - com.apple.CoreSimulator.SimRuntime.iOS-12-2 - com.apple.CoreSimulator.SimDeviceType.iPad-Air--3rd-generation- - /Users/mandel/Library/Developer/CoreSimulator/Devices/02177DD5-3EE1-4A8D-8277-BE95F4ACB1A5 - /Users/mandel/Library/Logs/CoreSimulator/02177DD5-3EE1-4A8D-8277-BE95F4ACB1A5 - - - com.apple.CoreSimulator.SimRuntime.iOS-13-3 - com.apple.CoreSimulator.SimDeviceType.iPhone-8 - /Users/mandel/Library/Developer/CoreSimulator/Devices/CFD33BF1-FC9A-4674-BB49-80CFA47450A5 - /Users/mandel/Library/Logs/CoreSimulator/CFD33BF1-FC9A-4674-BB49-80CFA47450A5 - - - com.apple.CoreSimulator.SimRuntime.iOS-13-3 - com.apple.CoreSimulator.SimDeviceType.iPhone-8-Plus - /Users/mandel/Library/Developer/CoreSimulator/Devices/9D61D008-5A27-4B98-801A-0709897EA981 - /Users/mandel/Library/Logs/CoreSimulator/9D61D008-5A27-4B98-801A-0709897EA981 - - - com.apple.CoreSimulator.SimRuntime.iOS-13-3 - com.apple.CoreSimulator.SimDeviceType.iPhone-X - /Users/mandel/Library/Developer/CoreSimulator/Devices/18F485DC-7F0A-440F-BEF9-5BE5954B0FB1 - /Users/mandel/Library/Logs/CoreSimulator/18F485DC-7F0A-440F-BEF9-5BE5954B0FB1 - - - com.apple.CoreSimulator.SimRuntime.iOS-13-3 - com.apple.CoreSimulator.SimDeviceType.iPhone-11 - /Users/mandel/Library/Developer/CoreSimulator/Devices/ABC2A44A-789D-4C8B-88A7-0CD7C6BF316C - /Users/mandel/Library/Logs/CoreSimulator/ABC2A44A-789D-4C8B-88A7-0CD7C6BF316C - - - com.apple.CoreSimulator.SimRuntime.iOS-13-3 - com.apple.CoreSimulator.SimDeviceType.iPhone-11-Pro - /Users/mandel/Library/Developer/CoreSimulator/Devices/1840A231-2033-42A6-AEB4-B223235A2707 - /Users/mandel/Library/Logs/CoreSimulator/1840A231-2033-42A6-AEB4-B223235A2707 - - - com.apple.CoreSimulator.SimRuntime.iOS-13-3 - com.apple.CoreSimulator.SimDeviceType.iPhone-11-Pro-Max - /Users/mandel/Library/Developer/CoreSimulator/Devices/FB4347FF-11B6-4487-BECC-0B556BAD3E89 - /Users/mandel/Library/Logs/CoreSimulator/FB4347FF-11B6-4487-BECC-0B556BAD3E89 - - - com.apple.CoreSimulator.SimRuntime.iOS-13-3 - com.apple.CoreSimulator.SimDeviceType.iPad-Pro--9-7-inch- - /Users/mandel/Library/Developer/CoreSimulator/Devices/972FB6FB-6BC5-4FD8-B8FB-BC4B08DAC817 - /Users/mandel/Library/Logs/CoreSimulator/972FB6FB-6BC5-4FD8-B8FB-BC4B08DAC817 - - - com.apple.CoreSimulator.SimRuntime.iOS-13-3 - com.apple.CoreSimulator.SimDeviceType.iPad--7th-generation- - /Users/mandel/Library/Developer/CoreSimulator/Devices/C519CBBA-AAAD-4777-B599-8A30085AABCB - /Users/mandel/Library/Logs/CoreSimulator/C519CBBA-AAAD-4777-B599-8A30085AABCB - - - com.apple.CoreSimulator.SimRuntime.iOS-13-3 - com.apple.CoreSimulator.SimDeviceType.iPad-Pro--11-inch- - /Users/mandel/Library/Developer/CoreSimulator/Devices/F7FCC57E-97CA-410F-B759-DFB395F0062C - /Users/mandel/Library/Logs/CoreSimulator/F7FCC57E-97CA-410F-B759-DFB395F0062C - - - com.apple.CoreSimulator.SimRuntime.iOS-13-3 - com.apple.CoreSimulator.SimDeviceType.iPad-Pro--12-9-inch---3rd-generation- - /Users/mandel/Library/Developer/CoreSimulator/Devices/80096DEA-A0BC-4755-8AB4-F941B6DD7438 - /Users/mandel/Library/Logs/CoreSimulator/80096DEA-A0BC-4755-8AB4-F941B6DD7438 - - - com.apple.CoreSimulator.SimRuntime.iOS-13-3 - com.apple.CoreSimulator.SimDeviceType.iPad-Air--3rd-generation- - /Users/mandel/Library/Developer/CoreSimulator/Devices/8094F147-86A1-4196-BFB9-040BAC65B9BF - /Users/mandel/Library/Logs/CoreSimulator/8094F147-86A1-4196-BFB9-040BAC65B9BF - - - com.apple.CoreSimulator.SimRuntime.tvOS-10-2 - com.apple.CoreSimulator.SimDeviceType.Apple-TV-1080p - /Users/mandel/Library/Developer/CoreSimulator/Devices/FC0AD7D8-40E1-4BEC-BC84-ECE1796E3B10 - /Users/mandel/Library/Logs/CoreSimulator/FC0AD7D8-40E1-4BEC-BC84-ECE1796E3B10 - - - com.apple.CoreSimulator.SimRuntime.tvOS-12-2 - com.apple.CoreSimulator.SimDeviceType.Apple-TV-1080p - /Users/mandel/Library/Developer/CoreSimulator/Devices/62179381-3483-41F2-ABD2-7C69E46B2C3C - /Users/mandel/Library/Logs/CoreSimulator/62179381-3483-41F2-ABD2-7C69E46B2C3C - - - com.apple.CoreSimulator.SimRuntime.tvOS-12-2 - com.apple.CoreSimulator.SimDeviceType.Apple-TV-4K-4K - /Users/mandel/Library/Developer/CoreSimulator/Devices/C10D4992-1C46-474D-871B-B89D0817CFB4 - /Users/mandel/Library/Logs/CoreSimulator/C10D4992-1C46-474D-871B-B89D0817CFB4 - - - com.apple.CoreSimulator.SimRuntime.tvOS-12-2 - com.apple.CoreSimulator.SimDeviceType.Apple-TV-4K-1080p - /Users/mandel/Library/Developer/CoreSimulator/Devices/73EAFA5D-04C7-4194-8D51-6E32C913C3B6 - /Users/mandel/Library/Logs/CoreSimulator/73EAFA5D-04C7-4194-8D51-6E32C913C3B6 - - - com.apple.CoreSimulator.SimRuntime.tvOS-13-3 - com.apple.CoreSimulator.SimDeviceType.Apple-TV-1080p - /Users/mandel/Library/Developer/CoreSimulator/Devices/3A12BAFF-0DAA-4052-AB0D-743AB85CE030 - /Users/mandel/Library/Logs/CoreSimulator/3A12BAFF-0DAA-4052-AB0D-743AB85CE030 - - - com.apple.CoreSimulator.SimRuntime.tvOS-13-3 - com.apple.CoreSimulator.SimDeviceType.Apple-TV-4K-4K - /Users/mandel/Library/Developer/CoreSimulator/Devices/FD2A3BE2-3E95-473E-99D2-DF0733F1CEED - /Users/mandel/Library/Logs/CoreSimulator/FD2A3BE2-3E95-473E-99D2-DF0733F1CEED - - - com.apple.CoreSimulator.SimRuntime.tvOS-13-3 - com.apple.CoreSimulator.SimDeviceType.Apple-TV-4K-1080p - /Users/mandel/Library/Developer/CoreSimulator/Devices/2599FF00-17DD-43F7-BFC4-90693C145398 - /Users/mandel/Library/Logs/CoreSimulator/2599FF00-17DD-43F7-BFC4-90693C145398 - - - com.apple.CoreSimulator.SimRuntime.watchOS-3-2 - com.apple.CoreSimulator.SimDeviceType.Apple-Watch-38mm - /Users/mandel/Library/Developer/CoreSimulator/Devices/F00FA51A-D353-4DD0-9631-FBAE0CE79D0F - /Users/mandel/Library/Logs/CoreSimulator/F00FA51A-D353-4DD0-9631-FBAE0CE79D0F - - - com.apple.CoreSimulator.SimRuntime.watchOS-3-2 - com.apple.CoreSimulator.SimDeviceType.Apple-Watch-42mm - /Users/mandel/Library/Developer/CoreSimulator/Devices/7E4D7EC2-45C3-41A5-A7CD-78BE9610E02B - /Users/mandel/Library/Logs/CoreSimulator/7E4D7EC2-45C3-41A5-A7CD-78BE9610E02B - - - com.apple.CoreSimulator.SimRuntime.watchOS-3-2 - com.apple.CoreSimulator.SimDeviceType.Apple-Watch-Series-2-38mm - /Users/mandel/Library/Developer/CoreSimulator/Devices/7209E5D6-9F1B-4067-96D7-342D403CD805 - /Users/mandel/Library/Logs/CoreSimulator/7209E5D6-9F1B-4067-96D7-342D403CD805 - - - com.apple.CoreSimulator.SimRuntime.watchOS-3-2 - com.apple.CoreSimulator.SimDeviceType.Apple-Watch-Series-2-42mm - /Users/mandel/Library/Developer/CoreSimulator/Devices/7BDF181F-3D32-4ECB-B2D6-0D73353DD0AB - /Users/mandel/Library/Logs/CoreSimulator/7BDF181F-3D32-4ECB-B2D6-0D73353DD0AB - - - com.apple.CoreSimulator.SimRuntime.watchOS-5-2 - com.apple.CoreSimulator.SimDeviceType.Apple-Watch-Series-2-38mm - /Users/mandel/Library/Developer/CoreSimulator/Devices/99F89C62-A028-4752-96D3-5E57CDAEDA22 - /Users/mandel/Library/Logs/CoreSimulator/99F89C62-A028-4752-96D3-5E57CDAEDA22 - - - com.apple.CoreSimulator.SimRuntime.watchOS-5-2 - com.apple.CoreSimulator.SimDeviceType.Apple-Watch-Series-2-42mm - /Users/mandel/Library/Developer/CoreSimulator/Devices/8DF7353A-CE2C-45E2-944D-FF12FBFBF24B - /Users/mandel/Library/Logs/CoreSimulator/8DF7353A-CE2C-45E2-944D-FF12FBFBF24B - - - com.apple.CoreSimulator.SimRuntime.watchOS-5-2 - com.apple.CoreSimulator.SimDeviceType.Apple-Watch-Series-3-38mm - /Users/mandel/Library/Developer/CoreSimulator/Devices/3F577C08-9F99-4B9F-8EFC-CFF64B24DB51 - /Users/mandel/Library/Logs/CoreSimulator/3F577C08-9F99-4B9F-8EFC-CFF64B24DB51 - - - com.apple.CoreSimulator.SimRuntime.watchOS-5-2 - com.apple.CoreSimulator.SimDeviceType.Apple-Watch-Series-3-42mm - /Users/mandel/Library/Developer/CoreSimulator/Devices/E26C48DB-9780-4342-84E2-783F4FF86286 - /Users/mandel/Library/Logs/CoreSimulator/E26C48DB-9780-4342-84E2-783F4FF86286 - - - com.apple.CoreSimulator.SimRuntime.watchOS-5-2 - com.apple.CoreSimulator.SimDeviceType.Apple-Watch-Series-4-40mm - /Users/mandel/Library/Developer/CoreSimulator/Devices/121B2CE2-B036-4BB4-B54A-A03F5431091B - /Users/mandel/Library/Logs/CoreSimulator/121B2CE2-B036-4BB4-B54A-A03F5431091B - - - com.apple.CoreSimulator.SimRuntime.watchOS-5-2 - com.apple.CoreSimulator.SimDeviceType.Apple-Watch-Series-4-44mm - /Users/mandel/Library/Developer/CoreSimulator/Devices/7764F572-0B81-4353-9D19-AA5E358425C2 - /Users/mandel/Library/Logs/CoreSimulator/7764F572-0B81-4353-9D19-AA5E358425C2 - - - com.apple.CoreSimulator.SimRuntime.watchOS-6-1 - com.apple.CoreSimulator.SimDeviceType.Apple-Watch-Series-3-38mm - /Users/mandel/Library/Developer/CoreSimulator/Devices/BB2F9CF0-A928-4909-867A-525A937D7390 - /Users/mandel/Library/Logs/CoreSimulator/BB2F9CF0-A928-4909-867A-525A937D7390 - - - com.apple.CoreSimulator.SimRuntime.watchOS-6-1 - com.apple.CoreSimulator.SimDeviceType.Apple-Watch-Series-3-38mm - /Users/mandel/Library/Developer/CoreSimulator/Devices/D9FC8E35-8CD2-4E3F-A660-24CAF1304479 - /Users/mandel/Library/Logs/CoreSimulator/D9FC8E35-8CD2-4E3F-A660-24CAF1304479 - - - com.apple.CoreSimulator.SimRuntime.watchOS-6-1 - com.apple.CoreSimulator.SimDeviceType.Apple-Watch-Series-4-40mm - /Users/mandel/Library/Developer/CoreSimulator/Devices/8EC34527-72DB-4A4D-B268-79C838189492 - /Users/mandel/Library/Logs/CoreSimulator/8EC34527-72DB-4A4D-B268-79C838189492 - - - com.apple.CoreSimulator.SimRuntime.watchOS-6-1 - com.apple.CoreSimulator.SimDeviceType.Apple-Watch-Series-4-44mm - /Users/mandel/Library/Developer/CoreSimulator/Devices/CC509130-B1EC-4400-B2AB-730B602F7E03 - /Users/mandel/Library/Logs/CoreSimulator/CC509130-B1EC-4400-B2AB-730B602F7E03 - - - com.apple.CoreSimulator.SimRuntime.watchOS-6-1 - com.apple.CoreSimulator.SimDeviceType.Apple-Watch-Series-5-40mm - /Users/mandel/Library/Developer/CoreSimulator/Devices/9B798995-5A29-45E1-BF89-6D29BB2864D3 - /Users/mandel/Library/Logs/CoreSimulator/9B798995-5A29-45E1-BF89-6D29BB2864D3 - - - com.apple.CoreSimulator.SimRuntime.watchOS-6-1 - com.apple.CoreSimulator.SimDeviceType.Apple-Watch-Series-5-44mm - /Users/mandel/Library/Developer/CoreSimulator/Devices/77F07B96-D2E4-4F04-B958-B68E2FBCC2ED - /Users/mandel/Library/Logs/CoreSimulator/77F07B96-D2E4-4F04-B958-B68E2FBCC2ED - - - - - 62992D4C-C669-4C51-AAD4-1877891EC26B - F00FA51A-D353-4DD0-9631-FBAE0CE79D0F - - - 18F485DC-7F0A-440F-BEF9-5BE5954B0FB1 - BB2F9CF0-A928-4909-867A-525A937D7390 - - - 1840A231-2033-42A6-AEB4-B223235A2707 - 9B798995-5A29-45E1-BF89-6D29BB2864D3 - - - FB4347FF-11B6-4487-BECC-0B556BAD3E89 - 77F07B96-D2E4-4F04-B958-B68E2FBCC2ED - - - - \ No newline at end of file diff --git a/tests/xharness/Xharness.Tests/Samples/xUnitSample.xml b/tests/xharness/Xharness.Tests/Samples/xUnitSample.xml deleted file mode 100644 index b8603de904a5..000000000000 --- a/tests/xharness/Xharness.Tests/Samples/xUnitSample.xml +++ /dev/null @@ -1,54 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/tests/xharness/Xharness.Tests/TestImporter/Templates/Tests/PListExtensionsTests.cs b/tests/xharness/Xharness.Tests/TestImporter/Templates/Tests/PListExtensionsTests.cs deleted file mode 100644 index 760cd57557e3..000000000000 --- a/tests/xharness/Xharness.Tests/TestImporter/Templates/Tests/PListExtensionsTests.cs +++ /dev/null @@ -1,98 +0,0 @@ -using System; -using System.IO; -using System.Linq; -using System.Text; -using System.Xml; -using Microsoft.DotNet.XHarness.iOS.Shared.Utilities; -using NUnit.Framework; - -namespace Xharness.Tests.TestImporter.Templates.Tests { - - public class PListExtensionsTests { - private XmlDocument plist; - - [SetUp] - public void SetUp () - { - plist = CreateResultSample (); - } - - /// - /// Creates a sample pList to be used with the tests and returns the temp file in which it was stored. - /// - /// The path where the sample plist can be found. - XmlDocument CreateResultSample () - { - var name = GetType ().Assembly.GetManifestResourceNames () - .FirstOrDefault (a => a.EndsWith ("Info.plist", StringComparison.Ordinal)); - var tempPath = Path.GetTempFileName (); - var byteOrderMarkUtf8 = Encoding.UTF8.GetString (Encoding.UTF8.GetPreamble ()); // I hate BOM - using var sampleStream = new StreamReader (GetType ().Assembly.GetManifestResourceStream (name)); - - // create the document with the plist and return it - var doc = new XmlDocument (); - var settings = new XmlReaderSettings () { - XmlResolver = null, - DtdProcessing = DtdProcessing.Parse, - }; - using var reader = XmlReader.Create (sampleStream, settings); - doc.Load (reader); - return doc; - } - - [Test] - public void SetMinimumOSVersion () - { - var version = "MyMinVersion"; - plist.SetMinimumOSVersion (version); - Assert.AreEqual (version, plist.GetMinimumOSVersion ()); - } - - [Test] - public void SetNullMinimumOSVersion () => Assert.Throws (() => plist.SetMinimumOSVersion (null)); - - [Test] - public void SetMinimummacOSVersion () - { - var version = "MyMaccMinVersion"; - plist.SetMinimummacOSVersion (version); - Assert.AreEqual (version, plist.GetMinimummacOSVersion ()); - } - - [Test] - public void SetNullMinimummacOSVersion () => Assert.Throws (() => plist.SetMinimummacOSVersion (null)); - - [Test] - public void SetCFBundleDisplayName () - { - var displayName = "MySuperApp"; - plist.SetCFBundleDisplayName (displayName); - Assert.AreEqual (displayName, plist.GetCFBundleDisplayName ()); - } - - [Test] - public void SetNullCFBundleDisplayName () => Assert.Throws (() => plist.SetCFBundleDisplayName (null)); - - [Test] - public void SetCFBundleIdentifier () - { - var bundleIdentifier = "my.company.super.app"; - plist.SetCFBundleIdentifier (bundleIdentifier); - Assert.AreEqual (bundleIdentifier, plist.GetCFBundleIdentifier ()); - } - - [Test] - public void SetNullCFBundleIdentifier () => Assert.Throws (() => plist.SetCFBundleIdentifier (null)); - - [Test] - public void SetCFBundleName () - { - var bundleName = "MySuper.app"; - plist.SetCFBundleName (bundleName); - Assert.AreEqual (bundleName, plist.GetCFBundleName ()); - } - - [Test] - public void SetNullCFBundleName () => Assert.Throws (() => plist.SetCFBundleName (null)); - } -} diff --git a/tests/xharness/Xharness.Tests/TestImporter/Tests/ProjectDefinitionTests.cs b/tests/xharness/Xharness.Tests/TestImporter/Tests/ProjectDefinitionTests.cs deleted file mode 100644 index e9428d82afe3..000000000000 --- a/tests/xharness/Xharness.Tests/TestImporter/Tests/ProjectDefinitionTests.cs +++ /dev/null @@ -1,33 +0,0 @@ -using System; -using System.Collections.Generic; -using Moq; -using NUnit.Framework; -using Xharness.TestImporter; - -namespace Xharness.Tests.TestImporter.Tests { - public class ProjectDefinitionTests { - - Mock assemblyLocator; - Mock factory; - - [SetUp] - public void SetUp () - { - assemblyLocator = new Mock (); - factory = new Mock (); - } - - [TearDown] - public void TearDown () - { - assemblyLocator = null; - } - - [Test] - public void GetTypeForAssembliesNullMonoPath () - { - var projectDefinition = new ProjectDefinition ("MyProject", assemblyLocator.Object, factory.Object, new List ()); - Assert.Throws (() => projectDefinition.GetTypeForAssemblies (null, Platform.iOS)); - } - } -} diff --git a/tests/xharness/Xharness.Tests/TestImporter/Xamarin/Tests/AssemblyLocatorTest.cs b/tests/xharness/Xharness.Tests/TestImporter/Xamarin/Tests/AssemblyLocatorTest.cs deleted file mode 100644 index 98933167fb6d..000000000000 --- a/tests/xharness/Xharness.Tests/TestImporter/Xamarin/Tests/AssemblyLocatorTest.cs +++ /dev/null @@ -1,25 +0,0 @@ -using System.IO; -using NUnit.Framework; -using Xharness.TestImporter; -using Xharness.TestImporter.Xamarin; - -namespace Xharness.Tests.TestImporter.Xamarin.Tests { - - // very simple class, but we want to make sure that iOS, tvOS get the iosDownload and the mac - // versions get the mac download - [TestFixture] - public class AssemblyLocatorTest { - - const string iOSPath = "/path/to/ios/download"; - const string macOSPath = "/path/to/mac/download"; - AssemblyLocator assemblyLocator = new AssemblyLocator { - iOSMonoSDKPath = iOSPath, - MacMonoSDKPath = macOSPath, - }; - - [TestCase (Platform.iOS, iOSPath)] - [TestCase (Platform.TvOS, iOSPath)] - public void GetAssembliesRootLocationTest (Platform platform, string expected) - => Assert.AreEqual (expected, assemblyLocator.GetAssembliesRootLocation (platform)); - } -} diff --git a/tests/xharness/Xharness.Tests/TestImporter/Xamarin/Tests/TestAssemblyDefinitionTest.cs b/tests/xharness/Xharness.Tests/TestImporter/Xamarin/Tests/TestAssemblyDefinitionTest.cs deleted file mode 100644 index 536261224452..000000000000 --- a/tests/xharness/Xharness.Tests/TestImporter/Xamarin/Tests/TestAssemblyDefinitionTest.cs +++ /dev/null @@ -1,46 +0,0 @@ -using System; -using Moq; -using NUnit.Framework; -using Xharness.TestImporter; -using Xharness.TestImporter.Xamarin; - -namespace Xharness.Tests.TestImporter.Tests { - public class TestAssemblyDefinitionTest { - - Mock assemblyLocator; - - [SetUp] - public void SetUp () - { - assemblyLocator = new Mock (); - } - - [TearDown] - public void TearDown () - { - assemblyLocator = null; - } - - [Test] - public void GetPathNullMonoRoot () - { - var testAssemblyDefinition = new TestAssemblyDefinition ("monotouch_System.Json.Microsoft_test.dll", assemblyLocator.Object); - Assert.Throws (() => testAssemblyDefinition.GetPath (Platform.iOS)); - } - - [Test] - public void IsNotXUnit () - { - var testAssemblyDefinition = new TestAssemblyDefinition ("monotouch_System.Json.Microsoft_test.dll", assemblyLocator.Object); - Assert.False (testAssemblyDefinition.IsXUnit); - } - - [Test] - public void IsXUnit () - { - var testAssemblyDefinition = new TestAssemblyDefinition ("monotouch_System.Json.Microsoft_xunit-test.dll", assemblyLocator.Object); - Assert.True (testAssemblyDefinition.IsXUnit); - } - - } -} diff --git a/tests/xharness/Xharness.Tests/TestImporter/Xamarin/Tests/XamariniOSTemplateTest.cs b/tests/xharness/Xharness.Tests/TestImporter/Xamarin/Tests/XamariniOSTemplateTest.cs deleted file mode 100644 index c58af8e9e845..000000000000 --- a/tests/xharness/Xharness.Tests/TestImporter/Xamarin/Tests/XamariniOSTemplateTest.cs +++ /dev/null @@ -1,109 +0,0 @@ -using System.IO; -using System.Text; -using Moq; -using NUnit.Framework; -using Xharness.TestImporter; -using Xharness.TestImporter.Templates; -using Xharness.TestImporter.Templates.Managed; - -namespace Xharness.Tests.TestImporter.Xamarin.Tests { - - [TestFixture] - public class XamariniOSTemplateTest { - - string outputdir; - Mock assemlyLocator; - Mock projectFilter; - XamariniOSTemplate template; - - [SetUp] - public void SetUp () - { - outputdir = Path.GetTempFileName (); - File.Delete (outputdir); - Directory.CreateDirectory (outputdir); - assemlyLocator = new Mock (); - projectFilter = new Mock (); - template = new XamariniOSTemplate { - AssemblyLocator = assemlyLocator.Object, - ProjectFilter = projectFilter.Object, - OutputDirectoryPath = outputdir, - }; - } - - [TearDown] - public void TearDown () - { - if (Directory.Exists (outputdir)) - Directory.Delete (outputdir, true); - outputdir = null; - assemlyLocator = null; - projectFilter = null; - template = null; - } - [TestCase ("iOSProject", Platform.iOS, "iOSProject.csproj")] - [TestCase ("TvOSProject", Platform.TvOS, "TvOSProject-tvos.csproj")] - public void GetProjectPathTest (string projectName, Platform platform, string expectedName) - { - // ignore the fact that all params are the same, we do not care - var path = template.GetProjectPath (projectName, platform); - Assert.AreEqual (Path.Combine (template.OutputDirectoryPath, "generated", platform.ToString (), projectName, expectedName), path); - } - - [TestCase ("/usr/path", Platform.iOS, "Info.plist")] - [TestCase ("/usr/second/path", Platform.TvOS, "Info-tvos.plist")] - public void GetPListPathTest (string rootDir, Platform platform, string expectedName) - { - var path = XamariniOSTemplate.GetPListPath (rootDir, platform); - Assert.AreEqual (Path.Combine (rootDir, expectedName), path); - } - - [TestCase ("System.Xml.dll")] - [TestCase ("MyAssembly.dll")] - public void GetReferenceNodeNullHintTest (string assembly) - { - var expected = $""; - Assert.AreEqual (expected, XamariniOSTemplate.GetReferenceNode (assembly)); - } - - [TestCase ("System.Xml.dll", "my/path/to/the/dll")] - [TestCase ("MyAssembly.dll", "thepath")] - public void GetReferenceNodeTest (string assembly, string hint) - { - var fixedHint = hint.Replace ("/", "\\"); - var sb = new StringBuilder (); - sb.AppendLine ($""); - sb.AppendLine ($"{fixedHint}"); - sb.AppendLine (""); - var expected = sb.ToString (); - Assert.AreEqual (expected, XamariniOSTemplate.GetReferenceNode (assembly, hint)); - } - - [TestCase ("my/path/to/the/dll")] - [TestCase ("my/other/path/to/the/dll")] - public void GetRegisterTypeNodeTest (string registerPath) - { - var fixedPath = registerPath.Replace ("/", "\\"); - var sb = new StringBuilder (); - sb.AppendLine ($""); - sb.AppendLine ($"{Path.GetFileName (registerPath)}"); - sb.AppendLine (""); - var expected = sb.ToString (); - Assert.AreEqual (expected, XamariniOSTemplate.GetRegisterTypeNode (registerPath)); - } - - [TestCase ("/path/to/resource/my-ignore-file.ignore")] - [TestCase ("/path/to/mono/my-trait-file.txt")] - public void GetContentNodeTest (string contentFile) - { - var fixedPath = contentFile.Replace ("/", "\\"); - var sb = new StringBuilder (); - sb.AppendLine ($""); - sb.AppendLine ($"{Path.GetFileName (contentFile)}"); - sb.AppendLine ("PreserveNewest"); - sb.AppendLine (""); - var expected = sb.ToString (); - Assert.AreEqual (expected, XamariniOSTemplate.GetContentNode (contentFile)); - } - } -} diff --git a/tests/xharness/Xharness.Tests/Tests/AppRunnerTests.cs b/tests/xharness/Xharness.Tests/Tests/AppRunnerTests.cs deleted file mode 100644 index 0554c9791900..000000000000 --- a/tests/xharness/Xharness.Tests/Tests/AppRunnerTests.cs +++ /dev/null @@ -1,803 +0,0 @@ -using System; -using System.Collections.Generic; -using System.IO; -using System.Linq; -using System.Reflection; -using System.Text; -using System.Threading; -using System.Threading.Tasks; -using Microsoft.DotNet.XHarness.Common.CLI; -using Microsoft.DotNet.XHarness.Common.Execution; -using Microsoft.DotNet.XHarness.Common.Logging; -using Microsoft.DotNet.XHarness.Common.Utilities; -using Microsoft.DotNet.XHarness.iOS.Shared; -using Microsoft.DotNet.XHarness.iOS.Shared.Execution; -using Microsoft.DotNet.XHarness.iOS.Shared.Hardware; -using Microsoft.DotNet.XHarness.iOS.Shared.Listeners; -using Microsoft.DotNet.XHarness.iOS.Shared.Logging; -using Moq; -using NUnit.Framework; - -namespace Xharness.Tests { - [TestFixture] - public class AppRunnerTests { - - const string appName = "com.xamarin.bcltests.SystemXunit"; - const string xcodePath = "/path/to/xcode"; - const string mlaunchPath = "/path/to/mlaunch"; - const int listenerPort = 1020; - - static readonly string outputPath = Path.GetDirectoryName (Assembly.GetAssembly (typeof (AppRunnerTests)).Location); - static readonly string sampleProjectPath = Path.Combine (outputPath, "Samples", "TestProject"); - static readonly string appPath = Path.Combine (sampleProjectPath, "bin", appName + ".app"); - static readonly string projectFilePath = Path.Combine (sampleProjectPath, "SystemXunit.csproj"); - - static readonly IHardwareDevice [] mockDevices = new IHardwareDevice [] { - new Device( - buildVersion: "17A577", - deviceClass: DeviceClass.iPhone, - deviceIdentifier: "8A450AA31EA94191AD6B02455F377CC1", - interfaceType: "Usb", - isUsableForDebugging: true, - name: "Test iPhone", - productType: "iPhone12,1", - productVersion: "13.0" - ), - new Device( - buildVersion: "13G36", - deviceClass: DeviceClass.iPad, - deviceIdentifier: "E854B2C3E7C8451BAF8053EC4DAAEE49", - interfaceType: "Usb", - isUsableForDebugging: true, - name: "Test iPad", - productType: "iPad2,1", - productVersion: "9.3.5" - ) - }; - - Mock processManager; - Mock simulators; - Mock devices; - Mock simpleListener; - Mock snapshotReporter; - Mock logs; - Mock mainLog; - - ISimulatorLoaderFactory simulatorsFactory; - IDeviceLoaderFactory devicesFactory; - ISimpleListenerFactory listenerFactory; - ICrashSnapshotReporterFactory snapshotReporterFactory; - IAppBundleInformationParser appBundleInformationParser; - - [SetUp] - public void SetUp () - { - logs = new Mock (); - logs.SetupGet (x => x.Directory).Returns (Path.Combine (outputPath, "logs")); - - processManager = new Mock (); - simulators = new Mock (); - devices = new Mock (); - simpleListener = new Mock (); - snapshotReporter = new Mock (); - - var mock1 = new Mock (); - mock1.Setup (m => m.CreateLoader ()).Returns (simulators.Object); - simulatorsFactory = mock1.Object; - - var mock2 = new Mock (); - mock2.Setup (m => m.CreateLoader ()).Returns (devices.Object); - devicesFactory = mock2.Object; - - var mock3 = new Mock (); - mock3 - .Setup (m => m.Create (It.IsAny (), It.IsAny (), It.IsAny (), It.IsAny (), It.IsAny (), It.IsAny ())) - .Returns ((ListenerTransport.Tcp, simpleListener.Object, "listener-temp-file")); - listenerFactory = mock3.Object; - simpleListener.Setup (x => x.InitializeAndGetPort ()).Returns (listenerPort); - - var mock4 = new Mock (); - mock4.Setup (m => m.Create (It.IsAny (), It.IsAny (), It.IsAny (), It.IsAny ())).Returns (snapshotReporter.Object); - snapshotReporterFactory = mock4.Object; - - var mock5 = new Mock (); - mock5 - .Setup (x => x.ParseFromProject (It.IsAny (), It.IsAny (), It.IsAny ())) - .ReturnsAsync (new AppBundleInformation (appName, appName, appPath, appPath, true, null)); - - appBundleInformationParser = mock5.Object; - - mainLog = new Mock (); - - Directory.CreateDirectory (appPath); - } - - [TearDown] - public void TearDown () - { - Directory.Delete (appPath, true); - } - - [Test] - public void InitializeTest () - { - var appRunner = new AppRunner (processManager.Object, - appBundleInformationParser, - simulatorsFactory, - listenerFactory, - devicesFactory, - snapshotReporterFactory, - Mock.Of (), - Mock.Of (), - Mock.Of (), - TestTarget.Simulator_iOS64, - Mock.Of (), - mainLog.Object, - logs.Object, - projectFilePath: projectFilePath, - buildConfiguration: "Debug"); - appRunner.InitializeAsync ().Wait (); - - Assert.AreEqual (appName, appRunner.AppInformation.AppName); - Assert.AreEqual (appPath, appRunner.AppInformation.AppPath); - Assert.AreEqual (appPath, appRunner.AppInformation.LaunchAppPath); - Assert.AreEqual (appName, appRunner.AppInformation.BundleIdentifier); - } - - [Test] - public void InstallToSimulatorTest () - { - var appRunner = new AppRunner (processManager.Object, - appBundleInformationParser, - simulatorsFactory, - listenerFactory, - devicesFactory, - snapshotReporterFactory, - Mock.Of (), - Mock.Of (), - Mock.Of (), - TestTarget.Simulator_iOS64, - Mock.Of (), - mainLog.Object, - logs.Object, - projectFilePath: projectFilePath, - buildConfiguration: "Debug"); - appRunner.InitializeAsync ().Wait (); - - var exception = Assert.ThrowsAsync ( - async () => await appRunner.InstallAsync (new CancellationToken ()), - "Install should not be allowed on a simulator"); - } - - [Test] - public void UninstallToSimulatorTest () - { - var appRunner = new AppRunner (processManager.Object, - appBundleInformationParser, - simulatorsFactory, - listenerFactory, - devicesFactory, - snapshotReporterFactory, - Mock.Of (), - Mock.Of (), - Mock.Of (), - TestTarget.Simulator_iOS64, - Mock.Of (), - mainLog.Object, - logs.Object, - projectFilePath: projectFilePath, - buildConfiguration: "Debug"); - appRunner.InitializeAsync ().Wait (); - - var exception = Assert.ThrowsAsync ( - async () => await appRunner.UninstallAsync (), - "Uninstall should not be allowed on a simulator"); - } - - [Test] - public void InstallWhenNoDevicesTest () - { - var appRunner = new AppRunner (processManager.Object, - appBundleInformationParser, - simulatorsFactory, - listenerFactory, - devicesFactory, - snapshotReporterFactory, - Mock.Of (), - Mock.Of (), - Mock.Of (), - TestTarget.Device_iOS, - Mock.Of (), - mainLog.Object, - logs.Object, - projectFilePath: projectFilePath, - buildConfiguration: "Debug"); - appRunner.InitializeAsync ().Wait (); - - devices.Setup (x => x.ConnectedDevices).Returns (new IHardwareDevice [0]); - - Assert.ThrowsAsync ( - async () => await appRunner.InstallAsync (new CancellationToken ()), - "Install requires connected devices"); - } - - [Test] - public async Task InstallOnDeviceTest () - { - var harness = Mock.Of (x => x.Verbosity == 2); - - var processResult = new ProcessExecutionResult () { ExitCode = 1, TimedOut = false }; - processManager.SetReturnsDefault (Task.FromResult (processResult)); - - devices.Setup (d => d.FindDevice (It.IsAny (), It.IsAny (), false, false, CancellationToken.None)).ReturnsAsync (mockDevices [0]); - - // Act - var appRunner = new AppRunner (processManager.Object, - appBundleInformationParser, - simulatorsFactory, - listenerFactory, - devicesFactory, - snapshotReporterFactory, - Mock.Of (), - Mock.Of (), - Mock.Of (), - TestTarget.Device_iOS, - harness, - mainLog.Object, - logs.Object, - projectFilePath: projectFilePath, - buildConfiguration: "Debug"); - appRunner.InitializeAsync ().Wait (); - - CancellationToken cancellationToken = new CancellationToken (); - var result = await appRunner.InstallAsync (cancellationToken); - - // Verify - Assert.AreEqual (1, result.ExitCode); - - var expectedArgs = $"-v -v -v --installdev {StringUtils.FormatArguments (appPath)} --devname \"{mockDevices [0].Name}\""; - - processManager.Verify (x => x.ExecuteCommandAsync ( - It.Is (args => args.AsCommandLine () == expectedArgs), - mainLog.Object, - TimeSpan.FromHours (1), - null, - 5, - cancellationToken)); - } - - [Test] - public async Task UninstallFromDeviceTest () - { - var harness = Mock.Of (x => x.Verbosity == 1); - - var processResult = new ProcessExecutionResult () { ExitCode = 3, TimedOut = false }; - processManager.SetReturnsDefault (Task.FromResult (processResult)); - - devices.Setup (d => d.FindDevice (It.IsAny (), It.IsAny (), false, false, CancellationToken.None)).ReturnsAsync (mockDevices [1]); - - // Act - var appRunner = new AppRunner (processManager.Object, - appBundleInformationParser, - simulatorsFactory, - listenerFactory, - devicesFactory, - snapshotReporterFactory, - Mock.Of (), - Mock.Of (), - Mock.Of (), - TestTarget.Device_iOS, - harness, - mainLog.Object, - logs.Object, - projectFilePath: Path.Combine (sampleProjectPath, "SystemXunit.csproj"), - buildConfiguration: "Debug"); - appRunner.InitializeAsync ().Wait (); - - var result = await appRunner.UninstallAsync (); - - // Verify - Assert.AreEqual (3, result.ExitCode); - - var expectedArgs = $"-v -v --uninstalldevbundleid {StringUtils.FormatArguments (appName)} --devname \"Test iPad\""; - - processManager.Verify (x => x.ExecuteCommandAsync ( - It.Is (args => args.AsCommandLine () == expectedArgs), - mainLog.Object, - TimeSpan.FromMinutes (1), - null, - 5, - null)); - } - - [Test] - public async Task RunOnSimulatorWithNoAvailableSimulatorTest () - { - devices.Setup (x => x.ConnectedDevices).Returns (mockDevices.Reverse ()); - - // Crash reporter - var crashReporterFactory = new Mock (); - crashReporterFactory - .Setup (x => x.Create (mainLog.Object, It.IsAny (), false, null)) - .Returns (snapshotReporter.Object); - - // Mock finding simulators - simulators - .Setup (x => x.LoadDevices (It.IsAny (), false, false, false, true, CancellationToken.None)) - .Returns (Task.FromResult (true)); - - string simulatorLogPath = Path.Combine (Path.GetTempPath (), "simulator-logs"); - - simulators - .Setup (x => x.FindSimulators (TestTarget.Simulator_tvOS, mainLog.Object, true, false, CancellationToken.None)) - .ReturnsAsync ((null, null)); - - var listenerLogFile = new Mock (); - - logs - .Setup (x => x.Create (It.IsAny (), "TestLog", It.IsAny ())) - .Returns (listenerLogFile.Object); - - simpleListener.SetupGet (x => x.ConnectedTask).Returns (Task.FromResult (true)); - - var captureLog = new Mock (); - captureLog.SetupGet (x => x.FullPath).Returns (simulatorLogPath); - - var captureLogFactory = new Mock (); - captureLogFactory - .Setup (x => x.Create ( - Path.Combine (logs.Object.Directory, "tvos.log"), - "/path/to/simulator.log", - true, - It.IsAny ())) - .Returns (captureLog.Object); - var testReporterFactory = new Mock (); - var testReporter = new Mock (); - testReporterFactory.SetReturnsDefault (testReporter.Object); - testReporter.Setup (r => r.ParseResult ()).Returns (() => { - return Task.FromResult<(TestExecutingResult, string)> ((TestExecutingResult.Succeeded, null)); - }); - testReporter.Setup (r => r.Success).Returns (true); - - // Act - var appRunner = new AppRunner (processManager.Object, - appBundleInformationParser, - simulatorsFactory, - listenerFactory, - devicesFactory, - crashReporterFactory.Object, - captureLogFactory.Object, - Mock.Of (), - testReporterFactory.Object, - TestTarget.Simulator_tvOS, - GetMockedHarness (), - mainLog.Object, - logs.Object, - projectFilePath: projectFilePath, - buildConfiguration: "Debug", - timeoutMultiplier: 2); - appRunner.InitializeAsync ().Wait (); - - var result = await appRunner.RunAsync (); - - // Verify - Assert.AreEqual (1, result); - - mainLog.Verify (x => x.WriteLine ("Test run completed"), Times.Never); - - simpleListener.Verify (x => x.InitializeAndGetPort (), Times.AtLeastOnce); - simpleListener.Verify (x => x.StartAsync (), Times.AtLeastOnce); - - simulators.VerifyAll (); - } - - [Test] - public async Task RunOnSimulatorSuccessfullyTest () - { - var harness = GetMockedHarness (); - - devices.Setup (x => x.ConnectedDevices).Returns (mockDevices.Reverse ()); - - // Crash reporter - var crashReporterFactory = new Mock (); - crashReporterFactory - .Setup (x => x.Create (mainLog.Object, It.IsAny (), false, null)) - .Returns (snapshotReporter.Object); - - // Mock finding simulators - simulators - .Setup (x => x.LoadDevices (It.IsAny (), false, false, false, true, CancellationToken.None)) - .Returns (Task.FromResult (true)); - - string simulatorLogPath = Path.Combine (Path.GetTempPath (), "simulator-logs"); - - var simulator = new Mock (); - simulator.SetupGet (x => x.Name).Returns ("Test iPhone simulator"); - simulator.SetupGet (x => x.UDID).Returns ("58F21118E4D34FD69EAB7860BB9B38A0"); - simulator.SetupGet (x => x.LogPath).Returns (simulatorLogPath); - simulator.SetupGet (x => x.SystemLog).Returns (Path.Combine (simulatorLogPath, "system.log")); - - simulators - .Setup (x => x.FindSimulators (TestTarget.Simulator_iOS64, mainLog.Object, true, false, CancellationToken.None)) - .ReturnsAsync ((simulator.Object, null)); - - var testResultFilePath = Path.GetTempFileName (); - var listenerLogFile = Mock.Of (x => x.FullPath == testResultFilePath); - File.WriteAllLines (testResultFilePath, new [] { "Some result here", "Tests run: 124", "Some result there" }); - - logs - .Setup (x => x.Create (It.IsAny (), It.IsAny (), It.IsAny ())) - .Returns (listenerLogFile); - - logs - .Setup (x => x.CreateFile (It.IsAny (), It.IsAny ())) - .Returns ($"/path/to/log-{Guid.NewGuid ()}.log"); - - simpleListener.SetupGet (x => x.ConnectedTask).Returns (Task.FromResult (true)); - - var captureLog = new Mock (); - captureLog.SetupGet (x => x.FullPath).Returns (simulatorLogPath); - - var captureLogFactory = new Mock (); - captureLogFactory - .Setup (x => x.Create ( - Path.Combine (logs.Object.Directory, simulator.Object.Name + ".log"), - simulator.Object.SystemLog, - true, - It.IsAny ())) - .Returns (captureLog.Object); - - var expectedArgs = $"--sdkroot {StringUtils.FormatArguments (xcodePath)} -v -v " + - $"-argument=-connection-mode -argument=none -argument=-app-arg:-autostart " + - $"-setenv=NUNIT_AUTOSTART=true -argument=-app-arg:-autoexit -setenv=NUNIT_AUTOEXIT=true " + - $"-argument=-app-arg:-enablenetwork -setenv=NUNIT_ENABLE_NETWORK=true " + - $"-setenv=DISABLE_SYSTEM_PERMISSION_TESTS=1 -argument=-app-arg:-hostname:127.0.0.1 " + - $"-setenv=NUNIT_HOSTNAME=127.0.0.1 -argument=-app-arg:-transport:Tcp -setenv=NUNIT_TRANSPORT=TCP " + - $"-argument=-app-arg:-hostport:{listenerPort} -setenv=NUNIT_HOSTPORT={listenerPort} " + - $"-setenv=env1=value1 -setenv=env2=value2 --launchsim {StringUtils.FormatArguments (appPath)} " + - $"--stdout=tty1 --stderr=tty1 --device=:v2:udid={simulator.Object.UDID}"; - - processManager - .Setup (x => x.ExecuteCommandAsync ( - It.Is (args => args.AsCommandLine () == expectedArgs), - mainLog.Object, - TimeSpan.FromMinutes (harness.Timeout * 2), - null, - 5, - It.IsAny ())) - .ReturnsAsync (new ProcessExecutionResult () { ExitCode = 0 }); - - var xmlResultFile = Path.ChangeExtension (testResultFilePath, "xml"); - var testReporterFactory = new Mock (); - var testReporter = new Mock (); - testReporterFactory.SetReturnsDefault (testReporter.Object); - testReporter.Setup (r => r.ParseResult ()).Returns (() => { - return Task.FromResult<(TestExecutingResult, string)> ((TestExecutingResult.Succeeded, null)); - }); - testReporter.Setup (r => r.Success).Returns (true); - - // Act - var appRunner = new AppRunner (processManager.Object, - appBundleInformationParser, - simulatorsFactory, - listenerFactory, - devicesFactory, - crashReporterFactory.Object, - captureLogFactory.Object, - Mock.Of (), // Use for devices only - testReporterFactory.Object, - TestTarget.Simulator_iOS64, - harness, - mainLog.Object, - logs.Object, - projectFilePath: projectFilePath, - buildConfiguration: "Debug", - timeoutMultiplier: 2, - ensureCleanSimulatorState: true); - appRunner.InitializeAsync ().Wait (); - - var result = await appRunner.RunAsync (); - - // Verify - Assert.AreEqual (0, result); - - simpleListener.Verify (x => x.InitializeAndGetPort (), Times.AtLeastOnce); - simpleListener.Verify (x => x.StartAsync (), Times.AtLeastOnce); - simpleListener.Verify (x => x.Cancel (), Times.AtLeastOnce); - simpleListener.Verify (x => x.Dispose (), Times.AtLeastOnce); - - simulators.VerifyAll (); - - captureLog.Verify (x => x.StartCapture (), Times.AtLeastOnce); - captureLog.Verify (x => x.StopCapture (null), Times.AtLeastOnce); - - // When ensureCleanSimulatorState == true - simulator.Verify (x => x.PrepareSimulator (It.IsAny (), appName)); - simulator.Verify (x => x.KillEverything (mainLog.Object)); - } - - [Test] - public void RunOnDeviceWithNoAvailableSimulatorTest () - { - devices.Setup (d => d.FindDevice (It.IsAny (), It.IsAny (), false, false, CancellationToken.None)).ReturnsAsync ((IHardwareDevice) null); - simulators - .Setup (s => s.FindSimulators (It.IsAny (), It.IsAny (), true, false, CancellationToken.None)) - .ReturnsAsync ((null, null)); - - // Crash reporter - var crashReporterFactory = new Mock (); - crashReporterFactory - .Setup (x => x.Create (mainLog.Object, It.IsAny (), false, null)) - .Returns (snapshotReporter.Object); - - var listenerLogFile = new Mock (); - var testReporterFactory = new Mock (); - var testReporter = new Mock (); - testReporterFactory.SetReturnsDefault (testReporter.Object); - testReporter.Setup (r => r.ParseResult ()).Returns (() => { - return Task.FromResult<(TestExecutingResult, string)> ((TestExecutingResult.Succeeded, null)); - }); - testReporter.Setup (r => r.Success).Returns (true); - - logs - .Setup (x => x.Create (It.IsAny (), "TestLog", It.IsAny ())) - .Returns (listenerLogFile.Object); - - simpleListener.SetupGet (x => x.ConnectedTask).Returns (Task.FromResult (true)); - - // Act - var appRunner = new AppRunner (processManager.Object, - appBundleInformationParser, - simulatorsFactory, - listenerFactory, - devicesFactory, - crashReporterFactory.Object, - Mock.Of (), - Mock.Of (), - testReporterFactory.Object, - TestTarget.Device_tvOS, - GetMockedHarness (), - mainLog.Object, - logs.Object, - projectFilePath: projectFilePath, - buildConfiguration: "Debug", - timeoutMultiplier: 2); - appRunner.InitializeAsync ().Wait (); - - Assert.ThrowsAsync ( - async () => await appRunner.RunAsync (), - "Running requires connected devices"); - } - - [Test] - public async Task RunOnDeviceSuccessfullyTest () - { - var harness = GetMockedHarness (); - - devices.Setup (d => d.FindDevice (It.IsAny (), It.IsAny (), false, false, CancellationToken.None)).ReturnsAsync (mockDevices [1]); - - // Crash reporter - var crashReporterFactory = new Mock (); - crashReporterFactory - .Setup (x => x.Create (mainLog.Object, It.IsAny (), true, "Test iPad")) - .Returns (snapshotReporter.Object); - - var deviceSystemLog = new Mock (); - deviceSystemLog.SetupGet (x => x.FullPath).Returns (Path.GetTempFileName ()); - - var testResultFilePath = Path.GetTempFileName (); - var listenerLogFile = Mock.Of (x => x.FullPath == testResultFilePath); - File.WriteAllLines (testResultFilePath, new [] { "Some result here", "Some result there", "Tests run: 3" }); - - logs - .Setup (x => x.Create (It.Is (s => s.StartsWith ("test-ios-")), "TestLog", It.IsAny ())) - .Returns (listenerLogFile); - - logs - .Setup (x => x.Create (It.Is (s => s.StartsWith ("device-Test iPad-")), "Device log", It.IsAny ())) - .Returns (deviceSystemLog.Object); - - simpleListener.SetupGet (x => x.ConnectedTask).Returns (Task.FromResult (true)); - - var deviceLogCapturer = new Mock (); - - var deviceLogCapturerFactory = new Mock (); - deviceLogCapturerFactory - .Setup (x => x.Create (mainLog.Object, deviceSystemLog.Object, "Test iPad")) - .Returns (deviceLogCapturer.Object); - - var ips = new StringBuilder (); - var ipAddresses = System.Net.Dns.GetHostEntry (System.Net.Dns.GetHostName ()).AddressList; - for (int i = 0; i < ipAddresses.Length; i++) { - if (i > 0) - ips.Append (','); - ips.Append (ipAddresses [i].ToString ()); - } - - var expectedArgs = $"-v -v -argument=-connection-mode -argument=none " + - $"-argument=-app-arg:-autostart -setenv=NUNIT_AUTOSTART=true -argument=-app-arg:-autoexit " + - $"-setenv=NUNIT_AUTOEXIT=true -argument=-app-arg:-enablenetwork -setenv=NUNIT_ENABLE_NETWORK=true " + - $"-setenv=DISABLE_SYSTEM_PERMISSION_TESTS=1 -argument=-app-arg:-hostname:{ips} -setenv=NUNIT_HOSTNAME={ips} " + - $"-argument=-app-arg:-transport:Tcp -setenv=NUNIT_TRANSPORT=TCP -argument=-app-arg:-hostport:{listenerPort} " + - $"-setenv=NUNIT_HOSTPORT={listenerPort} -setenv=env1=value1 -setenv=env2=value2 " + - $"--launchdev {StringUtils.FormatArguments (appPath)} --disable-memory-limits --wait-for-exit --devname \"Test iPad\""; - - processManager - .Setup (x => x.ExecuteCommandAsync ( - It.Is (args => args.AsCommandLine () == expectedArgs), - It.IsAny (), - TimeSpan.FromMinutes (harness.Timeout * 2), - null, - 5, - It.IsAny ())) - .ReturnsAsync (new ProcessExecutionResult () { ExitCode = 0 }); - - var xmlResultFile = Path.ChangeExtension (testResultFilePath, "xml"); - var testReporterFactory = new Mock (); - var testReporter = new Mock (); - testReporterFactory.SetReturnsDefault (testReporter.Object); - testReporter.Setup (r => r.ParseResult ()).Returns (() => { - return Task.FromResult<(TestExecutingResult, string)> ((TestExecutingResult.Succeeded, null)); - }); - testReporter.Setup (r => r.Success).Returns (true); - - // Act - var appRunner = new AppRunner (processManager.Object, - appBundleInformationParser, - simulatorsFactory, - listenerFactory, - devicesFactory, - crashReporterFactory.Object, - Mock.Of (), // Used for simulators only - deviceLogCapturerFactory.Object, - testReporterFactory.Object, - TestTarget.Device_iOS, - harness, - mainLog.Object, - logs.Object, - projectFilePath: projectFilePath, - buildConfiguration: "Debug", - timeoutMultiplier: 2); - appRunner.InitializeAsync ().Wait (); - - var result = await appRunner.RunAsync (); - - // Verify - Assert.AreEqual (0, result); - - processManager.VerifyAll (); - - simpleListener.Verify (x => x.InitializeAndGetPort (), Times.AtLeastOnce); - simpleListener.Verify (x => x.StartAsync (), Times.AtLeastOnce); - simpleListener.Verify (x => x.Cancel (), Times.AtLeastOnce); - simpleListener.Verify (x => x.Dispose (), Times.AtLeastOnce); - - snapshotReporter.Verify (x => x.StartCaptureAsync (), Times.AtLeastOnce); - snapshotReporter.Verify (x => x.StartCaptureAsync (), Times.AtLeastOnce); - - deviceSystemLog.Verify (x => x.Dispose (), Times.AtLeastOnce); - } - - [Test] - public async Task RunOnDeviceWithFailedTestsTest () - { - var harness = GetMockedHarness (); - - devices.Setup (d => d.FindDevice (It.IsAny (), It.IsAny (), false, false, CancellationToken.None)).ReturnsAsync (mockDevices [1]); - - // Crash reporter - var crashReporterFactory = new Mock (); - crashReporterFactory - .Setup (x => x.Create (mainLog.Object, It.IsAny (), true, "Test iPad")) - .Returns (snapshotReporter.Object); - - var deviceSystemLog = new Mock (); - deviceSystemLog.SetupGet (x => x.FullPath).Returns (Path.GetTempFileName ()); - - var testResultFilePath = Path.GetTempFileName (); - var listenerLogFile = Mock.Of (x => x.FullPath == testResultFilePath); - File.WriteAllLines (testResultFilePath, new [] { "Some result here", "[FAIL] This test failed", "Some result there", "Tests run: 3" }); - - logs - .Setup (x => x.Create (It.Is (s => s.StartsWith ("test-ios-")), "TestLog", It.IsAny ())) - .Returns (listenerLogFile); - - logs - .Setup (x => x.Create (It.Is (s => s.StartsWith ("device-Test iPad-")), "Device log", It.IsAny ())) - .Returns (deviceSystemLog.Object); - - simpleListener.SetupGet (x => x.ConnectedTask).Returns (Task.FromResult (true)); - - var deviceLogCapturer = new Mock (); - - var deviceLogCapturerFactory = new Mock (); - deviceLogCapturerFactory - .Setup (x => x.Create (mainLog.Object, deviceSystemLog.Object, "Test iPad")) - .Returns (deviceLogCapturer.Object); - - var ips = new StringBuilder (); - var ipAddresses = System.Net.Dns.GetHostEntry (System.Net.Dns.GetHostName ()).AddressList; - for (int i = 0; i < ipAddresses.Length; i++) { - if (i > 0) - ips.Append (','); - ips.Append (ipAddresses [i].ToString ()); - } - - var expectedArgs = $"-v -v -argument=-connection-mode -argument=none " + - $"-argument=-app-arg:-autostart -setenv=NUNIT_AUTOSTART=true -argument=-app-arg:-autoexit " + - $"-setenv=NUNIT_AUTOEXIT=true -argument=-app-arg:-enablenetwork -setenv=NUNIT_ENABLE_NETWORK=true " + - $"-setenv=DISABLE_SYSTEM_PERMISSION_TESTS=1 -argument=-app-arg:-hostname:{ips} -setenv=NUNIT_HOSTNAME={ips} " + - $"-argument=-app-arg:-transport:Tcp -setenv=NUNIT_TRANSPORT=TCP -argument=-app-arg:-hostport:{listenerPort} " + - $"-setenv=NUNIT_HOSTPORT={listenerPort} -setenv=env1=value1 -setenv=env2=value2 " + - $"--launchdev {StringUtils.FormatArguments (appPath)} --disable-memory-limits --wait-for-exit --devname \"Test iPad\""; - - processManager - .Setup (x => x.ExecuteCommandAsync ( - It.Is (args => args.AsCommandLine () == expectedArgs), - It.IsAny (), - TimeSpan.FromMinutes (harness.Timeout * 2), - null, - 5, - It.IsAny ())) - .ReturnsAsync (new ProcessExecutionResult () { ExitCode = 0 }); - - var xmlResultFile = Path.ChangeExtension (testResultFilePath, "xml"); - var testReporterFactory = new Mock (); - var testReporter = new Mock (); - testReporterFactory.SetReturnsDefault (testReporter.Object); - testReporter.Setup (r => r.ParseResult ()).Returns (() => { - return Task.FromResult<(TestExecutingResult, string)> ((TestExecutingResult.Failed, null)); - }); - testReporter.Setup (r => r.Success).Returns (false); - - // Act - var appRunner = new AppRunner (processManager.Object, - appBundleInformationParser, - simulatorsFactory, - listenerFactory, - devicesFactory, - crashReporterFactory.Object, - Mock.Of (), // Used for simulators only - deviceLogCapturerFactory.Object, - testReporterFactory.Object, - TestTarget.Device_iOS, - harness, - mainLog.Object, - logs.Object, - projectFilePath: projectFilePath, - buildConfiguration: "Debug", - timeoutMultiplier: 2); - appRunner.InitializeAsync ().Wait (); - - var result = await appRunner.RunAsync (); - - // Verify - Assert.AreEqual (1, result); - - processManager.VerifyAll (); - - simpleListener.Verify (x => x.InitializeAndGetPort (), Times.AtLeastOnce); - simpleListener.Verify (x => x.StartAsync (), Times.AtLeastOnce); - simpleListener.Verify (x => x.Cancel (), Times.AtLeastOnce); - simpleListener.Verify (x => x.Dispose (), Times.AtLeastOnce); - - snapshotReporter.Verify (x => x.StartCaptureAsync (), Times.AtLeastOnce); - snapshotReporter.Verify (x => x.StartCaptureAsync (), Times.AtLeastOnce); - - deviceSystemLog.Verify (x => x.Dispose (), Times.AtLeastOnce); - } - - IHarness GetMockedHarness () - { - return Mock.Of (x => x.Action == HarnessAction.Run - && x.Verbosity == 1 - && x.HarnessLog == mainLog.Object - && x.InCI == false - && x.EnvironmentVariables == new Dictionary () { - { "env1", "value1" }, - { "env2", "value2" }, - } - && x.Timeout == 1d); - } - } -} diff --git a/tests/xharness/Xharness.Tests/Tests/TestPlatformExtensionsTests.cs b/tests/xharness/Xharness.Tests/Tests/TestPlatformExtensionsTests.cs deleted file mode 100644 index b9e49c859ec8..000000000000 --- a/tests/xharness/Xharness.Tests/Tests/TestPlatformExtensionsTests.cs +++ /dev/null @@ -1,46 +0,0 @@ -using System.Collections; -using Microsoft.DotNet.XHarness.iOS.Shared; -using NUnit.Framework; - -namespace Xharness.Tests.Tests { - - [TestFixture] - public class TestPlatformExtensionsTests { - - public class TestCasesData { - public static IEnumerable GetSimulatorTestCases { - get { - foreach (var platform in new [] { TestPlatform.iOS }) { - yield return new TestCaseData (platform).Returns ("iOS " + Xamarin.SdkVersions.MiniOSSimulator); - } - yield return new TestCaseData (TestPlatform.tvOS).Returns ("tvOS " + Xamarin.SdkVersions.MinTVOSSimulator); - } - } - - public static IEnumerable IsMacTestCases { - get { - - foreach (var platform in new [] { TestPlatform.None, - TestPlatform.All, - TestPlatform.iOS, - TestPlatform.tvOS }) { - yield return new TestCaseData (platform).Returns (false); - } - - foreach (var platform in new [] { TestPlatform.Mac }) { - yield return new TestCaseData (platform).Returns (true); - } - } - } - } - - [Test, TestCaseSource (typeof (TestCasesData), "GetSimulatorTestCases")] - public string GetSimulatorMinVersionTest (TestPlatform platform) - => platform.GetSimulatorMinVersion (); - - [Test, TestCaseSource (typeof (TestCasesData), "IsMacTestCases")] - public bool IsMacTest (TestPlatform platform) => platform.IsMac (); - - } - -} diff --git a/tests/xharness/Xharness.Tests/Tests/TestTargetExtensionsTests.cs b/tests/xharness/Xharness.Tests/Tests/TestTargetExtensionsTests.cs deleted file mode 100644 index 6ff560f46f9c..000000000000 --- a/tests/xharness/Xharness.Tests/Tests/TestTargetExtensionsTests.cs +++ /dev/null @@ -1,21 +0,0 @@ -using System; -using System.Collections; -using Microsoft.DotNet.XHarness.iOS.Shared; -using NUnit.Framework; - -namespace Xharness.Tests.Tests { - - [TestFixture] - public class TestTargetExtensionsTests { - - [TestCase (TestPlatform.tvOS, new [] { TestTarget.Simulator_tvOS })] - public void GetAppRunnerTargetsTest (TestPlatform platform, TestTarget [] expectedTargets) - { - var targets = platform.GetTestTargetsForSimulator (); - Assert.AreEqual (expectedTargets.Length, targets.Length); - foreach (var t in expectedTargets) { - Assert.Contains (t, targets); - } - } - } -} diff --git a/tests/xharness/Xharness.Tests/Xharness.Tests.csproj b/tests/xharness/Xharness.Tests/Xharness.Tests.csproj deleted file mode 100644 index 904eaf9e99e4..000000000000 --- a/tests/xharness/Xharness.Tests/Xharness.Tests.csproj +++ /dev/null @@ -1,62 +0,0 @@ - - - - net$(BundledNETCoreAppTargetFrameworkVersion) - Xharness.Tests - Xharness.Tests - latest - false - Nullable - - - - - - - - - - - - - - - - - - - PreserveNewest - - - PreserveNewest - - - - - - - - - - - - - - - - {e1f53f80-8399-499b-8017-c414b9cd263b} - xharness - - - - - - - - - runtime; build; native; contentfiles; analyzers; buildtransitive - all - - - - diff --git a/tests/xharness/Xharness.Tests/app.config b/tests/xharness/Xharness.Tests/app.config deleted file mode 100644 index 2833cc4412da..000000000000 --- a/tests/xharness/Xharness.Tests/app.config +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/tests/xharness/XmlDocumentExtensions.cs b/tests/xharness/XmlDocumentExtensions.cs index db1cec8eb345..9b4b962b2ee5 100644 --- a/tests/xharness/XmlDocumentExtensions.cs +++ b/tests/xharness/XmlDocumentExtensions.cs @@ -5,13 +5,13 @@ namespace Xharness { public static class XmlDocumentExtensions { - public static void Save (this XmlDocument doc, string path, IHarness harness) => + public static void Save (this XmlDocument doc, string path, Harness harness) => doc.Save (path, (level, message) => harness.Log (level, message)); public static void Save (this XmlDocument doc, string path, Action log) { if (!File.Exists (path)) { - Directory.CreateDirectory (Path.GetDirectoryName (path)); + Directory.CreateDirectory (Path.GetDirectoryName (path)!); doc.Save (path); log?.Invoke (1, $"Created {path}"); } else { diff --git a/tests/xharness/xharness.csproj b/tests/xharness/xharness.csproj index 66e4fe3fe19e..03169bf8a1da 100644 --- a/tests/xharness/xharness.csproj +++ b/tests/xharness/xharness.csproj @@ -6,9 +6,8 @@ Xharness xharness latest - false Nullable - + enable false @@ -27,9 +26,6 @@ Project --verbose --jenkins --rootdir .. --label=skip-mac-tests,skip-ios-simulator-tests,skip-ios-msbuild-tests,skip-system-permission-tests,run-ios-device-tests,run-ios-extensions-tests --markdown-summary=../TestSummary.md - - - @@ -38,94 +34,23 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - StringUtils.cs + tools\common\StringUtils.cs - NullableAttributes.cs + tools\common\NullableAttributes.cs - Cache.cs + tests\mtouch\Cache.cs - ApplePlatform.cs + tools\common\ApplePlatform.cs - - ParseTrxFile.cs + tests\common\ParseTrxFile.cs - - - SdkVersions.cs + tools\common\SdkVersions.cs @@ -136,9 +61,4 @@ PreserveNewest - - - - - diff --git a/tests/xharness/xharness.slnx b/tests/xharness/xharness.slnx index e85b6d9eb2b2..b9a0957f809b 100644 --- a/tests/xharness/xharness.slnx +++ b/tests/xharness/xharness.slnx @@ -1,4 +1,3 @@ - From 542f21cd919db5a3059c2bbc5b98e68e50018bcc Mon Sep 17 00:00:00 2001 From: Rolf Bjarne Kvinge Date: Fri, 17 Apr 2026 08:06:13 +0200 Subject: [PATCH 13/47] [AppKit] Fix the name of the userInfo 'Item' key in the WillAddItem/DidRemoveItem notifications. (#25158) --------- Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- src/appkit.cs | 12 ++++--- tests/monotouch-test/AppKit/NSToolbar.cs | 34 +++++++++++++++++++ .../common-AppKit.ignore | 1 - 3 files changed, 42 insertions(+), 5 deletions(-) diff --git a/src/appkit.cs b/src/appkit.cs index 500d198ca8a4..cfda74bf0f3e 100644 --- a/src/appkit.cs +++ b/src/appkit.cs @@ -29334,18 +29334,22 @@ partial interface NSTextInputContext { } partial interface NSToolbarItemEventArgs { - /// To be added. - /// To be added. - /// To be added. - [Export ("item")] + /// Gets the toolbar item associated with the notification. + /// The toolbar item that will be added to or has been removed from the toolbar. + /// This value is read from the notification's userInfo dictionary using . + [Export ("NSToolbarItemKey")] NSToolbarItem Item { get; } } partial interface NSToolbar { + /// Notification posted when a toolbar is about to add an item. + /// The notification payload can be accessed using . [Notification (typeof (NSToolbarItemEventArgs))] [Field ("NSToolbarWillAddItemNotification")] NSString NSToolbarWillAddItemNotification { get; } + /// Notification posted after a toolbar removes an item. + /// The notification payload can be accessed using . [Notification (typeof (NSToolbarItemEventArgs))] [Field ("NSToolbarDidRemoveItemNotification")] NSString NSToolbarDidRemoveItemNotification { get; } diff --git a/tests/monotouch-test/AppKit/NSToolbar.cs b/tests/monotouch-test/AppKit/NSToolbar.cs index f77f29feddbf..50955368c02a 100644 --- a/tests/monotouch-test/AppKit/NSToolbar.cs +++ b/tests/monotouch-test/AppKit/NSToolbar.cs @@ -1,6 +1,7 @@ #if __MACOS__ using AppKit; +using Foundation; namespace Xamarin.Mac.Tests { [Preserve (AllMembers = true)] @@ -23,6 +24,39 @@ public void NSToolbarShouldChangeAllowsExtensionItems () Assert.IsFalse (toolbar.AllowsExtensionItems == allows, "NSToolbarShouldChangeAllowsExtensionItems - Failed to set the AllowsExtensionItems property"); } + + [Test] + public void ItemEventArgs () + { + TestRuntime.AssertXcodeVersion (14, 0); // macOS 13.0 + + using (var item = new NSToolbarItem ()) + using (var userInfo = new NSMutableDictionary ()) { + userInfo.Add (NSToolbar.NSToolbarItemKey, item); + + using (var notification = NSNotification.FromName (NSToolbar.NSToolbarWillAddItemNotification, toolbar, userInfo)) { + var args = new NSToolbarItemEventArgs (notification); + var actual = args.Item; + + Assert.That (actual, Is.Not.Null, "WillAddItem"); + if (actual is null) + return; + + Assert.That (actual.Handle, Is.EqualTo (item.Handle), "WillAddItemHandle"); + } + + using (var notification = NSNotification.FromName (NSToolbar.NSToolbarDidRemoveItemNotification, toolbar, userInfo)) { + var args = new NSToolbarItemEventArgs (notification); + var actual = args.Item; + + Assert.That (actual, Is.Not.Null, "DidRemoveItem"); + if (actual is null) + return; + + Assert.That (actual.Handle, Is.EqualTo (item.Handle), "DidRemoveItemHandle"); + } + } + } } } #endif // __MACOS__ diff --git a/tests/xtro-sharpie/api-annotations-dotnet/common-AppKit.ignore b/tests/xtro-sharpie/api-annotations-dotnet/common-AppKit.ignore index d8151a01de31..8151545229e9 100644 --- a/tests/xtro-sharpie/api-annotations-dotnet/common-AppKit.ignore +++ b/tests/xtro-sharpie/api-annotations-dotnet/common-AppKit.ignore @@ -4,7 +4,6 @@ ## unsorted -!unknown-field! item bound !missing-field! NSImageNameColumnViewTemplate not bound !missing-field! NSImageNameGoBackTemplate not bound !missing-field! NSImageNameGoForwardTemplate not bound From fa65041621fcad3701593aa59d69c74359445b38 Mon Sep 17 00:00:00 2001 From: Rolf Bjarne Kvinge Date: Fri, 17 Apr 2026 08:07:33 +0200 Subject: [PATCH 14/47] [src] Review xml docs for grammar. (#25165) --------- Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- src/AVFoundation/Enums.cs | 2 +- src/AudioToolbox/AudioBuffers.cs | 7 ++-- src/AudioToolbox/AudioFile.cs | 3 +- src/AudioToolbox/AudioFileStream.cs | 4 +-- src/AudioToolbox/AudioSessions.cs | 2 +- src/AudioToolbox/AudioType.cs | 4 +-- src/AudioUnit/AUEnums.cs | 4 +-- src/AudioUnit/AudioUnit.cs | 4 +-- src/CloudKit/Enums.cs | 4 +-- src/CoreAnimation/CALayer.cs | 4 +-- src/CoreImage/CIContext.cs | 2 +- src/CoreImage/CIFilter.cs | 2 +- src/CoreImage/CISampler.cs | 2 +- src/CoreMedia/CMAttachmentBearer.cs | 4 +-- src/CoreMidi/MidiThruConnectionParams.cs | 4 +-- src/EventKit/EKEnums.cs | 2 +- src/Foundation/Enum.cs | 2 +- src/Foundation/NSMutableUrlRequest.cs | 2 +- src/Foundation/ProtocolAttribute.cs | 2 +- src/MediaPlayer/MediaPlayer.cs | 2 +- src/NetworkExtension/NEEnums.cs | 2 +- src/ObjCRuntime/ExceptionMode.cs | 6 ++-- src/PassKit/PKShareablePassMetadata.cs | 8 ++--- src/Security/Enums.cs | 4 +-- .../SCVideoStreamAnalyzer.cs | 4 +-- src/StoreKit/Enums.cs | 2 +- src/UIKit/UIEnums.cs | 6 ++-- src/WatchConnectivity/WCEnums.cs | 2 +- src/audiounit.cs | 8 ++--- src/avfoundation.cs | 8 ++--- src/avkit.cs | 2 +- src/callkit.cs | 6 ++-- src/carplay.cs | 2 +- src/classkit.cs | 2 +- src/coreanimation.cs | 6 ++-- src/coreaudiokit.cs | 4 +-- src/coredata.cs | 27 ++++++++-------- src/coreimage.cs | 20 ++++++------ src/corelocation.cs | 8 ++--- src/corespotlight.cs | 2 +- src/eventkit.cs | 2 +- src/foundation.cs | 14 ++++---- src/gamekit.cs | 4 +-- src/glkit.cs | 4 +-- src/healthkit.cs | 12 +++---- src/healthkitui.cs | 2 +- src/homekit.cs | 2 +- src/intents.cs | 6 ++-- src/mapkit.cs | 18 +++++------ src/mediaplayer.cs | 4 +-- src/metalperformanceshaders.cs | 6 ++-- src/multipeerconnectivity.cs | 2 +- src/naturallanguage.cs | 4 +-- src/networkextension.cs | 4 +-- src/passkit.cs | 14 ++++---- src/pdfkit.cs | 4 +-- src/photos.cs | 2 +- src/photosui.cs | 2 +- src/replaykit.cs | 6 ++-- src/safariservices.cs | 2 +- src/scenekit.cs | 6 ++-- src/security.cs | 6 ++-- src/social.cs | 2 +- src/speech.cs | 2 +- src/spritekit.cs | 2 +- src/storekit.cs | 2 +- src/uikit.cs | 32 +++++++++---------- src/usernotifications.cs | 7 ++-- src/usernotificationsui.cs | 4 +-- src/vision.cs | 2 +- src/webkit.cs | 2 +- src/xkit.cs | 2 +- 72 files changed, 184 insertions(+), 190 deletions(-) diff --git a/src/AVFoundation/Enums.cs b/src/AVFoundation/Enums.cs index ad01fdbef58c..793aedb1014e 100644 --- a/src/AVFoundation/Enums.cs +++ b/src/AVFoundation/Enums.cs @@ -313,7 +313,7 @@ public enum AVError : long { OperationInterrupted = -11847, /// Indicates that the media format is not supported by the device. IncompatibleAsset = -11848, - /// Indicates taht the media data could not be loaded due to missing required data. + /// Indicates that the media data could not be loaded due to missing required data. FailedToLoadMediaData = -11849, /// Indicates that the media server is not correctly configured. ServerIncorrectlyConfigured = -11850, diff --git a/src/AudioToolbox/AudioBuffers.cs b/src/AudioToolbox/AudioBuffers.cs index de94fc9ef8fd..b8ae09c4c6f3 100644 --- a/src/AudioToolbox/AudioBuffers.cs +++ b/src/AudioToolbox/AudioBuffers.cs @@ -41,9 +41,7 @@ public class AudioBuffers : IDisposable, INativeObject { readonly bool owns; /// Pointer to an existing C-based AudioBufferList. - /// Creates and AudioBuffers object that can be used to query and manipulate a native AudioBuffersList structure. - /// - /// + /// Creates an AudioBuffers object that can be used to query and manipulate a native AudioBuffersList structure. public AudioBuffers (IntPtr address) : this (address, false) { @@ -51,8 +49,7 @@ public AudioBuffers (IntPtr address) /// Pointer to an existing C-based AudioBufferList. /// Determines whether the user code owns the buffer pointed to by address, in that case, calling Dispose will release the buffer. - /// Creates and AudioBuffers object that can be used to query and manipulate a native AudioBuffersList structure. - /// Creates and AudioBuffers object that can be used to query and manipulate a native AudioBuffersList structure. + /// Creates an AudioBuffers object that can be used to query and manipulate a native AudioBuffersList structure. /// /// If you set owns to true, the structure pointed to by /// "address" will be released when you call . diff --git a/src/AudioToolbox/AudioFile.cs b/src/AudioToolbox/AudioFile.cs index db9c72ccaea8..f4b9ffc0fee3 100644 --- a/src/AudioToolbox/AudioFile.cs +++ b/src/AudioToolbox/AudioFile.cs @@ -76,7 +76,7 @@ public enum AudioFileType { // UInt32 AudioFileTypeID M4A = 0x6d346166, // m4af /// MPEG-4 Audio Layer with metadata for bookmarks, chapter markers, images and hyperlinks. M4B = 0x6d346266, // m4bf - /// Apple Core Audio Format. CAF files are containers that can contain multiple audio formats, metadata tracks. Uses 64-bit offsetes, so it is not limited to 4GB. + /// Apple Core Audio Format. CAF files are containers that can contain multiple audio formats and metadata tracks. Uses 64-bit offsets, so the format is not limited to 4GB. CAF = 0x63616666, // caff /// 3GP (3GPP file format) is a multimedia container format defined by the Third Generation Partnership Project (3GPP) for 3G UMTS multimedia services. It is used on 3G mobile phones but can also be played on some 2G and 4G phones. ThreeGP = 0x33677070, // 3gpp @@ -2804,4 +2804,3 @@ protected void Open (AudioFileType fileTypeHint) } } } - diff --git a/src/AudioToolbox/AudioFileStream.cs b/src/AudioToolbox/AudioFileStream.cs index 43704a8569b4..7522ab3b4b56 100644 --- a/src/AudioToolbox/AudioFileStream.cs +++ b/src/AudioToolbox/AudioFileStream.cs @@ -324,7 +324,7 @@ protected virtual void OnPacketDecoded (int numberOfBytes, IntPtr inputData, Aud public EventHandler? PropertyFound; /// The property that has been found. /// - /// Invoked when a propety is found. + /// Invoked when a property is found. /// The default implementation merely raises the PropetyFound event. protected virtual void OnPropertyFound (AudioFileStreamProperty propertyID, ref AudioFileStreamPropertyFlag ioFlags) { @@ -418,7 +418,7 @@ public AudioFileStreamStatus ParseBytes (byte [] bytes, bool discontinuity) } /// Buffer containing the data. - /// First byte withing the array that contains the data to decode. + /// First byte within the array that contains the data to decode. /// Number of bytes to parse. /// True if this invocation to ParseBytes is contiguous to the previous one, false otherwise. /// Parses and decode a portion of the array of bytes provided. diff --git a/src/AudioToolbox/AudioSessions.cs b/src/AudioToolbox/AudioSessions.cs index c7c4c5d48326..9b312d7945a4 100644 --- a/src/AudioToolbox/AudioSessions.cs +++ b/src/AudioToolbox/AudioSessions.cs @@ -259,7 +259,7 @@ public enum AudioSessionInputRouteKind { // UInt32 AudioSessionPropertyID HeadsetMic, /// Bluetooth based microphone BluetoothHFP, - /// Microphone connected through USB (connected either throught the Lightning or 30-pin ports). + /// Microphone connected through USB (connected either through the Lightning or 30-pin ports). USBAudio, } diff --git a/src/AudioToolbox/AudioType.cs b/src/AudioToolbox/AudioType.cs index 599e1c437337..034ec2c7d7d3 100644 --- a/src/AudioToolbox/AudioType.cs +++ b/src/AudioToolbox/AudioType.cs @@ -281,7 +281,7 @@ public struct AudioStreamBasicDescription { const int AudioUnitSampleFractionBits = 24; const AudioFormatFlags AudioFormatFlagIsBigEndian = 0; - /// Developers should not use this deprecated field. Canonical is no longer encouraged, since fixed-point no longer provides a performance advantage over floating point. 'AudioFormatFlagsNativeFloatPacked' is preffered instead. + /// Developers should not use this deprecated field. Canonical is no longer encouraged, since fixed-point no longer provides a performance advantage over floating point. 'AudioFormatFlagsNativeFloatPacked' is preferred instead. /// To be added. [SupportedOSPlatform ("ios")] [SupportedOSPlatform ("maccatalyst")] @@ -1834,7 +1834,7 @@ public enum MPEG4ObjectID { // long Hvxc = 9, } - /// SMPTE-based time representation. SMPTE times are used to synchronize an point in the audio stream with some external event. + /// SMPTE-based time representation. SMPTE times are used to synchronize a point in the audio stream with some external event. /// SMPTE stands for "Society of Motion Picture and Television Engineers" [SupportedOSPlatform ("ios")] [SupportedOSPlatform ("maccatalyst")] diff --git a/src/AudioUnit/AUEnums.cs b/src/AudioUnit/AUEnums.cs index d0cc1e3bf07d..7f6bd0a50c2d 100644 --- a/src/AudioUnit/AUEnums.cs +++ b/src/AudioUnit/AUEnums.cs @@ -1180,7 +1180,7 @@ public enum AudioUnitBusType : long { /// Enumerates flag values that describe the state of an audio transport. [Native] public enum AUHostTransportStateFlags : ulong { - /// Indicates that state change has occured, such as a stop, start, seek, or other change since the host transport state block was last called. + /// Indicates that a state change has occurred, such as a stop, start, seek, or other change since the host transport state block was last called. Changed = 1, /// Indicates that the transport is moving. Moving = 2, @@ -1208,7 +1208,7 @@ public enum AudioComponentInstantiationOptions : uint { LoadedRemotely = 1u << 31, } - /// Enumerates audio unit bus input-ouput capabilities. + /// Enumerates audio unit bus input-output capabilities. [Native] public enum AUAudioUnitBusType : long { /// Indicates an input bus. diff --git a/src/AudioUnit/AudioUnit.cs b/src/AudioUnit/AudioUnit.cs index 964a6443c67d..93ea3fb278ee 100644 --- a/src/AudioUnit/AudioUnit.cs +++ b/src/AudioUnit/AudioUnit.cs @@ -1625,11 +1625,11 @@ public struct AURenderEvent { [SupportedOSPlatform ("tvos")] [StructLayout (LayoutKind.Sequential)] public struct AURecordedParameterEvent { - /// The host time at which the change occured. + /// The host time at which the change occurred. /// To be added. public ulong HostTime; - /// The numeric identfier of the parameter. + /// The numeric identifier of the parameter. /// To be added. public ulong Address; diff --git a/src/CloudKit/Enums.cs b/src/CloudKit/Enums.cs index 66cc226b715a..5c15dc25c0bd 100644 --- a/src/CloudKit/Enums.cs +++ b/src/CloudKit/Enums.cs @@ -8,7 +8,7 @@ namespace CloudKit { [MacCatalyst (13, 1)] [Native] public enum CKAccountStatus : long { - /// An error occured when the application tried to determine if the user's account is available. + /// An error occurred when the application tried to determine if the user's account is available. CouldNotDetermine = 0, /// The user's account is available. Available = 1, @@ -37,7 +37,7 @@ public enum CKApplicationPermissions : ulong { public enum CKApplicationPermissionStatus : long { /// The application has not yet requested the permission. InitialState = 0, - /// An error occured while attempting to obtain the permission. + /// An error occurred while attempting to obtain the permission. CouldNotComplete = 1, /// The user denied the permission request. Denied = 2, diff --git a/src/CoreAnimation/CALayer.cs b/src/CoreAnimation/CALayer.cs index c1f2ce814ead..8af4b7110e68 100644 --- a/src/CoreAnimation/CALayer.cs +++ b/src/CoreAnimation/CALayer.cs @@ -67,8 +67,8 @@ void MarkDirtyIfDerived () MarkDirty (true); } - /// The other layer to copy infromation from. - /// This method should be overwritten to provide cloning capabilities for the layer. + /// The other layer to copy information from. + /// This method should be overridden to provide cloning capabilities for the layer. /// You can either override this method and clone the information that you need from the original layer, or perform the copy in your initWithLayer: constructor (see the class description for details and a sample). public virtual void Clone (CALayer other) { diff --git a/src/CoreImage/CIContext.cs b/src/CoreImage/CIContext.cs index 10baa88ca773..d0f845579dab 100644 --- a/src/CoreImage/CIContext.cs +++ b/src/CoreImage/CIContext.cs @@ -37,7 +37,7 @@ #nullable enable namespace CoreImage { - /// Use to configure the CIContext rendering pipeline. + /// Used to configure the CIContext rendering pipeline. /// You would use an instance of this class to configure the CIContext rendering operations. [SupportedOSPlatform ("ios")] [SupportedOSPlatform ("maccatalyst")] diff --git a/src/CoreImage/CIFilter.cs b/src/CoreImage/CIFilter.cs index 3ee3998cb41c..6441ce736d2c 100644 --- a/src/CoreImage/CIFilter.cs +++ b/src/CoreImage/CIFilter.cs @@ -133,7 +133,7 @@ internal CIFilter (string name) } /// To be added. - /// Returns an array of strings that specifies the filters taht the system provides for the specified . + /// Returns an array of strings that specifies the filters that the system provides for the specified . /// To be added. /// To be added. public static string [] FilterNamesInCategories (params string []? categories) diff --git a/src/CoreImage/CISampler.cs b/src/CoreImage/CISampler.cs index ad1ae7ee7466..fc61e7da35e9 100644 --- a/src/CoreImage/CISampler.cs +++ b/src/CoreImage/CISampler.cs @@ -52,7 +52,7 @@ public enum CIFilterMode { Linear, } - /// Options to conrol sampler operations for objects. + /// Options to control sampler operations for objects. /// To be added. [SupportedOSPlatform ("ios")] [SupportedOSPlatform ("maccatalyst")] diff --git a/src/CoreMedia/CMAttachmentBearer.cs b/src/CoreMedia/CMAttachmentBearer.cs index 447482d87b67..74aa70c835db 100644 --- a/src/CoreMedia/CMAttachmentBearer.cs +++ b/src/CoreMedia/CMAttachmentBearer.cs @@ -63,7 +63,7 @@ public static class CMAttachmentBearer { /// The object on which this method operates. /// The string that identifies the attachment to return. /// An out parameter that receives a value that tells whether the attachment should propagate or not. - /// Returns the attachment that is identifed by and writes the attachment propagation mode to . + /// Returns the attachment that is identified by and writes the attachment propagation mode to . /// The specified attachment. /// To be added. public static T? GetAttachment (this ICMAttachmentBearer target, string key, out CMAttachmentMode attachmentModeOut) where T : class, INativeObject @@ -132,7 +132,7 @@ public static void RemoveAllAttachments (this ICMAttachmentBearer target) extern static void CMRemoveAttachment (/* CMAttachmentBearerRef */ IntPtr target, /* CFStringRef */ IntPtr key); /// The object on which this method operates. /// The string that identifies the attachment to remove. - /// Removes the attachment that is identifed by . + /// Removes the attachment that is identified by . /// To be added. public static void RemoveAttachment (this ICMAttachmentBearer target, string key) { diff --git a/src/CoreMidi/MidiThruConnectionParams.cs b/src/CoreMidi/MidiThruConnectionParams.cs index 73952ec67437..d563a4e94284 100644 --- a/src/CoreMidi/MidiThruConnectionParams.cs +++ b/src/CoreMidi/MidiThruConnectionParams.cs @@ -115,7 +115,7 @@ public byte [] Value { [NativeName ("MIDIControlTransform")] [StructLayout (LayoutKind.Sequential)] public struct MidiControlTransform { - /// MIDI conrol type. + /// MIDI control type. /// To be added. public MidiTransformControlType ControlType; /// Resulting control type. @@ -131,7 +131,7 @@ public struct MidiControlTransform { /// This is ignored when  is set to  or . public short Param; - /// MIDI conrol type. + /// MIDI control type. /// Resulting control type. /// Number of the control to be transformed. /// Transformation type to be applied. diff --git a/src/EventKit/EKEnums.cs b/src/EventKit/EKEnums.cs index a8b08d1a9d3c..85f69e0a325a 100644 --- a/src/EventKit/EKEnums.cs +++ b/src/EventKit/EKEnums.cs @@ -125,7 +125,7 @@ public enum EKErrorCode : long { SourceDoesNotAllowCalendarAddDelete, /// A recurring reminder's due date was missing. RecurringReminderRequiresDueDate, - /// The soure does not support structured locations. + /// The source does not support structured locations. StructuredLocationsNotSupported, /// Locations are not supported for reminders on the source. ReminderLocationsNotSupported, diff --git a/src/Foundation/Enum.cs b/src/Foundation/Enum.cs index ae1fd78e9856..d4ebacbb72b2 100644 --- a/src/Foundation/Enum.cs +++ b/src/Foundation/Enum.cs @@ -1077,7 +1077,7 @@ public enum NSSearchPathDirectory : ulong { CachesDirectory = 13, /// Application support directory (Library/Application Support) ApplicationSupportDirectory = 14, - /// Downloads directory (only avaialble when the domain specified includes the User value) + /// Downloads directory (only available when the domain specified includes the User value) DownloadsDirectory = 15, /// Input methods directory (Library/Input Methods) InputMethodsDirectory = 16, diff --git a/src/Foundation/NSMutableUrlRequest.cs b/src/Foundation/NSMutableUrlRequest.cs index 110c23f40b62..bd81ceff4638 100644 --- a/src/Foundation/NSMutableUrlRequest.cs +++ b/src/Foundation/NSMutableUrlRequest.cs @@ -9,7 +9,7 @@ public partial class NSUrlRequest { /// /// diff --git a/src/Foundation/ProtocolAttribute.cs b/src/Foundation/ProtocolAttribute.cs index 2b22ce42d415..930314e65ec5 100644 --- a/src/Foundation/ProtocolAttribute.cs +++ b/src/Foundation/ProtocolAttribute.cs @@ -60,7 +60,7 @@ public sealed class ProtocolAttribute : Attribute { /// public ProtocolAttribute () { } - /// The type of a specific managed type that can be used to wrap an instane of this protocol. + /// The specific managed type that can be used to wrap an instance of this protocol. /// To be added. /// Objective-C protocols are bound as interfaces in managed code, but sometimes a class is needed (in certain /// scenarios our Objective-C-managed bridge have the pointer to an instance of a native object and we only know that it diff --git a/src/MediaPlayer/MediaPlayer.cs b/src/MediaPlayer/MediaPlayer.cs index 0a083c99f6d0..76a53140f02f 100644 --- a/src/MediaPlayer/MediaPlayer.cs +++ b/src/MediaPlayer/MediaPlayer.cs @@ -446,7 +446,7 @@ public enum MPErrorCode : long { CloudServiceCapabilityMissing, /// A connection to the network could not be established. NetworkConnectionFailed, - /// The identifer was not found in the store front. + /// The identifier was not found in the storefront. NotFound, /// The operation was not supported. NotSupported, diff --git a/src/NetworkExtension/NEEnums.cs b/src/NetworkExtension/NEEnums.cs index d7ab3e725efb..e64c3519dd22 100644 --- a/src/NetworkExtension/NEEnums.cs +++ b/src/NetworkExtension/NEEnums.cs @@ -333,7 +333,7 @@ public enum NEProviderStopReason : long { IdleTimeout = 8, /// The network configuration was disabled. ConfigurationDisabled = 9, - /// The netowrk configuration was removed. + /// The network configuration was removed. ConfigurationRemoved = 10, /// The configuration was superseded by another. Superseded = 11, diff --git a/src/ObjCRuntime/ExceptionMode.cs b/src/ObjCRuntime/ExceptionMode.cs index d0aa79a1c8be..45f5b5c2d443 100644 --- a/src/ObjCRuntime/ExceptionMode.cs +++ b/src/ObjCRuntime/ExceptionMode.cs @@ -37,7 +37,7 @@ public enum MarshalObjectiveCExceptionMode { /* This enum must always match the identical enum in runtime/xamarin/main.h */ - /// This enum is used to specify what to do when an managed exception is thrown, and that exception reaches native code. + /// This enum is used to specify what to do when a managed exception is thrown, and that exception reaches native code. /// Exception marshaling public enum MarshalManagedExceptionMode { /// The default mode. This is currently the same as . @@ -52,7 +52,7 @@ public enum MarshalManagedExceptionMode { /// /// /// This option is not recommended, because it leads to undefined behavior (the app may crash, leak memory, deadlock, etc.) - /// if managed exceptions reaches native code (the MonoVM runtime does not know how to unwind native frames, so anything can + /// if managed exceptions reach native code (the MonoVM runtime does not know how to unwind native frames, so anything can /// happen). The recommended option is . /// /// @@ -61,7 +61,7 @@ public enum MarshalManagedExceptionMode { /// Convert the managed exception to an Objective-C exception. This is the recommended option (and also the default behavior). ThrowObjectiveCException = 2, - /// Abort when a managed exception reaches native code. This may be useful during debugging to easily detect when managed exceptions reaches native code. + /// Abort when a managed exception reaches native code. This may be useful during debugging to easily detect when managed exceptions reach native code. Abort = 3, /// Disable marshalling managed exceptions. This is effectively the same as , except that no events will be raised. diff --git a/src/PassKit/PKShareablePassMetadata.cs b/src/PassKit/PKShareablePassMetadata.cs index d8536311d9f0..23d9604ffd1f 100644 --- a/src/PassKit/PKShareablePassMetadata.cs +++ b/src/PassKit/PKShareablePassMetadata.cs @@ -18,9 +18,9 @@ public enum CardType { Configuration = 1, } - /// Create a new instance. + /// Creates a new instance. /// The credential identifier for the new instance. - /// The sharing instance identifer for the new instance. + /// The sharing instance identifier for the new instance. /// The card template identifier for the new instance. /// The preview for the new instance. [SupportedOSPlatform ("ios16.0")] @@ -32,9 +32,9 @@ public PKShareablePassMetadata (string credentialIdentifier, string sharingInsta { } - /// Create a new instance. + /// Creates a new instance. /// The credential identifier for the new instance. - /// The sharing instance identifer for the new instance. + /// The sharing instance identifier for the new instance. /// The template identifier for the new instance. /// The preview for the new instance. /// Specifies whether the parameter specifies a card template identifier or a card configuration identifier. diff --git a/src/Security/Enums.cs b/src/Security/Enums.cs index 3c05fda6c908..4a26085ed2f2 100644 --- a/src/Security/Enums.cs +++ b/src/Security/Enums.cs @@ -847,9 +847,9 @@ public enum SecTrustResult { Unspecified, /// Not enough information is available to trust this certificate. If extra information is supplied then it could be trusted (or not). RecoverableTrustFailure, - /// The certificate could not be trace back to a trusted root. + /// The certificate could not be traced back to a trusted root. FatalTrustFailure, - /// An error occured while trying to determine the certificate trust. + /// An error occurred while trying to determine the certificate trust. ResultOtherError, } diff --git a/src/SensitiveContentAnalysis/SCVideoStreamAnalyzer.cs b/src/SensitiveContentAnalysis/SCVideoStreamAnalyzer.cs index e43ed8560327..a9ab2fe3f48d 100644 --- a/src/SensitiveContentAnalysis/SCVideoStreamAnalyzer.cs +++ b/src/SensitiveContentAnalysis/SCVideoStreamAnalyzer.cs @@ -7,11 +7,11 @@ namespace SensitiveContentAnalysis { #if __IOS__ && !__MACCATALYST__ public partial class SCVideoStreamAnalyzer { - /// Create a new instance with the specified particant and stream direction. + /// Creates a new instance with the specified participant and stream direction. /// The unique identifier for a participant in the conference call. /// Specifies whether the stream comes from the local camera or a remote location. /// The error object if an error occurs. - /// A new instance with the specified particant and stream direction if successful, otherwise. + /// A new instance with the specified participant and stream direction if successful; otherwise, . public static SCVideoStreamAnalyzer? Create (string participantUuid, SCVideoStreamAnalyzerStreamDirection streamDirection, out NSError? error) { var rv = new SCVideoStreamAnalyzer (NSObjectFlag.Empty); diff --git a/src/StoreKit/Enums.cs b/src/StoreKit/Enums.cs index 2fa3d171e13e..ac7d32a7245b 100644 --- a/src/StoreKit/Enums.cs +++ b/src/StoreKit/Enums.cs @@ -132,7 +132,7 @@ public enum SKCloudServiceCapability : ulong { AddToCloudMusicLibrary = 1 << 8, } - /// Enumerates visiblity settings for a promoted product. + /// Enumerates visibility settings for a promoted product. [Deprecated (PlatformName.iOS, 18, 0 /* Apple's replacement requires Swift */ )] [Deprecated (PlatformName.MacCatalyst, 18, 0 /* Apple's replacement requires Swift */ )] [Deprecated (PlatformName.MacOSX, 15, 0 /* Apple's replacement requires Swift */ )] diff --git a/src/UIKit/UIEnums.cs b/src/UIKit/UIEnums.cs index af27c0601f2c..8b293ea198b7 100644 --- a/src/UIKit/UIEnums.cs +++ b/src/UIKit/UIEnums.cs @@ -664,7 +664,7 @@ public enum UIDocumentState : ulong { } // NSInteger -> UIImagePickerController.h - /// An enumeration of values used to specify the source using by the . + /// An enumeration of values used to specify the source used by the . [Native] [NoTV] [MacCatalyst (13, 1)] @@ -3054,7 +3054,7 @@ public enum UIPreviewActionStyle : long { /// /// objects model not just digital presses but, for instance, trackpads, so a may have both location and force data. Additionally, the system may cancel tracking of a button press at any time. This leads to the following state-machine: /// - /// Statechart showing states and transitions occuring during a press + /// Statechart showing states and transitions occurring during a press /// /// [MacCatalyst (13, 1)] @@ -3722,7 +3722,7 @@ public enum UIPrintErrorCode : long { NoContentError, /// Indicates that UIKit does not recognize the image format. UnknownImageFormatError, - /// Indicates that an internal print error occured. + /// Indicates that an internal print error occurred. JobFailedError, } diff --git a/src/WatchConnectivity/WCEnums.cs b/src/WatchConnectivity/WCEnums.cs index c51b2c2f4600..9d00ed5a6522 100644 --- a/src/WatchConnectivity/WCEnums.cs +++ b/src/WatchConnectivity/WCEnums.cs @@ -44,7 +44,7 @@ public enum WCErrorCode : long { /// Indicates that the receiver did not have enough storage to receive the payload. InsufficientSpace = 7015, // iOS 9.3 / watchOS 2.2 - /// Indicates taht the session was not active. + /// Indicates that the session was not active. SessionInactive = 7016, /// Indicates that the transfer timed out. TransferTimedOut = 7017, diff --git a/src/audiounit.cs b/src/audiounit.cs index c2ada8ae64bb..1054187fdd6f 100644 --- a/src/audiounit.cs +++ b/src/audiounit.cs @@ -442,7 +442,7 @@ AUParameterTree ParameterTree { [Export ("renderQuality", ArgumentSemantic.Assign)] nint RenderQuality { get; set; } - /// Gets or sets a Boolean value that contols whether an effect should skip processing and go directly to the output. + /// Gets or sets a Boolean value that controls whether an effect should skip processing and go directly to the output. /// To be added. /// To be added. [Export ("shouldBypassEffect")] @@ -825,7 +825,7 @@ interface AUAudioUnitBus { /// Gets or sets the latency of the processing context for the audio unit. /// To be added. - /// For input units, this is the time, in seconds, since the arriving audio was acquired. For ouput units, this is the delay, in seconds, until the output is presented. + /// For input units, this is the time, in seconds, since the arriving audio was acquired. For output units, this is the delay, in seconds, until the output is presented. [Export ("contextPresentationLatency")] double ContextPresentationLatency { get; set; } @@ -884,8 +884,8 @@ interface AUAudioUnitBusArray : INSFastEnumeration { // -(AUAudioUnitBus * __nonnull)objectAtIndexedSubscript:(NSUInteger)index; /// The zero-based index into the bus array of the desired bus. - /// Returns the bus at the spcified location in the array. - /// The bus at the spcified location in the array. + /// Returns the bus at the specified location in the array. + /// The bus at the specified location in the array. /// To be added. [Export ("objectAtIndexedSubscript:")] AUAudioUnitBus GetObject (nuint index); diff --git a/src/avfoundation.cs b/src/avfoundation.cs index a8f3cc65ec86..b91326ac5a67 100644 --- a/src/avfoundation.cs +++ b/src/avfoundation.cs @@ -1750,7 +1750,7 @@ interface AVAudioFormat : NSSecureCoding { [Export ("isEqual:"), Internal] bool IsEqual (NSObject obj); - /// Gets a specialized descripter, if required, that is needed to decompress the audio data. + /// Gets a specialized descriptor, if required, that is needed to decompress the audio data. /// /// (More documentation for this node is coming) /// This value can be . @@ -2682,7 +2682,7 @@ interface AVAudioRecorder { /// To be added. /// /// This method creates or erases a file for recording. - /// The method will call this method if ncessary, but application developers may choose to explicitly call it in order to minimize startup lag. + /// The method will call this method if necessary, but application developers may choose to explicitly call it in order to minimize startup lag. /// [Export ("prepareToRecord")] bool PrepareToRecord (); @@ -16145,7 +16145,7 @@ interface AVCaptureFileOutput { /// A delegate object that allows the application developer to respond to events in a object. /// - /// As with many AV Foundation methods, starting, stop, and pause commands are asynchronous and it is only here, in the delegate objet, that one can rely on the state of the underlying capture. + /// As with many AV Foundation methods, starting, stop, and pause commands are asynchronous, and it is only here, in the delegate object, that one can rely on the state of the underlying capture. /// /// Apple documentation for AVCaptureFileOutputRecordingDelegate [BaseType (typeof (NSObject))] @@ -17377,7 +17377,7 @@ interface AVCaptureStillImageOutput { [Export ("automaticallyEnablesStillImageStabilizationWhenAvailable")] bool AutomaticallyEnablesStillImageStabilizationWhenAvailable { get; set; } - /// Indicates whether image stabilzation is currently active for the current capture session. + /// Indicates whether image stabilization is currently active for the current capture session. /// To be added. /// To be added. [NoMac] diff --git a/src/avkit.cs b/src/avkit.cs index a9c0d9cdcac4..96f0660f68dd 100644 --- a/src/avkit.cs +++ b/src/avkit.cs @@ -965,7 +965,7 @@ interface AVRoutePickerView { /// Initializes the AVRoutePickerView with the specified frame. /// /// This constructor is used to programmatically create a new instance of AVRoutePickerView with the specified dimension in the frame. The object will only be displayed once it has been added to a view hierarchy by calling AddSubview in a containing view. - /// This constructor is not invoked when deserializing objects from storyboards or XIB filesinstead the constructor that takes an NSCoder parameter is invoked. + /// This constructor is not invoked when deserializing objects from storyboards or XIB files; instead, the constructor that takes an NSCoder parameter is invoked. /// [Export ("initWithFrame:")] NativeHandle Constructor (CGRect frame); diff --git a/src/callkit.cs b/src/callkit.cs index 39b35106609b..2ffc411d8033 100644 --- a/src/callkit.cs +++ b/src/callkit.cs @@ -64,7 +64,7 @@ public enum CXErrorCodeIncomingCallError : long { [ErrorDomain ("CXErrorDomainRequestTransaction")] [Native] public enum CXErrorCodeRequestTransactionError : long { - /// An unknown error occured. + /// An unknown error occurred. Unknown = 0, /// To be added. Unentitled = 1, @@ -89,7 +89,7 @@ public enum CXErrorCodeRequestTransactionError : long { [ErrorDomain ("CXErrorDomainCallDirectoryManager")] [Native] public enum CXErrorCodeCallDirectoryManagerError : long { - /// An unknown error occured. + /// An unknown error occurred. Unknown = 0, /// The extension could not be found. NoExtensionFound = 1, @@ -287,7 +287,7 @@ interface CXCallAction { NativeHandle Constructor (NSUuid callUuid); } - /// Informs the system about in-band user actions, such as reqeusts to start a call, or to put a call on hold. + /// Informs the system about in-band user actions, such as requests to start a call or put a call on hold. /// /// Apple documentation for CXCallController [NoMac] diff --git a/src/carplay.cs b/src/carplay.cs index dd73fe127ca7..16dc0b747dd7 100644 --- a/src/carplay.cs +++ b/src/carplay.cs @@ -1614,7 +1614,7 @@ interface CPSearchTemplateDelegate { /// To be added. /// To be added. /// To be added. - /// Developers must overrride this method to respond to a search selection. + /// Developers must override this method to respond to a search selection. /// To be added. [Abstract] [Export ("searchTemplate:selectedResult:completionHandler:")] diff --git a/src/classkit.cs b/src/classkit.cs index 8b4a3746cab4..0bded3971fd6 100644 --- a/src/classkit.cs +++ b/src/classkit.cs @@ -531,7 +531,7 @@ interface CLSDataStore { [Async (XmlDocs = """ The identifier paths for the contexts to find. - Finds the contexts identifed by a set of identifier paths and returns a task that contains the reults. + Finds the contexts identified by a set of identifier paths and returns a task that contains the results. A task that contains the search results To be added. """)] diff --git a/src/coreanimation.cs b/src/coreanimation.cs index 6bb498002157..e30d4d2d5e38 100644 --- a/src/coreanimation.cs +++ b/src/coreanimation.cs @@ -220,7 +220,7 @@ interface CAConstraint : NSSecureCoding { interface CADisplayLink { /// Target object to invoke the selector on. /// Selector to invoke. - /// Objective-C style registeration of the method to be invoked every time the display is about to be updated. + /// Objective-C style registration of the method to be invoked every time the display is about to be updated. /// The DisplayLink object that will invoke the specified method on each screen update. /// /// @@ -1628,7 +1628,7 @@ interface CAReplicatorLayer { /// Apple documentation for CAScrollLayer [BaseType (typeof (CALayer))] interface CAScrollLayer { - /// Creates a new sroll layer with default values. + /// Creates a new scroll layer with default values. /// To be added. /// To be added. [Export ("layer"), New, Static] @@ -3272,7 +3272,7 @@ interface CAEmitterCell : CAMediaTiming, NSSecureCoding { [Export ("enabled")] bool Enabled { [Bind ("isEnabled")] get; set; } - /// Gets or sets the frequeny, in Hz, at which particles are emitted. + /// Gets or sets the frequency, in Hz, at which particles are emitted. /// To be added. /// To be added. [Export ("birthRate")] diff --git a/src/coreaudiokit.cs b/src/coreaudiokit.cs index 0ca1eeba8a2e..e11944beb8c6 100644 --- a/src/coreaudiokit.cs +++ b/src/coreaudiokit.cs @@ -252,7 +252,7 @@ interface CAInterAppAudioSwitcherView { /// Initializes the CAInterAppAudioSwitcherView with the specified frame. /// /// This constructor is used to programmatically create a new instance of CAInterAppAudioSwitcherView with the specified dimension in the frame. The object will only be displayed once it has been added to a view hierarchy by calling AddSubview in a containing view. - /// This constructor is not invoked when deserializing objects from storyboards or XIB filesinstead the constructor that takes an NSCoder parameter is invoked. + /// This constructor is not invoked when deserializing objects from storyboards or XIB files; instead, the constructor that takes an NSCoder parameter is invoked. /// [Export ("initWithFrame:")] NativeHandle Constructor (CGRect bounds); @@ -283,7 +283,7 @@ interface CAInterAppAudioTransportView { /// Initializes the CAInterAppAudioTransportView with the specified frame. /// /// This constructor is used to programmatically create a new instance of CAInterAppAudioTransportView with the specified dimension in the frame. The object will only be displayed once it has been added to a view hierarchy by calling AddSubview in a containing view. - /// This constructor is not invoked when deserializing objects from storyboards or XIB filesinstead the constructor that takes an NSCoder parameter is invoked. + /// This constructor is not invoked when deserializing objects from storyboards or XIB files; instead, the constructor that takes an NSCoder parameter is invoked. /// [Export ("initWithFrame:")] NativeHandle Constructor (CGRect bounds); diff --git a/src/coredata.cs b/src/coredata.cs index cf0161fcd576..86b9cbec4d0b 100644 --- a/src/coredata.cs +++ b/src/coredata.cs @@ -18,7 +18,7 @@ namespace CoreData { /// To be added. [StrongDictionary ("UserInfoKeys")] interface UserInfo { - /// Gets or sets an array that contains the multiple erros that occurred, if multiple errors occurred. + /// Gets or sets an array that contains the multiple errors that occurred, if multiple errors occurred. /// An array of objects that contains the errors that occurred. /// To be added. NSError [] DetailedErrors { get; set; } @@ -53,7 +53,7 @@ interface UserInfo { [Static] interface UserInfoKeys { /// To be added. - /// A key that identifies an array of objects that contains the errors that occured. + /// A key that identifies an array of objects that contains the errors that occurred. /// /// This key corresponds to the property. /// @@ -897,7 +897,7 @@ interface NSFetchRequestExpression { [Export ("initWithExpressionType:")] NativeHandle Constructor (NSExpressionType type); - /// The expression from which to create a new fetch request expresssion. + /// The expression from which to create a new fetch request expression. /// The context in which to create the fetch request expression. /// Whether to create a fetch request expression that counts the matches, rather than returning them. /// Creates a new from the specified expression and context. @@ -1229,7 +1229,7 @@ interface NSFetchedResultsController { NSIndexPath FromObject (NSObject obj); /// To be added. - /// Returns the obect that is located at the specified index . + /// Returns the object that is located at the specified index . /// To be added. /// To be added. [Export ("objectAtIndexPath:")] @@ -1409,7 +1409,7 @@ interface NSIncrementalStore { /// To be added. /// To be added. /// To be added. - /// Returns a for the persisten external values of the identified object and reports any errors in . + /// Returns a for the persistent external values of the identified object and reports any errors in . /// To be added. /// To be added. [Export ("newValuesForObjectWithID:withContext:error:")] @@ -1440,7 +1440,7 @@ interface NSIncrementalStore { /// To be added. /// To be added. - /// Returns an array of permanent identfiers for the provides newly-inserted objects and reports any errors in . + /// Returns an array of permanent identifiers for the provided newly inserted objects and reports any errors in . /// To be added. /// To be added. [Export ("obtainPermanentIDsForObjects:error:")] @@ -1582,7 +1582,7 @@ interface NSManagedObject : NSFetchRequestResult { [Export ("entity", ArgumentSemantic.Strong)] NSEntityDescription Entity { get; } - /// Gets the object identifer. + /// Gets the object identifier. /// To be added. /// This value changes when an unsaved object is saved. [Export ("objectID", ArgumentSemantic.Strong)] @@ -2117,7 +2117,7 @@ interface NSManagedObjectContext : NSCoding /// To be added. /// To be added. - /// Converts the objec identifiers to permanent identifiers for the provided . Returns if all of the identifiers were converted. + /// Converts the object identifiers to permanent identifiers for the provided . Returns if all of the identifiers were converted. /// To be added. /// To be added. [Export ("obtainPermanentIDsForObjects:error:")] @@ -2214,7 +2214,7 @@ interface NSManagedObjectContext : NSCoding [return: NullAllowed] NSManagedObject GetExistingObject (NSManagedObjectID objectID, out NSError error); - /// Gets or sets a Boolean value that controls whether inaccessible faults wil be deleted. + /// Gets or sets a Boolean value that controls whether inaccessible faults will be deleted. /// To be added. /// To be added. [MacCatalyst (13, 1)] @@ -2227,7 +2227,7 @@ interface NSManagedObjectContext : NSCoding /// To be added. /// This parameter can be . /// - /// Returns a Boolean value that controls whether inaccessible faults wil be handled. + /// Returns a Boolean value that controls whether inaccessible faults will be handled. /// To be added. /// To be added. [MacCatalyst (13, 1)] @@ -2243,7 +2243,7 @@ interface NSManagedObjectContext : NSCoding [Export ("mergeChangesFromRemoteContextSave:intoContexts:")] void MergeChangesFromRemoteContextSave (NSDictionary changeNotificationData, NSManagedObjectContext [] contexts); - /// Gets the token that identifes the current query generation behavior. + /// Gets the token that identifies the current query generation behavior. /// /// (More documentation for this node is coming) /// This value can be . @@ -3868,7 +3868,7 @@ partial interface NSPersistentStoreCoordinator [Export ("initWithManagedObjectModel:")] NativeHandle Constructor (NSManagedObjectModel model); - /// Gets the managed objec model for the receiver. + /// Gets the managed object model for the receiver. /// To be added. /// To be added. [Export ("managedObjectModel", ArgumentSemantic.Strong)] @@ -4459,7 +4459,7 @@ interface NSBatchUpdateResult { NSBatchUpdateRequestResultType ResultType { get; } } - /// Class that represents the results of an aysnchronous request that was made of a persistent data store. + /// Class that represents the results of an asynchronous request that was made of a persistent data store. /// To be added. /// Apple documentation for NSPersistentStoreAsynchronousResult [MacCatalyst (13, 1)] @@ -5410,4 +5410,3 @@ interface NSCustomMigrationStage { NativeHandle Constructor (NSManagedObjectModelReference currentModel, NSManagedObjectModelReference nextModel); } } - diff --git a/src/coreimage.cs b/src/coreimage.cs index 213280840904..96a7abb07525 100644 --- a/src/coreimage.cs +++ b/src/coreimage.cs @@ -1095,7 +1095,7 @@ interface CIFilter : NSSecureCoding, NSCopying { /// /// Each filter has a set of attributes that control it. You can /// get this list by requesting the Attributes dictionary from the - /// filter. Each fitler, in addition to having a series of + /// filter. Each filter, in addition to having a series of /// configurable properties always includes its name /// ("CIAttributeFilterName" key), a user friendly name /// ("CIAttributeFilterDisplayName" key) and a list of categories @@ -1140,7 +1140,7 @@ string Name { /// To be added. /// This parameter can be . /// - /// Returns an array of strings that specifies the filters taht the system provides for the specified . + /// Returns an array of strings that specifies the filters that the system provides for the specified . /// To be added. /// To be added. [Static] @@ -1701,7 +1701,7 @@ interface CIRawFilterKeys { interface CIRawFilterOptions { /// - /// if draft mode shoud be allowed. (Switching this key is an expensive operation.) + /// if draft mode should be allowed. (Switching this key is an expensive operation.) /// To be added. /// To be added. [MacCatalyst (13, 1)] @@ -5245,7 +5245,7 @@ interface CIVector : NSSecureCoding, NSCopying { NativeHandle Constructor (CGRect r); /// To be added. - /// Creates a new CIVector by flattening the six values in an affine transform into the first six posistions in the new CIVector. + /// Creates a new CIVector by flattening the six values in an affine transform into the first six positions in the new CIVector. /// To be added. [MacCatalyst (13, 1)] [Export ("initWithCGAffineTransform:")] @@ -5618,7 +5618,7 @@ interface CIFaceFeature { bool RightEyeClosed { get; } } - /// A an image space rectange that contains a detected physical rectangle. + /// A describing an image-space rectangle that contains a detected physical rectangle. /// /// Apple documentation for CIRectangleFeature [MacCatalyst (13, 1)] @@ -5772,7 +5772,7 @@ interface CIImageProcessorKernel { /// Developers should set this as necessary. /// Developers should override this method to perform custom processing on the . /// - /// if the processing completed successfuly. + /// if the processing completed successfully. /// To be added. [Static] [Export ("processWithInputs:arguments:output:error:")] @@ -7145,7 +7145,7 @@ interface CILightTunnelProtocol : CIFilterProtocol { [Export ("center", ArgumentSemantic.Assign)] CGPoint InputCenter { get; set; } - /// Gets or sets the initial anlge of the image sample. + /// Gets or sets the initial angle of the image sample. /// To be added. /// To be added. [Abstract] @@ -11162,14 +11162,14 @@ interface CIHighlightShadowAdjustProtocol : CIFilterProtocol { [Export ("radius")] float Radius { get; set; } - /// Gets or sets a value in the range [0,1] that contols by how much to brighten shaded areas. + /// Gets or sets a value in the range [0,1] that controls how much to brighten shaded areas. /// To be added. /// To be added. [Abstract] [Export ("shadowAmount")] float ShadowAmount { get; set; } - /// Gets or sets a value in the range [0,1] that contols by how much to dampen highlights. + /// Gets or sets a value in the range [0,1] that controls how much to dampen highlights. /// To be added. /// To be added. [Abstract] @@ -12050,7 +12050,7 @@ interface CIPdf417BarcodeGeneratorProtocol : CIFilterProtocol { [Export ("compactionMode")] float InputCompactionMode { get; set; } - /// Gets or sets an integer with Boolean semantics that controls whether redunant elements should be omitted to save space. 1 is true. 0 is false. + /// Gets or sets an integer with Boolean semantics that controls whether redundant elements should be omitted to save space. 1 is true. 0 is false. [Abstract] [Export ("compactStyle")] float InputCompactStyle { get; set; } diff --git a/src/corelocation.cs b/src/corelocation.cs index be093d2c80b8..e8ed95a9a061 100644 --- a/src/corelocation.cs +++ b/src/corelocation.cs @@ -404,7 +404,7 @@ partial interface CLLocationManager { [Export ("locationServicesEnabled"), Static] bool LocationServicesEnabled { get; } - /// The minimum change in heading, in degreees, necessary to generate a location update. + /// The minimum change in heading, in degrees, necessary to generate a location update. /// The default value is 1 (degree). /// To be added. [NoTV] @@ -1182,7 +1182,7 @@ interface CLPlacemark : NSSecureCoding, NSCopying { [NullAllowed, Export ("ISOcountryCode")] string IsoCountryCode { get; } - /// An array of relevant areas of interest (large parks, miltary bases, attractions, etc). + /// An array of relevant areas of interest (large parks, military bases, attractions, etc). /// To be added. /// To be added. [NullAllowed, Export ("areasOfInterest")] @@ -1566,7 +1566,7 @@ interface CLGeocoder { """)] void GeocodeAddress (NSDictionary addressDictionary, CLGeocodeCompletionHandler completionHandler); - /// Adress that you want to submit. + /// Address that you want to submit. /// Method to invoke when the request completes. /// Request a latitude/longitude location from a human readable address. /// @@ -1600,7 +1600,7 @@ interface CLGeocoder { """)] void GeocodeAddress (string addressString, CLGeocodeCompletionHandler completionHandler); - /// Adress that you want to submit. + /// Address that you want to submit. /// Region to limit the lookup for. /// Method to invoke when the request completes. /// Request a latitude/longitude location from a human readable address and region. diff --git a/src/corespotlight.cs b/src/corespotlight.cs index 3521ee8012e9..0ce6d2f6dfd5 100644 --- a/src/corespotlight.cs +++ b/src/corespotlight.cs @@ -2380,7 +2380,7 @@ interface CSSearchableItemAttributeSet : NSCopying, NSSecureCoding { [NullAllowed, Export ("containerDisplayName")] string ContainerDisplayName { get; set; } - /// Gets or sets the identifer of the item's container. + /// Gets or sets the identifier of the item's container. /// /// (More documentation for this node is coming) /// This value can be . diff --git a/src/eventkit.cs b/src/eventkit.cs index 73f688072e98..fc84002bd522 100644 --- a/src/eventkit.cs +++ b/src/eventkit.cs @@ -433,7 +433,7 @@ interface EKParticipant : NSCopying { NSPredicate ContactPredicate { get; } } - /// Represents how the EKRecurrence ends. Either by number of ocurrences or using a specific date. + /// Represents how the EKRecurrence ends, either by number of occurrences or by using a specific date. /// /// Apple documentation for EKRecurrenceEnd [BaseType (typeof (NSObject))] diff --git a/src/foundation.cs b/src/foundation.cs index 3e95a4434032..915fe5d0c9f7 100644 --- a/src/foundation.cs +++ b/src/foundation.cs @@ -136,7 +136,7 @@ namespace Foundation { namespace Foundation { /// To be added. /// To be added. - /// A delegate that defines the comparison function to be used with functins such as . + /// A delegate that defines the comparison function to be used with functions such as . /// To be added. /// To be added. delegate NSComparisonResult NSComparator (NSObject obj1, NSObject obj2); @@ -2254,7 +2254,7 @@ interface NSCoder { /// Low-level: decodes the item with the associated key into a memory block, /// and returns a pointer to it. /// Pointer to the block of memory that contains at least - /// the number of bytes set on the lenght parameter. + /// the number of bytes set on the length parameter. /// /// [Export ("decodeBytesForKey:returnedLength:")] @@ -2264,7 +2264,7 @@ interface NSCoder { /// Low-level: decodes the next item into a memory block, /// and returns a pointer to it. /// Pointer to the block of memory that contains at least - /// the number of bytes set on the lenght parameter. + /// the number of bytes set on the length parameter. /// /// [Export ("decodeBytesWithReturnedLength:")] @@ -8025,7 +8025,7 @@ interface NSUserDefaults { /// /// /// - /// // Retrieve the gloabl NSButtonDelay setting on MacOS: + /// // Retrieve the global NSButtonDelay setting on macOS: /// var global = new NSUserDefaults (NSUserDefaults.GlobalDomain); /// Console.WriteLine ("Delay: " + j.FloatForKey ("NSButtonDelay")); /// @@ -8034,7 +8034,7 @@ interface NSUserDefaults { [Field ("NSGlobalDomain")] NSString GlobalDomain { get; } - /// This is they key used to retrieve the domain associated with the command line arguments passed at startup. + /// This is the key used to retrieve the domain associated with the command line arguments passed at startup. /// /// /// @@ -8051,7 +8051,7 @@ interface NSUserDefaults { /// /// /// - /// // Retrieve the gloabl NSButtonDelay setting on MacOS: + /// // Retrieve the global NSButtonDelay setting on macOS: /// var global = new NSUserDefaults (NSUserDefaults.GlobalDomain); /// Console.WriteLine ("Delay: " + j.FloatForKey ("NSButtonDelay")); /// @@ -12654,7 +12654,7 @@ interface NSStringDrawingContext { [Export ("minimumScaleFactor")] nfloat MinimumScaleFactor { get; set; } - /// Desired tracking adjustement (minimum space to maintain between characteres) desired to be used during the drawing operation. + /// Desired tracking adjustment (minimum space to maintain between characters) to be used during the drawing operation. /// The value is specified in points, typically a value between -0.5f and 0. /// Zero means that standard spacing should be used. Use negative values to adjust the tracking, for example -0.5f allows characters to be closer together by half a point. [NoTV] diff --git a/src/gamekit.cs b/src/gamekit.cs index 7fb7a4a4cd3a..a058cc9f1b22 100644 --- a/src/gamekit.cs +++ b/src/gamekit.cs @@ -1593,7 +1593,7 @@ interface GKMatchDelegate { /// To be added. /// To be added. /// To be added. - /// Method that is called when the recieves data from another . + /// Method that is called when the receives data from another . /// To be added. [MacCatalyst (13, 1)] [Export ("match:didReceiveData:forRecipient:fromRemotePlayer:"), EventArgs ("GKDataReceivedForRecipient", XmlDocs = """ @@ -2271,7 +2271,7 @@ string PlayerID { [Async (XmlDocs = """ To be added. To be added. - Asychronously reports the provided achievements and challenges to Game Center. + Asynchronously reports the provided achievements and challenges to Game Center. To be added. To be added. """)] diff --git a/src/glkit.cs b/src/glkit.cs index 6d9f1b57d428..9d70fa9313a6 100644 --- a/src/glkit.cs +++ b/src/glkit.cs @@ -683,7 +683,7 @@ interface GLKTextureInfo : NSCopying { uint Depth { get; } } - /// The infromation about the texture loaded, or null on error. + /// The information about the texture loaded, or null on error. /// On success, this value is null. Otherwise it contains the error information. /// Signature used by the asynchrous texture loading methods in . delegate void GLKTextureLoaderCallback ([NullAllowed] GLKTextureInfo textureInfo, [NullAllowed] NSError error); @@ -1092,7 +1092,7 @@ interface GLKView { /// Initializes the GLKView with the specified frame. /// /// This constructor is used to programmatically create a new instance of GLKView with the specified dimension in the frame. The object will only be displayed once it has been added to a view hierarchy by calling AddSubview in a containing view. - /// This constructor is not invoked when deserializing objects from storyboards or XIB filesinstead the constructor that takes an NSCoder parameter is invoked. + /// This constructor is not invoked when deserializing objects from storyboards or XIB files; instead, the constructor that takes an NSCoder parameter is invoked. /// [Export ("initWithFrame:")] NativeHandle Constructor (CGRect frame); diff --git a/src/healthkit.cs b/src/healthkit.cs index ec5634090bf6..db6e6cec5e13 100644 --- a/src/healthkit.cs +++ b/src/healthkit.cs @@ -2891,7 +2891,7 @@ enum HKQuantityTypeIdentifier { [Field ("HKQuantityTypeIdentifierBodyFatPercentage")] BodyFatPercentage, - /// Indicates a height measurment. + /// Indicates a height measurement. [Field ("HKQuantityTypeIdentifierHeight")] Height, @@ -3461,7 +3461,7 @@ enum HKCategoryTypeIdentifier { [Field ("HKCategoryTypeIdentifierSexualActivity")] SexualActivity, - /// Indicates a category whose value idicates the user's mindfulness session. + /// Indicates a category whose value indicates the user's mindfulness session. [MacCatalyst (13, 1)] [Field ("HKCategoryTypeIdentifierMindfulSession")] MindfulSession, @@ -4951,7 +4951,7 @@ interface HKActivitySummaryQuery { NativeHandle Constructor ([NullAllowed] NSPredicate predicate, Action handler); } - /// Obect that is used to request permission to read objects. + /// Object that is used to request permission to read objects. /// Developers use the method. /// Apple documentation for HKActivitySummaryType [Mac (13, 0)] @@ -5162,7 +5162,7 @@ interface HKWorkoutBuilder { [Async (XmlDocs = """ The date and time the workout starts. - Starts the workout at the sepcified time, begins collecting workout data, and returns a task that contains a success status and any error that occurred. + Starts the workout at the specified time, begins collecting workout data, and returns a task that contains a success status and any error that occurred. A task that contains a success status and any error that occurred. To be added. """)] @@ -5212,8 +5212,8 @@ interface HKWorkoutBuilder { [Async (XmlDocs = """ The end time of the workout. - Ends the workout and returns a task that contains a success status and any error that occured. - A task that contains a success status and any error that occured. + Ends the workout and returns a task that contains a success status and any error that occurred. + A task that contains a success status and any error that occurred. To be added. """)] [Export ("endCollectionWithEndDate:completion:")] diff --git a/src/healthkitui.cs b/src/healthkitui.cs index 58597bdb8047..c8115add86cc 100644 --- a/src/healthkitui.cs +++ b/src/healthkitui.cs @@ -17,7 +17,7 @@ interface HKActivityRingView { /// Initializes the HKActivityRingView with the specified frame. /// /// This constructor is used to programmatically create a new instance of HKActivityRingView with the specified dimension in the frame. The object will only be displayed once it has been added to a view hierarchy by calling AddSubview in a containing view. - /// This constructor is not invoked when deserializing objects from storyboards or XIB filesinstead the constructor that takes an NSCoder parameter is invoked. + /// This constructor is not invoked when deserializing objects from storyboards or XIB files; instead, the constructor that takes an NSCoder parameter is invoked. /// [DesignatedInitializer] [Export ("initWithFrame:")] diff --git a/src/homekit.cs b/src/homekit.cs index 46fa48103e28..e8723a2a1033 100644 --- a/src/homekit.cs +++ b/src/homekit.cs @@ -2258,7 +2258,7 @@ interface HMCameraView { /// Initializes the HMCameraView with the specified frame. /// /// This constructor is used to programmatically create a new instance of HMCameraView with the specified dimension in the frame. The object will only be displayed once it has been added to a view hierarchy by calling AddSubview in a containing view. - /// This constructor is not invoked when deserializing objects from storyboards or XIB filesinstead the constructor that takes an NSCoder parameter is invoked. + /// This constructor is not invoked when deserializing objects from storyboards or XIB files; instead, the constructor that takes an NSCoder parameter is invoked. /// [Export ("initWithFrame:")] NativeHandle Constructor (CGRect frame); diff --git a/src/intents.cs b/src/intents.cs index 7bcbcf56e5e2..be127bd6d008 100644 --- a/src/intents.cs +++ b/src/intents.cs @@ -395,7 +395,7 @@ public enum INIntentErrorCode : long { InvalidUserVocabularyFileLocation = 4000, /// The extension timed out. ExtensionLaunchingTimeout = 5000, - /// An error occurred while tryig to start communication with an extension. + /// An error occurred while trying to start communication with an extension. ExtensionBringUpFailed = 5001, /// To be added. ImageGeneric = 6000, @@ -797,7 +797,7 @@ public enum INRequestPaymentIntentResponseCode : long { FailurePaymentsCurrencyUnsupported, /// Developers should use this code to indicate a failure because no bank account is configured. FailureNoBankAccount, - /// Developers should use this code to indicate a failure because the user is not eligible to either send or recieve funds via money transfer. + /// Developers should use this code to indicate a failure because the user is not eligible to either send or receive funds via money transfer. [NoMac] [MacCatalyst (13, 1)] FailureNotEligible, @@ -1943,7 +1943,7 @@ public enum INLocationSearchType : long { [MacCatalyst (13, 1)] [Native] public enum INMessageType : long { - /// Inidcates unspecified content. + /// Indicates unspecified content. Unspecified = 0, /// Indicates text. Text, diff --git a/src/mapkit.cs b/src/mapkit.cs index f83df9a5c214..1b4f59ee6e06 100644 --- a/src/mapkit.cs +++ b/src/mapkit.cs @@ -124,7 +124,7 @@ interface MKAnnotationView { /// Initializes the MKAnnotationView with the specified frame. /// /// This constructor is used to programmatically create a new instance of MKAnnotationView with the specified dimension in the frame. The object will only be displayed once it has been added to a view hierarchy by calling AddSubview in a containing view. - /// This constructor is not invoked when deserializing objects from storyboards or XIB filesinstead the constructor that takes an NSCoder parameter is invoked. + /// This constructor is not invoked when deserializing objects from storyboards or XIB files; instead, the constructor that takes an NSCoder parameter is invoked. /// [Export ("initWithFrame:")] NativeHandle Constructor (CGRect frame); @@ -291,7 +291,7 @@ interface MKCircleView { /// Initializes the MKCircleView with the specified frame. /// /// This constructor is used to programmatically create a new instance of MKCircleView with the specified dimension in the frame. The object will only be displayed once it has been added to a view hierarchy by calling AddSubview in a containing view. - /// This constructor is not invoked when deserializing objects from storyboards or XIB filesinstead the constructor that takes an NSCoder parameter is invoked. + /// This constructor is not invoked when deserializing objects from storyboards or XIB files; instead, the constructor that takes an NSCoder parameter is invoked. /// [Export ("initWithFrame:")] NativeHandle Constructor (CGRect frame); @@ -532,7 +532,7 @@ interface MKMapView { /// Initializes the MKMapView with the specified frame. /// /// This constructor is used to programmatically create a new instance of MKMapView with the specified dimension in the frame. The object will only be displayed once it has been added to a view hierarchy by calling AddSubview in a containing view. - /// This constructor is not invoked when deserializing objects from storyboards or XIB filesinstead the constructor that takes an NSCoder parameter is invoked. + /// This constructor is not invoked when deserializing objects from storyboards or XIB files; instead, the constructor that takes an NSCoder parameter is invoked. /// [Export ("initWithFrame:")] NativeHandle Constructor (CGRect frame); @@ -1200,7 +1200,7 @@ interface MKPinAnnotationView { /// Initializes the MKPinAnnotationView with the specified frame. /// /// This constructor is used to programmatically create a new instance of MKPinAnnotationView with the specified dimension in the frame. The object will only be displayed once it has been added to a view hierarchy by calling AddSubview in a containing view. - /// This constructor is not invoked when deserializing objects from storyboards or XIB filesinstead the constructor that takes an NSCoder parameter is invoked. + /// This constructor is not invoked when deserializing objects from storyboards or XIB files; instead, the constructor that takes an NSCoder parameter is invoked. /// [Export ("initWithFrame:")] NativeHandle Constructor (CGRect frame); @@ -1427,7 +1427,7 @@ interface MKOverlayView { /// Initializes the MKOverlayView with the specified frame. /// /// This constructor is used to programmatically create a new instance of MKOverlayView with the specified dimension in the frame. The object will only be displayed once it has been added to a view hierarchy by calling AddSubview in a containing view. - /// This constructor is not invoked when deserializing objects from storyboards or XIB filesinstead the constructor that takes an NSCoder parameter is invoked. + /// This constructor is not invoked when deserializing objects from storyboards or XIB files; instead, the constructor that takes an NSCoder parameter is invoked. /// [Export ("initWithFrame:")] NativeHandle Constructor (CGRect frame); @@ -1496,7 +1496,7 @@ interface MKOverlayPathView { /// Initializes the MKOverlayPathView with the specified frame. /// /// This constructor is used to programmatically create a new instance of MKOverlayPathView with the specified dimension in the frame. The object will only be displayed once it has been added to a view hierarchy by calling AddSubview in a containing view. - /// This constructor is not invoked when deserializing objects from storyboards or XIB filesinstead the constructor that takes an NSCoder parameter is invoked. + /// This constructor is not invoked when deserializing objects from storyboards or XIB files; instead, the constructor that takes an NSCoder parameter is invoked. /// [Export ("initWithFrame:")] NativeHandle Constructor (CGRect frame); @@ -1604,7 +1604,7 @@ interface MKPolygonView { /// Initializes the MKPolygonView with the specified frame. /// /// This constructor is used to programmatically create a new instance of MKPolygonView with the specified dimension in the frame. The object will only be displayed once it has been added to a view hierarchy by calling AddSubview in a containing view. - /// This constructor is not invoked when deserializing objects from storyboards or XIB filesinstead the constructor that takes an NSCoder parameter is invoked. + /// This constructor is not invoked when deserializing objects from storyboards or XIB files; instead, the constructor that takes an NSCoder parameter is invoked. /// [Export ("initWithFrame:")] NativeHandle Constructor (CGRect frame); @@ -1688,7 +1688,7 @@ interface MKPolylineView { /// Initializes the MKPolylineView with the specified frame. /// /// This constructor is used to programmatically create a new instance of MKPolylineView with the specified dimension in the frame. The object will only be displayed once it has been added to a view hierarchy by calling AddSubview in a containing view. - /// This constructor is not invoked when deserializing objects from storyboards or XIB filesinstead the constructor that takes an NSCoder parameter is invoked. + /// This constructor is not invoked when deserializing objects from storyboards or XIB files; instead, the constructor that takes an NSCoder parameter is invoked. /// [Export ("initWithFrame:")] NativeHandle Constructor (CGRect frame); @@ -2635,7 +2635,7 @@ interface MKLocalSearchCompleterDelegate { void DidUpdateResults (MKLocalSearchCompleter completer); /// The search completer to which this delegate belongs. - /// The error that occured. + /// The error that occurred. /// The search completer encountered an error while searching for completions. /// To be added. [Export ("completer:didFailWithError:")] diff --git a/src/mediaplayer.cs b/src/mediaplayer.cs index 8116000a2177..d0b1c1f6e66e 100644 --- a/src/mediaplayer.cs +++ b/src/mediaplayer.cs @@ -2246,7 +2246,7 @@ interface MPMusicPlayerController : MPMediaPlayback { NSString VolumeDidChangeNotification { get; } } - /// A that presents a slider control used to set the system output volume.. + /// A that presents a slider control used to set the system output volume. /// To be added. /// Apple documentation for MPVolumeView [NoMac] @@ -2258,7 +2258,7 @@ interface MPVolumeView { /// Initializes the MPVolumeView with the specified frame. /// /// This constructor is used to programmatically create a new instance of MPVolumeView with the specified dimension in the frame. The object will only be displayed once it has been added to a view hierarchy by calling AddSubview in a containing view. - /// This constructor is not invoked when deserializing objects from storyboards or XIB filesinstead the constructor that takes an NSCoder parameter is invoked. + /// This constructor is not invoked when deserializing objects from storyboards or XIB files; instead, the constructor that takes an NSCoder parameter is invoked. /// [Export ("initWithFrame:")] NativeHandle Constructor (CGRect frame); diff --git a/src/metalperformanceshaders.cs b/src/metalperformanceshaders.cs index 4c6a4d706c10..ea58911f66e9 100644 --- a/src/metalperformanceshaders.cs +++ b/src/metalperformanceshaders.cs @@ -936,7 +936,7 @@ interface MPSImageDilate { NativeHandle Constructor (NSCoder aDecoder, IMTLDevice device); } - /// Finds the mininum value in a region, offset by a corresponding value in a mask. + /// Finds the minimum value in a region, offset by a corresponding value in a mask. /// /// Apple documentation for MPSImageErode [MacCatalyst (13, 1)] @@ -3450,7 +3450,7 @@ interface MPSMatrixDescriptor { [Export ("rows")] nuint Rows { get; set; } - /// Gets the nubmer of columns that are in the matrix. + /// Gets the number of columns that are in the matrix. /// To be added. /// To be added. [Export ("columns")] @@ -3555,7 +3555,7 @@ interface MPSMatrix { [Export ("rows")] nuint Rows { get; } - /// Gets the nubmer of columns that are in the matrix. + /// Gets the number of columns that are in the matrix. /// To be added. /// To be added. [Export ("columns")] diff --git a/src/multipeerconnectivity.cs b/src/multipeerconnectivity.cs index ee8aa60276ac..cded5771adfb 100644 --- a/src/multipeerconnectivity.cs +++ b/src/multipeerconnectivity.cs @@ -441,7 +441,7 @@ partial interface MCNearbyServiceBrowser { [Export ("initWithPeer:serviceType:")] NativeHandle Constructor (MCPeerID myPeerID, string serviceType); - /// Starts browing for local peers advertising for the . + /// Starts browsing for local peers advertising for the . /// To be added. [Export ("startBrowsingForPeers")] void StartBrowsingForPeers (); diff --git a/src/naturallanguage.cs b/src/naturallanguage.cs index c110d8d3206a..8abff004d78f 100644 --- a/src/naturallanguage.cs +++ b/src/naturallanguage.cs @@ -330,8 +330,8 @@ interface NLTagger { /// A character index for the desired range. /// The unit, which covers the , whose range to get. - /// Returns the lexical range of the that contains the spcified . - /// The lexical range of the that contains the spcified . + /// Returns the lexical range of the that contains the specified . + /// The lexical range of the that contains the specified . /// To be added. [Export ("tokenRangeAtIndex:unit:")] NSRange GetTokenRange (nuint characterIndex, NSString unit); diff --git a/src/networkextension.cs b/src/networkextension.cs index c89a26d536dc..23766babcb27 100644 --- a/src/networkextension.cs +++ b/src/networkextension.cs @@ -614,7 +614,7 @@ interface NEAppRule : NSSecureCoding, NSCopying { [NullAllowed, Export ("matchPath")] string MatchPath { get; set; } - /// Gets the siging identifer of the app that the rule matched. + /// Gets the signing identifier of the app that the rule matched. /// To be added. /// To be added. [Export ("matchSigningIdentifier")] @@ -2640,7 +2640,7 @@ interface NEVpnIke2SecurityAssociationParameters : NSSecureCoding, NSCopying { [Export ("diffieHellmanGroup")] NEVpnIke2DiffieHellman DiffieHellmanGroup { get; set; } - /// Gets or sets the Security Association's lifetime, in mintues. + /// Gets or sets the Security Association's lifetime, in minutes. /// To be added. /// To be added. [Export ("lifetimeMinutes")] diff --git a/src/passkit.cs b/src/passkit.cs index 1d7e1d1f2958..d82bc4bdf1f6 100644 --- a/src/passkit.cs +++ b/src/passkit.cs @@ -2125,8 +2125,8 @@ interface PKPaymentAuthorizationController { bool CanMakePayments { get; } /// To be added. - /// Gets a value that tells wether the user can make payments in at least one of the specified . - /// A value that tells wether the user can make payments in at least one of the specified . + /// Gets a value that tells whether the user can make payments in at least one of the specified . + /// A value that tells whether the user can make payments in at least one of the specified . /// To be added. [Static] [Export ("canMakePaymentsUsingNetworks:")] @@ -2134,8 +2134,8 @@ interface PKPaymentAuthorizationController { /// To be added. /// To be added. - /// Gets a value that tells wether the user can make payments in at least one of the specified with the specified . - /// A value that tells wether the user can make payments in at least one of the specified with the specified . + /// Gets a value that tells whether the user can make payments in at least one of the specified with the specified . + /// A value that tells whether the user can make payments in at least one of the specified with the specified . /// To be added. [Static] [Export ("canMakePaymentsUsingNetworks:capabilities:")] @@ -2308,7 +2308,7 @@ interface PKPaymentAuthorizationControllerDelegate { /// The controller that owns this delegate. /// The payment method that was selected. /// A handler that takes a list of updated payment summary items. - /// Mehod that is called when the user selects a payment method. + /// Method that is called when the user selects a payment method. /// To be added. [NoMac] [Deprecated (PlatformName.iOS, 11, 0, message: "Use 'DidSelectPaymentMethod' overload with the 'Action' parameter instead.")] @@ -2653,14 +2653,14 @@ interface PKPaymentRequestPaymentMethodUpdate { [Static] // not to enum'ify - exposed as NSString inside NSError interface PKPaymentErrorKeys { - /// Gets a key that identifes the contact field as the source of the error. + /// Gets a key that identifies the contact field as the source of the error. /// To be added. /// To be added. [MacCatalyst (13, 1)] [Field ("PKPaymentErrorContactFieldUserInfoKey")] NSString ContactFieldUserInfoKey { get; } - /// Gets a key that identifes the postal address field as the source of the error. + /// Gets a key that identifies the postal address field as the source of the error. /// To be added. /// To be added. [MacCatalyst (13, 1)] diff --git a/src/pdfkit.cs b/src/pdfkit.cs index 85bd8e20e53e..0ce310ba9263 100644 --- a/src/pdfkit.cs +++ b/src/pdfkit.cs @@ -2933,7 +2933,7 @@ interface PdfThumbnailView : NSCoding { /// Initializes the PdfThumbnailView with the specified frame. /// /// This constructor is used to programmatically create a new instance of PdfThumbnailView with the specified dimension in the frame. The object will only be displayed once it has been added to a view hierarchy by calling AddSubview in a containing view. - /// This constructor is not invoked when deserializing objects from storyboards or XIB filesinstead the constructor that takes an NSCoder parameter is invoked. + /// This constructor is not invoked when deserializing objects from storyboards or XIB files; instead, the constructor that takes an NSCoder parameter is invoked. /// [Export ("initWithFrame:")] NativeHandle Constructor (CGRect frame); @@ -3048,7 +3048,7 @@ interface PdfView : /// Initializes the PdfView with the specified frame. /// /// This constructor is used to programmatically create a new instance of PdfView with the specified dimension in the frame. The object will only be displayed once it has been added to a view hierarchy by calling AddSubview in a containing view. - /// This constructor is not invoked when deserializing objects from storyboards or XIB filesinstead the constructor that takes an NSCoder parameter is invoked. + /// This constructor is not invoked when deserializing objects from storyboards or XIB files; instead, the constructor that takes an NSCoder parameter is invoked. /// [Export ("initWithFrame:")] NativeHandle Constructor (CGRect frame); diff --git a/src/photos.cs b/src/photos.cs index 7458f0393ad4..dd72e3c2051c 100644 --- a/src/photos.cs +++ b/src/photos.cs @@ -564,7 +564,7 @@ interface PHObjectChangeDetails { // include the availability attributes to any new member (and don't trust the type-level ones) interface PHChangeRequest { } - /// Enumerates differences between snapshots of the objec at the specified indices. + /// Enumerates differences between snapshots of the object at the specified indices. [MacCatalyst (13, 1)] delegate void PHChangeDetailEnumerator (nuint fromIndex, nuint toIndex); diff --git a/src/photosui.cs b/src/photosui.cs index 367643f01875..6bce20ae271f 100644 --- a/src/photosui.cs +++ b/src/photosui.cs @@ -72,7 +72,7 @@ interface PHLivePhotoView { /// Initializes the PHLivePhotoView with the specified frame. /// /// This constructor is used to programmatically create a new instance of PHLivePhotoView with the specified dimension in the frame. The object will only be displayed once it has been added to a view hierarchy by calling AddSubview in a containing view. - /// This constructor is not invoked when deserializing objects from storyboards or XIB filesinstead the constructor that takes an NSCoder parameter is invoked. + /// This constructor is not invoked when deserializing objects from storyboards or XIB files; instead, the constructor that takes an NSCoder parameter is invoked. /// [Export ("initWithFrame:")] NativeHandle Constructor (CGRect frame); diff --git a/src/replaykit.cs b/src/replaykit.cs index 8d4294ec625c..53428bd4e5a7 100644 --- a/src/replaykit.cs +++ b/src/replaykit.cs @@ -417,7 +417,7 @@ interface IRPBroadcastControllerDelegate { } [Protocol, Model] [BaseType (typeof (NSObject))] interface RPBroadcastControllerDelegate { - /// The controller for the broadcast that finsihed. + /// The controller for the broadcast that finished. /// /// The error, if any, that ended the broadcast. /// This parameter can be . @@ -530,7 +530,7 @@ interface RPBroadcastMP4ClipHandler { void FinishedProcessingMP4Clip ([NullAllowed] RPBroadcastConfiguration broadcastConfiguration, [NullAllowed] NSError error); } - /// Processes ReplayKit buffer obects as they arrive. + /// Processes ReplayKit buffer objects as they arrive. /// /// Apple documentation for RPBroadcastSampleHandler [MacCatalyst (13, 1)] @@ -587,7 +587,7 @@ interface RPSystemBroadcastPickerView : NSCoding { /// Initializes the RPSystemBroadcastPickerView with the specified frame. /// /// This constructor is used to programmatically create a new instance of RPSystemBroadcastPickerView with the specified dimension in the frame. The object will only be displayed once it has been added to a view hierarchy by calling AddSubview in a containing view. - /// This constructor is not invoked when deserializing objects from storyboards or XIB filesinstead the constructor that takes an NSCoder parameter is invoked. + /// This constructor is not invoked when deserializing objects from storyboards or XIB files; instead, the constructor that takes an NSCoder parameter is invoked. /// [Export ("initWithFrame:")] NativeHandle Constructor (CGRect frame); diff --git a/src/safariservices.cs b/src/safariservices.cs index 902bfdf36479..d793a1265d17 100644 --- a/src/safariservices.cs +++ b/src/safariservices.cs @@ -68,7 +68,7 @@ interface SFContentBlockerManager { /// To be added. /// This parameter can be . /// - /// Relaods the specified content blocker and runs a completion handler when the operation completes. + /// Reloads the specified content blocker and runs a completion handler when the operation completes. /// To be added. [Async (XmlDocs = """ To be added. diff --git a/src/scenekit.cs b/src/scenekit.cs index 3eec0151310a..da20fa1b08d7 100644 --- a/src/scenekit.cs +++ b/src/scenekit.cs @@ -2141,13 +2141,13 @@ interface SCNHitTestOptions { /// /// bool BackFaceCulling { get; set; } - /// Control whether hit-testing uses the node's geometry, or if a bounding-box is used to optmize the hit-testing process speed. + /// Controls whether hit-testing uses the node's geometry, or whether a bounding box is used to optimize performance. /// If this value is not specified, the value assumed is false. /// /// By default, the hit-testing will use the node's geometry /// information to determine whether there was a hit. This /// process can be slow, so you can set this property to true to - /// constraint the search space to the bounxing box of the + /// constrain the search space to the bounding box of the /// target. /// bool BoundingBoxOnly { get; set; } @@ -4433,7 +4433,7 @@ interface SCNView : SCNSceneRenderer, SCNTechniqueSupport { /// Initializes the SCNView with the specified frame. /// /// This constructor is used to programmatically create a new instance of SCNView with the specified dimension in the frame. The object will only be displayed once it has been added to a view hierarchy by calling AddSubview in a containing view. - /// This constructor is not invoked when deserializing objects from storyboards or XIB filesinstead the constructor that takes an NSCoder parameter is invoked. + /// This constructor is not invoked when deserializing objects from storyboards or XIB files; instead, the constructor that takes an NSCoder parameter is invoked. /// [Export ("initWithFrame:")] NativeHandle Constructor (CGRect frame); diff --git a/src/security.cs b/src/security.cs index abdf41747700..802e18af81e8 100644 --- a/src/security.cs +++ b/src/security.cs @@ -340,15 +340,15 @@ enum SecKeyClass { /// To be added. Invalid = -1, - /// Public part of a symetric key. + /// Public part of a symmetric key. [Field ("kSecAttrKeyClassPublic")] Public = 0, - /// Private part of an asymetric key. + /// Private part of an asymmetric key. [Field ("kSecAttrKeyClassPrivate")] Private = 1, - /// A symetric key. + /// A symmetric key. [Field ("kSecAttrKeyClassSymmetric")] Symmetric = 2, } diff --git a/src/social.cs b/src/social.cs index 0071bfd6b038..25acb18e66c0 100644 --- a/src/social.cs +++ b/src/social.cs @@ -83,7 +83,7 @@ interface SLServiceType { } /// Enumeration with the various kinds of social services that can be used. - /// This enumeration is used to map into the underlying set of services offered by the social framework. It is intended to assist code completion while developing and take the gueswork out of using the framework in some entry points that take an NSString as a parameter. + /// This enumeration is used to map into the underlying set of services offered by the social framework. It is intended to assist code completion while developing and take the guesswork out of using the framework in some entry points that take an NSString as a parameter. enum SLServiceKind { /// Facebook services [Deprecated (PlatformName.iOS, 11, 0, message: "Use Facebook SDK instead.")] diff --git a/src/speech.cs b/src/speech.cs index 0fa5985fd2d5..a7ad742543fe 100644 --- a/src/speech.cs +++ b/src/speech.cs @@ -310,7 +310,7 @@ interface SFSpeechRecognizer { /// Gets whether speech recognition is currently available. /// To be added. /// - /// Speech recognition is not supported on all devices and is always relient on Internet access. + /// Speech recognition is not supported on all devices and is always reliant on Internet access. /// [Export ("available")] bool Available { [Bind ("isAvailable")] get; } diff --git a/src/spritekit.cs b/src/spritekit.cs index 5a7035f1ba8e..eb74711e6112 100644 --- a/src/spritekit.cs +++ b/src/spritekit.cs @@ -1605,7 +1605,7 @@ partial interface SKView /// Initializes the SKView with the specified frame. /// /// This constructor is used to programmatically create a new instance of SKView with the specified dimension in the frame. The object will only be displayed once it has been added to a view hierarchy by calling AddSubview in a containing view. - /// This constructor is not invoked when deserializing objects from storyboards or XIB filesinstead the constructor that takes an NSCoder parameter is invoked. + /// This constructor is not invoked when deserializing objects from storyboards or XIB files; instead, the constructor that takes an NSCoder parameter is invoked. /// [Export ("initWithFrame:")] NativeHandle Constructor (CGRect frame); diff --git a/src/storekit.cs b/src/storekit.cs index 23d61f95b735..5940c38a8adf 100644 --- a/src/storekit.cs +++ b/src/storekit.cs @@ -802,7 +802,7 @@ interface StoreProductParameters { [Export ("ProviderToken")] string ProviderToken { get; set; } - /// Gets or sets the ad network's cryptograpic signature. Used for attribution. + /// Gets or sets the ad network's cryptographic signature. Used for attribution. /// To be added. /// To be added. [NoMac] diff --git a/src/uikit.cs b/src/uikit.cs index 51b0013f7acc..852499dc19fb 100644 --- a/src/uikit.cs +++ b/src/uikit.cs @@ -1354,7 +1354,7 @@ interface UIAccessibilityContainer { NSObject GetAccessibilityElements (); /// To be added. - /// Assigns to the contents of the accessibilty container. + /// Assigns to the contents of the accessibility container. /// To be added. [MacCatalyst (13, 1)] [Export ("setAccessibilityElements:")] @@ -9673,7 +9673,7 @@ interface UITextRange { interface IUITextInput : INativeObject { } - /// IUITextInput works with the inputting of text and allows the manipulaton of features including autocorrection and many other text input features related to document presentation. + /// IUITextInput works with the inputting of text and allows the manipulation of features including autocorrection and many other text input features related to document presentation. /// To be added. [MacCatalyst (13, 1)] [Protocol] @@ -9857,7 +9857,7 @@ interface UITextInput : UIKeyInput { /// Constant indicating layout direction. /// A UITextRange object indicating the range of a document's text. - /// Sets a base directon for writing in the specified range of text. + /// Sets a base direction for writing in the specified range of text. /// To be added. [Abstract] [Export ("setBaseWritingDirection:forRange:")] @@ -14321,7 +14321,7 @@ interface UIPageControl : UIAppearance { void SetIndicatorImage ([NullAllowed] UIImage image, nint page); /// To be added. - /// The size this UIPageControl's Bounds needs to be to accomodate the specified number of pages. + /// The size this UIPageControl's Bounds needs to be to accommodate the specified number of pages. /// To be added. /// To be added. [Export ("sizeForNumberOfPages:")] @@ -16184,7 +16184,7 @@ UIEdgeInsets ScrollIndicatorInsets { [Export ("dragging")] bool Dragging { [Bind ("isDragging")] get; } - /// If this property returns , then scrolling is still occuring in the scroll view but the user is not dragging their finger. + /// If this property returns , then scrolling is still occurring in the scroll view but the user is not dragging their finger. /// /// /// @@ -16739,7 +16739,7 @@ interface UISearchBar : UIBarPositioning, UITextInputTraits, UILookToDictateCapa /// To be added. /// To be added. - /// The divider image used for the specified combination of left and righ t segment states. + /// The divider image used for the specified combination of left and right segment states. /// To be added. /// To be added. [Export ("scopeBarButtonDividerImageForLeftSegmentState:rightSegmentState:")] @@ -17439,7 +17439,7 @@ interface UISegmentedControl /// The segment index to return the title for. /// Allows the title for a particular segment to be retrieved. /// The title for a given segment - /// Retuns null if a title has not been set. + /// Returns null if a title has not been set. [Export ("titleForSegmentAtIndex:")] [return: NullAllowed] string TitleAt (nint segment); @@ -19943,7 +19943,7 @@ interface UITableViewDelegate { /// The table view containing the row/cell accessory that has been tapped. /// The location of the row in the table view. - /// Indictes that the user has tapped the accessory / disclosure buttom at the specified indexPath. + /// Indicates that the user has tapped the accessory/disclosure button at the specified indexPath. /// To be added. [Export ("tableView:accessoryButtonTappedForRowWithIndexPath:")] void AccessoryButtonTapped (UITableView tableView, NSIndexPath indexPath); @@ -24724,7 +24724,7 @@ interface UITextContentType { [Field ("UITextContentTypeNewPassword")] NSString NewPassword { get; } - /// Indicates a text field that acceps a one-time passcode. + /// Indicates a text field that accepts a one-time passcode. /// To be added. /// To be added. [MacCatalyst (13, 1)] @@ -28895,7 +28895,7 @@ interface UIDropSession : UIDragDropSession, NSProgressReporting { UIDropSessionProgressIndicatorStyle ProgressIndicatorStyle { get; set; } /// The class of objects to load. - /// Handler to run after the objecs are loaded. + /// Handler to run after the objects are loaded. /// When implemented by the developer, instantiates every object in the drop session that has the type that is specified by the parameter. /// To be added. /// To be added. @@ -29660,14 +29660,14 @@ interface UITextDragDelegate { [Export ("textDraggableView:willAnimateLiftWithAnimator:session:")] void WillAnimateLift (IUITextDraggable textDraggableView, IUIDragAnimating animator, IUIDragSession session); - /// The orginating view. + /// The originating view. /// The drag session that will begin. /// Method that is called just before a drag session begins. /// To be added. [Export ("textDraggableView:dragSessionWillBegin:")] void DragSessionWillBegin (IUITextDraggable textDraggableView, IUIDragSession session); - /// The orginating view. + /// The originating view. /// The drag session that ended. /// The operation that ended the session. /// Method that is called when the user cancels or completes the drag session. @@ -29962,7 +29962,7 @@ interface UISpringLoadedInteractionBehavior { interface IUISpringLoadedInteractionEffect { } - /// Interface for applying state-based visual styles to spring-loaded interations. + /// Interface for applying state-based visual styles to spring-loaded interactions. [NoTV] [MacCatalyst (13, 1)] [Protocol] @@ -30182,7 +30182,7 @@ interface UITextPasteItem { void SetAttributedStringResult (NSAttributedString @string); /// The new attachment value. - /// Sets the attachement result to the specified attachment. + /// Sets the attachment result to the specified attachment. /// To be added. [Abstract] [Export ("setAttachmentResult:")] @@ -30506,8 +30506,8 @@ interface IUIFocusItemContainer { } [NoMac] [Protocol] interface UIFocusItemContainer { - /// Gets the coordinate space implemenation. - /// The coordinate space implemenation. + /// Gets the coordinate space implementation. + /// The coordinate space implementation. /// To be added. [Abstract] [Export ("coordinateSpace")] diff --git a/src/usernotifications.cs b/src/usernotifications.cs index 6a18a1dd2b36..d15c6444f8f4 100644 --- a/src/usernotifications.cs +++ b/src/usernotifications.cs @@ -820,7 +820,7 @@ interface UNNotificationRequest : NSCopying, NSSecureCoding { [NullAllowed, Export ("trigger", ArgumentSemantic.Copy)] UNNotificationTrigger Trigger { get; } - /// An identifer, unique to the application scope. + /// An identifier, unique to the application scope. /// The content of the notification. /// /// The trigger that activates the notification when the trigger's conditions are met. @@ -862,8 +862,8 @@ interface UNNotificationResponse : NSCopying, NSSecureCoding { [Export ("notification", ArgumentSemantic.Copy)] UNNotification Notification { get; } - /// Gets the action identifer that tells what the user did in response to the notification. - /// The action identifer that tells what the user did in response to the notification. + /// Gets the action identifier that tells what the user did in response to the notification. + /// The action identifier that tells what the user did in response to the notification. /// To be added. [Export ("actionIdentifier")] NSString ActionIdentifier { get; } @@ -1439,4 +1439,3 @@ interface UNNotificationAttributedMessageContext : UNNotificationContentProvidin UNNotificationAttributedMessageContext Create (INSendMessageIntent sendMessageIntent, NSAttributedString attributedContent); } } - diff --git a/src/usernotificationsui.cs b/src/usernotificationsui.cs index 037d9079c60e..3afc78a1c9d1 100644 --- a/src/usernotificationsui.cs +++ b/src/usernotificationsui.cs @@ -23,11 +23,11 @@ namespace UserNotificationsUI { [Unavailable (PlatformName.TvOS)] [Native] public enum UNNotificationContentExtensionMediaPlayPauseButtonType : ulong { - /// Indicates that no playback controls should be overlayed on top of the notification content. + /// Indicates that no playback controls should be overlaid on top of the notification content. None, /// Indicates that the default playback control display method should be used. Default, - /// Indicates that playback controls should be overlayed on top of the notification content. + /// Indicates that playback controls should be overlaid on top of the notification content. Overlay, } diff --git a/src/vision.cs b/src/vision.cs index 6e633095bff6..526455d88c70 100644 --- a/src/vision.cs +++ b/src/vision.cs @@ -1632,7 +1632,7 @@ interface VNFaceObservationAccepting { VNFaceObservation [] InputFaceObservations { get; set; } } - /// Abstract sub-class of that attemps to align an image with a reference image. + /// Abstract subclass of that attempts to align an image with a reference image. [MacCatalyst (13, 1)] [Abstract] [DisableDefaultCtor] diff --git a/src/webkit.cs b/src/webkit.cs index 1dd59892f334..af8e1c34916b 100644 --- a/src/webkit.cs +++ b/src/webkit.cs @@ -5705,7 +5705,7 @@ interface WKWebsiteDataType { [Field ("WKWebsiteDataTypeLocalStorage", "WebKit")] NSString LocalStorage { get; } - /// Gets an NSString that signifies a WebSQL databse. + /// Gets an NSString that signifies a WebSQL database. /// The NSString object for "WKWebsiteDataTypeWebSQLDatabases". /// To be added. [Field ("WKWebsiteDataTypeWebSQLDatabases", "WebKit")] diff --git a/src/xkit.cs b/src/xkit.cs index cc0eceb7070f..312e24d8b258 100644 --- a/src/xkit.cs +++ b/src/xkit.cs @@ -422,7 +422,7 @@ partial interface NSLayoutManager : NSSecureCoding { /// Invalidates the layout information and glyphs for the specified and any following. /// To be added. /// - /// Application developers will typically not need to call this method unless they have subclassed (for example, creating a subclass that changes shape to accomodate placed graphics). + /// Application developers will typically not need to call this method unless they have subclassed (for example, creating a subclass that changes shape to accommodate placed graphics). /// [Export ("textContainerChangedGeometry:")] void TextContainerChangedGeometry (NSTextContainer container); From 00f45eeb28fe6793ecbda6c6bdfad83e388af36c Mon Sep 17 00:00:00 2001 From: Rolf Bjarne Kvinge Date: Fri, 17 Apr 2026 14:08:00 +0200 Subject: [PATCH 15/47] [tests] Improve diagnostics a bit for DeskCase_83099_InmutableDictionary when it fails. (#25172) This will hopefully help track down this random test failure: MonoTouchFixtures.Security.RecordTest [FAIL] DeskCase_83099_InmutableDictionary : Password could not be cleared from keychain --- tests/monotouch-test/Security/RecordTest.cs | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/tests/monotouch-test/Security/RecordTest.cs b/tests/monotouch-test/Security/RecordTest.cs index af4a398bb6d4..73eb44135dc5 100644 --- a/tests/monotouch-test/Security/RecordTest.cs +++ b/tests/monotouch-test/Security/RecordTest.cs @@ -332,8 +332,8 @@ public void DeskCase_83099_InmutableDictionary () Assert.IsTrue (StringUtil.StringsEqual (test4, "testValue2", false)); //TEST 5: Clear the keychain values - var test5 = ClearUserPassword (testUsername); - Assert.IsTrue (test5, "Password could not be cleared from keychain"); + var test5 = ClearUserPassword (testUsername, out queryCode, out var removeCode); + Assert.IsTrue (test5, $"Password could not be cleared from keychain. queryCode: {queryCode} removeCode: {removeCode}"); //TEST 6: Verify no keychain value var test6 = GetUserPassword (testUsername); @@ -401,19 +401,20 @@ public static void ForceRemoveUserPassword (string username) SecKeyChain.Remove (searchRecord); } - public static bool ClearUserPassword (string username) + public static bool ClearUserPassword (string username, out SecStatusCode queryCode, out SecStatusCode? removeCode) { var success = false; var searchRecord = CreateSecRecord (SecKind.InternetPassword, server: "Test1", account: username.ToLower () ); - SecStatusCode queryCode; var record = SecKeyChain.QueryAsRecord (searchRecord, out queryCode); if (queryCode == SecStatusCode.Success && record is not null) { - var removeCode = SecKeyChain.Remove (searchRecord); + removeCode = SecKeyChain.Remove (searchRecord); success = (removeCode == SecStatusCode.Success); + } else { + removeCode = null; } return success; } From 6ed27208370efd7eb96ac9ae2fdcd37bd26e9096 Mon Sep 17 00:00:00 2001 From: Alex Soto Date: Fri, 17 Apr 2026 09:24:41 -0400 Subject: [PATCH 16/47] [main] Bump Xcode to 26.4.1 (#25169) No new SDK changes --- Make.config | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Make.config b/Make.config index 89eed0961897..0e88c44f2ef0 100644 --- a/Make.config +++ b/Make.config @@ -208,9 +208,9 @@ MACCATALYST_NUGET_VERSION_FULL=$(MACCATALYST_NUGET_VERSION_NO_METADATA)$(NUGET_B # Xcode version should have both a major and a minor version (even if the minor version is 0) XCODE_VERSION=26.4 -XCODE_URL=https://bosstoragemirror.blob.core.windows.net/internal-files/xcodes/Xcode_26.4.xip +XCODE_URL=https://bosstoragemirror.blob.core.windows.net/internal-files/xcodes/Xcode_26.4.1.xip ifndef IS_LINUX -XCODE_DEVELOPER_ROOT=/Applications/Xcode_26.4.0.app/Contents/Developer +XCODE_DEVELOPER_ROOT=/Applications/Xcode_26.4.1.app/Contents/Developer XCODE_PRODUCT_BUILD_VERSION:=$(shell /usr/libexec/PlistBuddy -c 'Print :ProductBuildVersion' $(XCODE_DEVELOPER_ROOT)/../version.plist 2>/dev/null || echo " $(shell tput setaf 1 2>/dev/null)The required Xcode ($(XCODE_VERSION)) is not installed in $(basename $(basename $(XCODE_DEVELOPER_ROOT)))$(shell tput sgr0 2>/dev/null)" >&2) # We define stable Xcode as the Xcode app being named like "Xcode_#.#[.#].app" From ba7f211d29f98e05ae13c14cd780eb8693c23511 Mon Sep 17 00:00:00 2001 From: Rolf Bjarne Kvinge Date: Fri, 17 Apr 2026 15:59:57 +0200 Subject: [PATCH 17/47] [ObjCRuntime] Provide a way to remove an object from the object map. (#25166) Problem: empty NSStrings (@"") are singletons, and trying to create one always returns the same handle. This causes problems for the following sequence of events: * Such a singleton is exposed to managed code, and a corresponding managed wrapper is created. * The managed wrapper is manually disposed. * The singleton surfaces again, and now we can end up returning the existing (disposed) wrapper from the object map instead of a new managed instance. For empty NSStrings in particular: 1. There's a managed static NSString.Empty field, with a managed wrapper for a native @"" singleton. 2. Tests can create managed wrappers for @"", and if those managed wrappers are disposed, the managed NSString.Empty field now points to a disposed managed wrapper. The MonoTouchFixtures.Foundation.BundleTest.GetLocalizedString test in particular disposes of strings, and can dispose NSString.Empty. This is from a modified runtime where an exception is thrown if NSString.Empty is disposed: MonoTouchFixtures.Foundation.BundleTest [FAIL] GetLocalizedString : System.InvalidOperationException : This Foundation.NSString instance was unexpectedly disposed at Foundation.NSObject.Dispose(Boolean disposing) in /Users/rolf/work/dotnet/macios/main/macios/src/Foundation/NSObject2.cs:line 1108 at Foundation.NSObject.Dispose() in /Users/rolf/work/dotnet/macios/main/macios/src/Foundation/NSObject2.cs:line 365 at MonoTouchFixtures.Foundation.BundleTest.GetLocalizedString() at MonoTouchFixtures.Foundation.BundleTest.GetLocalizedString() at System.RuntimeMethodHandle.InvokeMethod(ObjectHandleOnStack target, Void** arguments, ObjectHandleOnStack sig, BOOL isConstructor, ObjectHandleOnStack result) at System.RuntimeMethodHandle.InvokeMethod(ObjectHandleOnStack target, Void** arguments, ObjectHandleOnStack sig, BOOL isConstructor, ObjectHandleOnStack result) at System.Reflection.MethodBaseInvoker.InterpretedInvoke_Method(Object obj, IntPtr* args) at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture) Fixes this test failure: MonoTouchFixtures.Foundation.StringTest [FAIL] ReleaseEmptyString : RetainCount Expected: 18446744073709551615 But was: 0 at MonoTouchFixtures.Foundation.StringTest.ReleaseEmptyString() because this test calls release a number of times on the static `NSString.Empty` field, and expects a certain `retainCount` afterwards, but that fails because `NSString.Empty` has been disposed, and then `RetainCount` returns 0 because it's being called on a null native object. --------- Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- src/Foundation/NSObject2.cs | 8 ++++++ src/Foundation/NSString.cs | 2 +- src/ObjCRuntime/Runtime.cs | 27 +++++++++++++++++++ ...alyst-MonoVM-interpreter-preservedapis.txt | 3 +++ .../MacCatalyst-MonoVM-interpreter-size.txt | 8 +++--- .../expected/MacCatalyst-MonoVM-size.txt | 6 ++--- .../expected/MacCatalyst-NativeAOT-size.txt | 4 +-- .../MacOSX-CoreCLR-Interpreter-size.txt | 6 ++--- .../expected/MacOSX-NativeAOT-size.txt | 6 ++--- .../TVOS-MonoVM-interpreter-preservedapis.txt | 3 +++ .../expected/TVOS-MonoVM-interpreter-size.txt | 6 ++--- .../UnitTests/expected/TVOS-MonoVM-size.txt | 4 +-- .../expected/TVOS-NativeAOT-size.txt | 6 ++--- .../iOS-MonoVM-interpreter-preservedapis.txt | 3 +++ .../expected/iOS-MonoVM-interpreter-size.txt | 8 +++--- .../UnitTests/expected/iOS-MonoVM-size.txt | 6 ++--- .../UnitTests/expected/iOS-NativeAOT-size.txt | 6 ++--- 17 files changed, 78 insertions(+), 34 deletions(-) diff --git a/src/Foundation/NSObject2.cs b/src/Foundation/NSObject2.cs index a303621f5e77..d5bec3334b99 100644 --- a/src/Foundation/NSObject2.cs +++ b/src/Foundation/NSObject2.cs @@ -1091,6 +1091,14 @@ internal void ClearHandle () handle = NativeHandle.Zero; } + // This is weird - a setter only - but it's so that we can remove an object right after creating it using object creation syntax: + // new NSString ("") { RemoveFromObjectMap = true }; + internal bool RemoveFromObjectMap { + set { + Runtime.RemoveFromObjectMap (this); + } + } + /// protected virtual void Dispose (bool disposing) { diff --git a/src/Foundation/NSString.cs b/src/Foundation/NSString.cs index c16bbc61d28b..31e72a4fdcb7 100644 --- a/src/Foundation/NSString.cs +++ b/src/Foundation/NSString.cs @@ -51,7 +51,7 @@ public partial class NSString : NSObject { #if !COREBUILD /// An instance for an empty (zero-length) string. - public static readonly NSString Empty = new NSString (String.Empty); + public static readonly NSString Empty = new NSString (String.Empty) { RemoveFromObjectMap = true }; internal NSString (NativeHandle handle, bool owns) : base (handle, owns) { diff --git a/src/ObjCRuntime/Runtime.cs b/src/ObjCRuntime/Runtime.cs index 7f63bdc3c785..bccaee71d5b7 100644 --- a/src/ObjCRuntime/Runtime.cs +++ b/src/ObjCRuntime/Runtime.cs @@ -1636,6 +1636,33 @@ static IntPtr CreateNSObject (IntPtr type_gchandle, IntPtr handle, NSObject.Flag return null; } + /// Remove an object from the object map. + /// + /// Removing an object from the object map can be necessary for managed wrapper objects that are singletons or not really Objective-C classes, but constant pointers. + /// For instance, the constant empty string (@"") is just a singleton pointer which can't be retained/released (retaining/releasing does nothing). + /// The problem arises when the managed wrapper for such a native handle is disposed, then subsequently it re-surfaces, and now we end up finding a + /// disposed object in the object map. + /// + internal static bool RemoveFromObjectMap (NSObject obj) + { + var handle = obj.GetHandle (); + if (handle == NativeHandle.Zero) + return false; + + lock (lock_obj) { + if (!object_map.TryGetValue (handle, out var reference)) + return false; + + if (!object.ReferenceEquals (reference.Target, obj)) + return false; + + object_map.Remove (handle); + reference.Free (); + } + + return true; + } + public static NSObject? GetNSObject (NativeHandle ptr) { return GetNSObject ((IntPtr) ptr, MissingCtorResolution.ThrowConstructor1NotFound); diff --git a/tests/dotnet/UnitTests/expected/MacCatalyst-MonoVM-interpreter-preservedapis.txt b/tests/dotnet/UnitTests/expected/MacCatalyst-MonoVM-interpreter-preservedapis.txt index b8e9b56c4af3..0403f0b1f58c 100644 --- a/tests/dotnet/UnitTests/expected/MacCatalyst-MonoVM-interpreter-preservedapis.txt +++ b/tests/dotnet/UnitTests/expected/MacCatalyst-MonoVM-interpreter-preservedapis.txt @@ -168,6 +168,7 @@ Microsoft.MacCatalyst.dll:Foundation.NSObject.set_handle(ObjCRuntime.NativeHandl Microsoft.MacCatalyst.dll:Foundation.NSObject.set_Handle(ObjCRuntime.NativeHandle) Microsoft.MacCatalyst.dll:Foundation.NSObject.set_HasManagedRef(System.Boolean) Microsoft.MacCatalyst.dll:Foundation.NSObject.set_IsDirectBinding(System.Boolean) +Microsoft.MacCatalyst.dll:Foundation.NSObject.set_RemoveFromObjectMap(System.Boolean) Microsoft.MacCatalyst.dll:Foundation.NSObject.ToString() Microsoft.MacCatalyst.dll:Foundation.NSObject.xamarin_release_managed_ref(System.IntPtr, System.Byte) Microsoft.MacCatalyst.dll:Foundation.NSObject.xamarin_set_gchandle_with_flags_safe(System.IntPtr, System.IntPtr, Foundation.NSObject/XamarinGCHandleFlags, System.IntPtr) @@ -706,6 +707,7 @@ Microsoft.MacCatalyst.dll:ObjCRuntime.Runtime.RegisterEntryAssembly(System.Refle Microsoft.MacCatalyst.dll:ObjCRuntime.Runtime.RegisterNSObject(Foundation.NSObject, System.IntPtr) Microsoft.MacCatalyst.dll:ObjCRuntime.Runtime.ReleaseBlockOnMainThread(System.IntPtr) Microsoft.MacCatalyst.dll:ObjCRuntime.Runtime.ReleaseBlockWhenDelegateIsCollected(System.IntPtr, System.Delegate) +Microsoft.MacCatalyst.dll:ObjCRuntime.Runtime.RemoveFromObjectMap(Foundation.NSObject) Microsoft.MacCatalyst.dll:ObjCRuntime.Runtime.retain_nativeobject(System.IntPtr, System.IntPtr*) Microsoft.MacCatalyst.dll:ObjCRuntime.Runtime.RetainNativeObject(ObjCRuntime.INativeObject) Microsoft.MacCatalyst.dll:ObjCRuntime.Runtime.RetainNativeObject(System.IntPtr) @@ -1208,6 +1210,7 @@ Microsoft.MacCatalyst.dll:System.Boolean Foundation.NSObject::HasManagedRef() Microsoft.MacCatalyst.dll:System.Boolean Foundation.NSObject::InFinalizerQueue() Microsoft.MacCatalyst.dll:System.Boolean Foundation.NSObject::IsDirectBinding() Microsoft.MacCatalyst.dll:System.Boolean Foundation.NSObject::IsRegisteredToggleRef() +Microsoft.MacCatalyst.dll:System.Boolean Foundation.NSObject::RemoveFromObjectMap() Microsoft.MacCatalyst.dll:System.Boolean Foundation.NSObject/NSObject_Disposer::draining Microsoft.MacCatalyst.dll:System.Boolean Foundation.NSObjectDataHandle::invalidated Microsoft.MacCatalyst.dll:System.Boolean Foundation.NSObjectDataHandle::IsInvalid() diff --git a/tests/dotnet/UnitTests/expected/MacCatalyst-MonoVM-interpreter-size.txt b/tests/dotnet/UnitTests/expected/MacCatalyst-MonoVM-interpreter-size.txt index 5147b3a4ef20..cae3bad2843b 100644 --- a/tests/dotnet/UnitTests/expected/MacCatalyst-MonoVM-interpreter-size.txt +++ b/tests/dotnet/UnitTests/expected/MacCatalyst-MonoVM-interpreter-size.txt @@ -1,9 +1,9 @@ -AppBundleSize: 5,789,665 bytes (5,654.0 KB = 5.5 MB) +AppBundleSize: 5,788,332 bytes (5,652.7 KB = 5.5 MB) # The following list of files and their sizes is just informational / for review, and isn't used in the test: Contents/_CodeSignature/CodeResources: 3,310 bytes (3.2 KB = 0.0 MB) -Contents/Info.plist: 1,094 bytes (1.1 KB = 0.0 MB) -Contents/MacOS/SizeTestApp: 4,567,072 bytes (4,460.0 KB = 4.4 MB) -Contents/MonoBundle/Microsoft.MacCatalyst.dll: 157,184 bytes (153.5 KB = 0.1 MB) +Contents/Info.plist: 1,105 bytes (1.1 KB = 0.0 MB) +Contents/MacOS/SizeTestApp: 4,565,216 bytes (4,458.2 KB = 4.4 MB) +Contents/MonoBundle/Microsoft.MacCatalyst.dll: 157,696 bytes (154.0 KB = 0.2 MB) Contents/MonoBundle/runtimeconfig.bin: 1,405 bytes (1.4 KB = 0.0 MB) Contents/MonoBundle/SizeTestApp.dll: 7,680 bytes (7.5 KB = 0.0 MB) Contents/MonoBundle/System.Private.CoreLib.aotdata.arm64: 41,224 bytes (40.3 KB = 0.0 MB) diff --git a/tests/dotnet/UnitTests/expected/MacCatalyst-MonoVM-size.txt b/tests/dotnet/UnitTests/expected/MacCatalyst-MonoVM-size.txt index 888ca6b902b0..51a747f2b55f 100644 --- a/tests/dotnet/UnitTests/expected/MacCatalyst-MonoVM-size.txt +++ b/tests/dotnet/UnitTests/expected/MacCatalyst-MonoVM-size.txt @@ -1,8 +1,8 @@ -AppBundleSize: 16,305,205 bytes (15,923.1 KB = 15.5 MB) +AppBundleSize: 16,303,392 bytes (15,921.3 KB = 15.5 MB) # The following list of files and their sizes is just informational / for review, and isn't used in the test: Contents/_CodeSignature/CodeResources: 4,134 bytes (4.0 KB = 0.0 MB) -Contents/Info.plist: 1,094 bytes (1.1 KB = 0.0 MB) -Contents/MacOS/SizeTestApp: 13,796,128 bytes (13,472.8 KB = 13.2 MB) +Contents/Info.plist: 1,105 bytes (1.1 KB = 0.0 MB) +Contents/MacOS/SizeTestApp: 13,794,304 bytes (13,471.0 KB = 13.2 MB) Contents/MonoBundle/aot-instances.aotdata.arm64: 1,045,032 bytes (1,020.5 KB = 1.0 MB) Contents/MonoBundle/Microsoft.MacCatalyst.aotdata.arm64: 35,896 bytes (35.1 KB = 0.0 MB) Contents/MonoBundle/Microsoft.MacCatalyst.dll: 50,688 bytes (49.5 KB = 0.0 MB) diff --git a/tests/dotnet/UnitTests/expected/MacCatalyst-NativeAOT-size.txt b/tests/dotnet/UnitTests/expected/MacCatalyst-NativeAOT-size.txt index 093edf407164..788dbc4726fc 100644 --- a/tests/dotnet/UnitTests/expected/MacCatalyst-NativeAOT-size.txt +++ b/tests/dotnet/UnitTests/expected/MacCatalyst-NativeAOT-size.txt @@ -1,7 +1,7 @@ -AppBundleSize: 2,599,110 bytes (2,538.2 KB = 2.5 MB) +AppBundleSize: 2,599,087 bytes (2,538.2 KB = 2.5 MB) # The following list of files and their sizes is just informational / for review, and isn't used in the test: Contents/_CodeSignature/CodeResources: 2,358 bytes (2.3 KB = 0.0 MB) -Contents/Info.plist: 1,128 bytes (1.1 KB = 0.0 MB) +Contents/Info.plist: 1,105 bytes (1.1 KB = 0.0 MB) Contents/MacOS/SizeTestApp: 2,593,808 bytes (2,533.0 KB = 2.5 MB) Contents/MonoBundle/runtimeconfig.bin: 1,808 bytes (1.8 KB = 0.0 MB) Contents/PkgInfo: 8 bytes (0.0 KB = 0.0 MB) diff --git a/tests/dotnet/UnitTests/expected/MacOSX-CoreCLR-Interpreter-size.txt b/tests/dotnet/UnitTests/expected/MacOSX-CoreCLR-Interpreter-size.txt index f991490a3294..cb30f7fa33b0 100644 --- a/tests/dotnet/UnitTests/expected/MacOSX-CoreCLR-Interpreter-size.txt +++ b/tests/dotnet/UnitTests/expected/MacOSX-CoreCLR-Interpreter-size.txt @@ -1,8 +1,8 @@ -AppBundleSize: 247,357,169 bytes (241,559.7 KB = 235.9 MB) +AppBundleSize: 247,357,100 bytes (241,559.7 KB = 235.9 MB) # The following list of files and their sizes is just informational / for review, and isn't used in the test: Contents/_CodeSignature/CodeResources: 67,160 bytes (65.6 KB = 0.1 MB) -Contents/Info.plist: 725 bytes (0.7 KB = 0.0 MB) -Contents/MacOS/SizeTestApp: 8,001,536 bytes (7,814.0 KB = 7.6 MB) +Contents/Info.plist: 736 bytes (0.7 KB = 0.0 MB) +Contents/MacOS/SizeTestApp: 8,001,456 bytes (7,813.9 KB = 7.6 MB) Contents/MonoBundle/.xamarin/osx-arm64/Microsoft.CSharp.dll: 893,200 bytes (872.3 KB = 0.9 MB) Contents/MonoBundle/.xamarin/osx-arm64/Microsoft.macOS.dll: 36,723,712 bytes (35,863.0 KB = 35.0 MB) Contents/MonoBundle/.xamarin/osx-arm64/Microsoft.VisualBasic.Core.dll: 1,335,048 bytes (1,303.8 KB = 1.3 MB) diff --git a/tests/dotnet/UnitTests/expected/MacOSX-NativeAOT-size.txt b/tests/dotnet/UnitTests/expected/MacOSX-NativeAOT-size.txt index ce539ee72a41..1154576091e0 100644 --- a/tests/dotnet/UnitTests/expected/MacOSX-NativeAOT-size.txt +++ b/tests/dotnet/UnitTests/expected/MacOSX-NativeAOT-size.txt @@ -1,8 +1,8 @@ -AppBundleSize: 8,440,007 bytes (8,242.2 KB = 8.0 MB) +AppBundleSize: 8,440,000 bytes (8,242.2 KB = 8.0 MB) # The following list of files and their sizes is just informational / for review, and isn't used in the test: Contents/_CodeSignature/CodeResources: 3,489 bytes (3.4 KB = 0.0 MB) -Contents/Info.plist: 759 bytes (0.7 KB = 0.0 MB) -Contents/MacOS/SizeTestApp: 5,446,400 bytes (5,318.8 KB = 5.2 MB) +Contents/Info.plist: 736 bytes (0.7 KB = 0.0 MB) +Contents/MacOS/SizeTestApp: 5,446,416 bytes (5,318.8 KB = 5.2 MB) Contents/MonoBundle/libSystem.Globalization.Native.dylib: 252,176 bytes (246.3 KB = 0.2 MB) Contents/MonoBundle/libSystem.IO.Compression.Native.dylib: 2,005,440 bytes (1,958.4 KB = 1.9 MB) Contents/MonoBundle/libSystem.Native.dylib: 292,176 bytes (285.3 KB = 0.3 MB) diff --git a/tests/dotnet/UnitTests/expected/TVOS-MonoVM-interpreter-preservedapis.txt b/tests/dotnet/UnitTests/expected/TVOS-MonoVM-interpreter-preservedapis.txt index 410ffb475572..458920c0ff29 100644 --- a/tests/dotnet/UnitTests/expected/TVOS-MonoVM-interpreter-preservedapis.txt +++ b/tests/dotnet/UnitTests/expected/TVOS-MonoVM-interpreter-preservedapis.txt @@ -160,6 +160,7 @@ Microsoft.tvOS.dll:Foundation.NSObject.set_handle(ObjCRuntime.NativeHandle) Microsoft.tvOS.dll:Foundation.NSObject.set_Handle(ObjCRuntime.NativeHandle) Microsoft.tvOS.dll:Foundation.NSObject.set_HasManagedRef(System.Boolean) Microsoft.tvOS.dll:Foundation.NSObject.set_IsDirectBinding(System.Boolean) +Microsoft.tvOS.dll:Foundation.NSObject.set_RemoveFromObjectMap(System.Boolean) Microsoft.tvOS.dll:Foundation.NSObject.ToString() Microsoft.tvOS.dll:Foundation.NSObject.xamarin_release_managed_ref(System.IntPtr, System.Byte) Microsoft.tvOS.dll:Foundation.NSObject.xamarin_set_gchandle_with_flags_safe(System.IntPtr, System.IntPtr, Foundation.NSObject/XamarinGCHandleFlags, System.IntPtr) @@ -702,6 +703,7 @@ Microsoft.tvOS.dll:ObjCRuntime.Runtime.RegisterEntryAssembly(System.Reflection.A Microsoft.tvOS.dll:ObjCRuntime.Runtime.RegisterNSObject(Foundation.NSObject, System.IntPtr) Microsoft.tvOS.dll:ObjCRuntime.Runtime.ReleaseBlockOnMainThread(System.IntPtr) Microsoft.tvOS.dll:ObjCRuntime.Runtime.ReleaseBlockWhenDelegateIsCollected(System.IntPtr, System.Delegate) +Microsoft.tvOS.dll:ObjCRuntime.Runtime.RemoveFromObjectMap(Foundation.NSObject) Microsoft.tvOS.dll:ObjCRuntime.Runtime.retain_nativeobject(System.IntPtr, System.IntPtr*) Microsoft.tvOS.dll:ObjCRuntime.Runtime.RetainNativeObject(ObjCRuntime.INativeObject) Microsoft.tvOS.dll:ObjCRuntime.Runtime.RetainNativeObject(System.IntPtr) @@ -1200,6 +1202,7 @@ Microsoft.tvOS.dll:System.Boolean Foundation.NSObject::HasManagedRef() Microsoft.tvOS.dll:System.Boolean Foundation.NSObject::InFinalizerQueue() Microsoft.tvOS.dll:System.Boolean Foundation.NSObject::IsDirectBinding() Microsoft.tvOS.dll:System.Boolean Foundation.NSObject::IsRegisteredToggleRef() +Microsoft.tvOS.dll:System.Boolean Foundation.NSObject::RemoveFromObjectMap() Microsoft.tvOS.dll:System.Boolean Foundation.NSObject/NSObject_Disposer::draining Microsoft.tvOS.dll:System.Boolean Foundation.NSObjectDataHandle::invalidated Microsoft.tvOS.dll:System.Boolean Foundation.NSObjectDataHandle::IsInvalid() diff --git a/tests/dotnet/UnitTests/expected/TVOS-MonoVM-interpreter-size.txt b/tests/dotnet/UnitTests/expected/TVOS-MonoVM-interpreter-size.txt index 7543054cda5c..6a1eb5afb6e2 100644 --- a/tests/dotnet/UnitTests/expected/TVOS-MonoVM-interpreter-size.txt +++ b/tests/dotnet/UnitTests/expected/TVOS-MonoVM-interpreter-size.txt @@ -1,9 +1,9 @@ -AppBundleSize: 3,614,876 bytes (3,530.2 KB = 3.4 MB) +AppBundleSize: 3,615,399 bytes (3,530.7 KB = 3.4 MB) # The following list of files and their sizes is just informational / for review, and isn't used in the test: _CodeSignature/CodeResources: 3,999 bytes (3.9 KB = 0.0 MB) archived-expanded-entitlements.xcent: 384 bytes (0.4 KB = 0.0 MB) -Info.plist: 1,112 bytes (1.1 KB = 0.0 MB) -Microsoft.tvOS.dll: 154,112 bytes (150.5 KB = 0.1 MB) +Info.plist: 1,123 bytes (1.1 KB = 0.0 MB) +Microsoft.tvOS.dll: 154,624 bytes (151.0 KB = 0.1 MB) PkgInfo: 8 bytes (0.0 KB = 0.0 MB) runtimeconfig.bin: 1,405 bytes (1.4 KB = 0.0 MB) SizeTestApp: 2,404,416 bytes (2,348.1 KB = 2.3 MB) diff --git a/tests/dotnet/UnitTests/expected/TVOS-MonoVM-size.txt b/tests/dotnet/UnitTests/expected/TVOS-MonoVM-size.txt index 3ae9eecfc981..9072655dc17e 100644 --- a/tests/dotnet/UnitTests/expected/TVOS-MonoVM-size.txt +++ b/tests/dotnet/UnitTests/expected/TVOS-MonoVM-size.txt @@ -1,9 +1,9 @@ -AppBundleSize: 9,362,298 bytes (9,142.9 KB = 8.9 MB) +AppBundleSize: 9,362,309 bytes (9,142.9 KB = 8.9 MB) # The following list of files and their sizes is just informational / for review, and isn't used in the test: _CodeSignature/CodeResources: 5,233 bytes (5.1 KB = 0.0 MB) aot-instances.aotdata.arm64: 827,592 bytes (808.2 KB = 0.8 MB) archived-expanded-entitlements.xcent: 384 bytes (0.4 KB = 0.0 MB) -Info.plist: 1,112 bytes (1.1 KB = 0.0 MB) +Info.plist: 1,123 bytes (1.1 KB = 0.0 MB) Microsoft.tvOS.aotdata.arm64: 22,552 bytes (22.0 KB = 0.0 MB) Microsoft.tvOS.dll: 48,640 bytes (47.5 KB = 0.0 MB) PkgInfo: 8 bytes (0.0 KB = 0.0 MB) diff --git a/tests/dotnet/UnitTests/expected/TVOS-NativeAOT-size.txt b/tests/dotnet/UnitTests/expected/TVOS-NativeAOT-size.txt index a88b9788bf10..4ff9fdabe0e3 100644 --- a/tests/dotnet/UnitTests/expected/TVOS-NativeAOT-size.txt +++ b/tests/dotnet/UnitTests/expected/TVOS-NativeAOT-size.txt @@ -1,8 +1,8 @@ -AppBundleSize: 2,616,495 bytes (2,555.2 KB = 2.5 MB) +AppBundleSize: 2,616,488 bytes (2,555.2 KB = 2.5 MB) # The following list of files and their sizes is just informational / for review, and isn't used in the test: _CodeSignature/CodeResources: 2,589 bytes (2.5 KB = 0.0 MB) archived-expanded-entitlements.xcent: 384 bytes (0.4 KB = 0.0 MB) -Info.plist: 1,146 bytes (1.1 KB = 0.0 MB) +Info.plist: 1,123 bytes (1.1 KB = 0.0 MB) PkgInfo: 8 bytes (0.0 KB = 0.0 MB) runtimeconfig.bin: 1,808 bytes (1.8 KB = 0.0 MB) -SizeTestApp: 2,610,560 bytes (2,549.4 KB = 2.5 MB) +SizeTestApp: 2,610,576 bytes (2,549.4 KB = 2.5 MB) diff --git a/tests/dotnet/UnitTests/expected/iOS-MonoVM-interpreter-preservedapis.txt b/tests/dotnet/UnitTests/expected/iOS-MonoVM-interpreter-preservedapis.txt index 948939ec6990..e40d8d4003b6 100644 --- a/tests/dotnet/UnitTests/expected/iOS-MonoVM-interpreter-preservedapis.txt +++ b/tests/dotnet/UnitTests/expected/iOS-MonoVM-interpreter-preservedapis.txt @@ -160,6 +160,7 @@ Microsoft.iOS.dll:Foundation.NSObject.set_handle(ObjCRuntime.NativeHandle) Microsoft.iOS.dll:Foundation.NSObject.set_Handle(ObjCRuntime.NativeHandle) Microsoft.iOS.dll:Foundation.NSObject.set_HasManagedRef(System.Boolean) Microsoft.iOS.dll:Foundation.NSObject.set_IsDirectBinding(System.Boolean) +Microsoft.iOS.dll:Foundation.NSObject.set_RemoveFromObjectMap(System.Boolean) Microsoft.iOS.dll:Foundation.NSObject.ToString() Microsoft.iOS.dll:Foundation.NSObject.xamarin_release_managed_ref(System.IntPtr, System.Byte) Microsoft.iOS.dll:Foundation.NSObject.xamarin_set_gchandle_with_flags_safe(System.IntPtr, System.IntPtr, Foundation.NSObject/XamarinGCHandleFlags, System.IntPtr) @@ -702,6 +703,7 @@ Microsoft.iOS.dll:ObjCRuntime.Runtime.RegisterEntryAssembly(System.Reflection.As Microsoft.iOS.dll:ObjCRuntime.Runtime.RegisterNSObject(Foundation.NSObject, System.IntPtr) Microsoft.iOS.dll:ObjCRuntime.Runtime.ReleaseBlockOnMainThread(System.IntPtr) Microsoft.iOS.dll:ObjCRuntime.Runtime.ReleaseBlockWhenDelegateIsCollected(System.IntPtr, System.Delegate) +Microsoft.iOS.dll:ObjCRuntime.Runtime.RemoveFromObjectMap(Foundation.NSObject) Microsoft.iOS.dll:ObjCRuntime.Runtime.retain_nativeobject(System.IntPtr, System.IntPtr*) Microsoft.iOS.dll:ObjCRuntime.Runtime.RetainNativeObject(ObjCRuntime.INativeObject) Microsoft.iOS.dll:ObjCRuntime.Runtime.RetainNativeObject(System.IntPtr) @@ -1200,6 +1202,7 @@ Microsoft.iOS.dll:System.Boolean Foundation.NSObject::HasManagedRef() Microsoft.iOS.dll:System.Boolean Foundation.NSObject::InFinalizerQueue() Microsoft.iOS.dll:System.Boolean Foundation.NSObject::IsDirectBinding() Microsoft.iOS.dll:System.Boolean Foundation.NSObject::IsRegisteredToggleRef() +Microsoft.iOS.dll:System.Boolean Foundation.NSObject::RemoveFromObjectMap() Microsoft.iOS.dll:System.Boolean Foundation.NSObject/NSObject_Disposer::draining Microsoft.iOS.dll:System.Boolean Foundation.NSObjectDataHandle::invalidated Microsoft.iOS.dll:System.Boolean Foundation.NSObjectDataHandle::IsInvalid() diff --git a/tests/dotnet/UnitTests/expected/iOS-MonoVM-interpreter-size.txt b/tests/dotnet/UnitTests/expected/iOS-MonoVM-interpreter-size.txt index e98a6b5162f7..ad3fbc6ca755 100644 --- a/tests/dotnet/UnitTests/expected/iOS-MonoVM-interpreter-size.txt +++ b/tests/dotnet/UnitTests/expected/iOS-MonoVM-interpreter-size.txt @@ -1,12 +1,12 @@ -AppBundleSize: 3,601,842 bytes (3,517.4 KB = 3.4 MB) +AppBundleSize: 3,601,837 bytes (3,517.4 KB = 3.4 MB) # The following list of files and their sizes is just informational / for review, and isn't used in the test: _CodeSignature/CodeResources: 3,997 bytes (3.9 KB = 0.0 MB) archived-expanded-entitlements.xcent: 384 bytes (0.4 KB = 0.0 MB) -Info.plist: 1,136 bytes (1.1 KB = 0.0 MB) -Microsoft.iOS.dll: 154,112 bytes (150.5 KB = 0.1 MB) +Info.plist: 1,147 bytes (1.1 KB = 0.0 MB) +Microsoft.iOS.dll: 154,624 bytes (151.0 KB = 0.1 MB) PkgInfo: 8 bytes (0.0 KB = 0.0 MB) runtimeconfig.bin: 1,405 bytes (1.4 KB = 0.0 MB) -SizeTestApp: 2,391,360 bytes (2,335.3 KB = 2.3 MB) +SizeTestApp: 2,390,832 bytes (2,334.8 KB = 2.3 MB) SizeTestApp.dll: 7,680 bytes (7.5 KB = 0.0 MB) System.Private.CoreLib.aotdata.arm64: 41,312 bytes (40.3 KB = 0.0 MB) System.Private.CoreLib.dll: 987,136 bytes (964.0 KB = 0.9 MB) diff --git a/tests/dotnet/UnitTests/expected/iOS-MonoVM-size.txt b/tests/dotnet/UnitTests/expected/iOS-MonoVM-size.txt index 7f343a187af3..929606d16b2c 100644 --- a/tests/dotnet/UnitTests/expected/iOS-MonoVM-size.txt +++ b/tests/dotnet/UnitTests/expected/iOS-MonoVM-size.txt @@ -1,14 +1,14 @@ -AppBundleSize: 9,320,750 bytes (9,102.3 KB = 8.9 MB) +AppBundleSize: 9,320,233 bytes (9,101.8 KB = 8.9 MB) # The following list of files and their sizes is just informational / for review, and isn't used in the test: _CodeSignature/CodeResources: 5,229 bytes (5.1 KB = 0.0 MB) aot-instances.aotdata.arm64: 827,592 bytes (808.2 KB = 0.8 MB) archived-expanded-entitlements.xcent: 384 bytes (0.4 KB = 0.0 MB) -Info.plist: 1,136 bytes (1.1 KB = 0.0 MB) +Info.plist: 1,147 bytes (1.1 KB = 0.0 MB) Microsoft.iOS.aotdata.arm64: 22,904 bytes (22.4 KB = 0.0 MB) Microsoft.iOS.dll: 48,640 bytes (47.5 KB = 0.0 MB) PkgInfo: 8 bytes (0.0 KB = 0.0 MB) runtimeconfig.bin: 1,481 bytes (1.4 KB = 0.0 MB) -SizeTestApp: 7,219,200 bytes (7,050.0 KB = 6.9 MB) +SizeTestApp: 7,218,672 bytes (7,049.5 KB = 6.9 MB) SizeTestApp.aotdata.arm64: 1,456 bytes (1.4 KB = 0.0 MB) SizeTestApp.dll: 7,168 bytes (7.0 KB = 0.0 MB) System.Private.CoreLib.aotdata.arm64: 640,736 bytes (625.7 KB = 0.6 MB) diff --git a/tests/dotnet/UnitTests/expected/iOS-NativeAOT-size.txt b/tests/dotnet/UnitTests/expected/iOS-NativeAOT-size.txt index 238ecfc35830..25726d8768a9 100644 --- a/tests/dotnet/UnitTests/expected/iOS-NativeAOT-size.txt +++ b/tests/dotnet/UnitTests/expected/iOS-NativeAOT-size.txt @@ -1,8 +1,8 @@ -AppBundleSize: 2,602,055 bytes (2,541.1 KB = 2.5 MB) +AppBundleSize: 2,601,520 bytes (2,540.5 KB = 2.5 MB) # The following list of files and their sizes is just informational / for review, and isn't used in the test: _CodeSignature/CodeResources: 2,589 bytes (2.5 KB = 0.0 MB) archived-expanded-entitlements.xcent: 384 bytes (0.4 KB = 0.0 MB) -Info.plist: 1,170 bytes (1.1 KB = 0.0 MB) +Info.plist: 1,147 bytes (1.1 KB = 0.0 MB) PkgInfo: 8 bytes (0.0 KB = 0.0 MB) runtimeconfig.bin: 1,808 bytes (1.8 KB = 0.0 MB) -SizeTestApp: 2,596,096 bytes (2,535.2 KB = 2.5 MB) +SizeTestApp: 2,595,584 bytes (2,534.8 KB = 2.5 MB) From 2870048efb60c2f7b581a6157f0ea0f1600df717 Mon Sep 17 00:00:00 2001 From: Rolf Bjarne Kvinge Date: Fri, 17 Apr 2026 17:12:34 +0200 Subject: [PATCH 18/47] [tests] Update expected sizes. --- .../MacCatalyst-CoreCLR-Interpreter-size.txt | 4 ++-- .../expected/MacCatalyst-CoreCLR-R2R-size.txt | 4 ++-- .../expected/MacCatalyst-MonoVM-interpreter-size.txt | 4 ++-- .../UnitTests/expected/MacCatalyst-MonoVM-size.txt | 4 ++-- .../expected/MacOSX-CoreCLR-Interpreter-size.txt | 4 ++-- .../UnitTests/expected/MacOSX-CoreCLR-R2R-size.txt | 4 ++-- .../expected/TVOS-MonoVM-interpreter-size.txt | 4 ++-- .../expected/iOS-CoreCLR-Interpreter-size.txt | 12 ++++++------ .../UnitTests/expected/iOS-CoreCLR-R2R-size.txt | 12 ++++++------ .../expected/iOS-MonoVM-interpreter-size.txt | 4 ++-- tests/dotnet/UnitTests/expected/iOS-MonoVM-size.txt | 4 ++-- .../dotnet/UnitTests/expected/iOS-NativeAOT-size.txt | 4 ++-- 12 files changed, 32 insertions(+), 32 deletions(-) diff --git a/tests/dotnet/UnitTests/expected/MacCatalyst-CoreCLR-Interpreter-size.txt b/tests/dotnet/UnitTests/expected/MacCatalyst-CoreCLR-Interpreter-size.txt index 883e287a2028..99b59d343620 100644 --- a/tests/dotnet/UnitTests/expected/MacCatalyst-CoreCLR-Interpreter-size.txt +++ b/tests/dotnet/UnitTests/expected/MacCatalyst-CoreCLR-Interpreter-size.txt @@ -1,8 +1,8 @@ -AppBundleSize: 10,462,403 bytes (10,217.2 KB = 10.0 MB) +AppBundleSize: 10,462,595 bytes (10,217.4 KB = 10.0 MB) # The following list of files and their sizes is just informational / for review, and isn't used in the test: Contents/_CodeSignature/CodeResources: 4,951 bytes (4.8 KB = 0.0 MB) Contents/Info.plist: 1,099 bytes (1.1 KB = 0.0 MB) -Contents/MacOS/SizeTestApp: 241,936 bytes (236.3 KB = 0.2 MB) +Contents/MacOS/SizeTestApp: 242,128 bytes (236.5 KB = 0.2 MB) Contents/MonoBundle/libcoreclr.dylib: 6,386,800 bytes (6,237.1 KB = 6.1 MB) Contents/MonoBundle/libSystem.Globalization.Native.dylib: 110,432 bytes (107.8 KB = 0.1 MB) Contents/MonoBundle/libSystem.IO.Compression.Native.dylib: 1,442,208 bytes (1,408.4 KB = 1.4 MB) diff --git a/tests/dotnet/UnitTests/expected/MacCatalyst-CoreCLR-R2R-size.txt b/tests/dotnet/UnitTests/expected/MacCatalyst-CoreCLR-R2R-size.txt index d15a6e854c58..318caa67a75f 100644 --- a/tests/dotnet/UnitTests/expected/MacCatalyst-CoreCLR-R2R-size.txt +++ b/tests/dotnet/UnitTests/expected/MacCatalyst-CoreCLR-R2R-size.txt @@ -1,8 +1,8 @@ -AppBundleSize: 19,847,885 bytes (19,382.7 KB = 18.9 MB) +AppBundleSize: 19,848,077 bytes (19,382.9 KB = 18.9 MB) # The following list of files and their sizes is just informational / for review, and isn't used in the test: Contents/_CodeSignature/CodeResources: 5,105 bytes (5.0 KB = 0.0 MB) Contents/Info.plist: 1,099 bytes (1.1 KB = 0.0 MB) -Contents/MacOS/SizeTestApp: 241,984 bytes (236.3 KB = 0.2 MB) +Contents/MacOS/SizeTestApp: 242,176 bytes (236.5 KB = 0.2 MB) Contents/MonoBundle/libcoreclr.dylib: 6,386,800 bytes (6,237.1 KB = 6.1 MB) Contents/MonoBundle/libSystem.Globalization.Native.dylib: 110,432 bytes (107.8 KB = 0.1 MB) Contents/MonoBundle/libSystem.IO.Compression.Native.dylib: 1,442,208 bytes (1,408.4 KB = 1.4 MB) diff --git a/tests/dotnet/UnitTests/expected/MacCatalyst-MonoVM-interpreter-size.txt b/tests/dotnet/UnitTests/expected/MacCatalyst-MonoVM-interpreter-size.txt index e43e0cff8d51..7d41f3ec843f 100644 --- a/tests/dotnet/UnitTests/expected/MacCatalyst-MonoVM-interpreter-size.txt +++ b/tests/dotnet/UnitTests/expected/MacCatalyst-MonoVM-interpreter-size.txt @@ -1,8 +1,8 @@ -AppBundleSize: 5,810,670 bytes (5,674.5 KB = 5.5 MB) +AppBundleSize: 5,812,606 bytes (5,676.4 KB = 5.5 MB) # The following list of files and their sizes is just informational / for review, and isn't used in the test: Contents/_CodeSignature/CodeResources: 3,310 bytes (3.2 KB = 0.0 MB) Contents/Info.plist: 1,099 bytes (1.1 KB = 0.0 MB) -Contents/MacOS/SizeTestApp: 4,567,472 bytes (4,460.4 KB = 4.4 MB) +Contents/MacOS/SizeTestApp: 4,569,408 bytes (4,462.3 KB = 4.4 MB) Contents/MonoBundle/Microsoft.MacCatalyst.dll: 157,184 bytes (153.5 KB = 0.1 MB) Contents/MonoBundle/runtimeconfig.bin: 1,405 bytes (1.4 KB = 0.0 MB) Contents/MonoBundle/SizeTestApp.dll: 7,680 bytes (7.5 KB = 0.0 MB) diff --git a/tests/dotnet/UnitTests/expected/MacCatalyst-MonoVM-size.txt b/tests/dotnet/UnitTests/expected/MacCatalyst-MonoVM-size.txt index 91e818b5f590..df8e77d0ee8a 100644 --- a/tests/dotnet/UnitTests/expected/MacCatalyst-MonoVM-size.txt +++ b/tests/dotnet/UnitTests/expected/MacCatalyst-MonoVM-size.txt @@ -1,8 +1,8 @@ -AppBundleSize: 16,518,962 bytes (16,131.8 KB = 15.8 MB) +AppBundleSize: 16,520,914 bytes (16,133.7 KB = 15.8 MB) # The following list of files and their sizes is just informational / for review, and isn't used in the test: Contents/_CodeSignature/CodeResources: 4,134 bytes (4.0 KB = 0.0 MB) Contents/Info.plist: 1,099 bytes (1.1 KB = 0.0 MB) -Contents/MacOS/SizeTestApp: 13,979,600 bytes (13,652.0 KB = 13.3 MB) +Contents/MacOS/SizeTestApp: 13,981,552 bytes (13,653.9 KB = 13.3 MB) Contents/MonoBundle/aot-instances.aotdata.arm64: 1,037,632 bytes (1,013.3 KB = 1.0 MB) Contents/MonoBundle/Microsoft.MacCatalyst.aotdata.arm64: 35,896 bytes (35.1 KB = 0.0 MB) Contents/MonoBundle/Microsoft.MacCatalyst.dll: 50,688 bytes (49.5 KB = 0.0 MB) diff --git a/tests/dotnet/UnitTests/expected/MacOSX-CoreCLR-Interpreter-size.txt b/tests/dotnet/UnitTests/expected/MacOSX-CoreCLR-Interpreter-size.txt index 38a5ce9a6dc6..92b5876cbb58 100644 --- a/tests/dotnet/UnitTests/expected/MacOSX-CoreCLR-Interpreter-size.txt +++ b/tests/dotnet/UnitTests/expected/MacOSX-CoreCLR-Interpreter-size.txt @@ -1,8 +1,8 @@ -AppBundleSize: 251,559,640 bytes (245,663.7 KB = 239.9 MB) +AppBundleSize: 251,559,880 bytes (245,663.9 KB = 239.9 MB) # The following list of files and their sizes is just informational / for review, and isn't used in the test: Contents/_CodeSignature/CodeResources: 70,698 bytes (69.0 KB = 0.1 MB) Contents/Info.plist: 730 bytes (0.7 KB = 0.0 MB) -Contents/MacOS/SizeTestApp: 7,963,712 bytes (7,777.1 KB = 7.6 MB) +Contents/MacOS/SizeTestApp: 7,963,952 bytes (7,777.3 KB = 7.6 MB) Contents/MonoBundle/.xamarin/osx-arm64/Microsoft.CSharp.dll: 894,728 bytes (873.8 KB = 0.9 MB) Contents/MonoBundle/.xamarin/osx-arm64/Microsoft.Extensions.Caching.Abstractions.dll: 66,832 bytes (65.3 KB = 0.1 MB) Contents/MonoBundle/.xamarin/osx-arm64/Microsoft.Extensions.Configuration.Abstractions.dll: 38,664 bytes (37.8 KB = 0.0 MB) diff --git a/tests/dotnet/UnitTests/expected/MacOSX-CoreCLR-R2R-size.txt b/tests/dotnet/UnitTests/expected/MacOSX-CoreCLR-R2R-size.txt index 04546716c7fa..291eb9799498 100644 --- a/tests/dotnet/UnitTests/expected/MacOSX-CoreCLR-R2R-size.txt +++ b/tests/dotnet/UnitTests/expected/MacOSX-CoreCLR-R2R-size.txt @@ -1,8 +1,8 @@ -AppBundleSize: 318,431,960 bytes (310,968.7 KB = 303.7 MB) +AppBundleSize: 318,432,200 bytes (310,968.9 KB = 303.7 MB) # The following list of files and their sizes is just informational / for review, and isn't used in the test: Contents/_CodeSignature/CodeResources: 70,698 bytes (69.0 KB = 0.1 MB) Contents/Info.plist: 730 bytes (0.7 KB = 0.0 MB) -Contents/MacOS/SizeTestApp: 7,963,712 bytes (7,777.1 KB = 7.6 MB) +Contents/MacOS/SizeTestApp: 7,963,952 bytes (7,777.3 KB = 7.6 MB) Contents/MonoBundle/.xamarin/osx-arm64/Microsoft.CSharp.dll: 894,728 bytes (873.8 KB = 0.9 MB) Contents/MonoBundle/.xamarin/osx-arm64/Microsoft.Extensions.Caching.Abstractions.dll: 66,832 bytes (65.3 KB = 0.1 MB) Contents/MonoBundle/.xamarin/osx-arm64/Microsoft.Extensions.Configuration.Abstractions.dll: 38,664 bytes (37.8 KB = 0.0 MB) diff --git a/tests/dotnet/UnitTests/expected/TVOS-MonoVM-interpreter-size.txt b/tests/dotnet/UnitTests/expected/TVOS-MonoVM-interpreter-size.txt index e175f4f30f6e..7bb70b5cf899 100644 --- a/tests/dotnet/UnitTests/expected/TVOS-MonoVM-interpreter-size.txt +++ b/tests/dotnet/UnitTests/expected/TVOS-MonoVM-interpreter-size.txt @@ -1,9 +1,9 @@ -AppBundleSize: 3,635,745 bytes (3,550.5 KB = 3.5 MB) +AppBundleSize: 3,636,257 bytes (3,551.0 KB = 3.5 MB) # The following list of files and their sizes is just informational / for review, and isn't used in the test: _CodeSignature/CodeResources: 3,999 bytes (3.9 KB = 0.0 MB) archived-expanded-entitlements.xcent: 384 bytes (0.4 KB = 0.0 MB) Info.plist: 1,117 bytes (1.1 KB = 0.0 MB) -Microsoft.tvOS.dll: 154,112 bytes (150.5 KB = 0.1 MB) +Microsoft.tvOS.dll: 154,624 bytes (151.0 KB = 0.1 MB) PkgInfo: 8 bytes (0.0 KB = 0.0 MB) runtimeconfig.bin: 1,405 bytes (1.4 KB = 0.0 MB) SizeTestApp: 2,404,688 bytes (2,348.3 KB = 2.3 MB) diff --git a/tests/dotnet/UnitTests/expected/iOS-CoreCLR-Interpreter-size.txt b/tests/dotnet/UnitTests/expected/iOS-CoreCLR-Interpreter-size.txt index e260e77427c3..47d9576baebc 100644 --- a/tests/dotnet/UnitTests/expected/iOS-CoreCLR-Interpreter-size.txt +++ b/tests/dotnet/UnitTests/expected/iOS-CoreCLR-Interpreter-size.txt @@ -1,4 +1,4 @@ -AppBundleSize: 9,253,769 bytes (9,036.9 KB = 8.8 MB) +AppBundleSize: 9,254,361 bytes (9,037.5 KB = 8.8 MB) # The following list of files and their sizes is just informational / for review, and isn't used in the test: _CodeSignature/CodeResources: 10,847 bytes (10.6 KB = 0.0 MB) archived-expanded-entitlements.xcent: 384 bytes (0.4 KB = 0.0 MB) @@ -7,16 +7,16 @@ Frameworks/libcoreclr.framework/Info.plist: 813 bytes (0.8 KB = 0.0 MB) Frameworks/libcoreclr.framework/libcoreclr: 5,203,952 bytes (5,082.0 KB = 5.0 MB) Frameworks/libSystem.Globalization.Native.framework/_CodeSignature/CodeResources: 1,798 bytes (1.8 KB = 0.0 MB) Frameworks/libSystem.Globalization.Native.framework/Info.plist: 855 bytes (0.8 KB = 0.0 MB) -Frameworks/libSystem.Globalization.Native.framework/libSystem.Globalization.Native: 109,232 bytes (106.7 KB = 0.1 MB) +Frameworks/libSystem.Globalization.Native.framework/libSystem.Globalization.Native: 109,248 bytes (106.7 KB = 0.1 MB) Frameworks/libSystem.IO.Compression.Native.framework/_CodeSignature/CodeResources: 1,798 bytes (1.8 KB = 0.0 MB) Frameworks/libSystem.IO.Compression.Native.framework/Info.plist: 857 bytes (0.8 KB = 0.0 MB) -Frameworks/libSystem.IO.Compression.Native.framework/libSystem.IO.Compression.Native: 1,431,280 bytes (1,397.7 KB = 1.4 MB) +Frameworks/libSystem.IO.Compression.Native.framework/libSystem.IO.Compression.Native: 1,431,296 bytes (1,397.8 KB = 1.4 MB) Frameworks/libSystem.Native.framework/_CodeSignature/CodeResources: 1,798 bytes (1.8 KB = 0.0 MB) Frameworks/libSystem.Native.framework/Info.plist: 827 bytes (0.8 KB = 0.0 MB) -Frameworks/libSystem.Native.framework/libSystem.Native: 162,208 bytes (158.4 KB = 0.2 MB) +Frameworks/libSystem.Native.framework/libSystem.Native: 162,224 bytes (158.4 KB = 0.2 MB) Frameworks/libSystem.Net.Security.Native.framework/_CodeSignature/CodeResources: 1,798 bytes (1.8 KB = 0.0 MB) Frameworks/libSystem.Net.Security.Native.framework/Info.plist: 853 bytes (0.8 KB = 0.0 MB) -Frameworks/libSystem.Net.Security.Native.framework/libSystem.Net.Security.Native: 88,000 bytes (85.9 KB = 0.1 MB) +Frameworks/libSystem.Net.Security.Native.framework/libSystem.Net.Security.Native: 88,016 bytes (86.0 KB = 0.1 MB) Frameworks/libSystem.Security.Cryptography.Native.Apple.framework/_CodeSignature/CodeResources: 1,798 bytes (1.8 KB = 0.0 MB) Frameworks/libSystem.Security.Cryptography.Native.Apple.framework/Info.plist: 883 bytes (0.9 KB = 0.0 MB) Frameworks/libSystem.Security.Cryptography.Native.Apple.framework/libSystem.Security.Cryptography.Native.Apple: 194,256 bytes (189.7 KB = 0.2 MB) @@ -24,7 +24,7 @@ Info.plist: 1,141 bytes (1.1 KB = 0.0 MB) Microsoft.iOS.dll: 98,816 bytes (96.5 KB = 0.1 MB) PkgInfo: 8 bytes (0.0 KB = 0.0 MB) runtimeconfig.bin: 1,481 bytes (1.4 KB = 0.0 MB) -SizeTestApp: 196,000 bytes (191.4 KB = 0.2 MB) +SizeTestApp: 196,528 bytes (191.9 KB = 0.2 MB) SizeTestApp.dll: 7,680 bytes (7.5 KB = 0.0 MB) System.Collections.Immutable.dll: 14,848 bytes (14.5 KB = 0.0 MB) System.Diagnostics.StackTrace.dll: 8,192 bytes (8.0 KB = 0.0 MB) diff --git a/tests/dotnet/UnitTests/expected/iOS-CoreCLR-R2R-size.txt b/tests/dotnet/UnitTests/expected/iOS-CoreCLR-R2R-size.txt index 4689c1729746..f287af53dd81 100644 --- a/tests/dotnet/UnitTests/expected/iOS-CoreCLR-R2R-size.txt +++ b/tests/dotnet/UnitTests/expected/iOS-CoreCLR-R2R-size.txt @@ -1,4 +1,4 @@ -AppBundleSize: 13,184,325 bytes (12,875.3 KB = 12.6 MB) +AppBundleSize: 13,184,917 bytes (12,875.9 KB = 12.6 MB) # The following list of files and their sizes is just informational / for review, and isn't used in the test: _CodeSignature/CodeResources: 11,701 bytes (11.4 KB = 0.0 MB) archived-expanded-entitlements.xcent: 384 bytes (0.4 KB = 0.0 MB) @@ -7,16 +7,16 @@ Frameworks/libcoreclr.framework/Info.plist: 813 bytes (0.8 KB = 0.0 MB) Frameworks/libcoreclr.framework/libcoreclr: 5,203,952 bytes (5,082.0 KB = 5.0 MB) Frameworks/libSystem.Globalization.Native.framework/_CodeSignature/CodeResources: 1,798 bytes (1.8 KB = 0.0 MB) Frameworks/libSystem.Globalization.Native.framework/Info.plist: 855 bytes (0.8 KB = 0.0 MB) -Frameworks/libSystem.Globalization.Native.framework/libSystem.Globalization.Native: 109,232 bytes (106.7 KB = 0.1 MB) +Frameworks/libSystem.Globalization.Native.framework/libSystem.Globalization.Native: 109,248 bytes (106.7 KB = 0.1 MB) Frameworks/libSystem.IO.Compression.Native.framework/_CodeSignature/CodeResources: 1,798 bytes (1.8 KB = 0.0 MB) Frameworks/libSystem.IO.Compression.Native.framework/Info.plist: 857 bytes (0.8 KB = 0.0 MB) -Frameworks/libSystem.IO.Compression.Native.framework/libSystem.IO.Compression.Native: 1,431,280 bytes (1,397.7 KB = 1.4 MB) +Frameworks/libSystem.IO.Compression.Native.framework/libSystem.IO.Compression.Native: 1,431,296 bytes (1,397.8 KB = 1.4 MB) Frameworks/libSystem.Native.framework/_CodeSignature/CodeResources: 1,798 bytes (1.8 KB = 0.0 MB) Frameworks/libSystem.Native.framework/Info.plist: 827 bytes (0.8 KB = 0.0 MB) -Frameworks/libSystem.Native.framework/libSystem.Native: 162,208 bytes (158.4 KB = 0.2 MB) +Frameworks/libSystem.Native.framework/libSystem.Native: 162,224 bytes (158.4 KB = 0.2 MB) Frameworks/libSystem.Net.Security.Native.framework/_CodeSignature/CodeResources: 1,798 bytes (1.8 KB = 0.0 MB) Frameworks/libSystem.Net.Security.Native.framework/Info.plist: 853 bytes (0.8 KB = 0.0 MB) -Frameworks/libSystem.Net.Security.Native.framework/libSystem.Net.Security.Native: 88,000 bytes (85.9 KB = 0.1 MB) +Frameworks/libSystem.Net.Security.Native.framework/libSystem.Net.Security.Native: 88,016 bytes (86.0 KB = 0.1 MB) Frameworks/libSystem.Security.Cryptography.Native.Apple.framework/_CodeSignature/CodeResources: 1,798 bytes (1.8 KB = 0.0 MB) Frameworks/libSystem.Security.Cryptography.Native.Apple.framework/Info.plist: 883 bytes (0.9 KB = 0.0 MB) Frameworks/libSystem.Security.Cryptography.Native.Apple.framework/libSystem.Security.Cryptography.Native.Apple: 194,256 bytes (189.7 KB = 0.2 MB) @@ -27,7 +27,7 @@ Info.plist: 1,141 bytes (1.1 KB = 0.0 MB) Microsoft.iOS.dll: 98,304 bytes (96.0 KB = 0.1 MB) PkgInfo: 8 bytes (0.0 KB = 0.0 MB) runtimeconfig.bin: 1,481 bytes (1.4 KB = 0.0 MB) -SizeTestApp: 196,048 bytes (191.5 KB = 0.2 MB) +SizeTestApp: 196,576 bytes (192.0 KB = 0.2 MB) SizeTestApp.dll: 7,680 bytes (7.5 KB = 0.0 MB) System.Collections.Immutable.dll: 13,824 bytes (13.5 KB = 0.0 MB) System.Diagnostics.StackTrace.dll: 7,680 bytes (7.5 KB = 0.0 MB) diff --git a/tests/dotnet/UnitTests/expected/iOS-MonoVM-interpreter-size.txt b/tests/dotnet/UnitTests/expected/iOS-MonoVM-interpreter-size.txt index 87dca5eef107..fa7157f8a0eb 100644 --- a/tests/dotnet/UnitTests/expected/iOS-MonoVM-interpreter-size.txt +++ b/tests/dotnet/UnitTests/expected/iOS-MonoVM-interpreter-size.txt @@ -1,4 +1,4 @@ -AppBundleSize: 3,622,183 bytes (3,537.3 KB = 3.5 MB) +AppBundleSize: 3,622,711 bytes (3,537.8 KB = 3.5 MB) # The following list of files and their sizes is just informational / for review, and isn't used in the test: _CodeSignature/CodeResources: 3,997 bytes (3.9 KB = 0.0 MB) archived-expanded-entitlements.xcent: 384 bytes (0.4 KB = 0.0 MB) @@ -6,7 +6,7 @@ Info.plist: 1,141 bytes (1.1 KB = 0.0 MB) Microsoft.iOS.dll: 154,112 bytes (150.5 KB = 0.1 MB) PkgInfo: 8 bytes (0.0 KB = 0.0 MB) runtimeconfig.bin: 1,405 bytes (1.4 KB = 0.0 MB) -SizeTestApp: 2,391,104 bytes (2,335.1 KB = 2.3 MB) +SizeTestApp: 2,391,632 bytes (2,335.6 KB = 2.3 MB) SizeTestApp.dll: 7,680 bytes (7.5 KB = 0.0 MB) System.Private.CoreLib.aotdata.arm64: 41,424 bytes (40.5 KB = 0.0 MB) System.Private.CoreLib.dll: 1,007,616 bytes (984.0 KB = 1.0 MB) diff --git a/tests/dotnet/UnitTests/expected/iOS-MonoVM-size.txt b/tests/dotnet/UnitTests/expected/iOS-MonoVM-size.txt index ce1db03d0bc2..3522c7787f47 100644 --- a/tests/dotnet/UnitTests/expected/iOS-MonoVM-size.txt +++ b/tests/dotnet/UnitTests/expected/iOS-MonoVM-size.txt @@ -1,4 +1,4 @@ -AppBundleSize: 9,458,955 bytes (9,237.3 KB = 9.0 MB) +AppBundleSize: 9,459,483 bytes (9,237.8 KB = 9.0 MB) # The following list of files and their sizes is just informational / for review, and isn't used in the test: _CodeSignature/CodeResources: 5,229 bytes (5.1 KB = 0.0 MB) aot-instances.aotdata.arm64: 818,536 bytes (799.4 KB = 0.8 MB) @@ -8,7 +8,7 @@ Microsoft.iOS.aotdata.arm64: 22,904 bytes (22.4 KB = 0.0 MB) Microsoft.iOS.dll: 48,640 bytes (47.5 KB = 0.0 MB) PkgInfo: 8 bytes (0.0 KB = 0.0 MB) runtimeconfig.bin: 1,481 bytes (1.4 KB = 0.0 MB) -SizeTestApp: 7,334,000 bytes (7,162.1 KB = 7.0 MB) +SizeTestApp: 7,334,528 bytes (7,162.6 KB = 7.0 MB) SizeTestApp.aotdata.arm64: 1,456 bytes (1.4 KB = 0.0 MB) SizeTestApp.dll: 7,168 bytes (7.0 KB = 0.0 MB) System.Private.CoreLib.aotdata.arm64: 665,512 bytes (649.9 KB = 0.6 MB) diff --git a/tests/dotnet/UnitTests/expected/iOS-NativeAOT-size.txt b/tests/dotnet/UnitTests/expected/iOS-NativeAOT-size.txt index c95a8dd82c75..153208ecb197 100644 --- a/tests/dotnet/UnitTests/expected/iOS-NativeAOT-size.txt +++ b/tests/dotnet/UnitTests/expected/iOS-NativeAOT-size.txt @@ -1,8 +1,8 @@ -AppBundleSize: 2,667,434 bytes (2,604.9 KB = 2.5 MB) +AppBundleSize: 2,667,962 bytes (2,605.4 KB = 2.5 MB) # The following list of files and their sizes is just informational / for review, and isn't used in the test: _CodeSignature/CodeResources: 2,589 bytes (2.5 KB = 0.0 MB) archived-expanded-entitlements.xcent: 384 bytes (0.4 KB = 0.0 MB) Info.plist: 1,141 bytes (1.1 KB = 0.0 MB) PkgInfo: 8 bytes (0.0 KB = 0.0 MB) runtimeconfig.bin: 1,808 bytes (1.8 KB = 0.0 MB) -SizeTestApp: 2,661,504 bytes (2,599.1 KB = 2.5 MB) +SizeTestApp: 2,662,032 bytes (2,599.6 KB = 2.5 MB) From 7dd3cbff820e2fcf0337a1d6484b5c4ce02dd93a Mon Sep 17 00:00:00 2001 From: Rolf Bjarne Kvinge Date: Fri, 17 Apr 2026 20:00:47 +0200 Subject: [PATCH 19/47] [src] Unify the xml docs for the `Dispose(bool)` method. (#25175) * Improve the docs for `NSObject.Dispose(bool)`. * Make all overrides inherit the docs for `NSObject.Dispose(bool)`. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --------- Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- docs/api/AddressBook/ABAddressBook.xml | 14 +------------- docs/api/AddressBook/ABRecord.xml | 14 -------------- docs/api/AudioToolbox/AudioConverter.xml | 14 -------------- docs/api/AudioToolbox/MusicPlayer.xml | 14 -------------- docs/api/AudioToolbox/MusicSequence.xml | 14 -------------- docs/api/AudioToolbox/MusicTrack.xml | 14 -------------- docs/api/AudioUnit/AUGraph.xml | 14 +------------- docs/api/AudioUnit/AudioUnit.xml | 14 -------------- docs/api/CoreAnimation/CALayerDelegate.xml | 14 -------------- docs/api/CoreFoundation/CFMessagePort.xml | 14 -------------- docs/api/CoreFoundation/CFRunLoopSourceCustom.xml | 14 -------------- docs/api/CoreFoundation/CFSocket.xml | 14 -------------- docs/api/CoreFoundation/CFStream.xml | 14 +------------- docs/api/CoreFoundation/DispatchSource.xml | 14 +------------- docs/api/CoreGraphics/CGBitmapContext.xml | 14 -------------- docs/api/CoreGraphics/CGContextPDF.xml | 14 -------------- docs/api/CoreGraphics/CGPDFScanner.xml | 14 -------------- docs/api/CoreMedia/CMBufferQueue.xml | 14 -------------- docs/api/CoreMedia/CMSampleBuffer.xml | 14 -------------- docs/api/CoreMidi/MidiClient.xml | 14 +------------- docs/api/CoreMidi/MidiEndpoint.xml | 14 -------------- docs/api/CoreMidi/MidiPort.xml | 14 -------------- docs/api/Foundation/NSInputStream.xml | 14 +------------- docs/api/Foundation/NSObject.xml | 14 +++++++------- docs/api/GameKit/GKPeerPickerController.xml | 14 +------------- docs/api/MediaToolbox/MTAudioProcessingTap.xml | 14 -------------- docs/api/NewsstandKit/NKAssetDownload.xml | 14 +------------- docs/api/Security/SslContext.xml | 14 -------------- docs/api/VideoToolbox/VTMultiPassStorage.xml | 14 -------------- src/AddressBook/ABAddressBook.cs | 2 +- src/AddressBook/ABRecord.cs | 2 +- src/AudioToolbox/AudioConverter.cs | 2 +- src/AudioToolbox/AudioFile.cs | 3 +-- src/AudioToolbox/MusicPlayer.cs | 2 +- src/AudioToolbox/MusicSequence.cs | 2 +- src/AudioToolbox/MusicTrack.cs | 2 +- src/AudioUnit/AUGraph.cs | 2 +- src/AudioUnit/AudioUnit.cs | 2 +- src/Compression/Compression.cs | 4 +--- src/CoreAnimation/CALayerDelegate.cs | 2 +- src/CoreFoundation/CFMessagePort.cs | 2 +- src/CoreFoundation/CFRunLoop.cs | 2 +- src/CoreFoundation/CFSocket.cs | 2 +- src/CoreFoundation/CFStream.cs | 2 +- src/CoreFoundation/DispatchSource.cs | 6 ++---- src/CoreFoundation/NativeObject.cs | 4 +--- src/CoreGraphics/CGBitmapContext.cs | 2 +- src/CoreGraphics/CGContextPDF.cs | 2 +- src/CoreGraphics/CGPDFScanner.cs | 2 +- src/CoreMedia/CMBufferQueue.cs | 2 +- src/CoreMedia/CMSampleBuffer.cs | 2 +- src/CoreMidi/MidiServices.cs | 6 +++--- src/CoreText/CTParagraphStyle.cs | 1 + src/CoreVideo/CVDisplayLink.cs | 4 +--- src/Darwin/SystemLog.cs | 8 ++------ src/Foundation/NSData.cs | 1 + src/Foundation/NSInputStream.cs | 2 +- src/Foundation/NSNotificationCenter.cs | 1 + src/Foundation/NSObject2.cs | 1 + src/Foundation/NSUrlSessionHandler.cs | 7 ++++--- src/GameKit/GKCompat.cs | 2 +- src/MediaToolbox/MTAudioProcessingTap.cs | 2 +- src/Metal/MTLIOCompression.cs | 1 + src/NewsstandKit/Compat.cs | 2 +- src/PassKit/PKCompat.cs | 4 +--- src/SearchKit/SearchKit.cs | 4 +--- src/Security/Authorization.cs | 1 + src/Security/SslContext.cs | 2 +- src/System.Net.Http/CFNetworkHandler.cs | 4 +--- src/SystemConfiguration/NetworkReachability.cs | 1 + src/UIKit/UIControl.cs | 1 + src/VideoToolbox/VTCompressionSession.cs | 1 + src/VideoToolbox/VTDecompressionSession.cs | 1 + src/VideoToolbox/VTMotionEstimationSession.cs | 1 + src/VideoToolbox/VTMultiPassStorage.cs | 2 +- src/VideoToolbox/VTPixelRotationSession.cs | 1 + src/VideoToolbox/VTPixelTransferSession.cs | 1 + src/VideoToolbox/VTRawProcessingSession.cs | 3 +-- tests/cecil-tests/Documentation.KnownFailures.txt | 8 -------- 79 files changed, 71 insertions(+), 461 deletions(-) delete mode 100644 docs/api/AddressBook/ABRecord.xml delete mode 100644 docs/api/AudioToolbox/AudioConverter.xml delete mode 100644 docs/api/AudioToolbox/MusicPlayer.xml delete mode 100644 docs/api/AudioToolbox/MusicSequence.xml delete mode 100644 docs/api/AudioToolbox/MusicTrack.xml delete mode 100644 docs/api/AudioUnit/AudioUnit.xml delete mode 100644 docs/api/CoreAnimation/CALayerDelegate.xml delete mode 100644 docs/api/CoreFoundation/CFMessagePort.xml delete mode 100644 docs/api/CoreFoundation/CFRunLoopSourceCustom.xml delete mode 100644 docs/api/CoreFoundation/CFSocket.xml delete mode 100644 docs/api/CoreGraphics/CGBitmapContext.xml delete mode 100644 docs/api/CoreGraphics/CGContextPDF.xml delete mode 100644 docs/api/CoreGraphics/CGPDFScanner.xml delete mode 100644 docs/api/CoreMedia/CMBufferQueue.xml delete mode 100644 docs/api/CoreMedia/CMSampleBuffer.xml delete mode 100644 docs/api/CoreMidi/MidiEndpoint.xml delete mode 100644 docs/api/CoreMidi/MidiPort.xml delete mode 100644 docs/api/MediaToolbox/MTAudioProcessingTap.xml delete mode 100644 docs/api/Security/SslContext.xml delete mode 100644 docs/api/VideoToolbox/VTMultiPassStorage.xml diff --git a/docs/api/AddressBook/ABAddressBook.xml b/docs/api/AddressBook/ABAddressBook.xml index 414f20e1f82d..54a3b3098000 100644 --- a/docs/api/AddressBook/ABAddressBook.xml +++ b/docs/api/AddressBook/ABAddressBook.xml @@ -19,18 +19,6 @@ if (addressBook != null) { - - - If set to , the method is invoked directly and will dispose managed and unmanaged resources; If set to the method is being called by the garbage collector finalizer and should only release unmanaged resources. - - Releases the resources used by the ABAddressBook object. - - This Dispose method releases the resources used by the ABAddressBook class. - This method is called by both the Dispose() method and the object finalizer (Finalize). When invoked by the Dispose method, the parameter disposing is set to and any managed object references that this object holds are also disposed or released; when invoked by the object finalizer, on the finalizer thread the value is set to . - Calling the Dispose method when the application is finished using the ABAddressBook ensures that all external resources used by this managed object are released as soon as possible. Once developers have invoked the Dispose method, the object is no longer useful and developers should no longer make any calls to it. - For more information on how to override this method and on the Dispose/IDisposable pattern, read the ``Implementing a Dispose Method'' document at https://msdn.microsoft.com/en-us/library/fs2xkftw.aspx - - Provides access to the system Address Book. @@ -86,4 +74,4 @@ if (addressBook != null) { - \ No newline at end of file + diff --git a/docs/api/AddressBook/ABRecord.xml b/docs/api/AddressBook/ABRecord.xml deleted file mode 100644 index f74bdeb626ca..000000000000 --- a/docs/api/AddressBook/ABRecord.xml +++ /dev/null @@ -1,14 +0,0 @@ - - - - If set to , the method is invoked directly and will dispose managed and unmanaged resources; If set to the method is being called by the garbage collector finalizer and should only release unmanaged resources. - - Releases the resources used by the ABRecord object. - - This Dispose method releases the resources used by the ABRecord class. - This method is called by both the Dispose() method and the object finalizer (Finalize). When invoked by the Dispose method, the parameter disposing is set to and any managed object references that this object holds are also disposed or released; when invoked by the object finalizer, on the finalizer thread the value is set to . - Calling the Dispose method when the application is finished using the ABRecord ensures that all external resources used by this managed object are released as soon as possible. Once developers have invoked the Dispose method, the object is no longer useful and developers should no longer make any calls to it. - For more information on how to override this method and on the Dispose/IDisposable pattern, read the ``Implementing a Dispose Method'' document at https://msdn.microsoft.com/en-us/library/fs2xkftw.aspx - - - \ No newline at end of file diff --git a/docs/api/AudioToolbox/AudioConverter.xml b/docs/api/AudioToolbox/AudioConverter.xml deleted file mode 100644 index 26b15e2550ff..000000000000 --- a/docs/api/AudioToolbox/AudioConverter.xml +++ /dev/null @@ -1,14 +0,0 @@ - - - - If set to , the method is invoked directly and will dispose managed and unmanaged resources; If set to the method is being called by the garbage collector finalizer and should only release unmanaged resources. - - Releases the resources used by the AudioConverter object. - - This Dispose method releases the resources used by the AudioConverter class. - This method is called by both the Dispose() method and the object finalizer (Finalize). When invoked by the Dispose method, the parameter disposing is set to and any managed object references that this object holds are also disposed or released; when invoked by the object finalizer, on the finalizer thread the value is set to . - Calling the Dispose method when the application is finished using the AudioConverter ensures that all external resources used by this managed object are released as soon as possible. Once developers have invoked the Dispose method, the object is no longer useful and developers should no longer make any calls to it. - For more information on how to override this method and on the Dispose/IDisposable pattern, read the ``Implementing a Dispose Method'' document at https://msdn.microsoft.com/en-us/library/fs2xkftw.aspx - - - \ No newline at end of file diff --git a/docs/api/AudioToolbox/MusicPlayer.xml b/docs/api/AudioToolbox/MusicPlayer.xml deleted file mode 100644 index e3c6293fc3ab..000000000000 --- a/docs/api/AudioToolbox/MusicPlayer.xml +++ /dev/null @@ -1,14 +0,0 @@ - - - - If set to , the method is invoked directly and will dispose managed and unmanaged resources; If set to the method is being called by the garbage collector finalizer and should only release unmanaged resources. - - Releases the resources used by the MusicPlayer object. - - This Dispose method releases the resources used by the MusicPlayer class. - This method is called by both the Dispose() method and the object finalizer (Finalize). When invoked by the Dispose method, the parameter disposing is set to and any managed object references that this object holds are also disposed or released; when invoked by the object finalizer, on the finalizer thread the value is set to . - Calling the Dispose method when the application is finished using the MusicPlayer ensures that all external resources used by this managed object are released as soon as possible. Once developers have invoked the Dispose method, the object is no longer useful and developers should no longer make any calls to it. - For more information on how to override this method and on the Dispose/IDisposable pattern, read the ``Implementing a Dispose Method'' document at https://msdn.microsoft.com/en-us/library/fs2xkftw.aspx - - - \ No newline at end of file diff --git a/docs/api/AudioToolbox/MusicSequence.xml b/docs/api/AudioToolbox/MusicSequence.xml deleted file mode 100644 index a44b15023afc..000000000000 --- a/docs/api/AudioToolbox/MusicSequence.xml +++ /dev/null @@ -1,14 +0,0 @@ - - - - If set to , the method is invoked directly and will dispose managed and unmanaged resources; If set to the method is being called by the garbage collector finalizer and should only release unmanaged resources. - - Releases the resources used by the MusicSequence object. - - This Dispose method releases the resources used by the MusicSequence class. - This method is called by both the Dispose() method and the object finalizer (Finalize). When invoked by the Dispose method, the parameter disposing is set to and any managed object references that this object holds are also disposed or released; when invoked by the object finalizer, on the finalizer thread the value is set to . - Calling the Dispose method when the application is finished using the MusicSequence ensures that all external resources used by this managed object are released as soon as possible. Once developers have invoked the Dispose method, the object is no longer useful and developers should no longer make any calls to it. - For more information on how to override this method and on the Dispose/IDisposable pattern, read the ``Implementing a Dispose Method'' document at https://msdn.microsoft.com/en-us/library/fs2xkftw.aspx - - - \ No newline at end of file diff --git a/docs/api/AudioToolbox/MusicTrack.xml b/docs/api/AudioToolbox/MusicTrack.xml deleted file mode 100644 index b0b373048dbe..000000000000 --- a/docs/api/AudioToolbox/MusicTrack.xml +++ /dev/null @@ -1,14 +0,0 @@ - - - - If set to , the method is invoked directly and will dispose managed and unmanaged resources; If set to the method is being called by the garbage collector finalizer and should only release unmanaged resources. - - Releases the resources used by the MusicTrack object. - - This Dispose method releases the resources used by the MusicTrack class. - This method is called by both the Dispose() method and the object finalizer (Finalize). When invoked by the Dispose method, the parameter disposing is set to and any managed object references that this object holds are also disposed or released; when invoked by the object finalizer, on the finalizer thread the value is set to . - Calling the Dispose method when the application is finished using the MusicTrack ensures that all external resources used by this managed object are released as soon as possible. Once developers have invoked the Dispose method, the object is no longer useful and developers should no longer make any calls to it. - For more information on how to override this method and on the Dispose/IDisposable pattern, read the ``Implementing a Dispose Method'' document at https://msdn.microsoft.com/en-us/library/fs2xkftw.aspx - - - \ No newline at end of file diff --git a/docs/api/AudioUnit/AUGraph.xml b/docs/api/AudioUnit/AUGraph.xml index 2826d40902e9..ec76ec405feb 100644 --- a/docs/api/AudioUnit/AUGraph.xml +++ b/docs/api/AudioUnit/AUGraph.xml @@ -1,16 +1,4 @@ - - - If set to , the method is invoked directly and will dispose managed and unmanaged resources; If set to the method is being called by the garbage collector finalizer and should only release unmanaged resources. - - Releases the resources used by the AUGraph object. - - This Dispose method releases the resources used by the AUGraph class. - This method is called by both the Dispose() method and the object finalizer (Finalize). When invoked by the Dispose method, the parameter disposing is set to and any managed object references that this object holds are also disposed or released; when invoked by the object finalizer, on the finalizer thread the value is set to . - Calling the Dispose method when the application is finished using the AUGraph ensures that all external resources used by this managed object are released as soon as possible. Once developers have invoked the Dispose method, the object is no longer useful and developers should no longer make any calls to it. - For more information on how to override this method and on the Dispose/IDisposable pattern, read the ``Implementing a Dispose Method'' document at https://msdn.microsoft.com/en-us/library/fs2xkftw.aspx - - An audio processing graph. @@ -50,4 +38,4 @@ void createAUGraph () - \ No newline at end of file + diff --git a/docs/api/AudioUnit/AudioUnit.xml b/docs/api/AudioUnit/AudioUnit.xml deleted file mode 100644 index 1b1844867ad3..000000000000 --- a/docs/api/AudioUnit/AudioUnit.xml +++ /dev/null @@ -1,14 +0,0 @@ - - - - If set to , the method is invoked directly and will dispose managed and unmanaged resources; If set to the method is being called by the garbage collector finalizer and should only release unmanaged resources. - - Releases the resources used by the AudioUnit object. - - This Dispose method releases the resources used by the AudioUnit class. - This method is called by both the Dispose() method and the object finalizer (Finalize). When invoked by the Dispose method, the parameter disposing is set to and any managed object references that this object holds are also disposed or released; when invoked by the object finalizer, on the finalizer thread the value is set to . - Calling the Dispose method when the application is finished using the AudioUnit ensures that all external resources used by this managed object are released as soon as possible. Once developers have invoked the Dispose method, the object is no longer useful and developers should no longer make any calls to it. - For more information on how to override this method and on the Dispose/IDisposable pattern, read the ``Implementing a Dispose Method'' document at https://msdn.microsoft.com/en-us/library/fs2xkftw.aspx - - - \ No newline at end of file diff --git a/docs/api/CoreAnimation/CALayerDelegate.xml b/docs/api/CoreAnimation/CALayerDelegate.xml deleted file mode 100644 index 2b4384b3fc5b..000000000000 --- a/docs/api/CoreAnimation/CALayerDelegate.xml +++ /dev/null @@ -1,14 +0,0 @@ - - - - If set to , the method is invoked directly and will dispose managed and unmanaged resources; If set to the method is being called by the garbage collector finalizer and should only release unmanaged resources. - - Releases the resources used by the CALayerDelegate object. - - This Dispose method releases the resources used by the CALayerDelegate class. - This method is called by both the Dispose() method and the object finalizer (Finalize). When invoked by the Dispose method, the parameter disposing is set to and any managed object references that this object holds are also disposed or released; when invoked by the object finalizer, on the finalizer thread the value is set to . - Calling the Dispose method when the application is finished using the CALayerDelegate ensures that all external resources used by this managed object are released as soon as possible. Once developers have invoked the Dispose method, the object is no longer useful and developers should no longer make any calls to it. - For more information on how to override this method and on the Dispose/IDisposable pattern, read the ``Implementing a Dispose Method'' document at https://msdn.microsoft.com/en-us/library/fs2xkftw.aspx - - - \ No newline at end of file diff --git a/docs/api/CoreFoundation/CFMessagePort.xml b/docs/api/CoreFoundation/CFMessagePort.xml deleted file mode 100644 index 49f502229d2f..000000000000 --- a/docs/api/CoreFoundation/CFMessagePort.xml +++ /dev/null @@ -1,14 +0,0 @@ - - - - If set to , the method is invoked directly and will dispose managed and unmanaged resources; If set to the method is being called by the garbage collector finalizer and should only release unmanaged resources. - - Releases the resources used by the CFMessagePort object. - - This Dispose method releases the resources used by the CFMessagePort class. - This method is called by both the Dispose() method and the object finalizer (Finalize). When invoked by the Dispose method, the parameter disposing is set to and any managed object references that this object holds are also disposed or released; when invoked by the object finalizer, on the finalizer thread the value is set to . - Calling the Dispose method when the application is finished using the CFMessagePort ensures that all external resources used by this managed object are released as soon as possible. Once developers have invoked the Dispose method, the object is no longer useful and developers should no longer make any calls to it. - For more information on how to override this method and on the Dispose/IDisposable pattern, read the ``Implementing a Dispose Method'' document at https://msdn.microsoft.com/en-us/library/fs2xkftw.aspx - - - \ No newline at end of file diff --git a/docs/api/CoreFoundation/CFRunLoopSourceCustom.xml b/docs/api/CoreFoundation/CFRunLoopSourceCustom.xml deleted file mode 100644 index ca98fb3b86e6..000000000000 --- a/docs/api/CoreFoundation/CFRunLoopSourceCustom.xml +++ /dev/null @@ -1,14 +0,0 @@ - - - - If set to , the method is invoked directly and will dispose managed and unmanaged resources; If set to the method is being called by the garbage collector finalizer and should only release unmanaged resources. - - Releases the resources used by the CFRunLoopSourceCustom object. - - This Dispose method releases the resources used by the CFRunLoopSourceCustom class. - This method is called by both the Dispose() method and the object finalizer (Finalize). When invoked by the Dispose method, the parameter disposing is set to and any managed object references that this object holds are also disposed or released; when invoked by the object finalizer, on the finalizer thread the value is set to . - Calling the Dispose method when the application is finished using the CFRunLoopSourceCustom ensures that all external resources used by this managed object are released as soon as possible. Once developers have invoked the Dispose method, the object is no longer useful and developers should no longer make any calls to it. - For more information on how to override this method and on the Dispose/IDisposable pattern, read the ``Implementing a Dispose Method'' document at https://msdn.microsoft.com/en-us/library/fs2xkftw.aspx - - - \ No newline at end of file diff --git a/docs/api/CoreFoundation/CFSocket.xml b/docs/api/CoreFoundation/CFSocket.xml deleted file mode 100644 index 4275eb97807f..000000000000 --- a/docs/api/CoreFoundation/CFSocket.xml +++ /dev/null @@ -1,14 +0,0 @@ - - - - If set to , the method is invoked directly and will dispose managed and unmanaged resources; If set to the method is being called by the garbage collector finalizer and should only release unmanaged resources. - - Releases the resources used by the CFSocket object. - - This Dispose method releases the resources used by the CFSocket class. - This method is called by both the Dispose() method and the object finalizer (Finalize). When invoked by the Dispose method, the parameter disposing is set to and any managed object references that this object holds are also disposed or released; when invoked by the object finalizer, on the finalizer thread the value is set to . - Calling the Dispose method when the application is finished using the CFSocket ensures that all external resources used by this managed object are released as soon as possible. Once developers have invoked the Dispose method, the object is no longer useful and developers should no longer make any calls to it. - For more information on how to override this method and on the Dispose/IDisposable pattern, read the ``Implementing a Dispose Method'' document at https://msdn.microsoft.com/en-us/library/fs2xkftw.aspx - - - \ No newline at end of file diff --git a/docs/api/CoreFoundation/CFStream.xml b/docs/api/CoreFoundation/CFStream.xml index a10b924780ed..1154bb681795 100644 --- a/docs/api/CoreFoundation/CFStream.xml +++ b/docs/api/CoreFoundation/CFStream.xml @@ -21,18 +21,6 @@ - - - If set to , the method is invoked directly and will dispose managed and unmanaged resources; If set to the method is being called by the garbage collector finalizer and should only release unmanaged resources. - - Releases the resources used by the CFStream object. - - This Dispose method releases the resources used by the CFStream class. - This method is called by both the Dispose() method and the object finalizer (Finalize). When invoked by the Dispose method, the parameter disposing is set to and any managed object references that this object holds are also disposed or released; when invoked by the object finalizer, on the finalizer thread the value is set to . - Calling the Dispose method when the application is finished using the CFStream ensures that all external resources used by this managed object are released as soon as possible. Once developers have invoked the Dispose method, the object is no longer useful and developers should no longer make any calls to it. - For more information on how to override this method and on the Dispose/IDisposable pattern, read the ``Implementing a Dispose Method'' document at https://msdn.microsoft.com/en-us/library/fs2xkftw.aspx - - An abstract class that defines a stream for reading or writing bytes - modern applications should use the  APIs instead. @@ -60,4 +48,4 @@ ObjCRuntime.Runtime.GetNSObject(writeStream.Handle); - \ No newline at end of file + diff --git a/docs/api/CoreFoundation/DispatchSource.xml b/docs/api/CoreFoundation/DispatchSource.xml index b4780a89b938..82bd7455e9ae 100644 --- a/docs/api/CoreFoundation/DispatchSource.xml +++ b/docs/api/CoreFoundation/DispatchSource.xml @@ -27,18 +27,6 @@ Important: a cancellation handler is required for file descriptor and mach port based sources in order to safely close the descriptor or destroy the port. Closing the descriptor or port before the cancellation handler has run may result in a race condition: if a new descriptor is allocated with the same value as the recently closed descriptor while the source's event handler is still running, the event handler may read/write data to the wrong descriptor. - - - If set to , the method is invoked directly and will dispose managed and unmanaged resources; If set to the method is being called by the garbage collector finalizer and should only release unmanaged resources. - - Releases the resources used by the DispatchSource object. - - This Dispose method releases the resources used by the DispatchSource class. - This method is called by both the Dispose() method and the object finalizer (Finalize). When invoked by the Dispose method, the parameter disposing is set to and any managed object references that this object holds are also disposed or released; when invoked by the object finalizer, on the finalizer thread the value is set to . - Calling the Dispose method when the application is finished using the DispatchSource ensures that all external resources used by this managed object are released as soon as possible. Once developers have invoked the Dispose method, the object is no longer useful and developers should no longer make any calls to it. - For more information on how to override this method and on the Dispose/IDisposable pattern, read the ``Implementing a Dispose Method'' document at https://msdn.microsoft.com/en-us/library/fs2xkftw.aspx - - DispatchSource is a base class used to reprenset event sources that can monitor a variety of system objects and events including file descriptors, mach ports, processes, virtual filesystem nodes, signal delivery and timers. @@ -166,4 +154,4 @@ - \ No newline at end of file + diff --git a/docs/api/CoreGraphics/CGBitmapContext.xml b/docs/api/CoreGraphics/CGBitmapContext.xml deleted file mode 100644 index 29417f8b3cca..000000000000 --- a/docs/api/CoreGraphics/CGBitmapContext.xml +++ /dev/null @@ -1,14 +0,0 @@ - - - - If set to , the method is invoked directly and will dispose managed and unmanaged resources; If set to the method is being called by the garbage collector finalizer and should only release unmanaged resources. - - Releases the resources used by the CGBitmapContext object. - - This Dispose method releases the resources used by the CGBitmapContext class. - This method is called by both the Dispose() method and the object finalizer (Finalize). When invoked by the Dispose method, the parameter disposing is set to and any managed object references that this object holds are also disposed or released; when invoked by the object finalizer, on the finalizer thread the value is set to . - Calling the Dispose method when the application is finished using the CGBitmapContext ensures that all external resources used by this managed object are released as soon as possible. Once developers have invoked the Dispose method, the object is no longer useful and developers should no longer make any calls to it. - For more information on how to override this method and on the Dispose/IDisposable pattern, read the ``Implementing a Dispose Method'' document at https://msdn.microsoft.com/en-us/library/fs2xkftw.aspx - - - \ No newline at end of file diff --git a/docs/api/CoreGraphics/CGContextPDF.xml b/docs/api/CoreGraphics/CGContextPDF.xml deleted file mode 100644 index 63b07d9a2175..000000000000 --- a/docs/api/CoreGraphics/CGContextPDF.xml +++ /dev/null @@ -1,14 +0,0 @@ - - - - If set to , the method is invoked directly and will dispose managed and unmanaged resources; If set to the method is being called by the garbage collector finalizer and should only release unmanaged resources. - - Releases the resources used by the CGContextPDF object. - - This Dispose method releases the resources used by the CGContextPDF class. - This method is called by both the Dispose() method and the object finalizer (Finalize). When invoked by the Dispose method, the parameter disposing is set to and any managed object references that this object holds are also disposed or released; when invoked by the object finalizer, on the finalizer thread the value is set to . - Calling the Dispose method when the application is finished using the CGContextPDF ensures that all external resources used by this managed object are released as soon as possible. Once developers have invoked the Dispose method, the object is no longer useful and developers should no longer make any calls to it. - For more information on how to override this method and on the Dispose/IDisposable pattern, read the ``Implementing a Dispose Method'' document at https://msdn.microsoft.com/en-us/library/fs2xkftw.aspx - - - \ No newline at end of file diff --git a/docs/api/CoreGraphics/CGPDFScanner.xml b/docs/api/CoreGraphics/CGPDFScanner.xml deleted file mode 100644 index fc065adfb515..000000000000 --- a/docs/api/CoreGraphics/CGPDFScanner.xml +++ /dev/null @@ -1,14 +0,0 @@ - - - - If set to , the method is invoked directly and will dispose managed and unmanaged resources; If set to the method is being called by the garbage collector finalizer and should only release unmanaged resources. - - Releases the resources used by the CGPDFScanner object. - - This Dispose method releases the resources used by the CGPDFScanner class. - This method is called by both the Dispose() method and the object finalizer (Finalize). When invoked by the Dispose method, the parameter disposing is set to and any managed object references that this object holds are also disposed or released; when invoked by the object finalizer, on the finalizer thread the value is set to . - Calling the Dispose method when the application is finished using the CGPDFScanner ensures that all external resources used by this managed object are released as soon as possible. Once developers have invoked the Dispose method, the object is no longer useful and developers should no longer make any calls to it. - For more information on how to override this method and on the Dispose/IDisposable pattern, read the ``Implementing a Dispose Method'' document at https://msdn.microsoft.com/en-us/library/fs2xkftw.aspx - - - \ No newline at end of file diff --git a/docs/api/CoreMedia/CMBufferQueue.xml b/docs/api/CoreMedia/CMBufferQueue.xml deleted file mode 100644 index bff0563b93c6..000000000000 --- a/docs/api/CoreMedia/CMBufferQueue.xml +++ /dev/null @@ -1,14 +0,0 @@ - - - - If set to , the method is invoked directly and will dispose managed and unmanaged resources; If set to the method is being called by the garbage collector finalizer and should only release unmanaged resources. - - Releases the resources used by the CMBufferQueue object. - - This Dispose method releases the resources used by the CMBufferQueue class. - This method is called by both the Dispose() method and the object finalizer (Finalize). When invoked by the Dispose method, the parameter disposing is set to and any managed object references that this object holds are also disposed or released; when invoked by the object finalizer, on the finalizer thread the value is set to . - Calling the Dispose method when the application is finished using the CMBufferQueue ensures that all external resources used by this managed object are released as soon as possible. Once developers have invoked the Dispose method, the object is no longer useful and developers should no longer make any calls to it. - For more information on how to override this method and on the Dispose/IDisposable pattern, read the ``Implementing a Dispose Method'' document at https://msdn.microsoft.com/en-us/library/fs2xkftw.aspx - - - \ No newline at end of file diff --git a/docs/api/CoreMedia/CMSampleBuffer.xml b/docs/api/CoreMedia/CMSampleBuffer.xml deleted file mode 100644 index 603d7d71a651..000000000000 --- a/docs/api/CoreMedia/CMSampleBuffer.xml +++ /dev/null @@ -1,14 +0,0 @@ - - - - If set to , the method is invoked directly and will dispose managed and unmanaged resources; If set to the method is being called by the garbage collector finalizer and should only release unmanaged resources. - - Releases the resources used by the CMSampleBuffer object. - - This Dispose method releases the resources used by the CMSampleBuffer class. - This method is called by both the Dispose() method and the object finalizer (Finalize). When invoked by the Dispose method, the parameter disposing is set to and any managed object references that this object holds are also disposed or released; when invoked by the object finalizer, on the finalizer thread the value is set to . - Calling the Dispose method when the application is finished using the CMSampleBuffer ensures that all external resources used by this managed object are released as soon as possible. Once developers have invoked the Dispose method, the object is no longer useful and developers should no longer make any calls to it. - For more information on how to override this method and on the Dispose/IDisposable pattern, read the ``Implementing a Dispose Method'' document at https://msdn.microsoft.com/en-us/library/fs2xkftw.aspx - - - \ No newline at end of file diff --git a/docs/api/CoreMidi/MidiClient.xml b/docs/api/CoreMidi/MidiClient.xml index 92ad5da881c5..2974d06b6e87 100644 --- a/docs/api/CoreMidi/MidiClient.xml +++ b/docs/api/CoreMidi/MidiClient.xml @@ -1,16 +1,4 @@ - - - If set to , the method is invoked directly and will dispose managed and unmanaged resources; If set to the method is being called by the garbage collector finalizer and should only release unmanaged resources. - - Releases the resources used by the MidiClient object. - - This Dispose method releases the resources used by the MidiClient class. - This method is called by both the Dispose() method and the object finalizer (Finalize). When invoked by the Dispose method, the parameter disposing is set to and any managed object references that this object holds are also disposed or released; when invoked by the object finalizer, on the finalizer thread the value is set to . - Calling the Dispose method when the application is finished using the MidiClient ensures that all external resources used by this managed object are released as soon as possible. Once developers have invoked the Dispose method, the object is no longer useful and developers should no longer make any calls to it. - For more information on how to override this method and on the Dispose/IDisposable pattern, read the ``Implementing a Dispose Method'' document at https://msdn.microsoft.com/en-us/library/fs2xkftw.aspx - - Main entry point to use MIDI in MacOS X and iOS. @@ -69,4 +57,4 @@ inputPort.MessageReceived += delegate(object sender, MidiPacketsEventArgs e) { CoreMidiSample - \ No newline at end of file + diff --git a/docs/api/CoreMidi/MidiEndpoint.xml b/docs/api/CoreMidi/MidiEndpoint.xml deleted file mode 100644 index 5baf2107efd7..000000000000 --- a/docs/api/CoreMidi/MidiEndpoint.xml +++ /dev/null @@ -1,14 +0,0 @@ - - - - If set to , the method is invoked directly and will dispose managed and unmanaged resources; If set to the method is being called by the garbage collector finalizer and should only release unmanaged resources. - - Releases the resources used by the MidiEndpoint object. - - This Dispose method releases the resources used by the MidiEndpoint class. - This method is called by both the Dispose() method and the object finalizer (Finalize). When invoked by the Dispose method, the parameter disposing is set to and any managed object references that this object holds are also disposed or released; when invoked by the object finalizer, on the finalizer thread the value is set to . - Calling the Dispose method when the application is finished using the MidiEndpoint ensures that all external resources used by this managed object are released as soon as possible. Once developers have invoked the Dispose method, the object is no longer useful and developers should no longer make any calls to it. - For more information on how to override this method and on the Dispose/IDisposable pattern, read the ``Implementing a Dispose Method'' document at https://msdn.microsoft.com/en-us/library/fs2xkftw.aspx - - - \ No newline at end of file diff --git a/docs/api/CoreMidi/MidiPort.xml b/docs/api/CoreMidi/MidiPort.xml deleted file mode 100644 index 8f2a073727da..000000000000 --- a/docs/api/CoreMidi/MidiPort.xml +++ /dev/null @@ -1,14 +0,0 @@ - - - - If set to , the method is invoked directly and will dispose managed and unmanaged resources; If set to the method is being called by the garbage collector finalizer and should only release unmanaged resources. - - Releases the resources used by the MidiPort object. - - This Dispose method releases the resources used by the MidiPort class. - This method is called by both the Dispose() method and the object finalizer (Finalize). When invoked by the Dispose method, the parameter disposing is set to and any managed object references that this object holds are also disposed or released; when invoked by the object finalizer, on the finalizer thread the value is set to . - Calling the Dispose method when the application is finished using the MidiPort ensures that all external resources used by this managed object are released as soon as possible. Once developers have invoked the Dispose method, the object is no longer useful and developers should no longer make any calls to it. - For more information on how to override this method and on the Dispose/IDisposable pattern, read the ``Implementing a Dispose Method'' document at https://msdn.microsoft.com/en-us/library/fs2xkftw.aspx - - - \ No newline at end of file diff --git a/docs/api/Foundation/NSInputStream.xml b/docs/api/Foundation/NSInputStream.xml index f0301a69fb2e..dcc411e8610f 100644 --- a/docs/api/Foundation/NSInputStream.xml +++ b/docs/api/Foundation/NSInputStream.xml @@ -56,16 +56,4 @@ Apple documentation for NSInputStream - - - If set to , the method is invoked directly and will dispose managed and unmanaged resources; If set to the method is being called by the garbage collector finalizer and should only release unmanaged resources. - - Releases the resources used by the NSInputStream object. - - This Dispose method releases the resources used by the NSInputStream class. - This method is called by both the Dispose() method and the object finalizer (Finalize). When invoked by the Dispose method, the parameter disposing is set to and any managed object references that this object holds are also disposed or released; when invoked by the object finalizer, on the finalizer thread the value is set to . - Calling the Dispose method when the application is finished using the NSInputStream ensures that all external resources used by this managed object are released as soon as possible. Once developers have invoked the Dispose method, the object is no longer useful and developers should no longer make any calls to it. - For more information on how to override this method and on the Dispose/IDisposable pattern, read the ``Implementing a Dispose Method'' document at https://msdn.microsoft.com/en-us/library/fs2xkftw.aspx - - - \ No newline at end of file + diff --git a/docs/api/Foundation/NSObject.xml b/docs/api/Foundation/NSObject.xml index c3284b1f96bb..fcaa3f4f8d68 100644 --- a/docs/api/Foundation/NSObject.xml +++ b/docs/api/Foundation/NSObject.xml @@ -356,16 +356,16 @@ public UIView (CGRect frame) : base (NSObjectFlag.Empty) + Releases the resources used by this object. - If set to , the method is invoked directly and will dispose managed and unmanaged resources; If set to the method is being called by the garbage collector finalizer and should only release unmanaged resources. + If set to , the method is invoked directly and disposes managed and unmanaged resources. If set to , the method is called by the garbage collector finalizer and should only release unmanaged resources. - Releases the resources used by the NSObject object. - This Dispose method releases the resources used by the NSObject class. - This method is called by both the Dispose() method and the object finalizer (Finalize). When invoked by the Dispose method, the parameter disposing is set to and any managed object references that this object holds are also disposed or released; when invoked by the object finalizer, on the finalizer thread the value is set to . - Calling the Dispose method when the application is finished using the NSObject ensures that all external resources used by this managed object are released as soon as possible. Once developers have invoked the Dispose method, the object is no longer useful and developers should no longer make any calls to it. - For more information on how to override this method and on the Dispose/IDisposable pattern, read the ``Implementing a Dispose Method'' document at https://msdn.microsoft.com/en-us/library/fs2xkftw.aspx + This method releases the resources used by this class. + This method is called by both the method and the object finalizer (). When invoked by the method, the parameter is set to and any managed object references that this object holds are also disposed or released. When invoked by the object finalizer, on the finalizer thread, the parameter is set to . + Calling the method when the application is finished using this instance ensures that all external resources used by this managed object are released as soon as possible. Once developers have invoked the method, the object is no longer useful and developers should no longer make any calls to it. + @@ -464,4 +464,4 @@ An IDisposable object.  Invoke the Dispose method on this object to remove the - \ No newline at end of file + diff --git a/docs/api/GameKit/GKPeerPickerController.xml b/docs/api/GameKit/GKPeerPickerController.xml index 0a48efecaf2f..995e12a24cbe 100644 --- a/docs/api/GameKit/GKPeerPickerController.xml +++ b/docs/api/GameKit/GKPeerPickerController.xml @@ -31,16 +31,4 @@ public UIView (CGRect frame) : base (NSObjectFlag.Empty) - - - If set to , the method is invoked directly and will dispose managed and unmanaged resources; If set to the method is being called by the garbage collector finalizer and should only release unmanaged resources. - - Releases the resources used by the GKPeerPickerController object. - - This Dispose method releases the resources used by the GKPeerPickerController class. - This method is called by both the Dispose() method and the object finalizer (Finalize). When invoked by the Dispose method, the parameter disposing is set to and any managed object references that this object holds are also disposed or released; when invoked by the object finalizer, on the finalizer thread the value is set to . - Calling the Dispose method when the application is finished using the GKPeerPickerController ensures that all external resources used by this managed object are released as soon as possible. Once developers have invoked the Dispose method, the object is no longer useful and developers should no longer make any calls to it. - For more information on how to override this method and on the Dispose/IDisposable pattern, read the ``Implementing a Dispose Method'' document at https://msdn.microsoft.com/en-us/library/fs2xkftw.aspx - - - \ No newline at end of file + diff --git a/docs/api/MediaToolbox/MTAudioProcessingTap.xml b/docs/api/MediaToolbox/MTAudioProcessingTap.xml deleted file mode 100644 index 0916f9ce732f..000000000000 --- a/docs/api/MediaToolbox/MTAudioProcessingTap.xml +++ /dev/null @@ -1,14 +0,0 @@ - - - - If set to , the method is invoked directly and will dispose managed and unmanaged resources; If set to the method is being called by the garbage collector finalizer and should only release unmanaged resources. - - Releases the resources used by the MTAudioProcessingTap object. - - This Dispose method releases the resources used by the MTAudioProcessingTap class. - This method is called by both the Dispose() method and the object finalizer (Finalize). When invoked by the Dispose method, the parameter disposing is set to and any managed object references that this object holds are also disposed or released; when invoked by the object finalizer, on the finalizer thread the value is set to . - Calling the Dispose method when the application is finished using the MTAudioProcessingTap ensures that all external resources used by this managed object are released as soon as possible. Once developers have invoked the Dispose method, the object is no longer useful and developers should no longer make any calls to it. - For more information on how to override this method and on the Dispose/IDisposable pattern, read the ``Implementing a Dispose Method'' document at https://msdn.microsoft.com/en-us/library/fs2xkftw.aspx - - - \ No newline at end of file diff --git a/docs/api/NewsstandKit/NKAssetDownload.xml b/docs/api/NewsstandKit/NKAssetDownload.xml index 6eb6ac5c5b86..faec2f7be143 100644 --- a/docs/api/NewsstandKit/NKAssetDownload.xml +++ b/docs/api/NewsstandKit/NKAssetDownload.xml @@ -31,16 +31,4 @@ public UIView (CGRect frame) : base (NSObjectFlag.Empty) - - - If set to , the method is invoked directly and will dispose managed and unmanaged resources; If set to the method is being called by the garbage collector finalizer and should only release unmanaged resources. - - Releases the resources used by the NKAssetDownload object. - - This Dispose method releases the resources used by the NKAssetDownload class. - This method is called by both the Dispose() method and the object finalizer (Finalize). When invoked by the Dispose method, the parameter disposing is set to and any managed object references that this object holds are also disposed or released; when invoked by the object finalizer, on the finalizer thread the value is set to . - Calling the Dispose method when the application is finished using the NKAssetDownload ensures that all external resources used by this managed object are released as soon as possible. Once developers have invoked the Dispose method, the object is no longer useful and developers should no longer make any calls to it. - For more information on how to override this method and on the Dispose/IDisposable pattern, read the ``Implementing a Dispose Method'' document at https://msdn.microsoft.com/en-us/library/fs2xkftw.aspx - - - \ No newline at end of file + diff --git a/docs/api/Security/SslContext.xml b/docs/api/Security/SslContext.xml deleted file mode 100644 index 200a6c491b64..000000000000 --- a/docs/api/Security/SslContext.xml +++ /dev/null @@ -1,14 +0,0 @@ - - - - If set to , the method is invoked directly and will dispose managed and unmanaged resources; If set to the method is being called by the garbage collector finalizer and should only release unmanaged resources. - - Releases the resources used by the SslContext object. - - This Dispose method releases the resources used by the SslContext class. - This method is called by both the Dispose() method and the object finalizer (Finalize). When invoked by the Dispose method, the parameter disposing is set to and any managed object references that this object holds are also disposed or released; when invoked by the object finalizer, on the finalizer thread the value is set to . - Calling the Dispose method when the application is finished using the SslContext ensures that all external resources used by this managed object are released as soon as possible. Once developers have invoked the Dispose method, the object is no longer useful and developers should no longer make any calls to it. - For more information on how to override this method and on the Dispose/IDisposable pattern, read the ``Implementing a Dispose Method'' document at https://msdn.microsoft.com/en-us/library/fs2xkftw.aspx - - - \ No newline at end of file diff --git a/docs/api/VideoToolbox/VTMultiPassStorage.xml b/docs/api/VideoToolbox/VTMultiPassStorage.xml deleted file mode 100644 index f9d6d6d1085c..000000000000 --- a/docs/api/VideoToolbox/VTMultiPassStorage.xml +++ /dev/null @@ -1,14 +0,0 @@ - - - - If set to , the method is invoked directly and will dispose managed and unmanaged resources; If set to the method is being called by the garbage collector finalizer and should only release unmanaged resources. - - Releases the resources used by the VTMultiPassStorage object. - - This Dispose method releases the resources used by the VTMultiPassStorage class. - This method is called by both the Dispose() method and the object finalizer (Finalize). When invoked by the Dispose method, the parameter disposing is set to and any managed object references that this object holds are also disposed or released; when invoked by the object finalizer, on the finalizer thread the value is set to . - Calling the Dispose method when the application is finished using the VTMultiPassStorage ensures that all external resources used by this managed object are released as soon as possible. Once developers have invoked the Dispose method, the object is no longer useful and developers should no longer make any calls to it. - For more information on how to override this method and on the Dispose/IDisposable pattern, read the ``Implementing a Dispose Method'' document at https://msdn.microsoft.com/en-us/library/fs2xkftw.aspx - - - \ No newline at end of file diff --git a/src/AddressBook/ABAddressBook.cs b/src/AddressBook/ABAddressBook.cs index 1cad31d1891e..9bb491f40e51 100644 --- a/src/AddressBook/ABAddressBook.cs +++ b/src/AddressBook/ABAddressBook.cs @@ -233,7 +233,7 @@ static ABAddressBook () ErrorDomain = Dlfcn.GetStringConstant (Libraries.AddressBook.Handle, "ABAddressBookErrorDomain")!; } - /// + /// protected override void Dispose (bool disposing) { if (sender.IsAllocated) diff --git a/src/AddressBook/ABRecord.cs b/src/AddressBook/ABRecord.cs index 3dfbceeb0488..1914d19bae27 100644 --- a/src/AddressBook/ABRecord.cs +++ b/src/AddressBook/ABRecord.cs @@ -128,7 +128,7 @@ internal static ABRecord FromHandle (IntPtr handle, ABAddressBook? addressbook, return rec; } - /// + /// protected override void Dispose (bool disposing) { AddressBook = null; diff --git a/src/AudioToolbox/AudioConverter.cs b/src/AudioToolbox/AudioConverter.cs index 310e439a568e..8114a5ed5d4a 100644 --- a/src/AudioToolbox/AudioConverter.cs +++ b/src/AudioToolbox/AudioConverter.cs @@ -521,7 +521,7 @@ public static AudioFormatType []? EncodeFormats { } } - /// + /// protected override void Dispose (bool disposing) { if (Handle != IntPtr.Zero && Owns) diff --git a/src/AudioToolbox/AudioFile.cs b/src/AudioToolbox/AudioFile.cs index f4b9ffc0fee3..9242049a702b 100644 --- a/src/AudioToolbox/AudioFile.cs +++ b/src/AudioToolbox/AudioFile.cs @@ -2717,8 +2717,7 @@ static int SourceSetSize (IntPtr clientData, long size) /// If the is created in reading mode, this method should return the size of the audio data. If the is created to write data, this method is invoked to set the audio file size. public abstract long Size { get; set; } - /// Releases the resources used by the object. - /// If set to , the method is invoked directly and will dispose managed and unmanaged resources; If set to the method is being called by the garbage collector finalizer and should only release unmanaged resources. + /// protected override void Dispose (bool disposing) { base.Dispose (disposing); diff --git a/src/AudioToolbox/MusicPlayer.cs b/src/AudioToolbox/MusicPlayer.cs index 79c04a4a7955..9e5a1839ded4 100644 --- a/src/AudioToolbox/MusicPlayer.cs +++ b/src/AudioToolbox/MusicPlayer.cs @@ -125,7 +125,7 @@ public class MusicPlayer : DisposableObject { { } - /// + /// protected override void Dispose (bool disposing) { currentSequence = null; diff --git a/src/AudioToolbox/MusicSequence.cs b/src/AudioToolbox/MusicSequence.cs index 5213b92da09b..b4266319fb37 100644 --- a/src/AudioToolbox/MusicSequence.cs +++ b/src/AudioToolbox/MusicSequence.cs @@ -78,7 +78,7 @@ public MusicSequence () sequenceMap [Handle] = new WeakReference (this); } - /// + /// protected override void Dispose (bool disposing) { if (Handle != IntPtr.Zero && Owns) { diff --git a/src/AudioToolbox/MusicTrack.cs b/src/AudioToolbox/MusicTrack.cs index 92c0665fa1e0..f33d217ac0d7 100644 --- a/src/AudioToolbox/MusicTrack.cs +++ b/src/AudioToolbox/MusicTrack.cs @@ -290,7 +290,7 @@ internal MusicTrack (MusicSequence sequence, IntPtr handle, bool owns) this.sequence = sequence; } - /// + /// protected override void Dispose (bool disposing) { if (Handle != IntPtr.Zero && Owns) { diff --git a/src/AudioUnit/AUGraph.cs b/src/AudioUnit/AUGraph.cs index cf15c94b3694..bb6580ac220e 100644 --- a/src/AudioUnit/AUGraph.cs +++ b/src/AudioUnit/AUGraph.cs @@ -554,7 +554,7 @@ public void LogAllNodes () CAShow (GetCheckedHandle ()); } - /// + /// protected override void Dispose (bool disposing) { if (Handle != IntPtr.Zero && Owns) { diff --git a/src/AudioUnit/AudioUnit.cs b/src/AudioUnit/AudioUnit.cs index 93ea3fb278ee..27b409f76acb 100644 --- a/src/AudioUnit/AudioUnit.cs +++ b/src/AudioUnit/AudioUnit.cs @@ -1093,7 +1093,7 @@ public AudioUnitStatus ScheduleParameter (AudioUnitParameterEvent inParameterEve [DllImport (Constants.AudioUnitLibrary)] static extern int AudioComponentInstanceDispose (IntPtr inInstance); - /// + /// protected override void Dispose (bool disposing) { if (Handle != IntPtr.Zero && Owns) { diff --git a/src/Compression/Compression.cs b/src/Compression/Compression.cs index 7ede110e9917..dcd80d9d1ed7 100644 --- a/src/Compression/Compression.cs +++ b/src/Compression/Compression.cs @@ -652,9 +652,7 @@ private void PurgeBuffers (bool disposing) } } - /// To be added. - /// Releases the unmanaged resources used by the CompressionStream and optionally releases the managed resources. - /// To be added. + /// protected override void Dispose (bool disposing) { try { diff --git a/src/CoreAnimation/CALayerDelegate.cs b/src/CoreAnimation/CALayerDelegate.cs index 776182d49001..d4a7ee0f0f7f 100644 --- a/src/CoreAnimation/CALayerDelegate.cs +++ b/src/CoreAnimation/CALayerDelegate.cs @@ -40,7 +40,7 @@ internal void SetCALayer (CALayer? layer) calayer = layer is null ? null : new WeakReference (layer); } - /// + /// protected override void Dispose (bool disposing) { if (calayer?.TryGetTarget (out var layer) == true) { diff --git a/src/CoreFoundation/CFMessagePort.cs b/src/CoreFoundation/CFMessagePort.cs index 0ce9a909bf74..43aa87de939e 100644 --- a/src/CoreFoundation/CFMessagePort.cs +++ b/src/CoreFoundation/CFMessagePort.cs @@ -161,7 +161,7 @@ internal CFMessagePort (NativeHandle handle, bool owns) { } - /// + /// protected override void Dispose (bool disposing) { if (Handle != IntPtr.Zero) { diff --git a/src/CoreFoundation/CFRunLoop.cs b/src/CoreFoundation/CFRunLoop.cs index ba237a02634a..27821f39334c 100644 --- a/src/CoreFoundation/CFRunLoop.cs +++ b/src/CoreFoundation/CFRunLoop.cs @@ -212,7 +212,7 @@ static void Perform (IntPtr info) /// To be added. protected abstract void OnPerform (); - /// + /// protected override void Dispose (bool disposing) { if (disposing) { diff --git a/src/CoreFoundation/CFSocket.cs b/src/CoreFoundation/CFSocket.cs index ebee556e6e50..b79befb343cd 100644 --- a/src/CoreFoundation/CFSocket.cs +++ b/src/CoreFoundation/CFSocket.cs @@ -312,7 +312,7 @@ unsafe internal void ReleaseContext (GCHandle gch) } } - /// + /// protected override void Dispose (bool disposing) { if (Handle != NativeHandle.Zero) diff --git a/src/CoreFoundation/CFStream.cs b/src/CoreFoundation/CFStream.cs index 9e75f4956020..2849add4620b 100644 --- a/src/CoreFoundation/CFStream.cs +++ b/src/CoreFoundation/CFStream.cs @@ -789,7 +789,7 @@ protected CFStream (NativeHandle handle, bool owns) { } - /// + /// protected override void Dispose (bool disposing) { if (disposing) { diff --git a/src/CoreFoundation/DispatchSource.cs b/src/CoreFoundation/DispatchSource.cs index 926dcf971f64..644eaa5850c4 100644 --- a/src/CoreFoundation/DispatchSource.cs +++ b/src/CoreFoundation/DispatchSource.cs @@ -231,7 +231,7 @@ public void Cancel () dispatch_source_cancel (GetCheckedHandle ()); } - /// + /// protected override void Dispose (bool disposing) { // Do not call the Cancel method here @@ -873,9 +873,7 @@ public VnodeMonitor (string path, VnodeMonitorKind vnodeKind, DispatchQueue? que InitializeHandle (handle); } - /// To be added. - /// To be added. - /// To be added. + /// protected override void Dispose (bool disposing) { if (fd != -1) { diff --git a/src/CoreFoundation/NativeObject.cs b/src/CoreFoundation/NativeObject.cs index be908ae3a8dd..5170e0521045 100644 --- a/src/CoreFoundation/NativeObject.cs +++ b/src/CoreFoundation/NativeObject.cs @@ -49,9 +49,7 @@ protected NativeObject (NativeHandle handle, bool owns, bool verify) Retain (); } - /// To be added. - /// To be added. - /// To be added. + /// protected override void Dispose (bool disposing) { if (Handle != NativeHandle.Zero) diff --git a/src/CoreGraphics/CGBitmapContext.cs b/src/CoreGraphics/CGBitmapContext.cs index 08a78ad064a5..0244b4e7a7ae 100644 --- a/src/CoreGraphics/CGBitmapContext.cs +++ b/src/CoreGraphics/CGBitmapContext.cs @@ -103,7 +103,7 @@ public CGBitmapContext (byte []? data, nint width, nint height, nint bitsPerComp this.buffer = buffer; } - /// + /// protected override void Dispose (bool disposing) { if (buffer.IsAllocated) diff --git a/src/CoreGraphics/CGContextPDF.cs b/src/CoreGraphics/CGContextPDF.cs index 3cac4382cc21..af10c41c841e 100644 --- a/src/CoreGraphics/CGContextPDF.cs +++ b/src/CoreGraphics/CGContextPDF.cs @@ -502,7 +502,7 @@ public void SetPageTagStructureTree (NSDictionary pageTagStructureTreeDictionary GC.KeepAlive (pageTagStructureTreeDictionary); } - /// + /// protected override void Dispose (bool disposing) { if (disposing) diff --git a/src/CoreGraphics/CGPDFScanner.cs b/src/CoreGraphics/CGPDFScanner.cs index 1fda82f13338..0be4e6670abe 100644 --- a/src/CoreGraphics/CGPDFScanner.cs +++ b/src/CoreGraphics/CGPDFScanner.cs @@ -76,7 +76,7 @@ protected internal override void Release () CGPDFScannerRelease (GetCheckedHandle ()); } - /// + /// protected override void Dispose (bool disposing) { if (gch.IsAllocated) diff --git a/src/CoreMedia/CMBufferQueue.cs b/src/CoreMedia/CMBufferQueue.cs index 95ff6a1f9113..9cb69f33c6c8 100644 --- a/src/CoreMedia/CMBufferQueue.cs +++ b/src/CoreMedia/CMBufferQueue.cs @@ -87,7 +87,7 @@ struct CMBufferCallbacks2 { internal IntPtr XgetSize; } - /// + /// protected override void Dispose (bool disposing) { queueObjects.Clear (); diff --git a/src/CoreMedia/CMSampleBuffer.cs b/src/CoreMedia/CMSampleBuffer.cs index 7e22ceaa91a0..49392d180ae3 100644 --- a/src/CoreMedia/CMSampleBuffer.cs +++ b/src/CoreMedia/CMSampleBuffer.cs @@ -50,7 +50,7 @@ internal CMSampleBuffer (NativeHandle handle, bool owns) return new CMSampleBuffer (handle, owns); } - /// + /// protected override void Dispose (bool disposing) { if (invalidate.IsAllocated) diff --git a/src/CoreMidi/MidiServices.cs b/src/CoreMidi/MidiServices.cs index 7fef8580a641..b72e87f53eec 100644 --- a/src/CoreMidi/MidiServices.cs +++ b/src/CoreMidi/MidiServices.cs @@ -738,7 +738,7 @@ static void ClientCallback (IntPtr message, IntPtr context) } } - /// + /// protected override void Dispose (bool disposing) { SetupChanged = null; @@ -1106,7 +1106,7 @@ internal override void DisposeHandle () gch.Free (); } - /// + /// protected override void Dispose (bool disposing) { MessageReceived = null; @@ -2657,7 +2657,7 @@ internal MidiEndpoint (MidiClient client, string name, out MidiError code) } } - /// + /// protected override void Dispose (bool disposing) { MessageReceived = null; diff --git a/src/CoreText/CTParagraphStyle.cs b/src/CoreText/CTParagraphStyle.cs index e11efbec2002..13e118c1d741 100644 --- a/src/CoreText/CTParagraphStyle.cs +++ b/src/CoreText/CTParagraphStyle.cs @@ -234,6 +234,7 @@ internal override void WriteValue (CTParagraphStyleSettingValue [] values, int i values [index].pointer = value.Handle; } + /// public override void Dispose (CTParagraphStyleSettingValue [] values, int index) { values [index].pointer = IntPtr.Zero; diff --git a/src/CoreVideo/CVDisplayLink.cs b/src/CoreVideo/CVDisplayLink.cs index 82499c146067..0596a96ca16d 100644 --- a/src/CoreVideo/CVDisplayLink.cs +++ b/src/CoreVideo/CVDisplayLink.cs @@ -171,9 +171,7 @@ protected internal override void Release () CVDisplayLinkRelease (GetCheckedHandle ()); } - /// To be added. - /// To be added. - /// To be added. + /// protected override void Dispose (bool disposing) { if (callbackHandle.IsAllocated) { diff --git a/src/Darwin/SystemLog.cs b/src/Darwin/SystemLog.cs index e68877dc16c3..1778333e5197 100644 --- a/src/Darwin/SystemLog.cs +++ b/src/Darwin/SystemLog.cs @@ -61,9 +61,7 @@ public enum Option { NoRemote, } - /// To be added. - /// To be added. - /// To be added. + /// protected override void Dispose (bool disposing) { if (Handle != IntPtr.Zero && Owns) @@ -310,9 +308,7 @@ public Message (Kind kind) [DllImport (Constants.SystemLibrary)] extern static void asl_free (IntPtr handle); - /// To be added. - /// To be added. - /// To be added. + /// protected override void Dispose (bool disposing) { if (Handle != IntPtr.Zero && Owns) diff --git a/src/Foundation/NSData.cs b/src/Foundation/NSData.cs index 8ed950f07fe0..a6499051e4df 100644 --- a/src/Foundation/NSData.cs +++ b/src/Foundation/NSData.cs @@ -160,6 +160,7 @@ public UnmanagedMemoryStreamWithRef (NSData source) : base ((byte*) source.Bytes this.source = source; } + /// protected override void Dispose (bool disposing) { source = null; diff --git a/src/Foundation/NSInputStream.cs b/src/Foundation/NSInputStream.cs index 23d821cf7bdf..e65843332aeb 100644 --- a/src/Foundation/NSInputStream.cs +++ b/src/Foundation/NSInputStream.cs @@ -78,7 +78,7 @@ public virtual nint Read (IntPtr buffer, nuint len) } } - /// + /// protected override void Dispose (bool disposing) { context.Release (); diff --git a/src/Foundation/NSNotificationCenter.cs b/src/Foundation/NSNotificationCenter.cs index a0a86a0dd033..d956d5c04a4a 100644 --- a/src/Foundation/NSNotificationCenter.cs +++ b/src/Foundation/NSNotificationCenter.cs @@ -48,6 +48,7 @@ public void Post (NSNotification s) s.Dispose (); } + /// protected override void Dispose (bool disposing) { if (disposing && notificationCenter is not null) { diff --git a/src/Foundation/NSObject2.cs b/src/Foundation/NSObject2.cs index d5bec3334b99..67db516a5cec 100644 --- a/src/Foundation/NSObject2.cs +++ b/src/Foundation/NSObject2.cs @@ -1264,6 +1264,7 @@ public override void ObserveValue (NSString keyPath, NSObject ofObject, NSDictio base.ObserveValue (keyPath, ofObject, change, context); } + /// protected override void Dispose (bool disposing) { if (disposing) { diff --git a/src/Foundation/NSUrlSessionHandler.cs b/src/Foundation/NSUrlSessionHandler.cs index 610af3a33997..fb87f1f80a1d 100644 --- a/src/Foundation/NSUrlSessionHandler.cs +++ b/src/Foundation/NSUrlSessionHandler.cs @@ -277,9 +277,7 @@ void RemoveInflightData (NSUrlSessionTask task, bool cancel = true) task?.Dispose (); } - /// To be added. - /// To be added. - /// To be added. + /// protected override void Dispose (bool disposing) { lock (inflightRequestsLock) { @@ -1338,6 +1336,7 @@ public NSUrlSessionDataTaskStreamContent (NSUrlSessionDataTaskStream source, Act disposed = onDisposed; } + /// protected override void Dispose (bool disposing) { var action = Interlocked.Exchange (ref disposed, null); @@ -1403,6 +1402,7 @@ protected override Task CreateContentReadStreamAsync () return Task.FromResult (content); } + /// protected override void Dispose (bool disposing) { if (disposing) { @@ -1703,6 +1703,7 @@ public override void Unschedule (NSRunLoop aRunLoop, NSString nsMode) cfRunLoop.RemoveSource (source, nsMode); } + /// protected override void Dispose (bool disposing) { stream?.Dispose (); diff --git a/src/GameKit/GKCompat.cs b/src/GameKit/GKCompat.cs index 4e6d760da63a..1548a392bc00 100644 --- a/src/GameKit/GKCompat.cs +++ b/src/GameKit/GKCompat.cs @@ -233,7 +233,7 @@ public virtual NSObject? WeakDelegate { } } - /// + /// protected override void Dispose (bool disposing) { throw new PlatformNotSupportedException (Constants.TypeUnavailable); diff --git a/src/MediaToolbox/MTAudioProcessingTap.cs b/src/MediaToolbox/MTAudioProcessingTap.cs index 04778249a58c..7c6ad948bbbe 100644 --- a/src/MediaToolbox/MTAudioProcessingTap.cs +++ b/src/MediaToolbox/MTAudioProcessingTap.cs @@ -143,7 +143,7 @@ public MTAudioProcessingTap (MTAudioProcessingTapCallbacks callbacks, MTAudioPro handles [handle] = this; } - /// + /// protected override void Dispose (bool disposing) { if (Handle != IntPtr.Zero) { diff --git a/src/Metal/MTLIOCompression.cs b/src/Metal/MTLIOCompression.cs index 79643cb49fea..cfe3b53c6663 100644 --- a/src/Metal/MTLIOCompression.cs +++ b/src/Metal/MTLIOCompression.cs @@ -63,6 +63,7 @@ public void AppendData (NSData data) return new MTLIOCompressionContext (handle, owns: true); } + /// protected override void Dispose (bool disposing) { // only call the parent if the user did not call FlushAndDestroy diff --git a/src/NewsstandKit/Compat.cs b/src/NewsstandKit/Compat.cs index 96bfb4202324..734b489d5cf3 100644 --- a/src/NewsstandKit/Compat.cs +++ b/src/NewsstandKit/Compat.cs @@ -75,7 +75,7 @@ public virtual NSDictionary? UserInfo { } } - /// + /// protected override void Dispose (bool disposing) { throw new InvalidOperationException (Constants.NewsstandKitRemoved); diff --git a/src/PassKit/PKCompat.cs b/src/PassKit/PKCompat.cs index 28813be8c659..4810177e6ffa 100644 --- a/src/PassKit/PKCompat.cs +++ b/src/PassKit/PKCompat.cs @@ -127,9 +127,7 @@ public virtual NSObject? WeakDelegate { } } - /// To be added. - /// To be added. - /// To be added. + /// protected override void Dispose (bool disposing) { throw new InvalidOperationException (Constants.RemovedFromPassKit); diff --git a/src/SearchKit/SearchKit.cs b/src/SearchKit/SearchKit.cs index b2d5fb4843b7..e5130fbd3c00 100644 --- a/src/SearchKit/SearchKit.cs +++ b/src/SearchKit/SearchKit.cs @@ -373,9 +373,7 @@ public void Close () Dispose (); } - /// To be added. - /// To be added. - /// To be added. + /// protected override void Dispose (bool disposing) { if (Handle != NativeHandle.Zero) { diff --git a/src/Security/Authorization.cs b/src/Security/Authorization.cs index 1d7c694dd3a4..827641e14ca0 100644 --- a/src/Security/Authorization.cs +++ b/src/Security/Authorization.cs @@ -201,6 +201,7 @@ public int ExecuteWithPrivileges (string pathToTool, AuthorizationFlags flags, s return retval; } + /// protected override void Dispose (bool disposing) { Dispose (0, disposing); diff --git a/src/Security/SslContext.cs b/src/Security/SslContext.cs index bd3cf98b37a0..e27f8084992b 100644 --- a/src/Security/SslContext.cs +++ b/src/Security/SslContext.cs @@ -48,7 +48,7 @@ public SslContext (SslProtocolSide protocolSide, SslConnectionType connectionTyp [DllImport (Constants.SecurityLibrary)] extern static /* OSStatus */ SslStatus SSLClose (/* SSLContextRef */ IntPtr context); - /// + /// protected override void Dispose (bool disposing) { if (Handle != IntPtr.Zero) diff --git a/src/System.Net.Http/CFNetworkHandler.cs b/src/System.Net.Http/CFNetworkHandler.cs index ca3c03af3bda..a4e76243f921 100644 --- a/src/System.Net.Http/CFNetworkHandler.cs +++ b/src/System.Net.Http/CFNetworkHandler.cs @@ -152,9 +152,7 @@ public bool UseSystemProxy { // TODO: Add more properties - /// To be added. - /// To be added. - /// To be added. + /// protected override void Dispose (bool disposing) { // TODO: CloseStream remaining stream buckets if there are any diff --git a/src/SystemConfiguration/NetworkReachability.cs b/src/SystemConfiguration/NetworkReachability.cs index 6944d3cacc77..3fa95a958c5a 100644 --- a/src/SystemConfiguration/NetworkReachability.cs +++ b/src/SystemConfiguration/NetworkReachability.cs @@ -687,6 +687,7 @@ public bool SetDispatchQueue (DispatchQueue? queue) return result; } + /// protected override void Dispose (bool disposing) { if (gch.IsAllocated) diff --git a/src/UIKit/UIControl.cs b/src/UIKit/UIControl.cs index 9345dcf238da..f4787654b8f4 100644 --- a/src/UIKit/UIControl.cs +++ b/src/UIKit/UIControl.cs @@ -38,6 +38,7 @@ public void Activated () eh (source, EventArgs.Empty); } + /// protected override void Dispose (bool disposing) { eh = null; diff --git a/src/VideoToolbox/VTCompressionSession.cs b/src/VideoToolbox/VTCompressionSession.cs index 4a40ba905b4f..c07473e42a4a 100644 --- a/src/VideoToolbox/VTCompressionSession.cs +++ b/src/VideoToolbox/VTCompressionSession.cs @@ -31,6 +31,7 @@ internal VTCompressionSession (NativeHandle handle, bool owns) : base (handle, o { } + /// protected override void Dispose (bool disposing) { if (Handle != IntPtr.Zero) diff --git a/src/VideoToolbox/VTDecompressionSession.cs b/src/VideoToolbox/VTDecompressionSession.cs index 59d6da57412b..3cf3fc096a2b 100644 --- a/src/VideoToolbox/VTDecompressionSession.cs +++ b/src/VideoToolbox/VTDecompressionSession.cs @@ -29,6 +29,7 @@ internal VTDecompressionSession (NativeHandle handle, bool owns) : base (handle, { } + /// protected override void Dispose (bool disposing) { if (Handle != IntPtr.Zero) diff --git a/src/VideoToolbox/VTMotionEstimationSession.cs b/src/VideoToolbox/VTMotionEstimationSession.cs index c397212e4e85..7582391bfcaf 100644 --- a/src/VideoToolbox/VTMotionEstimationSession.cs +++ b/src/VideoToolbox/VTMotionEstimationSession.cs @@ -25,6 +25,7 @@ internal VTMotionEstimationSession (NativeHandle handle, bool owns) { } + /// protected override void Dispose (bool disposing) { if (Handle != IntPtr.Zero) diff --git a/src/VideoToolbox/VTMultiPassStorage.cs b/src/VideoToolbox/VTMultiPassStorage.cs index a1c3d27d6caa..93078262eaee 100644 --- a/src/VideoToolbox/VTMultiPassStorage.cs +++ b/src/VideoToolbox/VTMultiPassStorage.cs @@ -29,7 +29,7 @@ internal VTMultiPassStorage (NativeHandle handle, bool owns) { } - /// + /// protected override void Dispose (bool disposing) { if (Handle != IntPtr.Zero) diff --git a/src/VideoToolbox/VTPixelRotationSession.cs b/src/VideoToolbox/VTPixelRotationSession.cs index a98956dd5da0..3c8116617060 100644 --- a/src/VideoToolbox/VTPixelRotationSession.cs +++ b/src/VideoToolbox/VTPixelRotationSession.cs @@ -32,6 +32,7 @@ internal VTPixelRotationSession (NativeHandle handle, bool owns) : base (handle, [DllImport (Constants.VideoToolboxLibrary)] extern static void VTPixelRotationSessionInvalidate (/* VTPixelRotationSessionRef */ IntPtr session); + /// protected override void Dispose (bool disposing) { if (Handle != IntPtr.Zero) diff --git a/src/VideoToolbox/VTPixelTransferSession.cs b/src/VideoToolbox/VTPixelTransferSession.cs index f874e3ed3182..072daa219382 100644 --- a/src/VideoToolbox/VTPixelTransferSession.cs +++ b/src/VideoToolbox/VTPixelTransferSession.cs @@ -32,6 +32,7 @@ internal VTPixelTransferSession (NativeHandle handle, bool owns) : base (handle, [DllImport (Constants.VideoToolboxLibrary)] extern static void VTPixelTransferSessionInvalidate (/* VTPixelTransferSessionRef */ IntPtr session); + /// protected override void Dispose (bool disposing) { if (Handle != IntPtr.Zero) diff --git a/src/VideoToolbox/VTRawProcessingSession.cs b/src/VideoToolbox/VTRawProcessingSession.cs index 334720681b79..251f74de6615 100644 --- a/src/VideoToolbox/VTRawProcessingSession.cs +++ b/src/VideoToolbox/VTRawProcessingSession.cs @@ -84,8 +84,7 @@ public void Invalidate () VTRAWProcessingSessionInvalidate (GetCheckedHandle ()); } - /// Dispose of this instance. - /// This will also call . + /// protected override void Dispose (bool disposing) { if (disposing) diff --git a/tests/cecil-tests/Documentation.KnownFailures.txt b/tests/cecil-tests/Documentation.KnownFailures.txt index 240abedfb046..d72c2afc6991 100644 --- a/tests/cecil-tests/Documentation.KnownFailures.txt +++ b/tests/cecil-tests/Documentation.KnownFailures.txt @@ -15023,7 +15023,6 @@ M:Metal.MTLIOCompressionContext.AppendData(Foundation.NSData) M:Metal.MTLIOCompressionContext.AppendData(System.Byte[]) M:Metal.MTLIOCompressionContext.AppendData(System.ReadOnlySpan{System.Byte}) M:Metal.MTLIOCompressionContext.Create(System.String,Metal.MTLIOCompressionMethod,System.Int64) -M:Metal.MTLIOCompressionContext.Dispose(System.Boolean) M:Metal.MTLIOCompressionContext.FlushAndDestroy M:Metal.MTLLibrary_Extensions.CreateFunctionAsync(Metal.IMTLLibrary,System.String,Metal.MTLFunctionConstantValues) M:Metal.MTLLibrary_Extensions.CreateIntersectionFunction(Metal.IMTLLibrary,Metal.MTLIntersectionFunctionDescriptor,Foundation.NSError@) @@ -17481,7 +17480,6 @@ M:SearchKit.SKSummary.GetParagraphSummaryInfo(System.IntPtr,System.IntPtr[],Syst M:SearchKit.SKSummary.GetSentence(System.IntPtr) M:SearchKit.SKSummary.GetSentenceSummary(System.IntPtr) M:SearchKit.SKSummary.GetSentenceSummaryInfo(System.Int32,System.IntPtr[],System.IntPtr[],System.IntPtr[]) -M:Security.Authorization.Dispose(System.Boolean) M:Security.AuthorizationEnvironment.#ctor M:Security.AuthorizationParameters.#ctor M:Security.SecIdentity2.AccessCertificates(System.Action{Security.SecCertificate2}) @@ -17738,7 +17736,6 @@ M:StoreKit.SKStoreProductViewController.LoadProduct(StoreKit.StoreProductParamet M:StoreKit.SKStoreProductViewController.LoadProductAsync(Foundation.NSDictionary,StoreKit.SKAdImpression) M:StoreKit.SKStoreProductViewController.LoadProductAsync(StoreKit.StoreProductParameters,StoreKit.SKAdImpression) M:StoreKit.SKStoreProductViewController.remove_Finished(System.EventHandler) -M:SystemConfiguration.NetworkReachability.Dispose(System.Boolean) M:ThreadNetwork.THClient.CheckPreferredNetworkAsync(Foundation.NSData) M:ThreadNetwork.THClient.DeleteCredentialsForBorderAgentAsync(Foundation.NSData) M:ThreadNetwork.THClient.IsPreferredNetworkAvailableAsync @@ -19131,8 +19128,6 @@ M:VideoSubscriberAccount.VSUserAccountManager.UpdateUserAccountAsync(VideoSubscr M:VideoToolbox.IVTFrameProcessorConfiguration.GetMaximumDimensions``1 M:VideoToolbox.IVTFrameProcessorConfiguration.GetMinimumDimensions``1 M:VideoToolbox.IVTFrameProcessorConfiguration.GetProcessorSupported``1 -M:VideoToolbox.VTCompressionSession.Dispose(System.Boolean) -M:VideoToolbox.VTDecompressionSession.Dispose(System.Boolean) M:VideoToolbox.VTFrameProcessor.EndSession M:VideoToolbox.VTFrameProcessor.Process(Metal.IMTLCommandBuffer,VideoToolbox.IVTFrameProcessorParameters) M:VideoToolbox.VTFrameProcessor.Process(VideoToolbox.IVTFrameProcessorParameters,Foundation.NSError@) @@ -19151,18 +19146,15 @@ M:VideoToolbox.VTLowLatencySuperResolutionScalerConfiguration.GetSupportedScaleF M:VideoToolbox.VTLowLatencySuperResolutionScalerParameters.#ctor(VideoToolbox.VTFrameProcessorFrame,VideoToolbox.VTFrameProcessorFrame) M:VideoToolbox.VTMotionBlurConfiguration.#ctor(System.IntPtr,System.IntPtr,System.Boolean,VideoToolbox.VTMotionBlurConfigurationQualityPrioritization,VideoToolbox.VTMotionBlurConfigurationRevision) M:VideoToolbox.VTMotionBlurParameters.#ctor(VideoToolbox.VTFrameProcessorFrame,VideoToolbox.VTFrameProcessorFrame,VideoToolbox.VTFrameProcessorFrame,VideoToolbox.VTFrameProcessorOpticalFlow,VideoToolbox.VTFrameProcessorOpticalFlow,System.IntPtr,VideoToolbox.VTMotionBlurParametersSubmissionMode,VideoToolbox.VTFrameProcessorFrame) -M:VideoToolbox.VTMotionEstimationSession.Dispose(System.Boolean) M:VideoToolbox.VTOpticalFlowConfiguration.#ctor(System.IntPtr,System.IntPtr,VideoToolbox.VTOpticalFlowConfigurationQualityPrioritization,VideoToolbox.VTOpticalFlowConfigurationRevision) M:VideoToolbox.VTOpticalFlowParameters.#ctor(VideoToolbox.VTFrameProcessorFrame,VideoToolbox.VTFrameProcessorFrame,VideoToolbox.VTOpticalFlowParametersSubmissionMode,VideoToolbox.VTFrameProcessorOpticalFlow) M:VideoToolbox.VTPixelRotationSession.Create M:VideoToolbox.VTPixelRotationSession.Create(CoreFoundation.CFAllocator) -M:VideoToolbox.VTPixelRotationSession.Dispose(System.Boolean) M:VideoToolbox.VTPixelRotationSession.GetTypeID M:VideoToolbox.VTPixelRotationSession.RotateImage(CoreVideo.CVPixelBuffer,CoreVideo.CVPixelBuffer) M:VideoToolbox.VTPixelRotationSession.SetRotationProperties(VideoToolbox.VTPixelRotationProperties) M:VideoToolbox.VTPixelTransferSession.Create M:VideoToolbox.VTPixelTransferSession.Create(CoreFoundation.CFAllocator) -M:VideoToolbox.VTPixelTransferSession.Dispose(System.Boolean) M:VideoToolbox.VTPixelTransferSession.GetTypeID M:VideoToolbox.VTPixelTransferSession.SetTransferProperties(VideoToolbox.VTPixelTransferProperties) M:VideoToolbox.VTPixelTransferSession.TransferImage(CoreVideo.CVPixelBuffer,CoreVideo.CVPixelBuffer) From 1321f7dbafbfd1639742806dbe57eb1e8bc24174 Mon Sep 17 00:00:00 2001 From: Rolf Bjarne Kvinge Date: Fri, 17 Apr 2026 20:01:01 +0200 Subject: [PATCH 20/47] [tools] Improve the create-makefile-fragment script a bit. (#25174) * Don't do anything if we don't have a working `dotnet` executable yet. This fixes a problem where running `make show-versions` with a clean repository would print this (among the rest of the valid output): ``` The command could not be loaded, possibly because: * You intended to execute a .NET application: The application '--version' does not exist or is not a managed .dll or .exe. * You intended to execute a .NET SDK command: The .NET SDK could not be found, please run 'make dotnet -C builds'. ``` * Use an exit trap to always clean up the temporary csproj. --- tools/common/create-makefile-fragment.sh | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/tools/common/create-makefile-fragment.sh b/tools/common/create-makefile-fragment.sh index 2b398007b962..076245d65ca2 100755 --- a/tools/common/create-makefile-fragment.sh +++ b/tools/common/create-makefile-fragment.sh @@ -42,6 +42,11 @@ fi BUILD_EXECUTABLE="dotnet build" +if ! dotnet --version >& /dev/null; then + # if we don't have a working .NET version, then we can't do anything here. + exit 0 +fi + if test -z "$BUILD_VERBOSITY"; then BUILD_VERBOSITY=/verbosity:diag fi @@ -51,10 +56,14 @@ fi # ProjectFile variable) and writes all the project references (recursively) to # a file (the ReferenceListPath variable). ( -cp ProjectInspector.csproj "$PROJECT_DIR" -cd "$PROJECT_DIR" -$BUILD_EXECUTABLE ProjectInspector.csproj "/t:WriteProjectReferences" "/p:ProjectFile=$PROJECT_FILE" "/p:ReferenceListPath=$REFERENCES_PATH" $BUILD_VERBOSITY /nologo -rm -f ProjectInspector.csproj + function upon_exit () + { + rm -f "$PROJECT_DIR/ProjectInspector.csproj" + } + trap upon_exit EXIT + cp ProjectInspector.csproj "$PROJECT_DIR" + cd "$PROJECT_DIR" + $BUILD_EXECUTABLE ProjectInspector.csproj "/t:WriteProjectReferences" "/p:ProjectFile=$PROJECT_FILE" "/p:ReferenceListPath=$REFERENCES_PATH" $BUILD_VERBOSITY /nologo ) # Now we have a list of all the project referenced by the input project. The From aa593cf30905344eeb788c2de71e61b5eef199af Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" <42748379+dotnet-maestro[bot]@users.noreply.github.com> Date: Mon, 20 Apr 2026 09:16:56 +0200 Subject: [PATCH 21/47] [main] Update dependencies from dotnet/macios (#25189) This pull request updates the following dependencies ## From https://github.com/dotnet/macios - **Subscription**: [c0371266-dd6f-4959-822b-decc72d2d668](https://maestro.dot.net/subscriptions?search=c0371266-dd6f-4959-822b-decc72d2d668) - **Build**: [20260417.6](https://dev.azure.com/devdiv/DevDiv/_build/results?buildId=13866528) ([310796](https://maestro.dot.net/channel/3884/github:dotnet:macios/build/310796)) - **Date Produced**: April 17, 2026 10:23:15 AM UTC - **Commit**: [090e59929354fa7b75f7814b4c384226c97a0ed9](https://github.com/dotnet/macios/commit/090e59929354fa7b75f7814b4c384226c97a0ed9) - **Branch**: [release/9.0.1xx](https://github.com/dotnet/macios/tree/release/9.0.1xx) - **Dependency Updates**: - From [26.4.9011 to 26.4.9012][1] - Microsoft.iOS.Sdk.net9.0_26.4 - Microsoft.MacCatalyst.Sdk.net9.0_26.4 - Microsoft.macOS.Sdk.net9.0_26.4 - Microsoft.tvOS.Sdk.net9.0_26.4 [1]: https://github.com/dotnet/macios/compare/9b4af11858...090e599293 --- NuGet.config | 2 +- eng/Version.Details.props | 8 ++++---- eng/Version.Details.xml | 16 ++++++++-------- 3 files changed, 13 insertions(+), 13 deletions(-) diff --git a/NuGet.config b/NuGet.config index 4a1ba428e474..36a3827c6169 100644 --- a/NuGet.config +++ b/NuGet.config @@ -12,7 +12,7 @@ - + diff --git a/eng/Version.Details.props b/eng/Version.Details.props index 0641fac63c61..7588f2f4d9ff 100644 --- a/eng/Version.Details.props +++ b/eng/Version.Details.props @@ -19,16 +19,16 @@ This file should be imported by eng/Versions.props 26.0.11017 18.5.9227 - 26.4.9011 + 26.4.9012 26.0.11017 18.5.9227 - 26.4.9011 + 26.4.9012 26.0.11017 15.5.9227 - 26.4.9011 + 26.4.9012 26.0.11017 18.5.9227 - 26.4.9011 + 26.4.9012 11.0.0-prerelease.26214.1 diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 7288fb4dd92e..bb4eebccc8b3 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -60,21 +60,21 @@ 797d30720e5e629d23eb146935da94cb1b61047e - + https://github.com/dotnet/macios - 9b4af11858de7ad9d06125466dd8fdb282e7f138 + 090e59929354fa7b75f7814b4c384226c97a0ed9 - + https://github.com/dotnet/macios - 9b4af11858de7ad9d06125466dd8fdb282e7f138 + 090e59929354fa7b75f7814b4c384226c97a0ed9 - + https://github.com/dotnet/macios - 9b4af11858de7ad9d06125466dd8fdb282e7f138 + 090e59929354fa7b75f7814b4c384226c97a0ed9 - + https://github.com/dotnet/macios - 9b4af11858de7ad9d06125466dd8fdb282e7f138 + 090e59929354fa7b75f7814b4c384226c97a0ed9 From 63f9e9f0f277f64e8f2208fd2bda0e93c5075118 Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" <42748379+dotnet-maestro[bot]@users.noreply.github.com> Date: Mon, 20 Apr 2026 09:14:54 +0000 Subject: [PATCH 22/47] [main] Update dependencies from dotnet/xharness (#25187) This pull request updates the following dependencies ## From https://github.com/dotnet/xharness - **Subscription**: [02e03784-16b3-4ced-b02a-3715797fc7da](https://maestro.dot.net/subscriptions?search=02e03784-16b3-4ced-b02a-3715797fc7da) - **Build**: [20260417.1](https://dev.azure.com/dnceng/internal/_build/results?buildId=2953722) ([310805](https://maestro.dot.net/channel/2/github:dotnet:xharness/build/310805)) - **Date Produced**: April 17, 2026 12:59:32 PM UTC - **Commit**: [866707736d49c2323628744716cda2475b3af9ee](https://github.com/dotnet/xharness/commit/866707736d49c2323628744716cda2475b3af9ee) - **Branch**: [main](https://github.com/dotnet/xharness/tree/main) - **Dependency Updates**: - From [11.0.0-prerelease.26214.1 to 11.0.0-prerelease.26217.1][1] - Microsoft.DotNet.XHarness.iOS.Shared [1]: https://github.com/dotnet/xharness/compare/84f48de9bd...866707736d --- eng/Version.Details.props | 2 +- eng/Version.Details.xml | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/eng/Version.Details.props b/eng/Version.Details.props index 7588f2f4d9ff..0d7ceb1624ed 100644 --- a/eng/Version.Details.props +++ b/eng/Version.Details.props @@ -30,7 +30,7 @@ This file should be imported by eng/Versions.props 18.5.9227 26.4.9012 - 11.0.0-prerelease.26214.1 + 11.0.0-prerelease.26217.1 18.0.9617 18.0.9617 diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index bb4eebccc8b3..c7d744c893d3 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -107,9 +107,9 @@ https://github.com/dotnet/dotnet 2476be2e45bb47d8dd6604fac803cef03198f2a7 - + https://github.com/dotnet/xharness - 84f48de9bd52fdee2a3b42e45e0b21b79413005e + 866707736d49c2323628744716cda2475b3af9ee https://github.com/dotnet/dotnet From 5b0797bee354e4cc39ba013837ac557b025a25d9 Mon Sep 17 00:00:00 2001 From: Rolf Bjarne Kvinge Date: Mon, 20 Apr 2026 13:48:32 +0200 Subject: [PATCH 23/47] [xharness] Unify test variation creation. (#25156) * Lean into the test variations as defined in test-variations.csproj, since it's easy to run these test variations from the terminal. * This simplifies how to create test variations in xharness. * Remove the "Debug (bundle original resources)" test variation, because it's for .NET 9 only. * Remove the "Debug: SGenConc" test variation, it's never found any bugs, and Mono is on its way out so even if we did find any issues, they'd probably not be fixed anyways. * Don't hardcode LinkMode=None in monotouch-test anymore, this is for each test variation to set. --------- Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- tests/common/shared-dotnet.mk | 4 + tests/common/test-variations.csproj | 21 +++- tests/monotouch-test/dotnet/shared.csproj | 1 - tests/xharness/Jenkins/TestData.cs | 7 -- .../xharness/Jenkins/TestVariationsFactory.cs | 112 ++++++------------ 5 files changed, 63 insertions(+), 82 deletions(-) diff --git a/tests/common/shared-dotnet.mk b/tests/common/shared-dotnet.mk index 98236b97b959..cf10c1811ad1 100644 --- a/tests/common/shared-dotnet.mk +++ b/tests/common/shared-dotnet.mk @@ -71,6 +71,10 @@ ifeq ($(TEST_TFM),) TEST_TFM=$(DOTNET_TFM) endif +ifeq ($(findstring |release|,|$(TEST_VARIATION)|),|release|) +CONFIG=Release +endif + ifeq ($(CONFIG),) CONFIG=Debug else diff --git a/tests/common/test-variations.csproj b/tests/common/test-variations.csproj index 6826b694f495..b3c26ed15647 100644 --- a/tests/common/test-variations.csproj +++ b/tests/common/test-variations.csproj @@ -6,17 +6,20 @@ + - + + + @@ -39,6 +42,11 @@ <_TestVariationApplied>true + + true + <_TestVariationApplied>true + + true <_TestVariationApplied>true @@ -52,6 +60,7 @@ true <_IsPublishing>true + full <_TestVariationApplied>true @@ -75,6 +84,11 @@ <_TestVariationApplied>true + + dynamic + <_TestVariationApplied>true + + static <_TestVariationApplied>true @@ -103,6 +117,11 @@ <_TestVariationApplied>true + + managed-static + <_TestVariationApplied>true + + $(AppBundleExtraOptions) --optimize:all managed-static diff --git a/tests/monotouch-test/dotnet/shared.csproj b/tests/monotouch-test/dotnet/shared.csproj index a68206c4621d..282d2a42e265 100644 --- a/tests/monotouch-test/dotnet/shared.csproj +++ b/tests/monotouch-test/dotnet/shared.csproj @@ -12,7 +12,6 @@ $(RootTestsDirectory)\test-libraries $(RootTestsDirectory)\monotouch-test - None true diff --git a/tests/xharness/Jenkins/TestData.cs b/tests/xharness/Jenkins/TestData.cs index 234bfdef6535..9b6d22436477 100644 --- a/tests/xharness/Jenkins/TestData.cs +++ b/tests/xharness/Jenkins/TestData.cs @@ -7,16 +7,9 @@ namespace Xharness.Jenkins { class TestData { public string? Variation; public KnownIssue? KnownFailure; - public bool Debug; - public string? LinkMode; public bool? Ignored; - public bool EnableSGenConc; - public bool UseLlvm; - public bool? UseMonoRuntime; public IEnumerable? Candidates; public string? RuntimeIdentifier; - public string? Registrar; - public bool PublishAot; // NativeAOT public string? TestVariation; } } diff --git a/tests/xharness/Jenkins/TestVariationsFactory.cs b/tests/xharness/Jenkins/TestVariationsFactory.cs index 1f9eb35a8f21..93d6f03c2fc2 100644 --- a/tests/xharness/Jenkins/TestVariationsFactory.cs +++ b/tests/xharness/Jenkins/TestVariationsFactory.cs @@ -55,14 +55,7 @@ IEnumerable GetTestData (RunTestTask test) switch (test.TestName) { case "link all": if (test.ProjectConfiguration == "Debug") { - // in .NET 9 we add a variation to test original resource bundling (which is opt in in .NET 9), - // and in .NET 10 we change the variation to test *not* bundling original resources (because it becomes opt out in .NET 10, - // so we don't test it by default). - if (jenkins.Harness.DotNetVersion.Major <= 9) { - yield return new TestData { Variation = "Debug (bundle original resources)", TestVariation = "bundle-original-resources", Debug = true }; - } else { - yield return new TestData { Variation = "Debug (don't bundle original resources)", TestVariation = "do-not-bundle-original-resources", Debug = true }; - } + yield return new TestData { Variation = "Debug (don't bundle original resources)", TestVariation = "do-not-bundle-original-resources" }; } break; } @@ -70,22 +63,21 @@ IEnumerable GetTestData (RunTestTask test) switch (test.ProjectPlatform) { case "iPhone": if (test.ProjectConfiguration?.Contains ("Debug") == true) - yield return new TestData { Variation = "Release", Debug = false }; + yield return new TestData { Variation = "Release", TestVariation = "release" }; switch (test.TestName) { case "monotouch-test": ignore = true; - yield return new TestData { Variation = "Debug (dynamic registrar)", Registrar = "dynamic", Debug = true, Ignored = ignore }; - yield return new TestData { Variation = "Release (all optimizations)", TestVariation = "static-registrar-all-optimizations", Debug = false, Ignored = ignore }; - yield return new TestData { Variation = "Debug (all optimizations)", TestVariation = "static-registrar-all-optimizations", Debug = true, Ignored = ignore }; - yield return new TestData { Variation = "Debug: SGenConc", Debug = true, EnableSGenConc = true, Ignored = ignore }; + yield return new TestData { Variation = "Debug (dynamic registrar)", TestVariation = "dynamic-registrar", Ignored = ignore }; + yield return new TestData { Variation = "Release (all optimizations)", TestVariation = "release|static-registrar-all-optimizations", Ignored = ignore }; + yield return new TestData { Variation = "Debug (all optimizations)", TestVariation = "static-registrar-all-optimizations", Ignored = ignore }; if (supports_interpreter) { - yield return new TestData { Variation = "Debug (interpreter)", TestVariation = "interpreter", Debug = true, Ignored = ignore }; + yield return new TestData { Variation = "Debug (interpreter)", TestVariation = "interpreter", Ignored = ignore }; } - yield return new TestData { Variation = "Release (LLVM)", Debug = false, UseLlvm = true, Ignored = ignore }; - yield return new TestData { Variation = "Debug (managed static registrar)", Registrar = "managed-static", Debug = true, Ignored = ignore }; - yield return new TestData { Variation = "Release (managed static registrar, all optimizations)", TestVariation = "managed-static-registrar-all-optimizations-linkall", Debug = false, Ignored = ignore }; - yield return new TestData { Variation = "Release (NativeAOT)", Debug = false, PublishAot = true, Ignored = ignore, LinkMode = "Full" }; + yield return new TestData { Variation = "Release (LLVM)", TestVariation = "release|llvm", Ignored = ignore }; + yield return new TestData { Variation = "Debug (managed static registrar)", TestVariation = "managed-static-registrar", Ignored = ignore }; + yield return new TestData { Variation = "Release (managed static registrar, all optimizations)", TestVariation = "release|managed-static-registrar-all-optimizations-linkall", Ignored = ignore }; + yield return new TestData { Variation = "Release (NativeAOT)", TestVariation = "release|nativeaot", Ignored = ignore }; break; } break; @@ -93,31 +85,30 @@ IEnumerable GetTestData (RunTestTask test) switch (test.TestName) { case "monotouch-test": // The default is to run monotouch-test with the dynamic registrar (in the simulator), so that's already covered - yield return new TestData { Variation = "Debug (LinkSdk)", Debug = true, LinkMode = "SdkOnly", Ignored = ignore }; - yield return new TestData { Variation = "Debug (static registrar)", Registrar = "static", Debug = true, Ignored = ignore }; - yield return new TestData { Variation = "Release (all optimizations)", TestVariation = "static-registrar-all-optimizations-linkall", Debug = false, Ignored = ignore }; - yield return new TestData { Variation = "Debug (all optimizations)", TestVariation = "static-registrar-optimizations-except-uithread-checks-linkall", Debug = true, Ignored = ignore ?? !jenkins.TestSelection.IsEnabled (TestLabel.All) }; + yield return new TestData { Variation = "Debug (LinkSdk)", TestVariation = "linksdk", Ignored = ignore }; + yield return new TestData { Variation = "Debug (static registrar)", TestVariation = "static-registrar", Ignored = ignore }; + yield return new TestData { Variation = "Release (all optimizations)", TestVariation = "release|static-registrar-all-optimizations-linkall", Ignored = ignore }; + yield return new TestData { Variation = "Debug (all optimizations)", TestVariation = "static-registrar-optimizations-except-uithread-checks-linkall", Ignored = ignore ?? !jenkins.TestSelection.IsEnabled (TestLabel.All) }; if (mac_supports_arm64) { - yield return new TestData { Variation = "Debug (ARM64)", Debug = true, Ignored = !mac_supports_arm64 ? true : ignore, RuntimeIdentifier = arm64_sim_runtime_identifier, }; - yield return new TestData { Variation = "Release (NativeAOT, ARM64)", Debug = false, PublishAot = true, Ignored = ignore, RuntimeIdentifier = arm64_sim_runtime_identifier, LinkMode = "Full" }; + yield return new TestData { Variation = "Debug (ARM64)", Ignored = !mac_supports_arm64 ? true : ignore, RuntimeIdentifier = arm64_sim_runtime_identifier, }; + yield return new TestData { Variation = "Release (NativeAOT, ARM64)", TestVariation = "release|nativeaot", Ignored = ignore, RuntimeIdentifier = arm64_sim_runtime_identifier }; } - yield return new TestData { Variation = "Debug (managed static registrar)", Registrar = "managed-static", Debug = true, Ignored = ignore }; - yield return new TestData { Variation = "Release (managed static registrar, all optimizations)", TestVariation = "managed-static-registrar-all-optimizations-linkall", Debug = false, Ignored = ignore }; - yield return new TestData { Variation = "Release (NativeAOT, x64)", Debug = false, PublishAot = true, Ignored = ignore, RuntimeIdentifier = x64_sim_runtime_identifier, LinkMode = "Full" }; + yield return new TestData { Variation = "Debug (managed static registrar)", TestVariation = "managed-static-registrar", Ignored = ignore }; + yield return new TestData { Variation = "Release (managed static registrar, all optimizations)", TestVariation = "release|managed-static-registrar-all-optimizations-linkall", Ignored = ignore }; + yield return new TestData { Variation = "Release (NativeAOT, x64)", TestVariation = "release|nativeaot", Ignored = ignore, RuntimeIdentifier = x64_sim_runtime_identifier }; if (supports_interpreter) { - yield return new TestData { Variation = "Debug (interpreter)", TestVariation = "interpreter", Debug = true, Ignored = ignore }; - yield return new TestData { Variation = "Release (interpreter)", TestVariation = "interpreter", Debug = false, Ignored = ignore, UseLlvm = false }; + yield return new TestData { Variation = "Debug (interpreter)", TestVariation = "interpreter", Ignored = ignore }; + yield return new TestData { Variation = "Release (interpreter)", TestVariation = "release|interpreter", Ignored = ignore }; } break; case "introspection": if (mac_supports_arm64) - yield return new TestData { Variation = "Debug (ARM64)", Debug = true, Ignored = !mac_supports_arm64 ? true : ignore, RuntimeIdentifier = arm64_sim_runtime_identifier, }; + yield return new TestData { Variation = "Debug (ARM64)", Ignored = !mac_supports_arm64 ? true : ignore, RuntimeIdentifier = arm64_sim_runtime_identifier, }; foreach (var target in test.Platform.GetTestTargetsForSimulator ()) yield return new TestData { Variation = $"Debug ({test.Platform.GetSimulatorMinVersion ()})", - Debug = true, Candidates = jenkins.Simulators.SelectDevices (target.GetTargetOs (true), jenkins.SimulatorLoadLog, true), Ignored = ignore ?? !jenkins.TestSelection.IsEnabled (PlatformLabel.OldiOSSimulator) || !jenkins.TestSelection.IsEnabled (TestLabel.Introspection), }; @@ -130,23 +121,23 @@ IEnumerable GetTestData (RunTestTask test) case null: switch (test.TestName) { case "monotouch-test": - yield return new TestData { Variation = "Debug (ARM64)", Debug = true, Ignored = !mac_supports_arm64 ? true : ignore, RuntimeIdentifier = arm64_runtime_identifier, }; - yield return new TestData { Variation = "Debug (managed static registrar)", Registrar = "managed-static", Debug = true, Ignored = ignore }; - yield return new TestData { Variation = "Debug (static registrar)", Registrar = "static", Debug = true, Ignored = ignore, }; - yield return new TestData { Variation = "Debug (static registrar, ARM64)", Registrar = "static", Debug = true, Ignored = !mac_supports_arm64 ? true : ignore, RuntimeIdentifier = arm64_runtime_identifier, }; - yield return new TestData { Variation = "Release (managed static registrar)", Registrar = "managed-static", Debug = false, Ignored = ignore }; - yield return new TestData { Variation = "Release (managed static registrar, all optimizations)", TestVariation = "managed-static-registrar-all-optimizations-linkall", Debug = false, Ignored = ignore }; - yield return new TestData { Variation = "Release (NativeAOT)", Debug = false, PublishAot = true, Ignored = ignore, LinkMode = "Full" }; - yield return new TestData { Variation = "Release (NativeAOT, ARM64)", Debug = false, PublishAot = true, Ignored = !mac_supports_arm64 ? true : ignore, RuntimeIdentifier = arm64_runtime_identifier, LinkMode = "Full" }; - yield return new TestData { Variation = "Release (NativeAOT, x64)", Debug = false, PublishAot = true, Ignored = ignore, RuntimeIdentifier = x64_runtime_identifier, LinkMode = "Full" }; - yield return new TestData { Variation = "Release (static registrar)", Registrar = "static", Debug = false, Ignored = ignore }; - yield return new TestData { Variation = "Release (static registrar, all optimizations)", TestVariation = "static-registrar-all-optimizations-linkall", Debug = false, Ignored = ignore }; + yield return new TestData { Variation = "Debug (ARM64)", Ignored = !mac_supports_arm64 ? true : ignore, RuntimeIdentifier = arm64_runtime_identifier, }; + yield return new TestData { Variation = "Debug (managed static registrar)", TestVariation = "managed-static-registrar", Ignored = ignore }; + yield return new TestData { Variation = "Debug (static registrar)", TestVariation = "static-registrar", Ignored = ignore, }; + yield return new TestData { Variation = "Debug (static registrar, ARM64)", TestVariation = "static-registrar", Ignored = !mac_supports_arm64 ? true : ignore, RuntimeIdentifier = arm64_runtime_identifier, }; + yield return new TestData { Variation = "Release (managed static registrar)", TestVariation = "release|managed-static-registrar", Ignored = ignore }; + yield return new TestData { Variation = "Release (managed static registrar, all optimizations)", TestVariation = "release|managed-static-registrar-all-optimizations-linkall", Ignored = ignore }; + yield return new TestData { Variation = "Release (NativeAOT)", TestVariation = "release|nativeaot", Ignored = ignore }; + yield return new TestData { Variation = "Release (NativeAOT, ARM64)", TestVariation = "release|nativeaot", Ignored = !mac_supports_arm64 ? true : ignore, RuntimeIdentifier = arm64_runtime_identifier }; + yield return new TestData { Variation = "Release (NativeAOT, x64)", TestVariation = "release|nativeaot", Ignored = ignore, RuntimeIdentifier = x64_runtime_identifier }; + yield return new TestData { Variation = "Release (static registrar)", TestVariation = "release|static-registrar", Ignored = ignore }; + yield return new TestData { Variation = "Release (static registrar, all optimizations)", TestVariation = "release|static-registrar-all-optimizations-linkall", Ignored = ignore }; if (test.Platform == TestPlatform.MacCatalyst) { - yield return new TestData { Variation = "Release (ARM64, LLVM)", Debug = false, UseLlvm = true, Ignored = !mac_supports_arm64 ? true : ignore, RuntimeIdentifier = arm64_runtime_identifier }; + yield return new TestData { Variation = "Release (ARM64, LLVM)", TestVariation = "release|llvm", Ignored = !mac_supports_arm64 ? true : ignore, RuntimeIdentifier = arm64_runtime_identifier }; } if (supports_interpreter) { - yield return new TestData { Variation = "Debug (interpreter)", TestVariation = "interpreter", Debug = true, Ignored = ignore }; - yield return new TestData { Variation = "Release (interpreter)", TestVariation = "interpreter", Debug = false, Ignored = ignore, UseLlvm = false }; + yield return new TestData { Variation = "Debug (interpreter)", TestVariation = "interpreter", Ignored = ignore }; + yield return new TestData { Variation = "Release (interpreter)", TestVariation = "release|interpreter", Ignored = ignore }; } break; } @@ -167,17 +158,12 @@ public IEnumerable CreateTestVariations (IEnumerable tests, Func string.Equals (v, "release", StringComparison.OrdinalIgnoreCase)); + var configuration = debug ? task.ProjectConfiguration : task.ProjectConfiguration?.Replace ("Debug", "Release"); var ignored = test_data.Ignored; var known_failure = test_data.KnownFailure; var candidates = test_data.Candidates; - var use_mono_runtime = test_data.UseMonoRuntime; var runtime_identifer = test_data.RuntimeIdentifier; - var use_llvm = test_data.UseLlvm; - var registrar = test_data.Registrar; - var publishaot = test_data.PublishAot; var test_variation = test_data.TestVariation; if (known_failure is not null) @@ -188,29 +174,9 @@ public IEnumerable CreateTestVariations (IEnumerable tests, Func Date: Mon, 20 Apr 2026 12:20:09 +0000 Subject: [PATCH 24/47] [main] Update dependencies from dotnet/dotnet (#25163) This pull request updates the following dependencies ## From https://github.com/dotnet/dotnet - **Subscription**: [30303172-6f12-44a9-887a-ea8520fce068](https://maestro.dot.net/subscriptions?search=30303172-6f12-44a9-887a-ea8520fce068) - **Build**: [20260415.16](https://dev.azure.com/dnceng/internal/_build/results?buildId=2952132) ([310584](https://maestro.dot.net/channel/9626/github:dotnet:dotnet/build/310584)) - **Date Produced**: April 15, 2026 11:10:23 PM UTC - **Commit**: [fe40c4e7b110cf7220a726d71541340399598771](https://github.com/dotnet/dotnet/commit/fe40c4e7b110cf7220a726d71541340399598771) - **Branch**: [release/10.0.3xx](https://github.com/dotnet/dotnet/tree/release/10.0.3xx) - **Dependency Updates**: - From [10.0.0-beta.26213.104 to 10.0.0-beta.26215.116][1] - Microsoft.DotNet.Arcade.Sdk - Microsoft.DotNet.Build.Tasks.Feed - Microsoft.DotNet.SharedFramework.Sdk - From [10.0.300-preview.0.26213.104 to 10.0.300-preview.0.26215.116][1] - Microsoft.NET.Sdk - From [10.0.300-preview.26213.104 to 10.0.300-preview.26215.116][1] - Microsoft.TemplateEngine.Authoring.Tasks [1]: https://github.com/dotnet/dotnet/compare/2476be2e45...fe40c4e7b1 --- eng/Version.Details.props | 10 +- eng/Version.Details.xml | 20 +- global.json | 6 +- .../MacCatalyst-MonoVM-interpreter-size.txt | 6 +- .../expected/MacCatalyst-MonoVM-size.txt | 6 +- .../expected/MacCatalyst-NativeAOT-size.txt | 4 +- .../MacOSX-CoreCLR-Interpreter-size.txt | 510 +++++++++--------- .../expected/MacOSX-NativeAOT-size.txt | 4 +- .../expected/TVOS-MonoVM-interpreter-size.txt | 4 +- .../UnitTests/expected/TVOS-MonoVM-size.txt | 6 +- .../expected/TVOS-NativeAOT-size.txt | 4 +- .../expected/iOS-MonoVM-interpreter-size.txt | 4 +- .../UnitTests/expected/iOS-MonoVM-size.txt | 6 +- .../UnitTests/expected/iOS-NativeAOT-size.txt | 4 +- 14 files changed, 297 insertions(+), 297 deletions(-) diff --git a/eng/Version.Details.props b/eng/Version.Details.props index 0d7ceb1624ed..cbcaaac74276 100644 --- a/eng/Version.Details.props +++ b/eng/Version.Details.props @@ -6,16 +6,16 @@ This file should be imported by eng/Versions.props - 10.0.0-beta.26213.104 - 10.0.0-beta.26213.104 + 10.0.0-beta.26216.115 + 10.0.0-beta.26216.115 0.11.5-alpha.26070.104 - 10.0.0-beta.26213.104 + 10.0.0-beta.26216.115 10.0.3-servicing.26070.104 10.0.3 10.0.3 - 10.0.300-preview.0.26213.104 + 10.0.300-preview.0.26216.115 10.0.3 - 10.0.300-preview.26213.104 + 10.0.300-preview.26216.115 26.0.11017 18.5.9227 diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index c7d744c893d3..41cb0275354a 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -1,8 +1,8 @@ - + https://github.com/dotnet/dotnet - 2476be2e45bb47d8dd6604fac803cef03198f2a7 + 7141470de2a1582db15ae6886e361ead12efb3d8 https://github.com/dotnet/dotnet @@ -95,25 +95,25 @@ - + https://github.com/dotnet/dotnet - 2476be2e45bb47d8dd6604fac803cef03198f2a7 + 7141470de2a1582db15ae6886e361ead12efb3d8 - + https://github.com/dotnet/dotnet - 2476be2e45bb47d8dd6604fac803cef03198f2a7 + 7141470de2a1582db15ae6886e361ead12efb3d8 - + https://github.com/dotnet/dotnet - 2476be2e45bb47d8dd6604fac803cef03198f2a7 + 7141470de2a1582db15ae6886e361ead12efb3d8 https://github.com/dotnet/xharness 866707736d49c2323628744716cda2475b3af9ee - + https://github.com/dotnet/dotnet - 2476be2e45bb47d8dd6604fac803cef03198f2a7 + 7141470de2a1582db15ae6886e361ead12efb3d8 diff --git a/global.json b/global.json index 0a777ae9f9bc..8c573e5f740a 100644 --- a/global.json +++ b/global.json @@ -1,6 +1,6 @@ { "sdk": { - "version": "10.0.300-preview.0.26213.104", + "version": "10.0.300-preview.0.26216.115", "paths": [ "builds/downloads/dotnet", "$host$" @@ -8,9 +8,9 @@ "errorMessage": "The .NET SDK could not be found, please run 'make dotnet -C builds'." }, "tools": { - "dotnet": "10.0.300-preview.0.26213.104" + "dotnet": "10.0.300-preview.0.26216.115" }, "msbuild-sdks": { - "Microsoft.DotNet.Arcade.Sdk": "10.0.0-beta.26213.104" + "Microsoft.DotNet.Arcade.Sdk": "10.0.0-beta.26216.115" } } diff --git a/tests/dotnet/UnitTests/expected/MacCatalyst-MonoVM-interpreter-size.txt b/tests/dotnet/UnitTests/expected/MacCatalyst-MonoVM-interpreter-size.txt index cae3bad2843b..ee0f04d2749a 100644 --- a/tests/dotnet/UnitTests/expected/MacCatalyst-MonoVM-interpreter-size.txt +++ b/tests/dotnet/UnitTests/expected/MacCatalyst-MonoVM-interpreter-size.txt @@ -1,8 +1,8 @@ -AppBundleSize: 5,788,332 bytes (5,652.7 KB = 5.5 MB) +AppBundleSize: 5,788,575 bytes (5,652.9 KB = 5.5 MB) # The following list of files and their sizes is just informational / for review, and isn't used in the test: Contents/_CodeSignature/CodeResources: 3,310 bytes (3.2 KB = 0.0 MB) -Contents/Info.plist: 1,105 bytes (1.1 KB = 0.0 MB) -Contents/MacOS/SizeTestApp: 4,565,216 bytes (4,458.2 KB = 4.4 MB) +Contents/Info.plist: 1,124 bytes (1.1 KB = 0.0 MB) +Contents/MacOS/SizeTestApp: 4,565,440 bytes (4,458.4 KB = 4.4 MB) Contents/MonoBundle/Microsoft.MacCatalyst.dll: 157,696 bytes (154.0 KB = 0.2 MB) Contents/MonoBundle/runtimeconfig.bin: 1,405 bytes (1.4 KB = 0.0 MB) Contents/MonoBundle/SizeTestApp.dll: 7,680 bytes (7.5 KB = 0.0 MB) diff --git a/tests/dotnet/UnitTests/expected/MacCatalyst-MonoVM-size.txt b/tests/dotnet/UnitTests/expected/MacCatalyst-MonoVM-size.txt index 51a747f2b55f..cc9ba0a1b99a 100644 --- a/tests/dotnet/UnitTests/expected/MacCatalyst-MonoVM-size.txt +++ b/tests/dotnet/UnitTests/expected/MacCatalyst-MonoVM-size.txt @@ -1,8 +1,8 @@ -AppBundleSize: 16,303,392 bytes (15,921.3 KB = 15.5 MB) +AppBundleSize: 16,303,635 bytes (15,921.5 KB = 15.5 MB) # The following list of files and their sizes is just informational / for review, and isn't used in the test: Contents/_CodeSignature/CodeResources: 4,134 bytes (4.0 KB = 0.0 MB) -Contents/Info.plist: 1,105 bytes (1.1 KB = 0.0 MB) -Contents/MacOS/SizeTestApp: 13,794,304 bytes (13,471.0 KB = 13.2 MB) +Contents/Info.plist: 1,124 bytes (1.1 KB = 0.0 MB) +Contents/MacOS/SizeTestApp: 13,794,528 bytes (13,471.2 KB = 13.2 MB) Contents/MonoBundle/aot-instances.aotdata.arm64: 1,045,032 bytes (1,020.5 KB = 1.0 MB) Contents/MonoBundle/Microsoft.MacCatalyst.aotdata.arm64: 35,896 bytes (35.1 KB = 0.0 MB) Contents/MonoBundle/Microsoft.MacCatalyst.dll: 50,688 bytes (49.5 KB = 0.0 MB) diff --git a/tests/dotnet/UnitTests/expected/MacCatalyst-NativeAOT-size.txt b/tests/dotnet/UnitTests/expected/MacCatalyst-NativeAOT-size.txt index 788dbc4726fc..d13693f3462e 100644 --- a/tests/dotnet/UnitTests/expected/MacCatalyst-NativeAOT-size.txt +++ b/tests/dotnet/UnitTests/expected/MacCatalyst-NativeAOT-size.txt @@ -1,7 +1,7 @@ -AppBundleSize: 2,599,087 bytes (2,538.2 KB = 2.5 MB) +AppBundleSize: 2,599,106 bytes (2,538.2 KB = 2.5 MB) # The following list of files and their sizes is just informational / for review, and isn't used in the test: Contents/_CodeSignature/CodeResources: 2,358 bytes (2.3 KB = 0.0 MB) -Contents/Info.plist: 1,105 bytes (1.1 KB = 0.0 MB) +Contents/Info.plist: 1,124 bytes (1.1 KB = 0.0 MB) Contents/MacOS/SizeTestApp: 2,593,808 bytes (2,533.0 KB = 2.5 MB) Contents/MonoBundle/runtimeconfig.bin: 1,808 bytes (1.8 KB = 0.0 MB) Contents/PkgInfo: 8 bytes (0.0 KB = 0.0 MB) diff --git a/tests/dotnet/UnitTests/expected/MacOSX-CoreCLR-Interpreter-size.txt b/tests/dotnet/UnitTests/expected/MacOSX-CoreCLR-Interpreter-size.txt index cb30f7fa33b0..8ebe45076922 100644 --- a/tests/dotnet/UnitTests/expected/MacOSX-CoreCLR-Interpreter-size.txt +++ b/tests/dotnet/UnitTests/expected/MacOSX-CoreCLR-Interpreter-size.txt @@ -1,360 +1,360 @@ -AppBundleSize: 247,357,100 bytes (241,559.7 KB = 235.9 MB) +AppBundleSize: 247,399,319 bytes (241,600.9 KB = 235.9 MB) # The following list of files and their sizes is just informational / for review, and isn't used in the test: Contents/_CodeSignature/CodeResources: 67,160 bytes (65.6 KB = 0.1 MB) -Contents/Info.plist: 736 bytes (0.7 KB = 0.0 MB) -Contents/MacOS/SizeTestApp: 8,001,456 bytes (7,813.9 KB = 7.6 MB) -Contents/MonoBundle/.xamarin/osx-arm64/Microsoft.CSharp.dll: 893,200 bytes (872.3 KB = 0.9 MB) +Contents/Info.plist: 755 bytes (0.7 KB = 0.0 MB) +Contents/MacOS/SizeTestApp: 8,001,744 bytes (7,814.2 KB = 7.6 MB) +Contents/MonoBundle/.xamarin/osx-arm64/Microsoft.CSharp.dll: 893,192 bytes (872.3 KB = 0.9 MB) Contents/MonoBundle/.xamarin/osx-arm64/Microsoft.macOS.dll: 36,723,712 bytes (35,863.0 KB = 35.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/Microsoft.VisualBasic.Core.dll: 1,335,048 bytes (1,303.8 KB = 1.3 MB) -Contents/MonoBundle/.xamarin/osx-arm64/Microsoft.VisualBasic.dll: 17,712 bytes (17.3 KB = 0.0 MB) +Contents/MonoBundle/.xamarin/osx-arm64/Microsoft.VisualBasic.Core.dll: 1,335,096 bytes (1,303.8 KB = 1.3 MB) +Contents/MonoBundle/.xamarin/osx-arm64/Microsoft.VisualBasic.dll: 17,680 bytes (17.3 KB = 0.0 MB) Contents/MonoBundle/.xamarin/osx-arm64/Microsoft.Win32.Primitives.dll: 16,144 bytes (15.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/Microsoft.Win32.Registry.dll: 35,088 bytes (34.3 KB = 0.0 MB) +Contents/MonoBundle/.xamarin/osx-arm64/Microsoft.Win32.Registry.dll: 35,080 bytes (34.3 KB = 0.0 MB) Contents/MonoBundle/.xamarin/osx-arm64/mscorlib.dll: 60,216 bytes (58.8 KB = 0.1 MB) Contents/MonoBundle/.xamarin/osx-arm64/netstandard.dll: 101,176 bytes (98.8 KB = 0.1 MB) Contents/MonoBundle/.xamarin/osx-arm64/SizeTestApp.dll: 6,656 bytes (6.5 KB = 0.0 MB) Contents/MonoBundle/.xamarin/osx-arm64/System.AppContext.dll: 15,624 bytes (15.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Buffers.dll: 15,664 bytes (15.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Collections.Concurrent.dll: 254,736 bytes (248.8 KB = 0.2 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Buffers.dll: 15,632 bytes (15.3 KB = 0.0 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Collections.Concurrent.dll: 254,728 bytes (248.8 KB = 0.2 MB) Contents/MonoBundle/.xamarin/osx-arm64/System.Collections.dll: 328,976 bytes (321.3 KB = 0.3 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Collections.Immutable.dll: 1,116,936 bytes (1,090.8 KB = 1.1 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Collections.NonGeneric.dll: 104,712 bytes (102.3 KB = 0.1 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Collections.Specialized.dll: 105,784 bytes (103.3 KB = 0.1 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Collections.Immutable.dll: 1,117,496 bytes (1,091.3 KB = 1.1 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Collections.NonGeneric.dll: 104,760 bytes (102.3 KB = 0.1 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Collections.Specialized.dll: 105,744 bytes (103.3 KB = 0.1 MB) Contents/MonoBundle/.xamarin/osx-arm64/System.ComponentModel.Annotations.dll: 216,368 bytes (211.3 KB = 0.2 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.ComponentModel.DataAnnotations.dll: 17,160 bytes (16.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.ComponentModel.dll: 17,680 bytes (17.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.ComponentModel.EventBasedAsync.dll: 39,696 bytes (38.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.ComponentModel.Primitives.dll: 80,648 bytes (78.8 KB = 0.1 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.ComponentModel.TypeConverter.dll: 874,256 bytes (853.8 KB = 0.8 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Configuration.dll: 19,720 bytes (19.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Console.dll: 226,576 bytes (221.3 KB = 0.2 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Core.dll: 23,816 bytes (23.3 KB = 0.0 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.ComponentModel.DataAnnotations.dll: 17,168 bytes (16.8 KB = 0.0 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.ComponentModel.dll: 17,720 bytes (17.3 KB = 0.0 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.ComponentModel.EventBasedAsync.dll: 39,688 bytes (38.8 KB = 0.0 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.ComponentModel.Primitives.dll: 80,656 bytes (78.8 KB = 0.1 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.ComponentModel.TypeConverter.dll: 874,768 bytes (854.3 KB = 0.8 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Configuration.dll: 19,760 bytes (19.3 KB = 0.0 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Console.dll: 226,616 bytes (221.3 KB = 0.2 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Core.dll: 23,824 bytes (23.3 KB = 0.0 MB) Contents/MonoBundle/.xamarin/osx-arm64/System.Data.Common.dll: 3,228,944 bytes (3,153.3 KB = 3.1 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Data.DataSetExtensions.dll: 16,136 bytes (15.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Data.dll: 25,904 bytes (25.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Diagnostics.Contracts.dll: 16,648 bytes (16.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Diagnostics.Debug.dll: 16,136 bytes (15.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Diagnostics.DiagnosticSource.dll: 558,864 bytes (545.8 KB = 0.5 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Data.DataSetExtensions.dll: 16,184 bytes (15.8 KB = 0.0 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Data.dll: 25,872 bytes (25.3 KB = 0.0 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Diagnostics.Contracts.dll: 16,696 bytes (16.3 KB = 0.0 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Diagnostics.Debug.dll: 16,144 bytes (15.8 KB = 0.0 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Diagnostics.DiagnosticSource.dll: 558,856 bytes (545.8 KB = 0.5 MB) Contents/MonoBundle/.xamarin/osx-arm64/System.Diagnostics.FileVersionInfo.dll: 46,352 bytes (45.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Diagnostics.Process.dll: 271,624 bytes (265.3 KB = 0.3 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Diagnostics.StackTrace.dll: 36,104 bytes (35.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Diagnostics.TextWriterTraceListener.dll: 65,808 bytes (64.3 KB = 0.1 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Diagnostics.Process.dll: 271,632 bytes (265.3 KB = 0.3 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Diagnostics.StackTrace.dll: 36,152 bytes (35.3 KB = 0.0 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Diagnostics.TextWriterTraceListener.dll: 65,848 bytes (64.3 KB = 0.1 MB) Contents/MonoBundle/.xamarin/osx-arm64/System.Diagnostics.Tools.dll: 15,624 bytes (15.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Diagnostics.TraceSource.dll: 151,304 bytes (147.8 KB = 0.1 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Diagnostics.Tracing.dll: 16,648 bytes (16.3 KB = 0.0 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Diagnostics.TraceSource.dll: 151,344 bytes (147.8 KB = 0.1 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Diagnostics.Tracing.dll: 16,656 bytes (16.3 KB = 0.0 MB) Contents/MonoBundle/.xamarin/osx-arm64/System.dll: 50,960 bytes (49.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Drawing.dll: 20,744 bytes (20.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Drawing.Primitives.dll: 128,824 bytes (125.8 KB = 0.1 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Dynamic.Runtime.dll: 16,656 bytes (16.3 KB = 0.0 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Drawing.dll: 20,752 bytes (20.3 KB = 0.0 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Drawing.Primitives.dll: 128,776 bytes (125.8 KB = 0.1 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Dynamic.Runtime.dll: 16,648 bytes (16.3 KB = 0.0 MB) Contents/MonoBundle/.xamarin/osx-arm64/System.Formats.Asn1.dll: 250,128 bytes (244.3 KB = 0.2 MB) Contents/MonoBundle/.xamarin/osx-arm64/System.Formats.Tar.dll: 307,000 bytes (299.8 KB = 0.3 MB) Contents/MonoBundle/.xamarin/osx-arm64/System.Globalization.Calendars.dll: 16,144 bytes (15.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Globalization.dll: 16,136 bytes (15.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Globalization.Extensions.dll: 15,624 bytes (15.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.IO.Compression.Brotli.dll: 83,248 bytes (81.3 KB = 0.1 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.IO.Compression.dll: 464,176 bytes (453.3 KB = 0.4 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.IO.Compression.FileSystem.dll: 15,672 bytes (15.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.IO.Compression.ZipFile.dll: 106,248 bytes (103.8 KB = 0.1 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.IO.dll: 16,184 bytes (15.8 KB = 0.0 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Globalization.dll: 16,144 bytes (15.8 KB = 0.0 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Globalization.Extensions.dll: 15,632 bytes (15.3 KB = 0.0 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.IO.Compression.Brotli.dll: 83,208 bytes (81.3 KB = 0.1 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.IO.Compression.dll: 464,184 bytes (453.3 KB = 0.4 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.IO.Compression.FileSystem.dll: 15,632 bytes (15.3 KB = 0.0 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.IO.Compression.ZipFile.dll: 106,288 bytes (103.8 KB = 0.1 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.IO.dll: 16,144 bytes (15.8 KB = 0.0 MB) Contents/MonoBundle/.xamarin/osx-arm64/System.IO.FileSystem.AccessControl.dll: 34,104 bytes (33.3 KB = 0.0 MB) Contents/MonoBundle/.xamarin/osx-arm64/System.IO.FileSystem.dll: 16,144 bytes (15.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.IO.FileSystem.DriveInfo.dll: 92,424 bytes (90.3 KB = 0.1 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.IO.FileSystem.Primitives.dll: 15,624 bytes (15.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.IO.FileSystem.Watcher.dll: 122,168 bytes (119.3 KB = 0.1 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.IO.IsolatedStorage.dll: 84,232 bytes (82.3 KB = 0.1 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.IO.MemoryMappedFiles.dll: 97,032 bytes (94.8 KB = 0.1 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.IO.Pipelines.dll: 197,904 bytes (193.3 KB = 0.2 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.IO.Pipes.AccessControl.dll: 24,840 bytes (24.3 KB = 0.0 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.IO.FileSystem.DriveInfo.dll: 92,472 bytes (90.3 KB = 0.1 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.IO.FileSystem.Primitives.dll: 15,664 bytes (15.3 KB = 0.0 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.IO.FileSystem.Watcher.dll: 122,128 bytes (119.3 KB = 0.1 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.IO.IsolatedStorage.dll: 84,280 bytes (82.3 KB = 0.1 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.IO.MemoryMappedFiles.dll: 97,040 bytes (94.8 KB = 0.1 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.IO.Pipelines.dll: 198,960 bytes (194.3 KB = 0.2 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.IO.Pipes.AccessControl.dll: 24,888 bytes (24.3 KB = 0.0 MB) Contents/MonoBundle/.xamarin/osx-arm64/System.IO.Pipes.dll: 146,192 bytes (142.8 KB = 0.1 MB) Contents/MonoBundle/.xamarin/osx-arm64/System.IO.UnmanagedMemoryStream.dll: 16,136 bytes (15.8 KB = 0.0 MB) Contents/MonoBundle/.xamarin/osx-arm64/System.Linq.AsyncEnumerable.dll: 1,493,264 bytes (1,458.3 KB = 1.4 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Linq.dll: 794,888 bytes (776.3 KB = 0.8 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Linq.Expressions.dll: 4,651,312 bytes (4,542.3 KB = 4.4 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Linq.Parallel.dll: 892,680 bytes (871.8 KB = 0.9 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Linq.Queryable.dll: 213,768 bytes (208.8 KB = 0.2 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Memory.dll: 165,128 bytes (161.3 KB = 0.2 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Net.dll: 17,672 bytes (17.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Net.Http.dll: 1,965,360 bytes (1,919.3 KB = 1.9 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Linq.dll: 795,408 bytes (776.8 KB = 0.8 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Linq.Expressions.dll: 4,652,304 bytes (4,543.3 KB = 4.4 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Linq.Parallel.dll: 892,728 bytes (871.8 KB = 0.9 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Linq.Queryable.dll: 213,776 bytes (208.8 KB = 0.2 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Memory.dll: 165,176 bytes (161.3 KB = 0.2 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Net.dll: 17,720 bytes (17.3 KB = 0.0 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Net.Http.dll: 1,964,808 bytes (1,918.8 KB = 1.9 MB) Contents/MonoBundle/.xamarin/osx-arm64/System.Net.Http.Json.dll: 129,840 bytes (126.8 KB = 0.1 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Net.HttpListener.dll: 329,480 bytes (321.8 KB = 0.3 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Net.Mail.dll: 541,960 bytes (529.3 KB = 0.5 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Net.HttpListener.dll: 329,528 bytes (321.8 KB = 0.3 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Net.Mail.dll: 542,480 bytes (529.8 KB = 0.5 MB) Contents/MonoBundle/.xamarin/osx-arm64/System.Net.NameResolution.dll: 110,352 bytes (107.8 KB = 0.1 MB) Contents/MonoBundle/.xamarin/osx-arm64/System.Net.NetworkInformation.dll: 154,888 bytes (151.3 KB = 0.1 MB) Contents/MonoBundle/.xamarin/osx-arm64/System.Net.Ping.dll: 99,600 bytes (97.3 KB = 0.1 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Net.Primitives.dll: 245,048 bytes (239.3 KB = 0.2 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Net.Quic.dll: 386,832 bytes (377.8 KB = 0.4 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Net.Requests.dll: 420,616 bytes (410.8 KB = 0.4 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Net.Security.dll: 860,432 bytes (840.3 KB = 0.8 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Net.Primitives.dll: 245,040 bytes (239.3 KB = 0.2 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Net.Quic.dll: 386,872 bytes (377.8 KB = 0.4 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Net.Requests.dll: 420,624 bytes (410.8 KB = 0.4 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Net.Security.dll: 860,984 bytes (840.8 KB = 0.8 MB) Contents/MonoBundle/.xamarin/osx-arm64/System.Net.ServerSentEvents.dll: 78,096 bytes (76.3 KB = 0.1 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Net.ServicePoint.dll: 15,624 bytes (15.3 KB = 0.0 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Net.ServicePoint.dll: 15,632 bytes (15.3 KB = 0.0 MB) Contents/MonoBundle/.xamarin/osx-arm64/System.Net.Sockets.dll: 702,736 bytes (686.3 KB = 0.7 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Net.WebClient.dll: 176,440 bytes (172.3 KB = 0.2 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Net.WebClient.dll: 176,432 bytes (172.3 KB = 0.2 MB) Contents/MonoBundle/.xamarin/osx-arm64/System.Net.WebHeaderCollection.dll: 62,776 bytes (61.3 KB = 0.1 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Net.WebProxy.dll: 35,080 bytes (34.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Net.WebSockets.Client.dll: 100,104 bytes (97.8 KB = 0.1 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Net.WebSockets.dll: 259,376 bytes (253.3 KB = 0.2 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Net.WebProxy.dll: 35,088 bytes (34.3 KB = 0.0 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Net.WebSockets.Client.dll: 100,112 bytes (97.8 KB = 0.1 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Net.WebSockets.dll: 259,896 bytes (253.8 KB = 0.2 MB) Contents/MonoBundle/.xamarin/osx-arm64/System.Numerics.dll: 15,624 bytes (15.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Numerics.Vectors.dll: 16,176 bytes (15.8 KB = 0.0 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Numerics.Vectors.dll: 16,144 bytes (15.8 KB = 0.0 MB) Contents/MonoBundle/.xamarin/osx-arm64/System.ObjectModel.dll: 78,096 bytes (76.3 KB = 0.1 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Private.CoreLib.dll: 17,083,192 bytes (16,682.8 KB = 16.3 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Private.DataContractSerialization.dll: 2,397,488 bytes (2,341.3 KB = 2.3 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Private.Uri.dll: 266,000 bytes (259.8 KB = 0.3 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Private.Xml.dll: 9,002,248 bytes (8,791.3 KB = 8.6 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Private.Xml.Linq.dll: 441,656 bytes (431.3 KB = 0.4 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Reflection.DispatchProxy.dll: 72,976 bytes (71.3 KB = 0.1 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Private.CoreLib.dll: 17,092,408 bytes (16,691.8 KB = 16.3 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Private.DataContractSerialization.dll: 2,397,448 bytes (2,341.3 KB = 2.3 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Private.Uri.dll: 265,992 bytes (259.8 KB = 0.3 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Private.Xml.dll: 9,002,256 bytes (8,791.3 KB = 8.6 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Private.Xml.Linq.dll: 441,616 bytes (431.3 KB = 0.4 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Reflection.DispatchProxy.dll: 73,016 bytes (71.3 KB = 0.1 MB) Contents/MonoBundle/.xamarin/osx-arm64/System.Reflection.dll: 16,696 bytes (16.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Reflection.Emit.dll: 342,288 bytes (334.3 KB = 0.3 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Reflection.Emit.ILGeneration.dll: 16,184 bytes (15.8 KB = 0.0 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Reflection.Emit.dll: 344,848 bytes (336.8 KB = 0.3 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Reflection.Emit.ILGeneration.dll: 16,144 bytes (15.8 KB = 0.0 MB) Contents/MonoBundle/.xamarin/osx-arm64/System.Reflection.Emit.Lightweight.dll: 16,144 bytes (15.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Reflection.Extensions.dll: 15,664 bytes (15.3 KB = 0.0 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Reflection.Extensions.dll: 15,624 bytes (15.3 KB = 0.0 MB) Contents/MonoBundle/.xamarin/osx-arm64/System.Reflection.Metadata.dll: 1,276,688 bytes (1,246.8 KB = 1.2 MB) Contents/MonoBundle/.xamarin/osx-arm64/System.Reflection.Primitives.dll: 16,144 bytes (15.8 KB = 0.0 MB) Contents/MonoBundle/.xamarin/osx-arm64/System.Reflection.TypeExtensions.dll: 34,576 bytes (33.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Resources.Reader.dll: 15,672 bytes (15.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Resources.ResourceManager.dll: 16,136 bytes (15.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Resources.Writer.dll: 45,832 bytes (44.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Runtime.CompilerServices.Unsafe.dll: 15,632 bytes (15.3 KB = 0.0 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Resources.Reader.dll: 15,632 bytes (15.3 KB = 0.0 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Resources.ResourceManager.dll: 16,144 bytes (15.8 KB = 0.0 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Resources.Writer.dll: 45,840 bytes (44.8 KB = 0.0 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Runtime.CompilerServices.Unsafe.dll: 15,672 bytes (15.3 KB = 0.0 MB) Contents/MonoBundle/.xamarin/osx-arm64/System.Runtime.CompilerServices.VisualC.dll: 19,216 bytes (18.8 KB = 0.0 MB) Contents/MonoBundle/.xamarin/osx-arm64/System.Runtime.dll: 45,320 bytes (44.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Runtime.Extensions.dll: 18,184 bytes (17.8 KB = 0.0 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Runtime.Extensions.dll: 18,192 bytes (17.8 KB = 0.0 MB) Contents/MonoBundle/.xamarin/osx-arm64/System.Runtime.Handles.dll: 16,144 bytes (15.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Runtime.InteropServices.dll: 111,920 bytes (109.3 KB = 0.1 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Runtime.InteropServices.JavaScript.dll: 40,200 bytes (39.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Runtime.InteropServices.RuntimeInformation.dll: 15,624 bytes (15.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Runtime.Intrinsics.dll: 17,720 bytes (17.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Runtime.Loader.dll: 16,136 bytes (15.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Runtime.Numerics.dll: 366,856 bytes (358.3 KB = 0.3 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Runtime.Serialization.dll: 17,160 bytes (16.8 KB = 0.0 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Runtime.InteropServices.dll: 111,928 bytes (109.3 KB = 0.1 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Runtime.InteropServices.JavaScript.dll: 40,208 bytes (39.3 KB = 0.0 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Runtime.InteropServices.RuntimeInformation.dll: 15,632 bytes (15.3 KB = 0.0 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Runtime.Intrinsics.dll: 17,680 bytes (17.3 KB = 0.0 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Runtime.Loader.dll: 16,144 bytes (15.8 KB = 0.0 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Runtime.Numerics.dll: 366,864 bytes (358.3 KB = 0.3 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Runtime.Serialization.dll: 17,168 bytes (16.8 KB = 0.0 MB) Contents/MonoBundle/.xamarin/osx-arm64/System.Runtime.Serialization.Formatters.dll: 129,296 bytes (126.3 KB = 0.1 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Runtime.Serialization.Json.dll: 16,184 bytes (15.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Runtime.Serialization.Primitives.dll: 30,472 bytes (29.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Runtime.Serialization.Xml.dll: 17,208 bytes (16.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Security.AccessControl.dll: 60,168 bytes (58.8 KB = 0.1 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Security.Claims.dll: 102,664 bytes (100.3 KB = 0.1 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Security.Cryptography.Algorithms.dll: 17,672 bytes (17.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Security.Cryptography.Cng.dll: 16,696 bytes (16.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Security.Cryptography.Csp.dll: 16,656 bytes (16.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Security.Cryptography.dll: 2,454,328 bytes (2,396.8 KB = 2.3 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Security.Cryptography.Encoding.dll: 16,184 bytes (15.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Security.Cryptography.OpenSsl.dll: 16,136 bytes (15.8 KB = 0.0 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Runtime.Serialization.Json.dll: 16,176 bytes (15.8 KB = 0.0 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Runtime.Serialization.Primitives.dll: 30,480 bytes (29.8 KB = 0.0 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Runtime.Serialization.Xml.dll: 17,168 bytes (16.8 KB = 0.0 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Security.AccessControl.dll: 60,216 bytes (58.8 KB = 0.1 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Security.Claims.dll: 102,712 bytes (100.3 KB = 0.1 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Security.Cryptography.Algorithms.dll: 17,720 bytes (17.3 KB = 0.0 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Security.Cryptography.Cng.dll: 16,656 bytes (16.3 KB = 0.0 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Security.Cryptography.Csp.dll: 16,696 bytes (16.3 KB = 0.0 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Security.Cryptography.dll: 2,459,920 bytes (2,402.3 KB = 2.3 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Security.Cryptography.Encoding.dll: 16,144 bytes (15.8 KB = 0.0 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Security.Cryptography.OpenSsl.dll: 16,144 bytes (15.8 KB = 0.0 MB) Contents/MonoBundle/.xamarin/osx-arm64/System.Security.Cryptography.Primitives.dll: 16,144 bytes (15.8 KB = 0.0 MB) Contents/MonoBundle/.xamarin/osx-arm64/System.Security.Cryptography.X509Certificates.dll: 17,168 bytes (16.8 KB = 0.0 MB) Contents/MonoBundle/.xamarin/osx-arm64/System.Security.dll: 18,704 bytes (18.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Security.Principal.dll: 15,664 bytes (15.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Security.Principal.Windows.dll: 39,728 bytes (38.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Security.SecureString.dll: 16,144 bytes (15.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.ServiceModel.Web.dll: 17,200 bytes (16.8 KB = 0.0 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Security.Principal.dll: 15,624 bytes (15.3 KB = 0.0 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Security.Principal.Windows.dll: 39,688 bytes (38.8 KB = 0.0 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Security.SecureString.dll: 16,176 bytes (15.8 KB = 0.0 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.ServiceModel.Web.dll: 17,168 bytes (16.8 KB = 0.0 MB) Contents/MonoBundle/.xamarin/osx-arm64/System.ServiceProcess.dll: 16,144 bytes (15.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Text.Encoding.CodePages.dll: 869,640 bytes (849.3 KB = 0.8 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Text.Encoding.CodePages.dll: 869,648 bytes (849.3 KB = 0.8 MB) Contents/MonoBundle/.xamarin/osx-arm64/System.Text.Encoding.dll: 16,136 bytes (15.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Text.Encoding.Extensions.dll: 16,136 bytes (15.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Text.Encodings.Web.dll: 122,680 bytes (119.8 KB = 0.1 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Text.Json.dll: 2,102,032 bytes (2,052.8 KB = 2.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Text.RegularExpressions.dll: 1,159,944 bytes (1,132.8 KB = 1.1 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Threading.AccessControl.dll: 35,088 bytes (34.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Threading.Channels.dll: 165,640 bytes (161.8 KB = 0.2 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Text.Encoding.Extensions.dll: 16,144 bytes (15.8 KB = 0.0 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Text.Encodings.Web.dll: 122,640 bytes (119.8 KB = 0.1 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Text.Json.dll: 2,102,072 bytes (2,052.8 KB = 2.0 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Text.RegularExpressions.dll: 1,159,952 bytes (1,132.8 KB = 1.1 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Threading.AccessControl.dll: 35,080 bytes (34.3 KB = 0.0 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Threading.Channels.dll: 165,648 bytes (161.8 KB = 0.2 MB) Contents/MonoBundle/.xamarin/osx-arm64/System.Threading.dll: 80,656 bytes (78.8 KB = 0.1 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Threading.Overlapped.dll: 16,176 bytes (15.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Threading.Tasks.Dataflow.dll: 532,752 bytes (520.3 KB = 0.5 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Threading.Tasks.dll: 17,160 bytes (16.8 KB = 0.0 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Threading.Overlapped.dll: 16,144 bytes (15.8 KB = 0.0 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Threading.Tasks.Dataflow.dll: 532,784 bytes (520.3 KB = 0.5 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Threading.Tasks.dll: 17,208 bytes (16.8 KB = 0.0 MB) Contents/MonoBundle/.xamarin/osx-arm64/System.Threading.Tasks.Extensions.dll: 16,184 bytes (15.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Threading.Tasks.Parallel.dll: 134,448 bytes (131.3 KB = 0.1 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Threading.Thread.dll: 16,136 bytes (15.8 KB = 0.0 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Threading.Tasks.Parallel.dll: 134,416 bytes (131.3 KB = 0.1 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Threading.Thread.dll: 16,144 bytes (15.8 KB = 0.0 MB) Contents/MonoBundle/.xamarin/osx-arm64/System.Threading.ThreadPool.dll: 16,136 bytes (15.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Threading.Timer.dll: 15,632 bytes (15.3 KB = 0.0 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Threading.Timer.dll: 15,624 bytes (15.3 KB = 0.0 MB) Contents/MonoBundle/.xamarin/osx-arm64/System.Transactions.dll: 17,168 bytes (16.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Transactions.Local.dll: 401,168 bytes (391.8 KB = 0.4 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.ValueTuple.dll: 16,176 bytes (15.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Web.dll: 15,672 bytes (15.3 KB = 0.0 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Transactions.Local.dll: 401,208 bytes (391.8 KB = 0.4 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.ValueTuple.dll: 16,144 bytes (15.8 KB = 0.0 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Web.dll: 15,664 bytes (15.3 KB = 0.0 MB) Contents/MonoBundle/.xamarin/osx-arm64/System.Web.HttpUtility.dll: 57,144 bytes (55.8 KB = 0.1 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Windows.dll: 16,184 bytes (15.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Xml.dll: 23,816 bytes (23.3 KB = 0.0 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Windows.dll: 16,144 bytes (15.8 KB = 0.0 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Xml.dll: 23,824 bytes (23.3 KB = 0.0 MB) Contents/MonoBundle/.xamarin/osx-arm64/System.Xml.Linq.dll: 16,136 bytes (15.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Xml.ReaderWriter.dll: 22,288 bytes (21.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Xml.Serialization.dll: 16,648 bytes (16.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Xml.XDocument.dll: 16,136 bytes (15.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Xml.XmlDocument.dll: 16,136 bytes (15.8 KB = 0.0 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Xml.ReaderWriter.dll: 22,320 bytes (21.8 KB = 0.0 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Xml.Serialization.dll: 16,656 bytes (16.3 KB = 0.0 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Xml.XDocument.dll: 16,184 bytes (15.8 KB = 0.0 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Xml.XmlDocument.dll: 16,144 bytes (15.8 KB = 0.0 MB) Contents/MonoBundle/.xamarin/osx-arm64/System.Xml.XmlSerializer.dll: 18,192 bytes (17.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Xml.XPath.dll: 16,136 bytes (15.8 KB = 0.0 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Xml.XPath.dll: 16,144 bytes (15.8 KB = 0.0 MB) Contents/MonoBundle/.xamarin/osx-arm64/System.Xml.XPath.XDocument.dll: 17,672 bytes (17.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/WindowsBase.dll: 16,656 bytes (16.3 KB = 0.0 MB) +Contents/MonoBundle/.xamarin/osx-arm64/WindowsBase.dll: 16,688 bytes (16.3 KB = 0.0 MB) Contents/MonoBundle/.xamarin/osx-x64/Microsoft.CSharp.dll: 796,432 bytes (777.8 KB = 0.8 MB) Contents/MonoBundle/.xamarin/osx-x64/Microsoft.macOS.dll: 36,723,712 bytes (35,863.0 KB = 35.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/Microsoft.VisualBasic.Core.dll: 1,166,600 bytes (1,139.3 KB = 1.1 MB) -Contents/MonoBundle/.xamarin/osx-x64/Microsoft.VisualBasic.dll: 17,720 bytes (17.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/Microsoft.Win32.Primitives.dll: 16,144 bytes (15.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/Microsoft.Win32.Registry.dll: 34,608 bytes (33.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/mscorlib.dll: 60,168 bytes (58.8 KB = 0.1 MB) +Contents/MonoBundle/.xamarin/osx-x64/Microsoft.VisualBasic.Core.dll: 1,166,648 bytes (1,139.3 KB = 1.1 MB) +Contents/MonoBundle/.xamarin/osx-x64/Microsoft.VisualBasic.dll: 17,680 bytes (17.3 KB = 0.0 MB) +Contents/MonoBundle/.xamarin/osx-x64/Microsoft.Win32.Primitives.dll: 16,176 bytes (15.8 KB = 0.0 MB) +Contents/MonoBundle/.xamarin/osx-x64/Microsoft.Win32.Registry.dll: 34,576 bytes (33.8 KB = 0.0 MB) +Contents/MonoBundle/.xamarin/osx-x64/mscorlib.dll: 60,176 bytes (58.8 KB = 0.1 MB) Contents/MonoBundle/.xamarin/osx-x64/netstandard.dll: 101,136 bytes (98.8 KB = 0.1 MB) Contents/MonoBundle/.xamarin/osx-x64/SizeTestApp.dll: 6,656 bytes (6.5 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.AppContext.dll: 15,624 bytes (15.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Buffers.dll: 15,624 bytes (15.3 KB = 0.0 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.AppContext.dll: 15,632 bytes (15.3 KB = 0.0 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Buffers.dll: 15,632 bytes (15.3 KB = 0.0 MB) Contents/MonoBundle/.xamarin/osx-x64/System.Collections.Concurrent.dll: 228,112 bytes (222.8 KB = 0.2 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Collections.dll: 289,080 bytes (282.3 KB = 0.3 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Collections.Immutable.dll: 984,840 bytes (961.8 KB = 0.9 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Collections.NonGeneric.dll: 92,976 bytes (90.8 KB = 0.1 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Collections.Specialized.dll: 92,976 bytes (90.8 KB = 0.1 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.ComponentModel.Annotations.dll: 191,792 bytes (187.3 KB = 0.2 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.ComponentModel.DataAnnotations.dll: 17,160 bytes (16.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.ComponentModel.dll: 17,672 bytes (17.3 KB = 0.0 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Collections.dll: 289,040 bytes (282.3 KB = 0.3 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Collections.Immutable.dll: 984,848 bytes (961.8 KB = 0.9 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Collections.NonGeneric.dll: 92,984 bytes (90.8 KB = 0.1 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Collections.Specialized.dll: 92,944 bytes (90.8 KB = 0.1 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.ComponentModel.Annotations.dll: 191,760 bytes (187.3 KB = 0.2 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.ComponentModel.DataAnnotations.dll: 17,168 bytes (16.8 KB = 0.0 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.ComponentModel.dll: 17,680 bytes (17.3 KB = 0.0 MB) Contents/MonoBundle/.xamarin/osx-x64/System.ComponentModel.EventBasedAsync.dll: 36,112 bytes (35.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.ComponentModel.Primitives.dll: 70,920 bytes (69.3 KB = 0.1 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.ComponentModel.Primitives.dll: 70,928 bytes (69.3 KB = 0.1 MB) Contents/MonoBundle/.xamarin/osx-x64/System.ComponentModel.TypeConverter.dll: 760,080 bytes (742.3 KB = 0.7 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Configuration.dll: 19,760 bytes (19.3 KB = 0.0 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Configuration.dll: 19,728 bytes (19.3 KB = 0.0 MB) Contents/MonoBundle/.xamarin/osx-x64/System.Console.dll: 199,480 bytes (194.8 KB = 0.2 MB) Contents/MonoBundle/.xamarin/osx-x64/System.Core.dll: 23,824 bytes (23.3 KB = 0.0 MB) Contents/MonoBundle/.xamarin/osx-x64/System.Data.Common.dll: 2,803,464 bytes (2,737.8 KB = 2.7 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Data.DataSetExtensions.dll: 16,184 bytes (15.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Data.dll: 25,912 bytes (25.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Diagnostics.Contracts.dll: 16,648 bytes (16.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Diagnostics.Debug.dll: 16,136 bytes (15.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Diagnostics.DiagnosticSource.dll: 498,440 bytes (486.8 KB = 0.5 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Data.DataSetExtensions.dll: 16,176 bytes (15.8 KB = 0.0 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Data.dll: 25,864 bytes (25.3 KB = 0.0 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Diagnostics.Contracts.dll: 16,696 bytes (16.3 KB = 0.0 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Diagnostics.Debug.dll: 16,144 bytes (15.8 KB = 0.0 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Diagnostics.DiagnosticSource.dll: 498,448 bytes (486.8 KB = 0.5 MB) Contents/MonoBundle/.xamarin/osx-x64/System.Diagnostics.FileVersionInfo.dll: 43,280 bytes (42.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Diagnostics.Process.dll: 236,344 bytes (230.8 KB = 0.2 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Diagnostics.StackTrace.dll: 35,128 bytes (34.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Diagnostics.TextWriterTraceListener.dll: 59,144 bytes (57.8 KB = 0.1 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Diagnostics.Process.dll: 236,304 bytes (230.8 KB = 0.2 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Diagnostics.StackTrace.dll: 35,120 bytes (34.3 KB = 0.0 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Diagnostics.TextWriterTraceListener.dll: 59,152 bytes (57.8 KB = 0.1 MB) Contents/MonoBundle/.xamarin/osx-x64/System.Diagnostics.Tools.dll: 15,624 bytes (15.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Diagnostics.TraceSource.dll: 131,336 bytes (128.3 KB = 0.1 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Diagnostics.Tracing.dll: 16,656 bytes (16.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.dll: 50,960 bytes (49.8 KB = 0.0 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Diagnostics.TraceSource.dll: 131,344 bytes (128.3 KB = 0.1 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Diagnostics.Tracing.dll: 16,696 bytes (16.3 KB = 0.0 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.dll: 50,952 bytes (49.8 KB = 0.0 MB) Contents/MonoBundle/.xamarin/osx-x64/System.Drawing.dll: 20,752 bytes (20.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Drawing.Primitives.dll: 123,656 bytes (120.8 KB = 0.1 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Drawing.Primitives.dll: 123,664 bytes (120.8 KB = 0.1 MB) Contents/MonoBundle/.xamarin/osx-x64/System.Dynamic.Runtime.dll: 16,648 bytes (16.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Formats.Asn1.dll: 224,528 bytes (219.3 KB = 0.2 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Formats.Tar.dll: 273,680 bytes (267.3 KB = 0.3 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Globalization.Calendars.dll: 16,136 bytes (15.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Globalization.dll: 16,136 bytes (15.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Globalization.Extensions.dll: 15,624 bytes (15.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.IO.Compression.Brotli.dll: 74,032 bytes (72.3 KB = 0.1 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.IO.Compression.dll: 416,528 bytes (406.8 KB = 0.4 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.IO.Compression.FileSystem.dll: 15,624 bytes (15.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.IO.Compression.ZipFile.dll: 99,120 bytes (96.8 KB = 0.1 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.IO.dll: 16,136 bytes (15.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.IO.FileSystem.AccessControl.dll: 33,552 bytes (32.8 KB = 0.0 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Formats.Asn1.dll: 224,520 bytes (219.3 KB = 0.2 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Formats.Tar.dll: 273,720 bytes (267.3 KB = 0.3 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Globalization.Calendars.dll: 16,144 bytes (15.8 KB = 0.0 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Globalization.dll: 16,176 bytes (15.8 KB = 0.0 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Globalization.Extensions.dll: 15,632 bytes (15.3 KB = 0.0 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.IO.Compression.Brotli.dll: 74,000 bytes (72.3 KB = 0.1 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.IO.Compression.dll: 416,560 bytes (406.8 KB = 0.4 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.IO.Compression.FileSystem.dll: 15,632 bytes (15.3 KB = 0.0 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.IO.Compression.ZipFile.dll: 99,088 bytes (96.8 KB = 0.1 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.IO.dll: 16,144 bytes (15.8 KB = 0.0 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.IO.FileSystem.AccessControl.dll: 33,584 bytes (32.8 KB = 0.0 MB) Contents/MonoBundle/.xamarin/osx-x64/System.IO.FileSystem.dll: 16,184 bytes (15.8 KB = 0.0 MB) Contents/MonoBundle/.xamarin/osx-x64/System.IO.FileSystem.DriveInfo.dll: 82,192 bytes (80.3 KB = 0.1 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.IO.FileSystem.Primitives.dll: 15,664 bytes (15.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.IO.FileSystem.Watcher.dll: 106,296 bytes (103.8 KB = 0.1 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.IO.IsolatedStorage.dll: 77,112 bytes (75.3 KB = 0.1 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.IO.FileSystem.Primitives.dll: 15,624 bytes (15.3 KB = 0.0 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.IO.FileSystem.Watcher.dll: 106,256 bytes (103.8 KB = 0.1 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.IO.IsolatedStorage.dll: 77,072 bytes (75.3 KB = 0.1 MB) Contents/MonoBundle/.xamarin/osx-x64/System.IO.MemoryMappedFiles.dll: 84,240 bytes (82.3 KB = 0.1 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.IO.Pipelines.dll: 181,520 bytes (177.3 KB = 0.2 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.IO.Pipelines.dll: 182,072 bytes (177.8 KB = 0.2 MB) Contents/MonoBundle/.xamarin/osx-x64/System.IO.Pipes.AccessControl.dll: 24,880 bytes (24.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.IO.Pipes.dll: 127,800 bytes (124.8 KB = 0.1 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.IO.UnmanagedMemoryStream.dll: 16,136 bytes (15.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Linq.AsyncEnumerable.dll: 1,328,912 bytes (1,297.8 KB = 1.3 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Linq.dll: 697,096 bytes (680.8 KB = 0.7 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Linq.Expressions.dll: 3,724,040 bytes (3,636.8 KB = 3.6 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Linq.Parallel.dll: 776,464 bytes (758.3 KB = 0.7 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Linq.Queryable.dll: 178,992 bytes (174.8 KB = 0.2 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Memory.dll: 152,880 bytes (149.3 KB = 0.1 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.IO.Pipes.dll: 127,760 bytes (124.8 KB = 0.1 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.IO.UnmanagedMemoryStream.dll: 16,144 bytes (15.8 KB = 0.0 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Linq.AsyncEnumerable.dll: 1,328,952 bytes (1,297.8 KB = 1.3 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Linq.dll: 697,144 bytes (680.8 KB = 0.7 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Linq.Expressions.dll: 3,725,584 bytes (3,638.3 KB = 3.6 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Linq.Parallel.dll: 776,504 bytes (758.3 KB = 0.7 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Linq.Queryable.dll: 178,952 bytes (174.8 KB = 0.2 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Memory.dll: 152,888 bytes (149.3 KB = 0.1 MB) Contents/MonoBundle/.xamarin/osx-x64/System.Net.dll: 17,720 bytes (17.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Net.Http.dll: 1,755,952 bytes (1,714.8 KB = 1.7 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Net.Http.Json.dll: 120,584 bytes (117.8 KB = 0.1 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Net.Http.dll: 1,755,408 bytes (1,714.3 KB = 1.7 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Net.Http.Json.dll: 120,624 bytes (117.8 KB = 0.1 MB) Contents/MonoBundle/.xamarin/osx-x64/System.Net.HttpListener.dll: 292,104 bytes (285.3 KB = 0.3 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Net.Mail.dll: 478,992 bytes (467.8 KB = 0.5 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Net.NameResolution.dll: 98,104 bytes (95.8 KB = 0.1 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Net.Mail.dll: 479,504 bytes (468.3 KB = 0.5 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Net.NameResolution.dll: 98,056 bytes (95.8 KB = 0.1 MB) Contents/MonoBundle/.xamarin/osx-x64/System.Net.NetworkInformation.dll: 135,952 bytes (132.8 KB = 0.1 MB) Contents/MonoBundle/.xamarin/osx-x64/System.Net.Ping.dll: 89,864 bytes (87.8 KB = 0.1 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Net.Primitives.dll: 215,304 bytes (210.3 KB = 0.2 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Net.Quic.dll: 345,872 bytes (337.8 KB = 0.3 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Net.Requests.dll: 367,880 bytes (359.3 KB = 0.4 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Net.Security.dll: 757,048 bytes (739.3 KB = 0.7 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Net.ServerSentEvents.dll: 71,952 bytes (70.3 KB = 0.1 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Net.ServicePoint.dll: 15,624 bytes (15.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Net.Sockets.dll: 604,464 bytes (590.3 KB = 0.6 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Net.WebClient.dll: 156,984 bytes (153.3 KB = 0.1 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Net.Primitives.dll: 215,312 bytes (210.3 KB = 0.2 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Net.Quic.dll: 345,912 bytes (337.8 KB = 0.3 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Net.Requests.dll: 367,928 bytes (359.3 KB = 0.4 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Net.Security.dll: 757,008 bytes (739.3 KB = 0.7 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Net.ServerSentEvents.dll: 71,992 bytes (70.3 KB = 0.1 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Net.ServicePoint.dll: 15,632 bytes (15.3 KB = 0.0 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Net.Sockets.dll: 604,432 bytes (590.3 KB = 0.6 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Net.WebClient.dll: 156,936 bytes (153.3 KB = 0.1 MB) Contents/MonoBundle/.xamarin/osx-x64/System.Net.WebHeaderCollection.dll: 55,056 bytes (53.8 KB = 0.1 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Net.WebProxy.dll: 33,040 bytes (32.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Net.WebSockets.Client.dll: 90,928 bytes (88.8 KB = 0.1 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Net.WebSockets.dll: 235,832 bytes (230.3 KB = 0.2 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Net.WebProxy.dll: 33,080 bytes (32.3 KB = 0.0 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Net.WebSockets.Client.dll: 90,888 bytes (88.8 KB = 0.1 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Net.WebSockets.dll: 236,296 bytes (230.8 KB = 0.2 MB) Contents/MonoBundle/.xamarin/osx-x64/System.Numerics.dll: 15,632 bytes (15.3 KB = 0.0 MB) Contents/MonoBundle/.xamarin/osx-x64/System.Numerics.Vectors.dll: 16,136 bytes (15.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.ObjectModel.dll: 69,936 bytes (68.3 KB = 0.1 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Private.CoreLib.dll: 15,553,800 bytes (15,189.3 KB = 14.8 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Private.DataContractSerialization.dll: 2,071,816 bytes (2,023.3 KB = 2.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Private.Uri.dll: 245,512 bytes (239.8 KB = 0.2 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Private.Xml.dll: 7,901,968 bytes (7,716.8 KB = 7.5 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Private.Xml.Linq.dll: 388,872 bytes (379.8 KB = 0.4 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.ObjectModel.dll: 69,944 bytes (68.3 KB = 0.1 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Private.CoreLib.dll: 15,564,560 bytes (15,199.8 KB = 14.8 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Private.DataContractSerialization.dll: 2,071,824 bytes (2,023.3 KB = 2.0 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Private.Uri.dll: 245,552 bytes (239.8 KB = 0.2 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Private.Xml.dll: 7,902,472 bytes (7,717.3 KB = 7.5 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Private.Xml.Linq.dll: 388,880 bytes (379.8 KB = 0.4 MB) Contents/MonoBundle/.xamarin/osx-x64/System.Reflection.DispatchProxy.dll: 67,344 bytes (65.8 KB = 0.1 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Reflection.dll: 16,648 bytes (16.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Reflection.Emit.dll: 301,320 bytes (294.3 KB = 0.3 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Reflection.Emit.ILGeneration.dll: 16,136 bytes (15.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Reflection.Emit.Lightweight.dll: 16,144 bytes (15.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Reflection.Extensions.dll: 15,672 bytes (15.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Reflection.Metadata.dll: 1,148,168 bytes (1,121.3 KB = 1.1 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Reflection.Primitives.dll: 16,176 bytes (15.8 KB = 0.0 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Reflection.dll: 16,696 bytes (16.3 KB = 0.0 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Reflection.Emit.dll: 303,376 bytes (296.3 KB = 0.3 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Reflection.Emit.ILGeneration.dll: 16,144 bytes (15.8 KB = 0.0 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Reflection.Emit.Lightweight.dll: 16,176 bytes (15.8 KB = 0.0 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Reflection.Extensions.dll: 15,632 bytes (15.3 KB = 0.0 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Reflection.Metadata.dll: 1,148,176 bytes (1,121.3 KB = 1.1 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Reflection.Primitives.dll: 16,184 bytes (15.8 KB = 0.0 MB) Contents/MonoBundle/.xamarin/osx-x64/System.Reflection.TypeExtensions.dll: 32,528 bytes (31.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Resources.Reader.dll: 15,624 bytes (15.3 KB = 0.0 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Resources.Reader.dll: 15,664 bytes (15.3 KB = 0.0 MB) Contents/MonoBundle/.xamarin/osx-x64/System.Resources.ResourceManager.dll: 16,136 bytes (15.8 KB = 0.0 MB) Contents/MonoBundle/.xamarin/osx-x64/System.Resources.Writer.dll: 42,768 bytes (41.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Runtime.CompilerServices.Unsafe.dll: 15,624 bytes (15.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Runtime.CompilerServices.VisualC.dll: 19,256 bytes (18.8 KB = 0.0 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Runtime.CompilerServices.Unsafe.dll: 15,632 bytes (15.3 KB = 0.0 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Runtime.CompilerServices.VisualC.dll: 19,208 bytes (18.8 KB = 0.0 MB) Contents/MonoBundle/.xamarin/osx-x64/System.Runtime.dll: 45,328 bytes (44.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Runtime.Extensions.dll: 18,192 bytes (17.8 KB = 0.0 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Runtime.Extensions.dll: 18,184 bytes (17.8 KB = 0.0 MB) Contents/MonoBundle/.xamarin/osx-x64/System.Runtime.Handles.dll: 16,136 bytes (15.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Runtime.InteropServices.dll: 102,712 bytes (100.3 KB = 0.1 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Runtime.InteropServices.JavaScript.dll: 40,200 bytes (39.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Runtime.InteropServices.RuntimeInformation.dll: 15,624 bytes (15.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Runtime.Intrinsics.dll: 17,712 bytes (17.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Runtime.Loader.dll: 16,136 bytes (15.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Runtime.Numerics.dll: 343,304 bytes (335.3 KB = 0.3 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Runtime.Serialization.dll: 17,200 bytes (16.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Runtime.Serialization.Formatters.dll: 116,528 bytes (113.8 KB = 0.1 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Runtime.Serialization.Json.dll: 16,184 bytes (15.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Runtime.Serialization.Primitives.dll: 28,976 bytes (28.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Runtime.Serialization.Xml.dll: 17,168 bytes (16.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Security.AccessControl.dll: 60,168 bytes (58.8 KB = 0.1 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Security.Claims.dll: 92,944 bytes (90.8 KB = 0.1 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Security.Cryptography.Algorithms.dll: 17,672 bytes (17.3 KB = 0.0 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Runtime.InteropServices.dll: 102,672 bytes (100.3 KB = 0.1 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Runtime.InteropServices.JavaScript.dll: 40,208 bytes (39.3 KB = 0.0 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Runtime.InteropServices.RuntimeInformation.dll: 15,632 bytes (15.3 KB = 0.0 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Runtime.Intrinsics.dll: 17,680 bytes (17.3 KB = 0.0 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Runtime.Loader.dll: 16,176 bytes (15.8 KB = 0.0 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Runtime.Numerics.dll: 343,312 bytes (335.3 KB = 0.3 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Runtime.Serialization.dll: 17,208 bytes (16.8 KB = 0.0 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Runtime.Serialization.Formatters.dll: 116,536 bytes (113.8 KB = 0.1 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Runtime.Serialization.Json.dll: 16,176 bytes (15.8 KB = 0.0 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Runtime.Serialization.Primitives.dll: 28,984 bytes (28.3 KB = 0.0 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Runtime.Serialization.Xml.dll: 17,208 bytes (16.8 KB = 0.0 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Security.AccessControl.dll: 60,216 bytes (58.8 KB = 0.1 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Security.Claims.dll: 92,976 bytes (90.8 KB = 0.1 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Security.Cryptography.Algorithms.dll: 17,680 bytes (17.3 KB = 0.0 MB) Contents/MonoBundle/.xamarin/osx-x64/System.Security.Cryptography.Cng.dll: 16,656 bytes (16.3 KB = 0.0 MB) Contents/MonoBundle/.xamarin/osx-x64/System.Security.Cryptography.Csp.dll: 16,696 bytes (16.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Security.Cryptography.dll: 2,133,776 bytes (2,083.8 KB = 2.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Security.Cryptography.Encoding.dll: 16,144 bytes (15.8 KB = 0.0 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Security.Cryptography.dll: 2,138,896 bytes (2,088.8 KB = 2.0 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Security.Cryptography.Encoding.dll: 16,176 bytes (15.8 KB = 0.0 MB) Contents/MonoBundle/.xamarin/osx-x64/System.Security.Cryptography.OpenSsl.dll: 16,144 bytes (15.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Security.Cryptography.Primitives.dll: 16,144 bytes (15.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Security.Cryptography.X509Certificates.dll: 17,208 bytes (16.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Security.dll: 18,696 bytes (18.3 KB = 0.0 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Security.Cryptography.Primitives.dll: 16,136 bytes (15.8 KB = 0.0 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Security.Cryptography.X509Certificates.dll: 17,168 bytes (16.8 KB = 0.0 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Security.dll: 18,704 bytes (18.3 KB = 0.0 MB) Contents/MonoBundle/.xamarin/osx-x64/System.Security.Principal.dll: 15,632 bytes (15.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Security.Principal.Windows.dll: 39,176 bytes (38.3 KB = 0.0 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Security.Principal.Windows.dll: 39,224 bytes (38.3 KB = 0.0 MB) Contents/MonoBundle/.xamarin/osx-x64/System.Security.SecureString.dll: 16,176 bytes (15.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.ServiceModel.Web.dll: 17,200 bytes (16.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.ServiceProcess.dll: 16,184 bytes (15.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Text.Encoding.CodePages.dll: 852,784 bytes (832.8 KB = 0.8 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.ServiceModel.Web.dll: 17,168 bytes (16.8 KB = 0.0 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.ServiceProcess.dll: 16,144 bytes (15.8 KB = 0.0 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Text.Encoding.CodePages.dll: 852,752 bytes (832.8 KB = 0.8 MB) Contents/MonoBundle/.xamarin/osx-x64/System.Text.Encoding.dll: 16,144 bytes (15.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Text.Encoding.Extensions.dll: 16,136 bytes (15.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Text.Encodings.Web.dll: 114,448 bytes (111.8 KB = 0.1 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Text.Encoding.Extensions.dll: 16,176 bytes (15.8 KB = 0.0 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Text.Encodings.Web.dll: 113,936 bytes (111.3 KB = 0.1 MB) Contents/MonoBundle/.xamarin/osx-x64/System.Text.Json.dll: 1,882,888 bytes (1,838.8 KB = 1.8 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Text.RegularExpressions.dll: 1,037,064 bytes (1,012.8 KB = 1.0 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Text.RegularExpressions.dll: 1,036,560 bytes (1,012.3 KB = 1.0 MB) Contents/MonoBundle/.xamarin/osx-x64/System.Threading.AccessControl.dll: 35,088 bytes (34.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Threading.Channels.dll: 149,768 bytes (146.3 KB = 0.1 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Threading.dll: 74,000 bytes (72.3 KB = 0.1 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Threading.Channels.dll: 149,816 bytes (146.3 KB = 0.1 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Threading.dll: 74,040 bytes (72.3 KB = 0.1 MB) Contents/MonoBundle/.xamarin/osx-x64/System.Threading.Overlapped.dll: 16,144 bytes (15.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Threading.Tasks.Dataflow.dll: 471,304 bytes (460.3 KB = 0.4 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Threading.Tasks.dll: 17,200 bytes (16.8 KB = 0.0 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Threading.Tasks.Dataflow.dll: 471,312 bytes (460.3 KB = 0.4 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Threading.Tasks.dll: 17,168 bytes (16.8 KB = 0.0 MB) Contents/MonoBundle/.xamarin/osx-x64/System.Threading.Tasks.Extensions.dll: 16,136 bytes (15.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Threading.Tasks.Parallel.dll: 121,656 bytes (118.8 KB = 0.1 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Threading.Thread.dll: 16,136 bytes (15.8 KB = 0.0 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Threading.Tasks.Parallel.dll: 121,648 bytes (118.8 KB = 0.1 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Threading.Thread.dll: 16,144 bytes (15.8 KB = 0.0 MB) Contents/MonoBundle/.xamarin/osx-x64/System.Threading.ThreadPool.dll: 16,184 bytes (15.8 KB = 0.0 MB) Contents/MonoBundle/.xamarin/osx-x64/System.Threading.Timer.dll: 15,632 bytes (15.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Transactions.dll: 17,200 bytes (16.8 KB = 0.0 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Transactions.dll: 17,168 bytes (16.8 KB = 0.0 MB) Contents/MonoBundle/.xamarin/osx-x64/System.Transactions.Local.dll: 357,136 bytes (348.8 KB = 0.3 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.ValueTuple.dll: 16,176 bytes (15.8 KB = 0.0 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.ValueTuple.dll: 16,184 bytes (15.8 KB = 0.0 MB) Contents/MonoBundle/.xamarin/osx-x64/System.Web.dll: 15,632 bytes (15.3 KB = 0.0 MB) Contents/MonoBundle/.xamarin/osx-x64/System.Web.HttpUtility.dll: 52,528 bytes (51.3 KB = 0.1 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Windows.dll: 16,136 bytes (15.8 KB = 0.0 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Windows.dll: 16,144 bytes (15.8 KB = 0.0 MB) Contents/MonoBundle/.xamarin/osx-x64/System.Xml.dll: 23,816 bytes (23.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Xml.Linq.dll: 16,136 bytes (15.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Xml.ReaderWriter.dll: 22,280 bytes (21.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Xml.Serialization.dll: 16,648 bytes (16.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Xml.XDocument.dll: 16,136 bytes (15.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Xml.XmlDocument.dll: 16,176 bytes (15.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Xml.XmlSerializer.dll: 18,192 bytes (17.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Xml.XPath.dll: 16,184 bytes (15.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Xml.XPath.XDocument.dll: 17,200 bytes (16.8 KB = 0.0 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Xml.Linq.dll: 16,144 bytes (15.8 KB = 0.0 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Xml.ReaderWriter.dll: 22,288 bytes (21.8 KB = 0.0 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Xml.Serialization.dll: 16,688 bytes (16.3 KB = 0.0 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Xml.XDocument.dll: 16,184 bytes (15.8 KB = 0.0 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Xml.XmlDocument.dll: 16,144 bytes (15.8 KB = 0.0 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Xml.XmlSerializer.dll: 18,224 bytes (17.8 KB = 0.0 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Xml.XPath.dll: 16,144 bytes (15.8 KB = 0.0 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Xml.XPath.XDocument.dll: 17,208 bytes (16.8 KB = 0.0 MB) Contents/MonoBundle/.xamarin/osx-x64/WindowsBase.dll: 16,696 bytes (16.3 KB = 0.0 MB) -Contents/MonoBundle/libclrgc.dylib: 1,932,352 bytes (1,887.1 KB = 1.8 MB) -Contents/MonoBundle/libclrgcexp.dylib: 2,092,880 bytes (2,043.8 KB = 2.0 MB) +Contents/MonoBundle/libclrgc.dylib: 1,932,080 bytes (1,886.8 KB = 1.8 MB) +Contents/MonoBundle/libclrgcexp.dylib: 2,092,352 bytes (2,043.3 KB = 2.0 MB) Contents/MonoBundle/libclrjit.dylib: 6,426,912 bytes (6,276.3 KB = 6.1 MB) -Contents/MonoBundle/libcoreclr.dylib: 12,719,264 bytes (12,421.2 KB = 12.1 MB) +Contents/MonoBundle/libcoreclr.dylib: 12,718,976 bytes (12,420.9 KB = 12.1 MB) Contents/MonoBundle/libhostfxr.dylib: 834,160 bytes (814.6 KB = 0.8 MB) Contents/MonoBundle/libhostpolicy.dylib: 815,392 bytes (796.3 KB = 0.8 MB) Contents/MonoBundle/libmscordaccore.dylib: 4,820,016 bytes (4,707.0 KB = 4.6 MB) diff --git a/tests/dotnet/UnitTests/expected/MacOSX-NativeAOT-size.txt b/tests/dotnet/UnitTests/expected/MacOSX-NativeAOT-size.txt index 1154576091e0..2df123b4f22f 100644 --- a/tests/dotnet/UnitTests/expected/MacOSX-NativeAOT-size.txt +++ b/tests/dotnet/UnitTests/expected/MacOSX-NativeAOT-size.txt @@ -1,7 +1,7 @@ -AppBundleSize: 8,440,000 bytes (8,242.2 KB = 8.0 MB) +AppBundleSize: 8,440,019 bytes (8,242.2 KB = 8.0 MB) # The following list of files and their sizes is just informational / for review, and isn't used in the test: Contents/_CodeSignature/CodeResources: 3,489 bytes (3.4 KB = 0.0 MB) -Contents/Info.plist: 736 bytes (0.7 KB = 0.0 MB) +Contents/Info.plist: 755 bytes (0.7 KB = 0.0 MB) Contents/MacOS/SizeTestApp: 5,446,416 bytes (5,318.8 KB = 5.2 MB) Contents/MonoBundle/libSystem.Globalization.Native.dylib: 252,176 bytes (246.3 KB = 0.2 MB) Contents/MonoBundle/libSystem.IO.Compression.Native.dylib: 2,005,440 bytes (1,958.4 KB = 1.9 MB) diff --git a/tests/dotnet/UnitTests/expected/TVOS-MonoVM-interpreter-size.txt b/tests/dotnet/UnitTests/expected/TVOS-MonoVM-interpreter-size.txt index 6a1eb5afb6e2..2ee9782db51e 100644 --- a/tests/dotnet/UnitTests/expected/TVOS-MonoVM-interpreter-size.txt +++ b/tests/dotnet/UnitTests/expected/TVOS-MonoVM-interpreter-size.txt @@ -1,8 +1,8 @@ -AppBundleSize: 3,615,399 bytes (3,530.7 KB = 3.4 MB) +AppBundleSize: 3,615,418 bytes (3,530.7 KB = 3.4 MB) # The following list of files and their sizes is just informational / for review, and isn't used in the test: _CodeSignature/CodeResources: 3,999 bytes (3.9 KB = 0.0 MB) archived-expanded-entitlements.xcent: 384 bytes (0.4 KB = 0.0 MB) -Info.plist: 1,123 bytes (1.1 KB = 0.0 MB) +Info.plist: 1,142 bytes (1.1 KB = 0.0 MB) Microsoft.tvOS.dll: 154,624 bytes (151.0 KB = 0.1 MB) PkgInfo: 8 bytes (0.0 KB = 0.0 MB) runtimeconfig.bin: 1,405 bytes (1.4 KB = 0.0 MB) diff --git a/tests/dotnet/UnitTests/expected/TVOS-MonoVM-size.txt b/tests/dotnet/UnitTests/expected/TVOS-MonoVM-size.txt index 9072655dc17e..b84e971daa16 100644 --- a/tests/dotnet/UnitTests/expected/TVOS-MonoVM-size.txt +++ b/tests/dotnet/UnitTests/expected/TVOS-MonoVM-size.txt @@ -1,11 +1,11 @@ -AppBundleSize: 9,362,309 bytes (9,142.9 KB = 8.9 MB) +AppBundleSize: 9,362,840 bytes (9,143.4 KB = 8.9 MB) # The following list of files and their sizes is just informational / for review, and isn't used in the test: _CodeSignature/CodeResources: 5,233 bytes (5.1 KB = 0.0 MB) aot-instances.aotdata.arm64: 827,592 bytes (808.2 KB = 0.8 MB) archived-expanded-entitlements.xcent: 384 bytes (0.4 KB = 0.0 MB) -Info.plist: 1,123 bytes (1.1 KB = 0.0 MB) +Info.plist: 1,142 bytes (1.1 KB = 0.0 MB) Microsoft.tvOS.aotdata.arm64: 22,552 bytes (22.0 KB = 0.0 MB) -Microsoft.tvOS.dll: 48,640 bytes (47.5 KB = 0.0 MB) +Microsoft.tvOS.dll: 49,152 bytes (48.0 KB = 0.0 MB) PkgInfo: 8 bytes (0.0 KB = 0.0 MB) runtimeconfig.bin: 1,481 bytes (1.4 KB = 0.0 MB) SizeTestApp: 7,261,120 bytes (7,090.9 KB = 6.9 MB) diff --git a/tests/dotnet/UnitTests/expected/TVOS-NativeAOT-size.txt b/tests/dotnet/UnitTests/expected/TVOS-NativeAOT-size.txt index 4ff9fdabe0e3..26e7fd3e2382 100644 --- a/tests/dotnet/UnitTests/expected/TVOS-NativeAOT-size.txt +++ b/tests/dotnet/UnitTests/expected/TVOS-NativeAOT-size.txt @@ -1,8 +1,8 @@ -AppBundleSize: 2,616,488 bytes (2,555.2 KB = 2.5 MB) +AppBundleSize: 2,616,507 bytes (2,555.2 KB = 2.5 MB) # The following list of files and their sizes is just informational / for review, and isn't used in the test: _CodeSignature/CodeResources: 2,589 bytes (2.5 KB = 0.0 MB) archived-expanded-entitlements.xcent: 384 bytes (0.4 KB = 0.0 MB) -Info.plist: 1,123 bytes (1.1 KB = 0.0 MB) +Info.plist: 1,142 bytes (1.1 KB = 0.0 MB) PkgInfo: 8 bytes (0.0 KB = 0.0 MB) runtimeconfig.bin: 1,808 bytes (1.8 KB = 0.0 MB) SizeTestApp: 2,610,576 bytes (2,549.4 KB = 2.5 MB) diff --git a/tests/dotnet/UnitTests/expected/iOS-MonoVM-interpreter-size.txt b/tests/dotnet/UnitTests/expected/iOS-MonoVM-interpreter-size.txt index ad3fbc6ca755..3583f6793c53 100644 --- a/tests/dotnet/UnitTests/expected/iOS-MonoVM-interpreter-size.txt +++ b/tests/dotnet/UnitTests/expected/iOS-MonoVM-interpreter-size.txt @@ -1,8 +1,8 @@ -AppBundleSize: 3,601,837 bytes (3,517.4 KB = 3.4 MB) +AppBundleSize: 3,601,856 bytes (3,517.4 KB = 3.4 MB) # The following list of files and their sizes is just informational / for review, and isn't used in the test: _CodeSignature/CodeResources: 3,997 bytes (3.9 KB = 0.0 MB) archived-expanded-entitlements.xcent: 384 bytes (0.4 KB = 0.0 MB) -Info.plist: 1,147 bytes (1.1 KB = 0.0 MB) +Info.plist: 1,166 bytes (1.1 KB = 0.0 MB) Microsoft.iOS.dll: 154,624 bytes (151.0 KB = 0.1 MB) PkgInfo: 8 bytes (0.0 KB = 0.0 MB) runtimeconfig.bin: 1,405 bytes (1.4 KB = 0.0 MB) diff --git a/tests/dotnet/UnitTests/expected/iOS-MonoVM-size.txt b/tests/dotnet/UnitTests/expected/iOS-MonoVM-size.txt index 929606d16b2c..470a3bb6b8f8 100644 --- a/tests/dotnet/UnitTests/expected/iOS-MonoVM-size.txt +++ b/tests/dotnet/UnitTests/expected/iOS-MonoVM-size.txt @@ -1,11 +1,11 @@ -AppBundleSize: 9,320,233 bytes (9,101.8 KB = 8.9 MB) +AppBundleSize: 9,320,764 bytes (9,102.3 KB = 8.9 MB) # The following list of files and their sizes is just informational / for review, and isn't used in the test: _CodeSignature/CodeResources: 5,229 bytes (5.1 KB = 0.0 MB) aot-instances.aotdata.arm64: 827,592 bytes (808.2 KB = 0.8 MB) archived-expanded-entitlements.xcent: 384 bytes (0.4 KB = 0.0 MB) -Info.plist: 1,147 bytes (1.1 KB = 0.0 MB) +Info.plist: 1,166 bytes (1.1 KB = 0.0 MB) Microsoft.iOS.aotdata.arm64: 22,904 bytes (22.4 KB = 0.0 MB) -Microsoft.iOS.dll: 48,640 bytes (47.5 KB = 0.0 MB) +Microsoft.iOS.dll: 49,152 bytes (48.0 KB = 0.0 MB) PkgInfo: 8 bytes (0.0 KB = 0.0 MB) runtimeconfig.bin: 1,481 bytes (1.4 KB = 0.0 MB) SizeTestApp: 7,218,672 bytes (7,049.5 KB = 6.9 MB) diff --git a/tests/dotnet/UnitTests/expected/iOS-NativeAOT-size.txt b/tests/dotnet/UnitTests/expected/iOS-NativeAOT-size.txt index 25726d8768a9..a1cd08207f4f 100644 --- a/tests/dotnet/UnitTests/expected/iOS-NativeAOT-size.txt +++ b/tests/dotnet/UnitTests/expected/iOS-NativeAOT-size.txt @@ -1,8 +1,8 @@ -AppBundleSize: 2,601,520 bytes (2,540.5 KB = 2.5 MB) +AppBundleSize: 2,601,539 bytes (2,540.6 KB = 2.5 MB) # The following list of files and their sizes is just informational / for review, and isn't used in the test: _CodeSignature/CodeResources: 2,589 bytes (2.5 KB = 0.0 MB) archived-expanded-entitlements.xcent: 384 bytes (0.4 KB = 0.0 MB) -Info.plist: 1,147 bytes (1.1 KB = 0.0 MB) +Info.plist: 1,166 bytes (1.1 KB = 0.0 MB) PkgInfo: 8 bytes (0.0 KB = 0.0 MB) runtimeconfig.bin: 1,808 bytes (1.8 KB = 0.0 MB) SizeTestApp: 2,595,584 bytes (2,534.8 KB = 2.5 MB) From 28695ae59e283f9ed7e7781134fce0c775aca6d5 Mon Sep 17 00:00:00 2001 From: Rolf Bjarne Kvinge Date: Mon, 20 Apr 2026 15:22:50 +0200 Subject: [PATCH 25/47] [tests] Update expected sizes. --- ...lyst-CoreCLR-Interpreter-preservedapis.txt | 20 +++++++++---------- .../MacCatalyst-CoreCLR-Interpreter-size.txt | 4 ++-- .../MacCatalyst-CoreCLR-R2R-preservedapis.txt | 20 +++++++++---------- .../expected/MacCatalyst-CoreCLR-R2R-size.txt | 4 ++-- .../MacCatalyst-MonoVM-interpreter-size.txt | 4 ++-- .../expected/MacCatalyst-MonoVM-size.txt | 4 ++-- .../MacOSX-CoreCLR-Interpreter-size.txt | 4 ++-- .../expected/MacOSX-CoreCLR-R2R-size.txt | 4 ++-- ...TVOS-CoreCLR-Interpreter-preservedapis.txt | 20 +++++++++---------- .../TVOS-CoreCLR-R2R-preservedapis.txt | 20 +++++++++---------- .../expected/TVOS-MonoVM-interpreter-size.txt | 4 ++-- .../iOS-CoreCLR-Interpreter-preservedapis.txt | 20 +++++++++---------- .../expected/iOS-CoreCLR-Interpreter-size.txt | 12 +++++------ .../iOS-CoreCLR-R2R-preservedapis.txt | 20 +++++++++---------- .../expected/iOS-CoreCLR-R2R-size.txt | 12 +++++------ .../expected/iOS-MonoVM-interpreter-size.txt | 4 ++-- .../UnitTests/expected/iOS-MonoVM-size.txt | 4 ++-- .../UnitTests/expected/iOS-NativeAOT-size.txt | 4 ++-- 18 files changed, 92 insertions(+), 92 deletions(-) diff --git a/tests/dotnet/UnitTests/expected/MacCatalyst-CoreCLR-Interpreter-preservedapis.txt b/tests/dotnet/UnitTests/expected/MacCatalyst-CoreCLR-Interpreter-preservedapis.txt index bae1a53527ef..ad1122f80740 100644 --- a/tests/dotnet/UnitTests/expected/MacCatalyst-CoreCLR-Interpreter-preservedapis.txt +++ b/tests/dotnet/UnitTests/expected/MacCatalyst-CoreCLR-Interpreter-preservedapis.txt @@ -6178,6 +6178,7 @@ System.Private.CoreLib.dll:System.Func`2 System.IO.S System.Private.CoreLib.dll:System.Func`2 System.IO.Stream/<>c::<>9__53_0 System.Private.CoreLib.dll:System.Func`2 System.Threading.Monitor::s_createCondition System.Private.CoreLib.dll:System.Func`2 System.Reflection.TypeNameResolver::_assemblyResolver +System.Private.CoreLib.dll:System.Func`2 System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods/<>O::<0>__CreateMarshalMethods System.Private.CoreLib.dll:System.Func`2 System.StubHelpers.StubHelpers/<>c::<>9__28_0 System.Private.CoreLib.dll:System.Func`3 System.Private.CoreLib.dll:System.Func`3..ctor(System.Object, System.IntPtr) @@ -8669,7 +8670,6 @@ System.Private.CoreLib.dll:System.Int32 System.Runtime.InteropServices.GCHandleS System.Private.CoreLib.dll:System.Int32 System.Runtime.InteropServices.GCHandleType::value__ System.Private.CoreLib.dll:System.Int32 System.Runtime.InteropServices.Marshal::SystemDefaultCharSize System.Private.CoreLib.dll:System.Int32 System.Runtime.InteropServices.Marshal::SystemMaxDBCSCharSize -System.Private.CoreLib.dll:System.Int32 System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods::_nativeSize System.Private.CoreLib.dll:System.Int32 System.Runtime.InteropServices.MarshalAsAttribute::IidParameterIndex System.Private.CoreLib.dll:System.Int32 System.Runtime.InteropServices.MarshalAsAttribute::SizeConst System.Private.CoreLib.dll:System.Int32 System.Runtime.InteropServices.Marshalling.ComVariant/Blob::_size @@ -13359,6 +13359,7 @@ System.Private.CoreLib.dll:System.Runtime.CompilerServices.ConditionalWeakTable` System.Private.CoreLib.dll:System.Runtime.CompilerServices.ConditionalWeakTable`2 System.Runtime.InteropServices.NativeLibrary::s_nativeDllResolveMap System.Private.CoreLib.dll:System.Runtime.CompilerServices.ConditionalWeakTable`2 System.StubHelpers.BSTRMarshaler::s_trailByteTable System.Private.CoreLib.dll:System.Runtime.CompilerServices.ConditionalWeakTable`2 System.Threading.Tasks.TaskScheduler::s_activeTaskSchedulers +System.Private.CoreLib.dll:System.Runtime.CompilerServices.ConditionalWeakTable`2 System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods::s_marshalerCache System.Private.CoreLib.dll:System.Runtime.CompilerServices.ConditionalWeakTable`2 System.StubHelpers.StubHelpers::s_structureMarshalInfoCache System.Private.CoreLib.dll:System.Runtime.CompilerServices.ConditionalWeakTable`2 System.Runtime.CompilerServices.ConditionalWeakTable`2/Container::_parent System.Private.CoreLib.dll:System.Runtime.CompilerServices.ConditionalWeakTable`2 System.Runtime.CompilerServices.ConditionalWeakTable`2/Enumerator::_table @@ -14243,18 +14244,17 @@ System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal.WriteInt64(Sys System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal.WriteIntPtr(System.IntPtr, System.Int32, System.IntPtr) System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal.WriteIntPtr(System.IntPtr, System.IntPtr) System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods -System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods System.RuntimeType/CompositeCacheEntry::_marshalerMethods -System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods..ctor(System.Type, System.Int32) -System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods.ConvertToManaged(System.Object, System.Byte*) -System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods.ConvertToUnmanaged(System.Object, System.Byte*, System.StubHelpers.CleanupWorkListElement&) -System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods.Create(System.RuntimeType) -System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods.Free(System.Byte*) +System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods..cctor() +System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods..ctor(System.Type) +System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods.g__CreateMarshalMethods|20_0(System.Type) +System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods.ConvertToManaged(System.Object, System.Byte*, System.StubHelpers.CleanupWorkListElement&) +System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods.ConvertToUnmanaged(System.Object, System.Byte*, System.Int32, System.StubHelpers.CleanupWorkListElement&) +System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods.Free(System.Object, System.Byte*, System.Int32, System.StubHelpers.CleanupWorkListElement&) System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods.get_ConvertToManagedMethod() System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods.get_ConvertToUnmanagedMethod() System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods.get_FreeMethod() -System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods.GetMarshalMethodsForType(System.RuntimeType) -System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods.GetStorageRef(System.RuntimeType/CompositeCacheEntry) -System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods.InitializeCompositeCache(System.RuntimeType/CompositeCacheEntry) +System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods.GetMarshalMethodsForType(System.Type) +System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods/<>O System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods/ConvertToManagedDelegate System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods/ConvertToManagedDelegate System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods::_convertToManaged System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods/ConvertToManagedDelegate..ctor(System.Object, System.IntPtr) diff --git a/tests/dotnet/UnitTests/expected/MacCatalyst-CoreCLR-Interpreter-size.txt b/tests/dotnet/UnitTests/expected/MacCatalyst-CoreCLR-Interpreter-size.txt index 99b59d343620..daf4d5c4c2ba 100644 --- a/tests/dotnet/UnitTests/expected/MacCatalyst-CoreCLR-Interpreter-size.txt +++ b/tests/dotnet/UnitTests/expected/MacCatalyst-CoreCLR-Interpreter-size.txt @@ -1,8 +1,8 @@ -AppBundleSize: 10,462,595 bytes (10,217.4 KB = 10.0 MB) +AppBundleSize: 10,462,435 bytes (10,217.2 KB = 10.0 MB) # The following list of files and their sizes is just informational / for review, and isn't used in the test: Contents/_CodeSignature/CodeResources: 4,951 bytes (4.8 KB = 0.0 MB) Contents/Info.plist: 1,099 bytes (1.1 KB = 0.0 MB) -Contents/MacOS/SizeTestApp: 242,128 bytes (236.5 KB = 0.2 MB) +Contents/MacOS/SizeTestApp: 241,968 bytes (236.3 KB = 0.2 MB) Contents/MonoBundle/libcoreclr.dylib: 6,386,800 bytes (6,237.1 KB = 6.1 MB) Contents/MonoBundle/libSystem.Globalization.Native.dylib: 110,432 bytes (107.8 KB = 0.1 MB) Contents/MonoBundle/libSystem.IO.Compression.Native.dylib: 1,442,208 bytes (1,408.4 KB = 1.4 MB) diff --git a/tests/dotnet/UnitTests/expected/MacCatalyst-CoreCLR-R2R-preservedapis.txt b/tests/dotnet/UnitTests/expected/MacCatalyst-CoreCLR-R2R-preservedapis.txt index bae1a53527ef..ad1122f80740 100644 --- a/tests/dotnet/UnitTests/expected/MacCatalyst-CoreCLR-R2R-preservedapis.txt +++ b/tests/dotnet/UnitTests/expected/MacCatalyst-CoreCLR-R2R-preservedapis.txt @@ -6178,6 +6178,7 @@ System.Private.CoreLib.dll:System.Func`2 System.IO.S System.Private.CoreLib.dll:System.Func`2 System.IO.Stream/<>c::<>9__53_0 System.Private.CoreLib.dll:System.Func`2 System.Threading.Monitor::s_createCondition System.Private.CoreLib.dll:System.Func`2 System.Reflection.TypeNameResolver::_assemblyResolver +System.Private.CoreLib.dll:System.Func`2 System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods/<>O::<0>__CreateMarshalMethods System.Private.CoreLib.dll:System.Func`2 System.StubHelpers.StubHelpers/<>c::<>9__28_0 System.Private.CoreLib.dll:System.Func`3 System.Private.CoreLib.dll:System.Func`3..ctor(System.Object, System.IntPtr) @@ -8669,7 +8670,6 @@ System.Private.CoreLib.dll:System.Int32 System.Runtime.InteropServices.GCHandleS System.Private.CoreLib.dll:System.Int32 System.Runtime.InteropServices.GCHandleType::value__ System.Private.CoreLib.dll:System.Int32 System.Runtime.InteropServices.Marshal::SystemDefaultCharSize System.Private.CoreLib.dll:System.Int32 System.Runtime.InteropServices.Marshal::SystemMaxDBCSCharSize -System.Private.CoreLib.dll:System.Int32 System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods::_nativeSize System.Private.CoreLib.dll:System.Int32 System.Runtime.InteropServices.MarshalAsAttribute::IidParameterIndex System.Private.CoreLib.dll:System.Int32 System.Runtime.InteropServices.MarshalAsAttribute::SizeConst System.Private.CoreLib.dll:System.Int32 System.Runtime.InteropServices.Marshalling.ComVariant/Blob::_size @@ -13359,6 +13359,7 @@ System.Private.CoreLib.dll:System.Runtime.CompilerServices.ConditionalWeakTable` System.Private.CoreLib.dll:System.Runtime.CompilerServices.ConditionalWeakTable`2 System.Runtime.InteropServices.NativeLibrary::s_nativeDllResolveMap System.Private.CoreLib.dll:System.Runtime.CompilerServices.ConditionalWeakTable`2 System.StubHelpers.BSTRMarshaler::s_trailByteTable System.Private.CoreLib.dll:System.Runtime.CompilerServices.ConditionalWeakTable`2 System.Threading.Tasks.TaskScheduler::s_activeTaskSchedulers +System.Private.CoreLib.dll:System.Runtime.CompilerServices.ConditionalWeakTable`2 System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods::s_marshalerCache System.Private.CoreLib.dll:System.Runtime.CompilerServices.ConditionalWeakTable`2 System.StubHelpers.StubHelpers::s_structureMarshalInfoCache System.Private.CoreLib.dll:System.Runtime.CompilerServices.ConditionalWeakTable`2 System.Runtime.CompilerServices.ConditionalWeakTable`2/Container::_parent System.Private.CoreLib.dll:System.Runtime.CompilerServices.ConditionalWeakTable`2 System.Runtime.CompilerServices.ConditionalWeakTable`2/Enumerator::_table @@ -14243,18 +14244,17 @@ System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal.WriteInt64(Sys System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal.WriteIntPtr(System.IntPtr, System.Int32, System.IntPtr) System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal.WriteIntPtr(System.IntPtr, System.IntPtr) System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods -System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods System.RuntimeType/CompositeCacheEntry::_marshalerMethods -System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods..ctor(System.Type, System.Int32) -System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods.ConvertToManaged(System.Object, System.Byte*) -System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods.ConvertToUnmanaged(System.Object, System.Byte*, System.StubHelpers.CleanupWorkListElement&) -System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods.Create(System.RuntimeType) -System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods.Free(System.Byte*) +System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods..cctor() +System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods..ctor(System.Type) +System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods.g__CreateMarshalMethods|20_0(System.Type) +System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods.ConvertToManaged(System.Object, System.Byte*, System.StubHelpers.CleanupWorkListElement&) +System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods.ConvertToUnmanaged(System.Object, System.Byte*, System.Int32, System.StubHelpers.CleanupWorkListElement&) +System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods.Free(System.Object, System.Byte*, System.Int32, System.StubHelpers.CleanupWorkListElement&) System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods.get_ConvertToManagedMethod() System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods.get_ConvertToUnmanagedMethod() System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods.get_FreeMethod() -System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods.GetMarshalMethodsForType(System.RuntimeType) -System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods.GetStorageRef(System.RuntimeType/CompositeCacheEntry) -System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods.InitializeCompositeCache(System.RuntimeType/CompositeCacheEntry) +System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods.GetMarshalMethodsForType(System.Type) +System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods/<>O System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods/ConvertToManagedDelegate System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods/ConvertToManagedDelegate System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods::_convertToManaged System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods/ConvertToManagedDelegate..ctor(System.Object, System.IntPtr) diff --git a/tests/dotnet/UnitTests/expected/MacCatalyst-CoreCLR-R2R-size.txt b/tests/dotnet/UnitTests/expected/MacCatalyst-CoreCLR-R2R-size.txt index 318caa67a75f..88c0337190a3 100644 --- a/tests/dotnet/UnitTests/expected/MacCatalyst-CoreCLR-R2R-size.txt +++ b/tests/dotnet/UnitTests/expected/MacCatalyst-CoreCLR-R2R-size.txt @@ -1,8 +1,8 @@ -AppBundleSize: 19,848,077 bytes (19,382.9 KB = 18.9 MB) +AppBundleSize: 19,847,901 bytes (19,382.7 KB = 18.9 MB) # The following list of files and their sizes is just informational / for review, and isn't used in the test: Contents/_CodeSignature/CodeResources: 5,105 bytes (5.0 KB = 0.0 MB) Contents/Info.plist: 1,099 bytes (1.1 KB = 0.0 MB) -Contents/MacOS/SizeTestApp: 242,176 bytes (236.5 KB = 0.2 MB) +Contents/MacOS/SizeTestApp: 242,000 bytes (236.3 KB = 0.2 MB) Contents/MonoBundle/libcoreclr.dylib: 6,386,800 bytes (6,237.1 KB = 6.1 MB) Contents/MonoBundle/libSystem.Globalization.Native.dylib: 110,432 bytes (107.8 KB = 0.1 MB) Contents/MonoBundle/libSystem.IO.Compression.Native.dylib: 1,442,208 bytes (1,408.4 KB = 1.4 MB) diff --git a/tests/dotnet/UnitTests/expected/MacCatalyst-MonoVM-interpreter-size.txt b/tests/dotnet/UnitTests/expected/MacCatalyst-MonoVM-interpreter-size.txt index 7d41f3ec843f..70bfba780e9c 100644 --- a/tests/dotnet/UnitTests/expected/MacCatalyst-MonoVM-interpreter-size.txt +++ b/tests/dotnet/UnitTests/expected/MacCatalyst-MonoVM-interpreter-size.txt @@ -1,8 +1,8 @@ -AppBundleSize: 5,812,606 bytes (5,676.4 KB = 5.5 MB) +AppBundleSize: 5,810,942 bytes (5,674.7 KB = 5.5 MB) # The following list of files and their sizes is just informational / for review, and isn't used in the test: Contents/_CodeSignature/CodeResources: 3,310 bytes (3.2 KB = 0.0 MB) Contents/Info.plist: 1,099 bytes (1.1 KB = 0.0 MB) -Contents/MacOS/SizeTestApp: 4,569,408 bytes (4,462.3 KB = 4.4 MB) +Contents/MacOS/SizeTestApp: 4,567,744 bytes (4,460.7 KB = 4.4 MB) Contents/MonoBundle/Microsoft.MacCatalyst.dll: 157,184 bytes (153.5 KB = 0.1 MB) Contents/MonoBundle/runtimeconfig.bin: 1,405 bytes (1.4 KB = 0.0 MB) Contents/MonoBundle/SizeTestApp.dll: 7,680 bytes (7.5 KB = 0.0 MB) diff --git a/tests/dotnet/UnitTests/expected/MacCatalyst-MonoVM-size.txt b/tests/dotnet/UnitTests/expected/MacCatalyst-MonoVM-size.txt index df8e77d0ee8a..19791947e749 100644 --- a/tests/dotnet/UnitTests/expected/MacCatalyst-MonoVM-size.txt +++ b/tests/dotnet/UnitTests/expected/MacCatalyst-MonoVM-size.txt @@ -1,8 +1,8 @@ -AppBundleSize: 16,520,914 bytes (16,133.7 KB = 15.8 MB) +AppBundleSize: 16,519,234 bytes (16,132.1 KB = 15.8 MB) # The following list of files and their sizes is just informational / for review, and isn't used in the test: Contents/_CodeSignature/CodeResources: 4,134 bytes (4.0 KB = 0.0 MB) Contents/Info.plist: 1,099 bytes (1.1 KB = 0.0 MB) -Contents/MacOS/SizeTestApp: 13,981,552 bytes (13,653.9 KB = 13.3 MB) +Contents/MacOS/SizeTestApp: 13,979,872 bytes (13,652.2 KB = 13.3 MB) Contents/MonoBundle/aot-instances.aotdata.arm64: 1,037,632 bytes (1,013.3 KB = 1.0 MB) Contents/MonoBundle/Microsoft.MacCatalyst.aotdata.arm64: 35,896 bytes (35.1 KB = 0.0 MB) Contents/MonoBundle/Microsoft.MacCatalyst.dll: 50,688 bytes (49.5 KB = 0.0 MB) diff --git a/tests/dotnet/UnitTests/expected/MacOSX-CoreCLR-Interpreter-size.txt b/tests/dotnet/UnitTests/expected/MacOSX-CoreCLR-Interpreter-size.txt index 92b5876cbb58..def6a8502e7a 100644 --- a/tests/dotnet/UnitTests/expected/MacOSX-CoreCLR-Interpreter-size.txt +++ b/tests/dotnet/UnitTests/expected/MacOSX-CoreCLR-Interpreter-size.txt @@ -1,8 +1,8 @@ -AppBundleSize: 251,559,880 bytes (245,663.9 KB = 239.9 MB) +AppBundleSize: 251,559,672 bytes (245,663.7 KB = 239.9 MB) # The following list of files and their sizes is just informational / for review, and isn't used in the test: Contents/_CodeSignature/CodeResources: 70,698 bytes (69.0 KB = 0.1 MB) Contents/Info.plist: 730 bytes (0.7 KB = 0.0 MB) -Contents/MacOS/SizeTestApp: 7,963,952 bytes (7,777.3 KB = 7.6 MB) +Contents/MacOS/SizeTestApp: 7,963,744 bytes (7,777.1 KB = 7.6 MB) Contents/MonoBundle/.xamarin/osx-arm64/Microsoft.CSharp.dll: 894,728 bytes (873.8 KB = 0.9 MB) Contents/MonoBundle/.xamarin/osx-arm64/Microsoft.Extensions.Caching.Abstractions.dll: 66,832 bytes (65.3 KB = 0.1 MB) Contents/MonoBundle/.xamarin/osx-arm64/Microsoft.Extensions.Configuration.Abstractions.dll: 38,664 bytes (37.8 KB = 0.0 MB) diff --git a/tests/dotnet/UnitTests/expected/MacOSX-CoreCLR-R2R-size.txt b/tests/dotnet/UnitTests/expected/MacOSX-CoreCLR-R2R-size.txt index 291eb9799498..6f20f5d9ecf2 100644 --- a/tests/dotnet/UnitTests/expected/MacOSX-CoreCLR-R2R-size.txt +++ b/tests/dotnet/UnitTests/expected/MacOSX-CoreCLR-R2R-size.txt @@ -1,8 +1,8 @@ -AppBundleSize: 318,432,200 bytes (310,968.9 KB = 303.7 MB) +AppBundleSize: 318,431,992 bytes (310,968.7 KB = 303.7 MB) # The following list of files and their sizes is just informational / for review, and isn't used in the test: Contents/_CodeSignature/CodeResources: 70,698 bytes (69.0 KB = 0.1 MB) Contents/Info.plist: 730 bytes (0.7 KB = 0.0 MB) -Contents/MacOS/SizeTestApp: 7,963,952 bytes (7,777.3 KB = 7.6 MB) +Contents/MacOS/SizeTestApp: 7,963,744 bytes (7,777.1 KB = 7.6 MB) Contents/MonoBundle/.xamarin/osx-arm64/Microsoft.CSharp.dll: 894,728 bytes (873.8 KB = 0.9 MB) Contents/MonoBundle/.xamarin/osx-arm64/Microsoft.Extensions.Caching.Abstractions.dll: 66,832 bytes (65.3 KB = 0.1 MB) Contents/MonoBundle/.xamarin/osx-arm64/Microsoft.Extensions.Configuration.Abstractions.dll: 38,664 bytes (37.8 KB = 0.0 MB) diff --git a/tests/dotnet/UnitTests/expected/TVOS-CoreCLR-Interpreter-preservedapis.txt b/tests/dotnet/UnitTests/expected/TVOS-CoreCLR-Interpreter-preservedapis.txt index 09ce87f7100d..79700d34c017 100644 --- a/tests/dotnet/UnitTests/expected/TVOS-CoreCLR-Interpreter-preservedapis.txt +++ b/tests/dotnet/UnitTests/expected/TVOS-CoreCLR-Interpreter-preservedapis.txt @@ -6167,6 +6167,7 @@ System.Private.CoreLib.dll:System.Func`2 System.IO.S System.Private.CoreLib.dll:System.Func`2 System.IO.Stream/<>c::<>9__53_0 System.Private.CoreLib.dll:System.Func`2 System.Threading.Monitor::s_createCondition System.Private.CoreLib.dll:System.Func`2 System.Reflection.TypeNameResolver::_assemblyResolver +System.Private.CoreLib.dll:System.Func`2 System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods/<>O::<0>__CreateMarshalMethods System.Private.CoreLib.dll:System.Func`2 System.StubHelpers.StubHelpers/<>c::<>9__28_0 System.Private.CoreLib.dll:System.Func`3 System.Private.CoreLib.dll:System.Func`3..ctor(System.Object, System.IntPtr) @@ -8618,7 +8619,6 @@ System.Private.CoreLib.dll:System.Int32 System.Runtime.InteropServices.GCHandleS System.Private.CoreLib.dll:System.Int32 System.Runtime.InteropServices.GCHandleType::value__ System.Private.CoreLib.dll:System.Int32 System.Runtime.InteropServices.Marshal::SystemDefaultCharSize System.Private.CoreLib.dll:System.Int32 System.Runtime.InteropServices.Marshal::SystemMaxDBCSCharSize -System.Private.CoreLib.dll:System.Int32 System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods::_nativeSize System.Private.CoreLib.dll:System.Int32 System.Runtime.InteropServices.MarshalAsAttribute::IidParameterIndex System.Private.CoreLib.dll:System.Int32 System.Runtime.InteropServices.MarshalAsAttribute::SizeConst System.Private.CoreLib.dll:System.Int32 System.Runtime.InteropServices.Marshalling.ComVariant/Blob::_size @@ -13302,6 +13302,7 @@ System.Private.CoreLib.dll:System.Runtime.CompilerServices.ConditionalWeakTable` System.Private.CoreLib.dll:System.Runtime.CompilerServices.ConditionalWeakTable`2 System.Runtime.InteropServices.NativeLibrary::s_nativeDllResolveMap System.Private.CoreLib.dll:System.Runtime.CompilerServices.ConditionalWeakTable`2 System.StubHelpers.BSTRMarshaler::s_trailByteTable System.Private.CoreLib.dll:System.Runtime.CompilerServices.ConditionalWeakTable`2 System.Threading.Tasks.TaskScheduler::s_activeTaskSchedulers +System.Private.CoreLib.dll:System.Runtime.CompilerServices.ConditionalWeakTable`2 System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods::s_marshalerCache System.Private.CoreLib.dll:System.Runtime.CompilerServices.ConditionalWeakTable`2 System.StubHelpers.StubHelpers::s_structureMarshalInfoCache System.Private.CoreLib.dll:System.Runtime.CompilerServices.ConditionalWeakTable`2 System.Runtime.CompilerServices.ConditionalWeakTable`2/Container::_parent System.Private.CoreLib.dll:System.Runtime.CompilerServices.ConditionalWeakTable`2 System.Runtime.CompilerServices.ConditionalWeakTable`2/Enumerator::_table @@ -14186,18 +14187,17 @@ System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal.WriteInt64(Sys System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal.WriteIntPtr(System.IntPtr, System.Int32, System.IntPtr) System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal.WriteIntPtr(System.IntPtr, System.IntPtr) System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods -System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods System.RuntimeType/CompositeCacheEntry::_marshalerMethods -System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods..ctor(System.Type, System.Int32) -System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods.ConvertToManaged(System.Object, System.Byte*) -System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods.ConvertToUnmanaged(System.Object, System.Byte*, System.StubHelpers.CleanupWorkListElement&) -System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods.Create(System.RuntimeType) -System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods.Free(System.Byte*) +System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods..cctor() +System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods..ctor(System.Type) +System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods.g__CreateMarshalMethods|20_0(System.Type) +System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods.ConvertToManaged(System.Object, System.Byte*, System.StubHelpers.CleanupWorkListElement&) +System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods.ConvertToUnmanaged(System.Object, System.Byte*, System.Int32, System.StubHelpers.CleanupWorkListElement&) +System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods.Free(System.Object, System.Byte*, System.Int32, System.StubHelpers.CleanupWorkListElement&) System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods.get_ConvertToManagedMethod() System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods.get_ConvertToUnmanagedMethod() System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods.get_FreeMethod() -System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods.GetMarshalMethodsForType(System.RuntimeType) -System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods.GetStorageRef(System.RuntimeType/CompositeCacheEntry) -System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods.InitializeCompositeCache(System.RuntimeType/CompositeCacheEntry) +System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods.GetMarshalMethodsForType(System.Type) +System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods/<>O System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods/ConvertToManagedDelegate System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods/ConvertToManagedDelegate System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods::_convertToManaged System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods/ConvertToManagedDelegate..ctor(System.Object, System.IntPtr) diff --git a/tests/dotnet/UnitTests/expected/TVOS-CoreCLR-R2R-preservedapis.txt b/tests/dotnet/UnitTests/expected/TVOS-CoreCLR-R2R-preservedapis.txt index 09ce87f7100d..79700d34c017 100644 --- a/tests/dotnet/UnitTests/expected/TVOS-CoreCLR-R2R-preservedapis.txt +++ b/tests/dotnet/UnitTests/expected/TVOS-CoreCLR-R2R-preservedapis.txt @@ -6167,6 +6167,7 @@ System.Private.CoreLib.dll:System.Func`2 System.IO.S System.Private.CoreLib.dll:System.Func`2 System.IO.Stream/<>c::<>9__53_0 System.Private.CoreLib.dll:System.Func`2 System.Threading.Monitor::s_createCondition System.Private.CoreLib.dll:System.Func`2 System.Reflection.TypeNameResolver::_assemblyResolver +System.Private.CoreLib.dll:System.Func`2 System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods/<>O::<0>__CreateMarshalMethods System.Private.CoreLib.dll:System.Func`2 System.StubHelpers.StubHelpers/<>c::<>9__28_0 System.Private.CoreLib.dll:System.Func`3 System.Private.CoreLib.dll:System.Func`3..ctor(System.Object, System.IntPtr) @@ -8618,7 +8619,6 @@ System.Private.CoreLib.dll:System.Int32 System.Runtime.InteropServices.GCHandleS System.Private.CoreLib.dll:System.Int32 System.Runtime.InteropServices.GCHandleType::value__ System.Private.CoreLib.dll:System.Int32 System.Runtime.InteropServices.Marshal::SystemDefaultCharSize System.Private.CoreLib.dll:System.Int32 System.Runtime.InteropServices.Marshal::SystemMaxDBCSCharSize -System.Private.CoreLib.dll:System.Int32 System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods::_nativeSize System.Private.CoreLib.dll:System.Int32 System.Runtime.InteropServices.MarshalAsAttribute::IidParameterIndex System.Private.CoreLib.dll:System.Int32 System.Runtime.InteropServices.MarshalAsAttribute::SizeConst System.Private.CoreLib.dll:System.Int32 System.Runtime.InteropServices.Marshalling.ComVariant/Blob::_size @@ -13302,6 +13302,7 @@ System.Private.CoreLib.dll:System.Runtime.CompilerServices.ConditionalWeakTable` System.Private.CoreLib.dll:System.Runtime.CompilerServices.ConditionalWeakTable`2 System.Runtime.InteropServices.NativeLibrary::s_nativeDllResolveMap System.Private.CoreLib.dll:System.Runtime.CompilerServices.ConditionalWeakTable`2 System.StubHelpers.BSTRMarshaler::s_trailByteTable System.Private.CoreLib.dll:System.Runtime.CompilerServices.ConditionalWeakTable`2 System.Threading.Tasks.TaskScheduler::s_activeTaskSchedulers +System.Private.CoreLib.dll:System.Runtime.CompilerServices.ConditionalWeakTable`2 System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods::s_marshalerCache System.Private.CoreLib.dll:System.Runtime.CompilerServices.ConditionalWeakTable`2 System.StubHelpers.StubHelpers::s_structureMarshalInfoCache System.Private.CoreLib.dll:System.Runtime.CompilerServices.ConditionalWeakTable`2 System.Runtime.CompilerServices.ConditionalWeakTable`2/Container::_parent System.Private.CoreLib.dll:System.Runtime.CompilerServices.ConditionalWeakTable`2 System.Runtime.CompilerServices.ConditionalWeakTable`2/Enumerator::_table @@ -14186,18 +14187,17 @@ System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal.WriteInt64(Sys System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal.WriteIntPtr(System.IntPtr, System.Int32, System.IntPtr) System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal.WriteIntPtr(System.IntPtr, System.IntPtr) System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods -System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods System.RuntimeType/CompositeCacheEntry::_marshalerMethods -System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods..ctor(System.Type, System.Int32) -System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods.ConvertToManaged(System.Object, System.Byte*) -System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods.ConvertToUnmanaged(System.Object, System.Byte*, System.StubHelpers.CleanupWorkListElement&) -System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods.Create(System.RuntimeType) -System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods.Free(System.Byte*) +System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods..cctor() +System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods..ctor(System.Type) +System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods.g__CreateMarshalMethods|20_0(System.Type) +System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods.ConvertToManaged(System.Object, System.Byte*, System.StubHelpers.CleanupWorkListElement&) +System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods.ConvertToUnmanaged(System.Object, System.Byte*, System.Int32, System.StubHelpers.CleanupWorkListElement&) +System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods.Free(System.Object, System.Byte*, System.Int32, System.StubHelpers.CleanupWorkListElement&) System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods.get_ConvertToManagedMethod() System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods.get_ConvertToUnmanagedMethod() System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods.get_FreeMethod() -System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods.GetMarshalMethodsForType(System.RuntimeType) -System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods.GetStorageRef(System.RuntimeType/CompositeCacheEntry) -System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods.InitializeCompositeCache(System.RuntimeType/CompositeCacheEntry) +System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods.GetMarshalMethodsForType(System.Type) +System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods/<>O System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods/ConvertToManagedDelegate System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods/ConvertToManagedDelegate System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods::_convertToManaged System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods/ConvertToManagedDelegate..ctor(System.Object, System.IntPtr) diff --git a/tests/dotnet/UnitTests/expected/TVOS-MonoVM-interpreter-size.txt b/tests/dotnet/UnitTests/expected/TVOS-MonoVM-interpreter-size.txt index 7bb70b5cf899..e175f4f30f6e 100644 --- a/tests/dotnet/UnitTests/expected/TVOS-MonoVM-interpreter-size.txt +++ b/tests/dotnet/UnitTests/expected/TVOS-MonoVM-interpreter-size.txt @@ -1,9 +1,9 @@ -AppBundleSize: 3,636,257 bytes (3,551.0 KB = 3.5 MB) +AppBundleSize: 3,635,745 bytes (3,550.5 KB = 3.5 MB) # The following list of files and their sizes is just informational / for review, and isn't used in the test: _CodeSignature/CodeResources: 3,999 bytes (3.9 KB = 0.0 MB) archived-expanded-entitlements.xcent: 384 bytes (0.4 KB = 0.0 MB) Info.plist: 1,117 bytes (1.1 KB = 0.0 MB) -Microsoft.tvOS.dll: 154,624 bytes (151.0 KB = 0.1 MB) +Microsoft.tvOS.dll: 154,112 bytes (150.5 KB = 0.1 MB) PkgInfo: 8 bytes (0.0 KB = 0.0 MB) runtimeconfig.bin: 1,405 bytes (1.4 KB = 0.0 MB) SizeTestApp: 2,404,688 bytes (2,348.3 KB = 2.3 MB) diff --git a/tests/dotnet/UnitTests/expected/iOS-CoreCLR-Interpreter-preservedapis.txt b/tests/dotnet/UnitTests/expected/iOS-CoreCLR-Interpreter-preservedapis.txt index ff567cb5e6f0..a36927a82849 100644 --- a/tests/dotnet/UnitTests/expected/iOS-CoreCLR-Interpreter-preservedapis.txt +++ b/tests/dotnet/UnitTests/expected/iOS-CoreCLR-Interpreter-preservedapis.txt @@ -6167,6 +6167,7 @@ System.Private.CoreLib.dll:System.Func`2 System.IO.S System.Private.CoreLib.dll:System.Func`2 System.IO.Stream/<>c::<>9__53_0 System.Private.CoreLib.dll:System.Func`2 System.Threading.Monitor::s_createCondition System.Private.CoreLib.dll:System.Func`2 System.Reflection.TypeNameResolver::_assemblyResolver +System.Private.CoreLib.dll:System.Func`2 System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods/<>O::<0>__CreateMarshalMethods System.Private.CoreLib.dll:System.Func`2 System.StubHelpers.StubHelpers/<>c::<>9__28_0 System.Private.CoreLib.dll:System.Func`3 System.Private.CoreLib.dll:System.Func`3..ctor(System.Object, System.IntPtr) @@ -8618,7 +8619,6 @@ System.Private.CoreLib.dll:System.Int32 System.Runtime.InteropServices.GCHandleS System.Private.CoreLib.dll:System.Int32 System.Runtime.InteropServices.GCHandleType::value__ System.Private.CoreLib.dll:System.Int32 System.Runtime.InteropServices.Marshal::SystemDefaultCharSize System.Private.CoreLib.dll:System.Int32 System.Runtime.InteropServices.Marshal::SystemMaxDBCSCharSize -System.Private.CoreLib.dll:System.Int32 System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods::_nativeSize System.Private.CoreLib.dll:System.Int32 System.Runtime.InteropServices.MarshalAsAttribute::IidParameterIndex System.Private.CoreLib.dll:System.Int32 System.Runtime.InteropServices.MarshalAsAttribute::SizeConst System.Private.CoreLib.dll:System.Int32 System.Runtime.InteropServices.Marshalling.ComVariant/Blob::_size @@ -13302,6 +13302,7 @@ System.Private.CoreLib.dll:System.Runtime.CompilerServices.ConditionalWeakTable` System.Private.CoreLib.dll:System.Runtime.CompilerServices.ConditionalWeakTable`2 System.Runtime.InteropServices.NativeLibrary::s_nativeDllResolveMap System.Private.CoreLib.dll:System.Runtime.CompilerServices.ConditionalWeakTable`2 System.StubHelpers.BSTRMarshaler::s_trailByteTable System.Private.CoreLib.dll:System.Runtime.CompilerServices.ConditionalWeakTable`2 System.Threading.Tasks.TaskScheduler::s_activeTaskSchedulers +System.Private.CoreLib.dll:System.Runtime.CompilerServices.ConditionalWeakTable`2 System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods::s_marshalerCache System.Private.CoreLib.dll:System.Runtime.CompilerServices.ConditionalWeakTable`2 System.StubHelpers.StubHelpers::s_structureMarshalInfoCache System.Private.CoreLib.dll:System.Runtime.CompilerServices.ConditionalWeakTable`2 System.Runtime.CompilerServices.ConditionalWeakTable`2/Container::_parent System.Private.CoreLib.dll:System.Runtime.CompilerServices.ConditionalWeakTable`2 System.Runtime.CompilerServices.ConditionalWeakTable`2/Enumerator::_table @@ -14186,18 +14187,17 @@ System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal.WriteInt64(Sys System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal.WriteIntPtr(System.IntPtr, System.Int32, System.IntPtr) System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal.WriteIntPtr(System.IntPtr, System.IntPtr) System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods -System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods System.RuntimeType/CompositeCacheEntry::_marshalerMethods -System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods..ctor(System.Type, System.Int32) -System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods.ConvertToManaged(System.Object, System.Byte*) -System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods.ConvertToUnmanaged(System.Object, System.Byte*, System.StubHelpers.CleanupWorkListElement&) -System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods.Create(System.RuntimeType) -System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods.Free(System.Byte*) +System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods..cctor() +System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods..ctor(System.Type) +System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods.g__CreateMarshalMethods|20_0(System.Type) +System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods.ConvertToManaged(System.Object, System.Byte*, System.StubHelpers.CleanupWorkListElement&) +System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods.ConvertToUnmanaged(System.Object, System.Byte*, System.Int32, System.StubHelpers.CleanupWorkListElement&) +System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods.Free(System.Object, System.Byte*, System.Int32, System.StubHelpers.CleanupWorkListElement&) System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods.get_ConvertToManagedMethod() System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods.get_ConvertToUnmanagedMethod() System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods.get_FreeMethod() -System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods.GetMarshalMethodsForType(System.RuntimeType) -System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods.GetStorageRef(System.RuntimeType/CompositeCacheEntry) -System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods.InitializeCompositeCache(System.RuntimeType/CompositeCacheEntry) +System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods.GetMarshalMethodsForType(System.Type) +System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods/<>O System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods/ConvertToManagedDelegate System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods/ConvertToManagedDelegate System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods::_convertToManaged System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods/ConvertToManagedDelegate..ctor(System.Object, System.IntPtr) diff --git a/tests/dotnet/UnitTests/expected/iOS-CoreCLR-Interpreter-size.txt b/tests/dotnet/UnitTests/expected/iOS-CoreCLR-Interpreter-size.txt index 47d9576baebc..e260e77427c3 100644 --- a/tests/dotnet/UnitTests/expected/iOS-CoreCLR-Interpreter-size.txt +++ b/tests/dotnet/UnitTests/expected/iOS-CoreCLR-Interpreter-size.txt @@ -1,4 +1,4 @@ -AppBundleSize: 9,254,361 bytes (9,037.5 KB = 8.8 MB) +AppBundleSize: 9,253,769 bytes (9,036.9 KB = 8.8 MB) # The following list of files and their sizes is just informational / for review, and isn't used in the test: _CodeSignature/CodeResources: 10,847 bytes (10.6 KB = 0.0 MB) archived-expanded-entitlements.xcent: 384 bytes (0.4 KB = 0.0 MB) @@ -7,16 +7,16 @@ Frameworks/libcoreclr.framework/Info.plist: 813 bytes (0.8 KB = 0.0 MB) Frameworks/libcoreclr.framework/libcoreclr: 5,203,952 bytes (5,082.0 KB = 5.0 MB) Frameworks/libSystem.Globalization.Native.framework/_CodeSignature/CodeResources: 1,798 bytes (1.8 KB = 0.0 MB) Frameworks/libSystem.Globalization.Native.framework/Info.plist: 855 bytes (0.8 KB = 0.0 MB) -Frameworks/libSystem.Globalization.Native.framework/libSystem.Globalization.Native: 109,248 bytes (106.7 KB = 0.1 MB) +Frameworks/libSystem.Globalization.Native.framework/libSystem.Globalization.Native: 109,232 bytes (106.7 KB = 0.1 MB) Frameworks/libSystem.IO.Compression.Native.framework/_CodeSignature/CodeResources: 1,798 bytes (1.8 KB = 0.0 MB) Frameworks/libSystem.IO.Compression.Native.framework/Info.plist: 857 bytes (0.8 KB = 0.0 MB) -Frameworks/libSystem.IO.Compression.Native.framework/libSystem.IO.Compression.Native: 1,431,296 bytes (1,397.8 KB = 1.4 MB) +Frameworks/libSystem.IO.Compression.Native.framework/libSystem.IO.Compression.Native: 1,431,280 bytes (1,397.7 KB = 1.4 MB) Frameworks/libSystem.Native.framework/_CodeSignature/CodeResources: 1,798 bytes (1.8 KB = 0.0 MB) Frameworks/libSystem.Native.framework/Info.plist: 827 bytes (0.8 KB = 0.0 MB) -Frameworks/libSystem.Native.framework/libSystem.Native: 162,224 bytes (158.4 KB = 0.2 MB) +Frameworks/libSystem.Native.framework/libSystem.Native: 162,208 bytes (158.4 KB = 0.2 MB) Frameworks/libSystem.Net.Security.Native.framework/_CodeSignature/CodeResources: 1,798 bytes (1.8 KB = 0.0 MB) Frameworks/libSystem.Net.Security.Native.framework/Info.plist: 853 bytes (0.8 KB = 0.0 MB) -Frameworks/libSystem.Net.Security.Native.framework/libSystem.Net.Security.Native: 88,016 bytes (86.0 KB = 0.1 MB) +Frameworks/libSystem.Net.Security.Native.framework/libSystem.Net.Security.Native: 88,000 bytes (85.9 KB = 0.1 MB) Frameworks/libSystem.Security.Cryptography.Native.Apple.framework/_CodeSignature/CodeResources: 1,798 bytes (1.8 KB = 0.0 MB) Frameworks/libSystem.Security.Cryptography.Native.Apple.framework/Info.plist: 883 bytes (0.9 KB = 0.0 MB) Frameworks/libSystem.Security.Cryptography.Native.Apple.framework/libSystem.Security.Cryptography.Native.Apple: 194,256 bytes (189.7 KB = 0.2 MB) @@ -24,7 +24,7 @@ Info.plist: 1,141 bytes (1.1 KB = 0.0 MB) Microsoft.iOS.dll: 98,816 bytes (96.5 KB = 0.1 MB) PkgInfo: 8 bytes (0.0 KB = 0.0 MB) runtimeconfig.bin: 1,481 bytes (1.4 KB = 0.0 MB) -SizeTestApp: 196,528 bytes (191.9 KB = 0.2 MB) +SizeTestApp: 196,000 bytes (191.4 KB = 0.2 MB) SizeTestApp.dll: 7,680 bytes (7.5 KB = 0.0 MB) System.Collections.Immutable.dll: 14,848 bytes (14.5 KB = 0.0 MB) System.Diagnostics.StackTrace.dll: 8,192 bytes (8.0 KB = 0.0 MB) diff --git a/tests/dotnet/UnitTests/expected/iOS-CoreCLR-R2R-preservedapis.txt b/tests/dotnet/UnitTests/expected/iOS-CoreCLR-R2R-preservedapis.txt index ff567cb5e6f0..a36927a82849 100644 --- a/tests/dotnet/UnitTests/expected/iOS-CoreCLR-R2R-preservedapis.txt +++ b/tests/dotnet/UnitTests/expected/iOS-CoreCLR-R2R-preservedapis.txt @@ -6167,6 +6167,7 @@ System.Private.CoreLib.dll:System.Func`2 System.IO.S System.Private.CoreLib.dll:System.Func`2 System.IO.Stream/<>c::<>9__53_0 System.Private.CoreLib.dll:System.Func`2 System.Threading.Monitor::s_createCondition System.Private.CoreLib.dll:System.Func`2 System.Reflection.TypeNameResolver::_assemblyResolver +System.Private.CoreLib.dll:System.Func`2 System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods/<>O::<0>__CreateMarshalMethods System.Private.CoreLib.dll:System.Func`2 System.StubHelpers.StubHelpers/<>c::<>9__28_0 System.Private.CoreLib.dll:System.Func`3 System.Private.CoreLib.dll:System.Func`3..ctor(System.Object, System.IntPtr) @@ -8618,7 +8619,6 @@ System.Private.CoreLib.dll:System.Int32 System.Runtime.InteropServices.GCHandleS System.Private.CoreLib.dll:System.Int32 System.Runtime.InteropServices.GCHandleType::value__ System.Private.CoreLib.dll:System.Int32 System.Runtime.InteropServices.Marshal::SystemDefaultCharSize System.Private.CoreLib.dll:System.Int32 System.Runtime.InteropServices.Marshal::SystemMaxDBCSCharSize -System.Private.CoreLib.dll:System.Int32 System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods::_nativeSize System.Private.CoreLib.dll:System.Int32 System.Runtime.InteropServices.MarshalAsAttribute::IidParameterIndex System.Private.CoreLib.dll:System.Int32 System.Runtime.InteropServices.MarshalAsAttribute::SizeConst System.Private.CoreLib.dll:System.Int32 System.Runtime.InteropServices.Marshalling.ComVariant/Blob::_size @@ -13302,6 +13302,7 @@ System.Private.CoreLib.dll:System.Runtime.CompilerServices.ConditionalWeakTable` System.Private.CoreLib.dll:System.Runtime.CompilerServices.ConditionalWeakTable`2 System.Runtime.InteropServices.NativeLibrary::s_nativeDllResolveMap System.Private.CoreLib.dll:System.Runtime.CompilerServices.ConditionalWeakTable`2 System.StubHelpers.BSTRMarshaler::s_trailByteTable System.Private.CoreLib.dll:System.Runtime.CompilerServices.ConditionalWeakTable`2 System.Threading.Tasks.TaskScheduler::s_activeTaskSchedulers +System.Private.CoreLib.dll:System.Runtime.CompilerServices.ConditionalWeakTable`2 System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods::s_marshalerCache System.Private.CoreLib.dll:System.Runtime.CompilerServices.ConditionalWeakTable`2 System.StubHelpers.StubHelpers::s_structureMarshalInfoCache System.Private.CoreLib.dll:System.Runtime.CompilerServices.ConditionalWeakTable`2 System.Runtime.CompilerServices.ConditionalWeakTable`2/Container::_parent System.Private.CoreLib.dll:System.Runtime.CompilerServices.ConditionalWeakTable`2 System.Runtime.CompilerServices.ConditionalWeakTable`2/Enumerator::_table @@ -14186,18 +14187,17 @@ System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal.WriteInt64(Sys System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal.WriteIntPtr(System.IntPtr, System.Int32, System.IntPtr) System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal.WriteIntPtr(System.IntPtr, System.IntPtr) System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods -System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods System.RuntimeType/CompositeCacheEntry::_marshalerMethods -System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods..ctor(System.Type, System.Int32) -System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods.ConvertToManaged(System.Object, System.Byte*) -System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods.ConvertToUnmanaged(System.Object, System.Byte*, System.StubHelpers.CleanupWorkListElement&) -System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods.Create(System.RuntimeType) -System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods.Free(System.Byte*) +System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods..cctor() +System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods..ctor(System.Type) +System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods.g__CreateMarshalMethods|20_0(System.Type) +System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods.ConvertToManaged(System.Object, System.Byte*, System.StubHelpers.CleanupWorkListElement&) +System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods.ConvertToUnmanaged(System.Object, System.Byte*, System.Int32, System.StubHelpers.CleanupWorkListElement&) +System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods.Free(System.Object, System.Byte*, System.Int32, System.StubHelpers.CleanupWorkListElement&) System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods.get_ConvertToManagedMethod() System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods.get_ConvertToUnmanagedMethod() System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods.get_FreeMethod() -System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods.GetMarshalMethodsForType(System.RuntimeType) -System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods.GetStorageRef(System.RuntimeType/CompositeCacheEntry) -System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods.InitializeCompositeCache(System.RuntimeType/CompositeCacheEntry) +System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods.GetMarshalMethodsForType(System.Type) +System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods/<>O System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods/ConvertToManagedDelegate System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods/ConvertToManagedDelegate System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods::_convertToManaged System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods/ConvertToManagedDelegate..ctor(System.Object, System.IntPtr) diff --git a/tests/dotnet/UnitTests/expected/iOS-CoreCLR-R2R-size.txt b/tests/dotnet/UnitTests/expected/iOS-CoreCLR-R2R-size.txt index f287af53dd81..4689c1729746 100644 --- a/tests/dotnet/UnitTests/expected/iOS-CoreCLR-R2R-size.txt +++ b/tests/dotnet/UnitTests/expected/iOS-CoreCLR-R2R-size.txt @@ -1,4 +1,4 @@ -AppBundleSize: 13,184,917 bytes (12,875.9 KB = 12.6 MB) +AppBundleSize: 13,184,325 bytes (12,875.3 KB = 12.6 MB) # The following list of files and their sizes is just informational / for review, and isn't used in the test: _CodeSignature/CodeResources: 11,701 bytes (11.4 KB = 0.0 MB) archived-expanded-entitlements.xcent: 384 bytes (0.4 KB = 0.0 MB) @@ -7,16 +7,16 @@ Frameworks/libcoreclr.framework/Info.plist: 813 bytes (0.8 KB = 0.0 MB) Frameworks/libcoreclr.framework/libcoreclr: 5,203,952 bytes (5,082.0 KB = 5.0 MB) Frameworks/libSystem.Globalization.Native.framework/_CodeSignature/CodeResources: 1,798 bytes (1.8 KB = 0.0 MB) Frameworks/libSystem.Globalization.Native.framework/Info.plist: 855 bytes (0.8 KB = 0.0 MB) -Frameworks/libSystem.Globalization.Native.framework/libSystem.Globalization.Native: 109,248 bytes (106.7 KB = 0.1 MB) +Frameworks/libSystem.Globalization.Native.framework/libSystem.Globalization.Native: 109,232 bytes (106.7 KB = 0.1 MB) Frameworks/libSystem.IO.Compression.Native.framework/_CodeSignature/CodeResources: 1,798 bytes (1.8 KB = 0.0 MB) Frameworks/libSystem.IO.Compression.Native.framework/Info.plist: 857 bytes (0.8 KB = 0.0 MB) -Frameworks/libSystem.IO.Compression.Native.framework/libSystem.IO.Compression.Native: 1,431,296 bytes (1,397.8 KB = 1.4 MB) +Frameworks/libSystem.IO.Compression.Native.framework/libSystem.IO.Compression.Native: 1,431,280 bytes (1,397.7 KB = 1.4 MB) Frameworks/libSystem.Native.framework/_CodeSignature/CodeResources: 1,798 bytes (1.8 KB = 0.0 MB) Frameworks/libSystem.Native.framework/Info.plist: 827 bytes (0.8 KB = 0.0 MB) -Frameworks/libSystem.Native.framework/libSystem.Native: 162,224 bytes (158.4 KB = 0.2 MB) +Frameworks/libSystem.Native.framework/libSystem.Native: 162,208 bytes (158.4 KB = 0.2 MB) Frameworks/libSystem.Net.Security.Native.framework/_CodeSignature/CodeResources: 1,798 bytes (1.8 KB = 0.0 MB) Frameworks/libSystem.Net.Security.Native.framework/Info.plist: 853 bytes (0.8 KB = 0.0 MB) -Frameworks/libSystem.Net.Security.Native.framework/libSystem.Net.Security.Native: 88,016 bytes (86.0 KB = 0.1 MB) +Frameworks/libSystem.Net.Security.Native.framework/libSystem.Net.Security.Native: 88,000 bytes (85.9 KB = 0.1 MB) Frameworks/libSystem.Security.Cryptography.Native.Apple.framework/_CodeSignature/CodeResources: 1,798 bytes (1.8 KB = 0.0 MB) Frameworks/libSystem.Security.Cryptography.Native.Apple.framework/Info.plist: 883 bytes (0.9 KB = 0.0 MB) Frameworks/libSystem.Security.Cryptography.Native.Apple.framework/libSystem.Security.Cryptography.Native.Apple: 194,256 bytes (189.7 KB = 0.2 MB) @@ -27,7 +27,7 @@ Info.plist: 1,141 bytes (1.1 KB = 0.0 MB) Microsoft.iOS.dll: 98,304 bytes (96.0 KB = 0.1 MB) PkgInfo: 8 bytes (0.0 KB = 0.0 MB) runtimeconfig.bin: 1,481 bytes (1.4 KB = 0.0 MB) -SizeTestApp: 196,576 bytes (192.0 KB = 0.2 MB) +SizeTestApp: 196,048 bytes (191.5 KB = 0.2 MB) SizeTestApp.dll: 7,680 bytes (7.5 KB = 0.0 MB) System.Collections.Immutable.dll: 13,824 bytes (13.5 KB = 0.0 MB) System.Diagnostics.StackTrace.dll: 7,680 bytes (7.5 KB = 0.0 MB) diff --git a/tests/dotnet/UnitTests/expected/iOS-MonoVM-interpreter-size.txt b/tests/dotnet/UnitTests/expected/iOS-MonoVM-interpreter-size.txt index fa7157f8a0eb..87dca5eef107 100644 --- a/tests/dotnet/UnitTests/expected/iOS-MonoVM-interpreter-size.txt +++ b/tests/dotnet/UnitTests/expected/iOS-MonoVM-interpreter-size.txt @@ -1,4 +1,4 @@ -AppBundleSize: 3,622,711 bytes (3,537.8 KB = 3.5 MB) +AppBundleSize: 3,622,183 bytes (3,537.3 KB = 3.5 MB) # The following list of files and their sizes is just informational / for review, and isn't used in the test: _CodeSignature/CodeResources: 3,997 bytes (3.9 KB = 0.0 MB) archived-expanded-entitlements.xcent: 384 bytes (0.4 KB = 0.0 MB) @@ -6,7 +6,7 @@ Info.plist: 1,141 bytes (1.1 KB = 0.0 MB) Microsoft.iOS.dll: 154,112 bytes (150.5 KB = 0.1 MB) PkgInfo: 8 bytes (0.0 KB = 0.0 MB) runtimeconfig.bin: 1,405 bytes (1.4 KB = 0.0 MB) -SizeTestApp: 2,391,632 bytes (2,335.6 KB = 2.3 MB) +SizeTestApp: 2,391,104 bytes (2,335.1 KB = 2.3 MB) SizeTestApp.dll: 7,680 bytes (7.5 KB = 0.0 MB) System.Private.CoreLib.aotdata.arm64: 41,424 bytes (40.5 KB = 0.0 MB) System.Private.CoreLib.dll: 1,007,616 bytes (984.0 KB = 1.0 MB) diff --git a/tests/dotnet/UnitTests/expected/iOS-MonoVM-size.txt b/tests/dotnet/UnitTests/expected/iOS-MonoVM-size.txt index 3522c7787f47..ce1db03d0bc2 100644 --- a/tests/dotnet/UnitTests/expected/iOS-MonoVM-size.txt +++ b/tests/dotnet/UnitTests/expected/iOS-MonoVM-size.txt @@ -1,4 +1,4 @@ -AppBundleSize: 9,459,483 bytes (9,237.8 KB = 9.0 MB) +AppBundleSize: 9,458,955 bytes (9,237.3 KB = 9.0 MB) # The following list of files and their sizes is just informational / for review, and isn't used in the test: _CodeSignature/CodeResources: 5,229 bytes (5.1 KB = 0.0 MB) aot-instances.aotdata.arm64: 818,536 bytes (799.4 KB = 0.8 MB) @@ -8,7 +8,7 @@ Microsoft.iOS.aotdata.arm64: 22,904 bytes (22.4 KB = 0.0 MB) Microsoft.iOS.dll: 48,640 bytes (47.5 KB = 0.0 MB) PkgInfo: 8 bytes (0.0 KB = 0.0 MB) runtimeconfig.bin: 1,481 bytes (1.4 KB = 0.0 MB) -SizeTestApp: 7,334,528 bytes (7,162.6 KB = 7.0 MB) +SizeTestApp: 7,334,000 bytes (7,162.1 KB = 7.0 MB) SizeTestApp.aotdata.arm64: 1,456 bytes (1.4 KB = 0.0 MB) SizeTestApp.dll: 7,168 bytes (7.0 KB = 0.0 MB) System.Private.CoreLib.aotdata.arm64: 665,512 bytes (649.9 KB = 0.6 MB) diff --git a/tests/dotnet/UnitTests/expected/iOS-NativeAOT-size.txt b/tests/dotnet/UnitTests/expected/iOS-NativeAOT-size.txt index 153208ecb197..c95a8dd82c75 100644 --- a/tests/dotnet/UnitTests/expected/iOS-NativeAOT-size.txt +++ b/tests/dotnet/UnitTests/expected/iOS-NativeAOT-size.txt @@ -1,8 +1,8 @@ -AppBundleSize: 2,667,962 bytes (2,605.4 KB = 2.5 MB) +AppBundleSize: 2,667,434 bytes (2,604.9 KB = 2.5 MB) # The following list of files and their sizes is just informational / for review, and isn't used in the test: _CodeSignature/CodeResources: 2,589 bytes (2.5 KB = 0.0 MB) archived-expanded-entitlements.xcent: 384 bytes (0.4 KB = 0.0 MB) Info.plist: 1,141 bytes (1.1 KB = 0.0 MB) PkgInfo: 8 bytes (0.0 KB = 0.0 MB) runtimeconfig.bin: 1,808 bytes (1.8 KB = 0.0 MB) -SizeTestApp: 2,662,032 bytes (2,599.6 KB = 2.5 MB) +SizeTestApp: 2,661,504 bytes (2,599.1 KB = 2.5 MB) From 31655bee183879c5aad8b80949c5f5fab81392f5 Mon Sep 17 00:00:00 2001 From: Rolf Bjarne Kvinge Date: Mon, 20 Apr 2026 17:17:41 +0200 Subject: [PATCH 26/47] [devops] Remove the branch-based trigger for pull requests. (#25182) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The pull request https://github.com/dotnet/macios/pull/25177 ran the PR pipeline twice: * https://dev.azure.com/devdiv/DevDiv/_build/results?buildId=13868591&view=results * https://dev.azure.com/devdiv/DevDiv/_build/results?buildId=13868592&view=results when it should only have been done once. So I asked Copilot, which said: It was triggered twice because two different Azure triggers fired for the same change. - 13868591 was queued as individualCI for refs/heads/dev/rolf/nsurlsession-cleanup on commit b3223c4. - 13868592 was queued seconds later as pullRequest for refs/pull/25177/merge on the synthetic merge commit 7fccb8c. That matches the repo’s PR pipeline config in tools/devops/automation/build-pull-request.yml, which has both a branch trigger: for refs/heads/dev/* and a pr: trigger for '*'. So opening/updating PR #25177 caused one normal branch CI run and one PR-validation run. So disable the branched-based trigger. --- tools/devops/automation/build-pull-request.yml | 14 -------------- 1 file changed, 14 deletions(-) diff --git a/tools/devops/automation/build-pull-request.yml b/tools/devops/automation/build-pull-request.yml index 07a31fe1dd70..9aaaebac4398 100644 --- a/tools/devops/automation/build-pull-request.yml +++ b/tools/devops/automation/build-pull-request.yml @@ -48,20 +48,6 @@ variables: - name: Packaging.EnableSBOMSigning value: false - -# only allow triggers from specific branches -trigger: - branches: - include: - - refs/heads/dev/* - - refs/heads/darc-* - - refs/heads/backport-pr-* - - refs/heads/lego/* - - refs/heads/locfiles/* - - refs/heads/copilot/* - - refs/heads/dependabot/* - - refs/heads/merge/* - pr: autoCancel: true branches: From ad8572a5b6bf72aaf6437a5ff65cbd46b4bd3535 Mon Sep 17 00:00:00 2001 From: Rolf Bjarne Kvinge Date: Mon, 20 Apr 2026 17:28:34 +0200 Subject: [PATCH 27/47] [Foundation] Clean up pre-net10.0 code from NSUrlSessionHandler. (#25177) NET10_0_OR_GREATER is always set now, so remove other code paths. --- src/Foundation/NSUrlSessionHandler.cs | 115 -------------------------- 1 file changed, 115 deletions(-) diff --git a/src/Foundation/NSUrlSessionHandler.cs b/src/Foundation/NSUrlSessionHandler.cs index fb87f1f80a1d..28e809fccdf1 100644 --- a/src/Foundation/NSUrlSessionHandler.cs +++ b/src/Foundation/NSUrlSessionHandler.cs @@ -124,10 +124,6 @@ public partial class NSUrlSessionHandler : HttpMessageHandler { readonly Dictionary inflightRequests; readonly object inflightRequestsLock = new object (); readonly NSUrlSessionConfiguration.SessionConfigurationType sessionType; -#if !MONOMAC && !NET8_0 && !NET10_0_OR_GREATER - NSObject? notificationToken; // needed to make sure we do not hang if not using a background session - readonly object notificationTokenLock = new object (); // need to make sure that threads do no step on each other with a dispose and a remove inflight data -#endif X509ChainPolicy? policy; static NSUrlSessionConfiguration CreateConfig () @@ -161,89 +157,10 @@ public NSUrlSessionHandler (NSUrlSessionConfiguration configuration) allowsCellularAccess = configuration.AllowsCellularAccess; AllowAutoRedirect = true; -#if !NET10_0_OR_GREATER -#pragma warning disable SYSLIB0014 - // SYSLIB0014: 'ServicePointManager' is obsolete: 'WebRequest, HttpWebRequest, ServicePoint, and WebClient are obsolete. Use HttpClient instead. Settings on ServicePointManager no longer affect SslStream or HttpClient.' (https://aka.ms/dotnet-warnings/SYSLIB0014) - // https://github.com/dotnet/macios/issues/20764 - var sp = ServicePointManager.SecurityProtocol; -#pragma warning restore SYSLIB0014 - - // The analyzer has a bug where SupportedOSPlatformGuard attributes don't work correctly (https://github.com/dotnet/roslyn-analyzers/issues/7665#issuecomment-2898275765), so ignore CA1416/CA1422 here - // warning CA1422: This call site is reachable on: 'ios' 12.2 and later, 'maccatalyst' 12.2 and later, 'macOS/OSX' 12.0 and later, 'tvos' 12.2 and later. 'NSUrlSessionConfiguration.[...]' is obsoleted on: 'ios' 13.0 and later (Use '...' instead.), 'maccatalyst' 13.0 and later (Use '...' instead.), 'macOS/OSX' 10.15 and later (Use '...' instead.). - // warning CA1416: This call site is reachable on: 'ios' 12.2 and later, 'maccatalyst' 12.2 and later, 'macOS/OSX' 10.15 and later, 'tvos' 12.2 and later. 'NSUrlSessionConfiguration.[...]' is only supported on: 'ios' 13.0 and later, 'tvos' 13.0 and later -#pragma warning disable CA1416 -#pragma warning disable CA1422 - if (SystemVersion.IsAtLeastXcode11) { - if ((sp & SecurityProtocolType.Ssl3) != 0) { - // no equivalent - } else if ((sp & SecurityProtocolType.Tls) != 0) { - configuration.TlsMinimumSupportedProtocolVersion = TlsProtocolVersion.Tls10; - } else if ((sp & SecurityProtocolType.Tls11) != 0) { - configuration.TlsMinimumSupportedProtocolVersion = TlsProtocolVersion.Tls11; - } else if ((sp & SecurityProtocolType.Tls12) != 0) { - configuration.TlsMinimumSupportedProtocolVersion = TlsProtocolVersion.Tls12; - } else if ((sp & SecurityProtocolType.Tls13) != 0) { - configuration.TlsMinimumSupportedProtocolVersion = TlsProtocolVersion.Tls13; - } - } else { - if ((sp & SecurityProtocolType.Ssl3) != 0) - configuration.TLSMinimumSupportedProtocol = SslProtocol.Ssl_3_0; - else if ((sp & SecurityProtocolType.Tls) != 0) - configuration.TLSMinimumSupportedProtocol = SslProtocol.Tls_1_0; - else if ((sp & SecurityProtocolType.Tls11) != 0) - configuration.TLSMinimumSupportedProtocol = SslProtocol.Tls_1_1; - else if ((sp & SecurityProtocolType.Tls12) != 0) - configuration.TLSMinimumSupportedProtocol = SslProtocol.Tls_1_2; - else if ((sp & SecurityProtocolType.Tls13) != 0) - configuration.TLSMinimumSupportedProtocol = SslProtocol.Tls_1_3; - } -#pragma warning restore CA1422 -#pragma warning restore CA1416 -#endif // NET10_0_OR_GREATER - session = NSUrlSession.FromConfiguration (configuration, (INSUrlSessionDelegate) new NSUrlSessionHandlerDelegate (this), null); inflightRequests = new Dictionary (); } -#if !MONOMAC && !NET8_0 && !NET10_0_OR_GREATER - - void AddNotification () - { - lock (notificationTokenLock) { - if (!bypassBackgroundCheck && sessionType != NSUrlSessionConfiguration.SessionConfigurationType.Background && notificationToken is null) - notificationToken = NSNotificationCenter.DefaultCenter.AddObserver (UIApplication.WillResignActiveNotification, BackgroundNotificationCb); - } // lock - } - - void RemoveNotification () - { - NSObject? localNotificationToken; - lock (notificationTokenLock) { - localNotificationToken = notificationToken; - notificationToken = null; - } - if (localNotificationToken is not null) - NSNotificationCenter.DefaultCenter.RemoveObserver (localNotificationToken); - } - - void BackgroundNotificationCb (NSNotification obj) - { - // the cancelation task of each of the sources will clean the different resources. Each removal is done - // inside a lock, but of course, the .Values collection will not like that because it is modified during the - // iteration. We split the operation in two, get all the diff cancelation sources, then try to cancel each of them - // which will do the correct lock dance. Note that we could be tempted to do a RemoveAll, that will yield the same - // runtime issue, this is dull but safe. - List> sources; - lock (inflightRequestsLock) { // just lock when we iterate - sources = new List> (inflightRequests.Count); - foreach (var r in inflightRequests.Values) { - sources.Add (r.CompletionSource); - } - } - sources.ForEach (source => { source.TrySetCanceled (); }); - } -#endif - /// The maximum amount of content to load into memory when sending content with a request. /// The maximum size of content to load into memory. /// @@ -264,11 +181,6 @@ void RemoveInflightData (NSUrlSessionTask task, bool cancel = true) data.CancellationTokenSource.Cancel (); inflightRequests.Remove (task); } -#if !MONOMAC && !NET8_0 && !NET10_0_OR_GREATER - // do we need to be notified? If we have not inflightData, we do not - if (inflightRequests.Count == 0) - RemoveNotification (); -#endif } if (cancel) @@ -281,10 +193,6 @@ void RemoveInflightData (NSUrlSessionTask task, bool cancel = true) protected override void Dispose (bool disposing) { lock (inflightRequestsLock) { -#if !MONOMAC && !NET8_0 && !NET10_0_OR_GREATER - // remove the notification if present, method checks against null - RemoveNotification (); -#endif foreach (var pair in inflightRequests) { pair.Key?.Cancel (); pair.Key?.Dispose (); @@ -364,34 +272,15 @@ public NSUrlSessionHandlerTrustOverrideForUrlCallback? TrustOverrideForUrl { trustOverrideForUrl = value; } } -#if !NET8_0 && !NET10_0_OR_GREATER - // we do check if a user does a request and the application goes to the background, but - // in certain cases the user does that on purpose (BeingBackgroundTask) and wants to be able - // to use the network. In those cases, which are few, we want the developer to explicitly - // bypass the check when there are not request in flight - bool bypassBackgroundCheck = true; -#endif #if !XAMCORE_5_0 [EditorBrowsable (EditorBrowsableState.Never)] -#if NET8_0 || NET10_0_OR_GREATER [Obsolete ("This property is ignored.")] -#else - [Obsolete ("This property will be ignored in .NET 10+.")] -#endif public bool BypassBackgroundSessionCheck { get { -#if NET8_0 || NET10_0_OR_GREATER return true; -#else - return bypassBackgroundCheck; -#endif } set { -#if !NET8_0 && !NET10_0_OR_GREATER - EnsureModifiability (); - bypassBackgroundCheck = value; -#endif } } #endif // !XAMCORE_5_0 @@ -565,10 +454,6 @@ protected override async Task SendAsync (HttpRequestMessage var inflightData = new InflightData (request.RequestUri?.AbsoluteUri!, cancellationToken, request); lock (inflightRequestsLock) { -#if !MONOMAC && !NET8_0 && !NET10_0_OR_GREATER - // Add the notification whenever needed - AddNotification (); -#endif inflightRequests.Add (dataTask, inflightData); } From 7b06638fa27eac7a7a29cc83fc310f4715be0e51 Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" <42748379+dotnet-maestro[bot]@users.noreply.github.com> Date: Tue, 21 Apr 2026 12:35:10 +0200 Subject: [PATCH 28/47] [main] Update dependencies from dotnet/macios (#25199) This pull request updates the following dependencies ## From https://github.com/dotnet/macios - **Subscription**: [c0371266-dd6f-4959-822b-decc72d2d668](https://maestro.dot.net/subscriptions?search=c0371266-dd6f-4959-822b-decc72d2d668) - **Build**: [20260420.8](https://dev.azure.com/devdiv/DevDiv/_build/results?buildId=13883398) ([311110](https://maestro.dot.net/channel/3884/github:dotnet:macios/build/311110)) - **Date Produced**: April 20, 2026 4:00:48 PM UTC - **Commit**: [996ec2eecca8f9b580e6f5e0d5c9dee82d40eb11](https://github.com/dotnet/macios/commit/996ec2eecca8f9b580e6f5e0d5c9dee82d40eb11) - **Branch**: [release/9.0.1xx](https://github.com/dotnet/macios/tree/release/9.0.1xx) - **Dependency Updates**: - From [26.4.9012 to 26.4.9013][1] - Microsoft.iOS.Sdk.net9.0_26.4 - Microsoft.MacCatalyst.Sdk.net9.0_26.4 - Microsoft.macOS.Sdk.net9.0_26.4 - Microsoft.tvOS.Sdk.net9.0_26.4 [1]: https://github.com/dotnet/macios/compare/090e599293...996ec2eecc --- NuGet.config | 2 +- eng/Version.Details.props | 8 ++++---- eng/Version.Details.xml | 16 ++++++++-------- 3 files changed, 13 insertions(+), 13 deletions(-) diff --git a/NuGet.config b/NuGet.config index 36a3827c6169..806103a918a4 100644 --- a/NuGet.config +++ b/NuGet.config @@ -12,7 +12,7 @@ - + diff --git a/eng/Version.Details.props b/eng/Version.Details.props index cbcaaac74276..da8a3b1fdf4a 100644 --- a/eng/Version.Details.props +++ b/eng/Version.Details.props @@ -19,16 +19,16 @@ This file should be imported by eng/Versions.props 26.0.11017 18.5.9227 - 26.4.9012 + 26.4.9013 26.0.11017 18.5.9227 - 26.4.9012 + 26.4.9013 26.0.11017 15.5.9227 - 26.4.9012 + 26.4.9013 26.0.11017 18.5.9227 - 26.4.9012 + 26.4.9013 11.0.0-prerelease.26217.1 diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 41cb0275354a..d681c66ca755 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -60,21 +60,21 @@ 797d30720e5e629d23eb146935da94cb1b61047e - + https://github.com/dotnet/macios - 090e59929354fa7b75f7814b4c384226c97a0ed9 + 996ec2eecca8f9b580e6f5e0d5c9dee82d40eb11 - + https://github.com/dotnet/macios - 090e59929354fa7b75f7814b4c384226c97a0ed9 + 996ec2eecca8f9b580e6f5e0d5c9dee82d40eb11 - + https://github.com/dotnet/macios - 090e59929354fa7b75f7814b4c384226c97a0ed9 + 996ec2eecca8f9b580e6f5e0d5c9dee82d40eb11 - + https://github.com/dotnet/macios - 090e59929354fa7b75f7814b4c384226c97a0ed9 + 996ec2eecca8f9b580e6f5e0d5c9dee82d40eb11 From 486d22ee6b35f42192ddb75b66884ce4b5478191 Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" <42748379+dotnet-maestro[bot]@users.noreply.github.com> Date: Tue, 21 Apr 2026 12:36:36 +0200 Subject: [PATCH 29/47] [main] Update dependencies from dotnet/dotnet (#25201) This pull request updates the following dependencies ## From https://github.com/dotnet/dotnet - **Subscription**: [30303172-6f12-44a9-887a-ea8520fce068](https://maestro.dot.net/subscriptions?search=30303172-6f12-44a9-887a-ea8520fce068) - **Build**: [20260416.21](https://dev.azure.com/dnceng/internal/_build/results?buildId=2953379) ([311021](https://maestro.dot.net/channel/9626/github:dotnet:dotnet/build/311021)) - **Date Produced**: April 20, 2026 2:48:35 AM UTC - **Commit**: [e43cbe04901ea4cf359ed0883b0533abab224ba2](https://github.com/dotnet/dotnet/commit/e43cbe04901ea4cf359ed0883b0533abab224ba2) - **Branch**: [release/10.0.3xx](https://github.com/dotnet/dotnet/tree/release/10.0.3xx) - **Dependency Updates**: - From [10.0.0-beta.26216.115 to 10.0.0-beta.26216.121][1] - Microsoft.DotNet.Arcade.Sdk - Microsoft.DotNet.Build.Tasks.Feed - Microsoft.DotNet.SharedFramework.Sdk - From [10.0.300-preview.0.26216.115 to 10.0.300-preview.0.26216.121][1] - Microsoft.NET.Sdk - From [10.0.300-preview.26216.115 to 10.0.300-preview.26216.121][1] - Microsoft.TemplateEngine.Authoring.Tasks [1]: https://github.com/dotnet/dotnet/compare/7141470de2...e43cbe0490 --- eng/Version.Details.props | 10 +++++----- eng/Version.Details.xml | 20 ++++++++++---------- global.json | 6 +++--- 3 files changed, 18 insertions(+), 18 deletions(-) diff --git a/eng/Version.Details.props b/eng/Version.Details.props index da8a3b1fdf4a..29cc2d2400dd 100644 --- a/eng/Version.Details.props +++ b/eng/Version.Details.props @@ -6,16 +6,16 @@ This file should be imported by eng/Versions.props - 10.0.0-beta.26216.115 - 10.0.0-beta.26216.115 + 10.0.0-beta.26216.121 + 10.0.0-beta.26216.121 0.11.5-alpha.26070.104 - 10.0.0-beta.26216.115 + 10.0.0-beta.26216.121 10.0.3-servicing.26070.104 10.0.3 10.0.3 - 10.0.300-preview.0.26216.115 + 10.0.300-preview.0.26216.121 10.0.3 - 10.0.300-preview.26216.115 + 10.0.300-preview.26216.121 26.0.11017 18.5.9227 diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index d681c66ca755..8c06ab691cbd 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -1,8 +1,8 @@ - + https://github.com/dotnet/dotnet - 7141470de2a1582db15ae6886e361ead12efb3d8 + e43cbe04901ea4cf359ed0883b0533abab224ba2 https://github.com/dotnet/dotnet @@ -95,25 +95,25 @@ - + https://github.com/dotnet/dotnet - 7141470de2a1582db15ae6886e361ead12efb3d8 + e43cbe04901ea4cf359ed0883b0533abab224ba2 - + https://github.com/dotnet/dotnet - 7141470de2a1582db15ae6886e361ead12efb3d8 + e43cbe04901ea4cf359ed0883b0533abab224ba2 - + https://github.com/dotnet/dotnet - 7141470de2a1582db15ae6886e361ead12efb3d8 + e43cbe04901ea4cf359ed0883b0533abab224ba2 https://github.com/dotnet/xharness 866707736d49c2323628744716cda2475b3af9ee - + https://github.com/dotnet/dotnet - 7141470de2a1582db15ae6886e361ead12efb3d8 + e43cbe04901ea4cf359ed0883b0533abab224ba2 diff --git a/global.json b/global.json index 8c573e5f740a..5a1a6bf7167f 100644 --- a/global.json +++ b/global.json @@ -1,6 +1,6 @@ { "sdk": { - "version": "10.0.300-preview.0.26216.115", + "version": "10.0.300-preview.0.26216.121", "paths": [ "builds/downloads/dotnet", "$host$" @@ -8,9 +8,9 @@ "errorMessage": "The .NET SDK could not be found, please run 'make dotnet -C builds'." }, "tools": { - "dotnet": "10.0.300-preview.0.26216.115" + "dotnet": "10.0.300-preview.0.26216.121" }, "msbuild-sdks": { - "Microsoft.DotNet.Arcade.Sdk": "10.0.0-beta.26216.115" + "Microsoft.DotNet.Arcade.Sdk": "10.0.0-beta.26216.121" } } From d6a2d754ea04877facc8b962c4d8f8f55b9f0a28 Mon Sep 17 00:00:00 2001 From: Rolf Bjarne Kvinge Date: Tue, 21 Apr 2026 19:19:36 +0200 Subject: [PATCH 30/47] [tests] Fix merge conflicts. --- tests/xharness/Jenkins/TestVariationsFactory.cs | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/tests/xharness/Jenkins/TestVariationsFactory.cs b/tests/xharness/Jenkins/TestVariationsFactory.cs index a82898e95be4..a6779cdad28e 100644 --- a/tests/xharness/Jenkins/TestVariationsFactory.cs +++ b/tests/xharness/Jenkins/TestVariationsFactory.cs @@ -63,16 +63,16 @@ IEnumerable GetTestData (RunTestTask test) break; case "introspection": if (supports_coreclr && supports_mono) { // we only need specific coreclr test if we *also* support mono (otherwise the default test will be coreclr) - yield return new TestData { Variation = "CoreCLR", TestVariation = "coreclr", Ignored = ignore_coreclr, Debug = true }; + yield return new TestData { Variation = "CoreCLR", TestVariation = "coreclr", Ignored = ignore_coreclr }; } break; case "monotouch-test": if (supports_coreclr && supports_mono) { // we only need specific coreclr test if we *also* support mono (otherwise the default test will be coreclr) - yield return new TestData { Variation = "Debug (CoreCLR)", TestVariation = "debug|coreclr", Ignored = ignore_coreclr, Debug = true }; + yield return new TestData { Variation = "Debug (CoreCLR)", TestVariation = "debug|coreclr", Ignored = ignore_coreclr }; if (mac_supports_arm64) - yield return new TestData { Variation = "Release (CoreCLR, ARM64)", TestVariation = "release|coreclr", Ignored = ignore_coreclr, Debug = false, RuntimeIdentifier = arm64_sim_runtime_identifier }; - yield return new TestData { Variation = "Release (CoreCLR, x64)", TestVariation = "release|coreclr", Ignored = ignore_coreclr, Debug = false, RuntimeIdentifier = x64_sim_runtime_identifier }; - yield return new TestData { Variation = "Release (CoreCLR, Universal)", TestVariation = "release|coreclr", Ignored = ignore_coreclr, Debug = false }; + yield return new TestData { Variation = "Release (CoreCLR, ARM64)", TestVariation = "release|coreclr", Ignored = ignore_coreclr, RuntimeIdentifier = arm64_sim_runtime_identifier }; + yield return new TestData { Variation = "Release (CoreCLR, x64)", TestVariation = "release|coreclr", Ignored = ignore_coreclr, RuntimeIdentifier = x64_sim_runtime_identifier }; + yield return new TestData { Variation = "Release (CoreCLR, Universal)", TestVariation = "release|coreclr", Ignored = ignore_coreclr }; } break; } From 628501afa50b01fdaed3d0ab92d4b4b848c2b228 Mon Sep 17 00:00:00 2001 From: Rolf Bjarne Kvinge Date: Wed, 22 Apr 2026 06:34:34 +0200 Subject: [PATCH 31/47] [sharpie] Add docs on how to create a sharpie release. (#25178) --- tools/sharpie/RELEASE.md | 47 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 tools/sharpie/RELEASE.md diff --git a/tools/sharpie/RELEASE.md b/tools/sharpie/RELEASE.md new file mode 100644 index 000000000000..18c80c71b73a --- /dev/null +++ b/tools/sharpie/RELEASE.md @@ -0,0 +1,47 @@ +# Release + +This document describes how to make a new sharpie release. + +We have a single release branch for Objective-Sharpie: `release/sharpie`. + +1. Merge `main` into `release/sharpie` + + The first step to make a release is to merge `main` into `release/sharpie`, + and then push that change. The only difference between the `main` and + `release/sharpie` branches should be the value of the `NUGET_RELEASE_BRANCH` + variable in `Make.config`. + +2. Create a tag for the commit to be released. + + Run `make show-versions` to get the sharpie version. Then: + + ``` + $ git tag sharpie- + $ git push origin sharpie-:sharpie- + ``` + +3. Write release notes + +4. Run the release pipeline + + Note: this can only be done once our pipeline has built the sharpie nupkg, and + published it to a maestro channel (which is done automatically when anything + is pushed to the `release/sharpie` branch). + + Run our [release pipeline](https://dev.azure.com/dnceng/internal/_build?definitionId=1445) + + Set: + + * GitHub repository name: `macios` + * Commit hash to download nupkgs from: the hash of the `release/sharpie` + branch + * Push workload set channel stage: unchecked + * Semi-colon (';') separated list of nugets packages to include: the package + name of the sharpie package. Example: `Sharpie.Bind.Tool.26.3.0.6.nupkg`. + The exact package name will be in the GitHub comment the CI adds to the + commit in question. You can also run `make show-versions` in the root + directory to get the version to use. + +5. Approve the 'Release packs' review / validation for the pipeline. + + You can reject the "Wait to push manifests" review / validation, it's not used for sharpie releases. From ceb6ce3e5e91eaa993c9159d4290282792cd3e73 Mon Sep 17 00:00:00 2001 From: Rolf Bjarne Kvinge Date: Wed, 22 Apr 2026 06:37:31 +0200 Subject: [PATCH 32/47] [docs] Minor updates from copilot review in the dotnet/docs-mobile repository. (#25191) Ref: https://github.com/dotnet/docs-mobile/pull/110 --- docs/building-apps/build-properties.md | 4 +--- docs/building-apps/build-targets.md | 4 ++-- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/docs/building-apps/build-properties.md b/docs/building-apps/build-properties.md index c93f44b6c9b0..4efc424a29ad 100644 --- a/docs/building-apps/build-properties.md +++ b/docs/building-apps/build-properties.md @@ -352,9 +352,7 @@ See [BuildIpa](#buildipa) for iOS and tvOS projects. ## Device -Specifies which mobile device or emulator to target when using `dotnet run ---device ` or MSBuild targets that interact with devices (such as -`Run`, `Install`, or `Uninstall`). +Specifies which mobile device or simulator to target when using `dotnet run --device ` or MSBuild targets that interact with devices (such as `Run`, `Install`, or `Uninstall`). The value can be anything the command-line tools `simctl` or `devicectl` accept for the device name; this is typically either the UDID or the name of diff --git a/docs/building-apps/build-targets.md b/docs/building-apps/build-targets.md index 86a0ff27503a..fbf0abff811e 100644 --- a/docs/building-apps/build-targets.md +++ b/docs/building-apps/build-targets.md @@ -47,8 +47,8 @@ Added in .NET 11. ## Run Builds the source code within a project and all dependencies, and then deploys and runs it -on a default simulator/device. A specific deployment target can be set by using the `$(Device)` property. +on a default simulator/device. A specific deployment target can be set by using the `$(Device)` property. ```dotnetcli -dotnet build -t:Run project.csproj -p:Device=$(MY_DEVICE_UDID) +dotnet build -t:Run project.csproj -p:Device= ``` From 7e68a963f1517e9e32930a3b1566d2cdb89ed173 Mon Sep 17 00:00:00 2001 From: Rolf Bjarne Kvinge Date: Wed, 22 Apr 2026 06:38:57 +0200 Subject: [PATCH 33/47] Add eng/Signing.props to sign cab files inside MSI workload packs (#25192) The VS signing scan flags 42 unsigned cab1.cab files inside macOS SDK and Templates workload pack MSI payloads. The Arcade SDK's default Sign.props does not include a FileExtensionSignInfo for .cab, so the SignTool skips signing them even though .cab is in SignableExtensions. Add eng/Signing.props with: - FileExtensionSignInfo for .cab -> Microsoft400 - UseDotNetCertificate = true (standard for dotnet/* repos) - ItemsToSign entries for *.msi and *.wixpack.zip so the SignTool opens MSI containers and signs embedded cabs This is recreating #25184 from origin since we can't build from forks. Co-authored-by: Chuy Zarate --- eng/Signing.props | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 eng/Signing.props diff --git a/eng/Signing.props b/eng/Signing.props new file mode 100644 index 000000000000..512b976e5777 --- /dev/null +++ b/eng/Signing.props @@ -0,0 +1,16 @@ + + + true + + + + + + + + + + + + + From 8d73468f9035fd402d65beabd33cdaef0ca533df Mon Sep 17 00:00:00 2001 From: Rolf Bjarne Kvinge Date: Wed, 22 Apr 2026 06:40:23 +0200 Subject: [PATCH 34/47] Bump mlaunch to get startup hook fix. (#25202) --- mk/xamarin.mk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mk/xamarin.mk b/mk/xamarin.mk index af8e9f465e9c..537af408111d 100644 --- a/mk/xamarin.mk +++ b/mk/xamarin.mk @@ -1,5 +1,5 @@ # Available versions can be seen here: # https://dev.azure.com/dnceng/public/_artifacts/feed/dotnet-eng/NuGet/Microsoft.Tools.Mlaunch/versions -MLAUNCH_NUGET_VERSION=1.1.111 +MLAUNCH_NUGET_VERSION=1.1.113 # https://dev.azure.com/dnceng/public/_artifacts/feed/dotnet-eng/NuGet/AppleDocReader/versions ADR_NUGET_VERSION=1.0.0 From 14a851fe07e8970e62d91af3377dbb8f71b6764e Mon Sep 17 00:00:00 2001 From: Rolf Bjarne Kvinge Date: Wed, 22 Apr 2026 09:09:30 +0200 Subject: [PATCH 35/47] [tests] Update expected sizes. --- .../MacCatalyst-CoreCLR-Interpreter-preservedapis.txt | 3 +++ .../expected/MacCatalyst-CoreCLR-Interpreter-size.txt | 4 ++-- .../expected/MacCatalyst-CoreCLR-R2R-preservedapis.txt | 3 +++ .../UnitTests/expected/MacCatalyst-CoreCLR-R2R-size.txt | 8 ++++---- .../expected/MacCatalyst-MonoVM-interpreter-size.txt | 4 ++-- .../dotnet/UnitTests/expected/MacCatalyst-MonoVM-size.txt | 4 ++-- .../expected/MacOSX-CoreCLR-Interpreter-size.txt | 4 ++-- .../dotnet/UnitTests/expected/MacOSX-CoreCLR-R2R-size.txt | 8 ++++---- tests/dotnet/UnitTests/expected/MacOSX-NativeAOT-size.txt | 4 ++-- .../expected/TVOS-CoreCLR-Interpreter-preservedapis.txt | 3 +++ .../UnitTests/expected/TVOS-CoreCLR-R2R-preservedapis.txt | 3 +++ tests/dotnet/UnitTests/expected/TVOS-CoreCLR-R2R-size.txt | 6 +++--- .../UnitTests/expected/TVOS-MonoVM-interpreter-size.txt | 4 ++-- .../expected/iOS-CoreCLR-Interpreter-preservedapis.txt | 3 +++ .../UnitTests/expected/iOS-CoreCLR-R2R-preservedapis.txt | 3 +++ tests/dotnet/UnitTests/expected/iOS-CoreCLR-R2R-size.txt | 6 +++--- .../UnitTests/expected/iOS-MonoVM-interpreter-size.txt | 4 ++-- 17 files changed, 46 insertions(+), 28 deletions(-) diff --git a/tests/dotnet/UnitTests/expected/MacCatalyst-CoreCLR-Interpreter-preservedapis.txt b/tests/dotnet/UnitTests/expected/MacCatalyst-CoreCLR-Interpreter-preservedapis.txt index ad1122f80740..77690c4e653e 100644 --- a/tests/dotnet/UnitTests/expected/MacCatalyst-CoreCLR-Interpreter-preservedapis.txt +++ b/tests/dotnet/UnitTests/expected/MacCatalyst-CoreCLR-Interpreter-preservedapis.txt @@ -202,6 +202,7 @@ Microsoft.MacCatalyst.dll:Foundation.NSObject.set_handle(ObjCRuntime.NativeHandl Microsoft.MacCatalyst.dll:Foundation.NSObject.set_Handle(ObjCRuntime.NativeHandle) Microsoft.MacCatalyst.dll:Foundation.NSObject.set_HasManagedRef(System.Boolean) Microsoft.MacCatalyst.dll:Foundation.NSObject.set_IsDirectBinding(System.Boolean) +Microsoft.MacCatalyst.dll:Foundation.NSObject.set_RemoveFromObjectMap(System.Boolean) Microsoft.MacCatalyst.dll:Foundation.NSObject.ToString() Microsoft.MacCatalyst.dll:Foundation.NSObject.xamarin_release_managed_ref(System.IntPtr, System.Byte) Microsoft.MacCatalyst.dll:Foundation.NSObject.xamarin_set_gchandle_with_flags_safe(System.IntPtr, System.IntPtr, Foundation.NSObject/XamarinGCHandleFlags, System.IntPtr) @@ -732,6 +733,7 @@ Microsoft.MacCatalyst.dll:ObjCRuntime.Runtime.RegisterDelegates(ObjCRuntime.Runt Microsoft.MacCatalyst.dll:ObjCRuntime.Runtime.RegisterNSObject(Foundation.NSObject, System.IntPtr) Microsoft.MacCatalyst.dll:ObjCRuntime.Runtime.ReleaseBlockOnMainThread(System.IntPtr) Microsoft.MacCatalyst.dll:ObjCRuntime.Runtime.ReleaseBlockWhenDelegateIsCollected(System.IntPtr, System.Delegate) +Microsoft.MacCatalyst.dll:ObjCRuntime.Runtime.RemoveFromObjectMap(Foundation.NSObject) Microsoft.MacCatalyst.dll:ObjCRuntime.Runtime.ResolvingEventHandler(System.Runtime.Loader.AssemblyLoadContext, System.Reflection.AssemblyName) Microsoft.MacCatalyst.dll:ObjCRuntime.Runtime.retain_nativeobject(System.IntPtr, System.IntPtr*) Microsoft.MacCatalyst.dll:ObjCRuntime.Runtime.RetainNativeObject(ObjCRuntime.INativeObject) @@ -916,6 +918,7 @@ Microsoft.MacCatalyst.dll:System.Boolean Foundation.NSObject::HasManagedRef() Microsoft.MacCatalyst.dll:System.Boolean Foundation.NSObject::InFinalizerQueue() Microsoft.MacCatalyst.dll:System.Boolean Foundation.NSObject::IsDirectBinding() Microsoft.MacCatalyst.dll:System.Boolean Foundation.NSObject::IsRegisteredToggleRef() +Microsoft.MacCatalyst.dll:System.Boolean Foundation.NSObject::RemoveFromObjectMap() Microsoft.MacCatalyst.dll:System.Boolean Foundation.NSObject/NSObject_Disposer::draining Microsoft.MacCatalyst.dll:System.Boolean Foundation.NSObjectDataHandle::invalidated Microsoft.MacCatalyst.dll:System.Boolean Foundation.NSObjectDataHandle::IsInvalid() diff --git a/tests/dotnet/UnitTests/expected/MacCatalyst-CoreCLR-Interpreter-size.txt b/tests/dotnet/UnitTests/expected/MacCatalyst-CoreCLR-Interpreter-size.txt index daf4d5c4c2ba..883e287a2028 100644 --- a/tests/dotnet/UnitTests/expected/MacCatalyst-CoreCLR-Interpreter-size.txt +++ b/tests/dotnet/UnitTests/expected/MacCatalyst-CoreCLR-Interpreter-size.txt @@ -1,8 +1,8 @@ -AppBundleSize: 10,462,435 bytes (10,217.2 KB = 10.0 MB) +AppBundleSize: 10,462,403 bytes (10,217.2 KB = 10.0 MB) # The following list of files and their sizes is just informational / for review, and isn't used in the test: Contents/_CodeSignature/CodeResources: 4,951 bytes (4.8 KB = 0.0 MB) Contents/Info.plist: 1,099 bytes (1.1 KB = 0.0 MB) -Contents/MacOS/SizeTestApp: 241,968 bytes (236.3 KB = 0.2 MB) +Contents/MacOS/SizeTestApp: 241,936 bytes (236.3 KB = 0.2 MB) Contents/MonoBundle/libcoreclr.dylib: 6,386,800 bytes (6,237.1 KB = 6.1 MB) Contents/MonoBundle/libSystem.Globalization.Native.dylib: 110,432 bytes (107.8 KB = 0.1 MB) Contents/MonoBundle/libSystem.IO.Compression.Native.dylib: 1,442,208 bytes (1,408.4 KB = 1.4 MB) diff --git a/tests/dotnet/UnitTests/expected/MacCatalyst-CoreCLR-R2R-preservedapis.txt b/tests/dotnet/UnitTests/expected/MacCatalyst-CoreCLR-R2R-preservedapis.txt index ad1122f80740..77690c4e653e 100644 --- a/tests/dotnet/UnitTests/expected/MacCatalyst-CoreCLR-R2R-preservedapis.txt +++ b/tests/dotnet/UnitTests/expected/MacCatalyst-CoreCLR-R2R-preservedapis.txt @@ -202,6 +202,7 @@ Microsoft.MacCatalyst.dll:Foundation.NSObject.set_handle(ObjCRuntime.NativeHandl Microsoft.MacCatalyst.dll:Foundation.NSObject.set_Handle(ObjCRuntime.NativeHandle) Microsoft.MacCatalyst.dll:Foundation.NSObject.set_HasManagedRef(System.Boolean) Microsoft.MacCatalyst.dll:Foundation.NSObject.set_IsDirectBinding(System.Boolean) +Microsoft.MacCatalyst.dll:Foundation.NSObject.set_RemoveFromObjectMap(System.Boolean) Microsoft.MacCatalyst.dll:Foundation.NSObject.ToString() Microsoft.MacCatalyst.dll:Foundation.NSObject.xamarin_release_managed_ref(System.IntPtr, System.Byte) Microsoft.MacCatalyst.dll:Foundation.NSObject.xamarin_set_gchandle_with_flags_safe(System.IntPtr, System.IntPtr, Foundation.NSObject/XamarinGCHandleFlags, System.IntPtr) @@ -732,6 +733,7 @@ Microsoft.MacCatalyst.dll:ObjCRuntime.Runtime.RegisterDelegates(ObjCRuntime.Runt Microsoft.MacCatalyst.dll:ObjCRuntime.Runtime.RegisterNSObject(Foundation.NSObject, System.IntPtr) Microsoft.MacCatalyst.dll:ObjCRuntime.Runtime.ReleaseBlockOnMainThread(System.IntPtr) Microsoft.MacCatalyst.dll:ObjCRuntime.Runtime.ReleaseBlockWhenDelegateIsCollected(System.IntPtr, System.Delegate) +Microsoft.MacCatalyst.dll:ObjCRuntime.Runtime.RemoveFromObjectMap(Foundation.NSObject) Microsoft.MacCatalyst.dll:ObjCRuntime.Runtime.ResolvingEventHandler(System.Runtime.Loader.AssemblyLoadContext, System.Reflection.AssemblyName) Microsoft.MacCatalyst.dll:ObjCRuntime.Runtime.retain_nativeobject(System.IntPtr, System.IntPtr*) Microsoft.MacCatalyst.dll:ObjCRuntime.Runtime.RetainNativeObject(ObjCRuntime.INativeObject) @@ -916,6 +918,7 @@ Microsoft.MacCatalyst.dll:System.Boolean Foundation.NSObject::HasManagedRef() Microsoft.MacCatalyst.dll:System.Boolean Foundation.NSObject::InFinalizerQueue() Microsoft.MacCatalyst.dll:System.Boolean Foundation.NSObject::IsDirectBinding() Microsoft.MacCatalyst.dll:System.Boolean Foundation.NSObject::IsRegisteredToggleRef() +Microsoft.MacCatalyst.dll:System.Boolean Foundation.NSObject::RemoveFromObjectMap() Microsoft.MacCatalyst.dll:System.Boolean Foundation.NSObject/NSObject_Disposer::draining Microsoft.MacCatalyst.dll:System.Boolean Foundation.NSObjectDataHandle::invalidated Microsoft.MacCatalyst.dll:System.Boolean Foundation.NSObjectDataHandle::IsInvalid() diff --git a/tests/dotnet/UnitTests/expected/MacCatalyst-CoreCLR-R2R-size.txt b/tests/dotnet/UnitTests/expected/MacCatalyst-CoreCLR-R2R-size.txt index 88c0337190a3..1a467ac6430b 100644 --- a/tests/dotnet/UnitTests/expected/MacCatalyst-CoreCLR-R2R-size.txt +++ b/tests/dotnet/UnitTests/expected/MacCatalyst-CoreCLR-R2R-size.txt @@ -1,18 +1,18 @@ -AppBundleSize: 19,847,901 bytes (19,382.7 KB = 18.9 MB) +AppBundleSize: 19,322,797 bytes (18,869.9 KB = 18.4 MB) # The following list of files and their sizes is just informational / for review, and isn't used in the test: Contents/_CodeSignature/CodeResources: 5,105 bytes (5.0 KB = 0.0 MB) Contents/Info.plist: 1,099 bytes (1.1 KB = 0.0 MB) -Contents/MacOS/SizeTestApp: 242,000 bytes (236.3 KB = 0.2 MB) +Contents/MacOS/SizeTestApp: 241,984 bytes (236.3 KB = 0.2 MB) Contents/MonoBundle/libcoreclr.dylib: 6,386,800 bytes (6,237.1 KB = 6.1 MB) Contents/MonoBundle/libSystem.Globalization.Native.dylib: 110,432 bytes (107.8 KB = 0.1 MB) Contents/MonoBundle/libSystem.IO.Compression.Native.dylib: 1,442,208 bytes (1,408.4 KB = 1.4 MB) Contents/MonoBundle/libSystem.Native.dylib: 146,720 bytes (143.3 KB = 0.1 MB) Contents/MonoBundle/libSystem.Net.Security.Native.dylib: 71,120 bytes (69.5 KB = 0.1 MB) Contents/MonoBundle/libSystem.Security.Cryptography.Native.Apple.dylib: 204,768 bytes (200.0 KB = 0.2 MB) -Contents/MonoBundle/Microsoft.MacCatalyst.dll: 101,376 bytes (99.0 KB = 0.1 MB) +Contents/MonoBundle/Microsoft.MacCatalyst.dll: 101,888 bytes (99.5 KB = 0.1 MB) Contents/MonoBundle/runtimeconfig.bin: 1,481 bytes (1.4 KB = 0.0 MB) Contents/MonoBundle/SizeTestApp.dll: 7,680 bytes (7.5 KB = 0.0 MB) -Contents/MonoBundle/SizeTestApp.r2r.dylib: 9,371,968 bytes (9,152.3 KB = 8.9 MB) +Contents/MonoBundle/SizeTestApp.r2r.dylib: 8,846,368 bytes (8,639.0 KB = 8.4 MB) Contents/MonoBundle/System.Collections.Immutable.dll: 13,824 bytes (13.5 KB = 0.0 MB) Contents/MonoBundle/System.Diagnostics.StackTrace.dll: 7,680 bytes (7.5 KB = 0.0 MB) Contents/MonoBundle/System.IO.Compression.dll: 22,016 bytes (21.5 KB = 0.0 MB) diff --git a/tests/dotnet/UnitTests/expected/MacCatalyst-MonoVM-interpreter-size.txt b/tests/dotnet/UnitTests/expected/MacCatalyst-MonoVM-interpreter-size.txt index 70bfba780e9c..e43e0cff8d51 100644 --- a/tests/dotnet/UnitTests/expected/MacCatalyst-MonoVM-interpreter-size.txt +++ b/tests/dotnet/UnitTests/expected/MacCatalyst-MonoVM-interpreter-size.txt @@ -1,8 +1,8 @@ -AppBundleSize: 5,810,942 bytes (5,674.7 KB = 5.5 MB) +AppBundleSize: 5,810,670 bytes (5,674.5 KB = 5.5 MB) # The following list of files and their sizes is just informational / for review, and isn't used in the test: Contents/_CodeSignature/CodeResources: 3,310 bytes (3.2 KB = 0.0 MB) Contents/Info.plist: 1,099 bytes (1.1 KB = 0.0 MB) -Contents/MacOS/SizeTestApp: 4,567,744 bytes (4,460.7 KB = 4.4 MB) +Contents/MacOS/SizeTestApp: 4,567,472 bytes (4,460.4 KB = 4.4 MB) Contents/MonoBundle/Microsoft.MacCatalyst.dll: 157,184 bytes (153.5 KB = 0.1 MB) Contents/MonoBundle/runtimeconfig.bin: 1,405 bytes (1.4 KB = 0.0 MB) Contents/MonoBundle/SizeTestApp.dll: 7,680 bytes (7.5 KB = 0.0 MB) diff --git a/tests/dotnet/UnitTests/expected/MacCatalyst-MonoVM-size.txt b/tests/dotnet/UnitTests/expected/MacCatalyst-MonoVM-size.txt index 19791947e749..91e818b5f590 100644 --- a/tests/dotnet/UnitTests/expected/MacCatalyst-MonoVM-size.txt +++ b/tests/dotnet/UnitTests/expected/MacCatalyst-MonoVM-size.txt @@ -1,8 +1,8 @@ -AppBundleSize: 16,519,234 bytes (16,132.1 KB = 15.8 MB) +AppBundleSize: 16,518,962 bytes (16,131.8 KB = 15.8 MB) # The following list of files and their sizes is just informational / for review, and isn't used in the test: Contents/_CodeSignature/CodeResources: 4,134 bytes (4.0 KB = 0.0 MB) Contents/Info.plist: 1,099 bytes (1.1 KB = 0.0 MB) -Contents/MacOS/SizeTestApp: 13,979,872 bytes (13,652.2 KB = 13.3 MB) +Contents/MacOS/SizeTestApp: 13,979,600 bytes (13,652.0 KB = 13.3 MB) Contents/MonoBundle/aot-instances.aotdata.arm64: 1,037,632 bytes (1,013.3 KB = 1.0 MB) Contents/MonoBundle/Microsoft.MacCatalyst.aotdata.arm64: 35,896 bytes (35.1 KB = 0.0 MB) Contents/MonoBundle/Microsoft.MacCatalyst.dll: 50,688 bytes (49.5 KB = 0.0 MB) diff --git a/tests/dotnet/UnitTests/expected/MacOSX-CoreCLR-Interpreter-size.txt b/tests/dotnet/UnitTests/expected/MacOSX-CoreCLR-Interpreter-size.txt index def6a8502e7a..38a5ce9a6dc6 100644 --- a/tests/dotnet/UnitTests/expected/MacOSX-CoreCLR-Interpreter-size.txt +++ b/tests/dotnet/UnitTests/expected/MacOSX-CoreCLR-Interpreter-size.txt @@ -1,8 +1,8 @@ -AppBundleSize: 251,559,672 bytes (245,663.7 KB = 239.9 MB) +AppBundleSize: 251,559,640 bytes (245,663.7 KB = 239.9 MB) # The following list of files and their sizes is just informational / for review, and isn't used in the test: Contents/_CodeSignature/CodeResources: 70,698 bytes (69.0 KB = 0.1 MB) Contents/Info.plist: 730 bytes (0.7 KB = 0.0 MB) -Contents/MacOS/SizeTestApp: 7,963,744 bytes (7,777.1 KB = 7.6 MB) +Contents/MacOS/SizeTestApp: 7,963,712 bytes (7,777.1 KB = 7.6 MB) Contents/MonoBundle/.xamarin/osx-arm64/Microsoft.CSharp.dll: 894,728 bytes (873.8 KB = 0.9 MB) Contents/MonoBundle/.xamarin/osx-arm64/Microsoft.Extensions.Caching.Abstractions.dll: 66,832 bytes (65.3 KB = 0.1 MB) Contents/MonoBundle/.xamarin/osx-arm64/Microsoft.Extensions.Configuration.Abstractions.dll: 38,664 bytes (37.8 KB = 0.0 MB) diff --git a/tests/dotnet/UnitTests/expected/MacOSX-CoreCLR-R2R-size.txt b/tests/dotnet/UnitTests/expected/MacOSX-CoreCLR-R2R-size.txt index 6f20f5d9ecf2..df3753b59c4b 100644 --- a/tests/dotnet/UnitTests/expected/MacOSX-CoreCLR-R2R-size.txt +++ b/tests/dotnet/UnitTests/expected/MacOSX-CoreCLR-R2R-size.txt @@ -1,8 +1,8 @@ -AppBundleSize: 318,431,992 bytes (310,968.7 KB = 303.7 MB) +AppBundleSize: 318,434,008 bytes (310,970.7 KB = 303.7 MB) # The following list of files and their sizes is just informational / for review, and isn't used in the test: Contents/_CodeSignature/CodeResources: 70,698 bytes (69.0 KB = 0.1 MB) Contents/Info.plist: 730 bytes (0.7 KB = 0.0 MB) -Contents/MacOS/SizeTestApp: 7,963,744 bytes (7,777.1 KB = 7.6 MB) +Contents/MacOS/SizeTestApp: 7,963,712 bytes (7,777.1 KB = 7.6 MB) Contents/MonoBundle/.xamarin/osx-arm64/Microsoft.CSharp.dll: 894,728 bytes (873.8 KB = 0.9 MB) Contents/MonoBundle/.xamarin/osx-arm64/Microsoft.Extensions.Caching.Abstractions.dll: 66,832 bytes (65.3 KB = 0.1 MB) Contents/MonoBundle/.xamarin/osx-arm64/Microsoft.Extensions.Configuration.Abstractions.dll: 38,664 bytes (37.8 KB = 0.0 MB) @@ -13,7 +13,7 @@ Contents/MonoBundle/.xamarin/osx-arm64/Microsoft.Extensions.Hosting.Abstractions Contents/MonoBundle/.xamarin/osx-arm64/Microsoft.Extensions.Logging.Abstractions.dll: 157,960 bytes (154.3 KB = 0.2 MB) Contents/MonoBundle/.xamarin/osx-arm64/Microsoft.Extensions.Options.dll: 144,176 bytes (140.8 KB = 0.1 MB) Contents/MonoBundle/.xamarin/osx-arm64/Microsoft.Extensions.Primitives.dll: 80,648 bytes (78.8 KB = 0.1 MB) -Contents/MonoBundle/.xamarin/osx-arm64/Microsoft.macOS.dll: 75,899,392 bytes (74,120.5 KB = 72.4 MB) +Contents/MonoBundle/.xamarin/osx-arm64/Microsoft.macOS.dll: 75,900,928 bytes (74,122.0 KB = 72.4 MB) Contents/MonoBundle/.xamarin/osx-arm64/Microsoft.VisualBasic.Core.dll: 1,335,056 bytes (1,303.8 KB = 1.3 MB) Contents/MonoBundle/.xamarin/osx-arm64/Microsoft.VisualBasic.dll: 17,672 bytes (17.3 KB = 0.0 MB) Contents/MonoBundle/.xamarin/osx-arm64/Microsoft.Win32.Primitives.dll: 16,136 bytes (15.8 KB = 0.0 MB) @@ -196,7 +196,7 @@ Contents/MonoBundle/.xamarin/osx-x64/Microsoft.Extensions.Hosting.Abstractions.d Contents/MonoBundle/.xamarin/osx-x64/Microsoft.Extensions.Logging.Abstractions.dll: 142,640 bytes (139.3 KB = 0.1 MB) Contents/MonoBundle/.xamarin/osx-x64/Microsoft.Extensions.Options.dll: 128,776 bytes (125.8 KB = 0.1 MB) Contents/MonoBundle/.xamarin/osx-x64/Microsoft.Extensions.Primitives.dll: 74,000 bytes (72.3 KB = 0.1 MB) -Contents/MonoBundle/.xamarin/osx-x64/Microsoft.macOS.dll: 64,387,072 bytes (62,878.0 KB = 61.4 MB) +Contents/MonoBundle/.xamarin/osx-x64/Microsoft.macOS.dll: 64,387,584 bytes (62,878.5 KB = 61.4 MB) Contents/MonoBundle/.xamarin/osx-x64/Microsoft.VisualBasic.Core.dll: 1,165,576 bytes (1,138.3 KB = 1.1 MB) Contents/MonoBundle/.xamarin/osx-x64/Microsoft.VisualBasic.dll: 17,672 bytes (17.3 KB = 0.0 MB) Contents/MonoBundle/.xamarin/osx-x64/Microsoft.Win32.Primitives.dll: 16,136 bytes (15.8 KB = 0.0 MB) diff --git a/tests/dotnet/UnitTests/expected/MacOSX-NativeAOT-size.txt b/tests/dotnet/UnitTests/expected/MacOSX-NativeAOT-size.txt index f46eac64062d..ec95e91c0058 100644 --- a/tests/dotnet/UnitTests/expected/MacOSX-NativeAOT-size.txt +++ b/tests/dotnet/UnitTests/expected/MacOSX-NativeAOT-size.txt @@ -1,8 +1,8 @@ -AppBundleSize: 5,676,301 bytes (5,543.3 KB = 5.4 MB) +AppBundleSize: 5,676,317 bytes (5,543.3 KB = 5.4 MB) # The following list of files and their sizes is just informational / for review, and isn't used in the test: Contents/_CodeSignature/CodeResources: 2,644 bytes (2.6 KB = 0.0 MB) Contents/Info.plist: 730 bytes (0.7 KB = 0.0 MB) -Contents/MacOS/SizeTestApp: 5,670,912 bytes (5,538.0 KB = 5.4 MB) +Contents/MacOS/SizeTestApp: 5,670,928 bytes (5,538.0 KB = 5.4 MB) Contents/MonoBundle/runtimeconfig.bin: 1,766 bytes (1.7 KB = 0.0 MB) Contents/PkgInfo: 8 bytes (0.0 KB = 0.0 MB) Contents/Resources/archived-expanded-entitlements.xcent: 241 bytes (0.2 KB = 0.0 MB) diff --git a/tests/dotnet/UnitTests/expected/TVOS-CoreCLR-Interpreter-preservedapis.txt b/tests/dotnet/UnitTests/expected/TVOS-CoreCLR-Interpreter-preservedapis.txt index 79700d34c017..1386b847f7ad 100644 --- a/tests/dotnet/UnitTests/expected/TVOS-CoreCLR-Interpreter-preservedapis.txt +++ b/tests/dotnet/UnitTests/expected/TVOS-CoreCLR-Interpreter-preservedapis.txt @@ -194,6 +194,7 @@ Microsoft.tvOS.dll:Foundation.NSObject.set_handle(ObjCRuntime.NativeHandle) Microsoft.tvOS.dll:Foundation.NSObject.set_Handle(ObjCRuntime.NativeHandle) Microsoft.tvOS.dll:Foundation.NSObject.set_HasManagedRef(System.Boolean) Microsoft.tvOS.dll:Foundation.NSObject.set_IsDirectBinding(System.Boolean) +Microsoft.tvOS.dll:Foundation.NSObject.set_RemoveFromObjectMap(System.Boolean) Microsoft.tvOS.dll:Foundation.NSObject.ToString() Microsoft.tvOS.dll:Foundation.NSObject.xamarin_release_managed_ref(System.IntPtr, System.Byte) Microsoft.tvOS.dll:Foundation.NSObject.xamarin_set_gchandle_with_flags_safe(System.IntPtr, System.IntPtr, Foundation.NSObject/XamarinGCHandleFlags, System.IntPtr) @@ -726,6 +727,7 @@ Microsoft.tvOS.dll:ObjCRuntime.Runtime.RegisterDelegates(ObjCRuntime.Runtime/Ini Microsoft.tvOS.dll:ObjCRuntime.Runtime.RegisterNSObject(Foundation.NSObject, System.IntPtr) Microsoft.tvOS.dll:ObjCRuntime.Runtime.ReleaseBlockOnMainThread(System.IntPtr) Microsoft.tvOS.dll:ObjCRuntime.Runtime.ReleaseBlockWhenDelegateIsCollected(System.IntPtr, System.Delegate) +Microsoft.tvOS.dll:ObjCRuntime.Runtime.RemoveFromObjectMap(Foundation.NSObject) Microsoft.tvOS.dll:ObjCRuntime.Runtime.ResolvingEventHandler(System.Runtime.Loader.AssemblyLoadContext, System.Reflection.AssemblyName) Microsoft.tvOS.dll:ObjCRuntime.Runtime.retain_nativeobject(System.IntPtr, System.IntPtr*) Microsoft.tvOS.dll:ObjCRuntime.Runtime.RetainNativeObject(ObjCRuntime.INativeObject) @@ -909,6 +911,7 @@ Microsoft.tvOS.dll:System.Boolean Foundation.NSObject::HasManagedRef() Microsoft.tvOS.dll:System.Boolean Foundation.NSObject::InFinalizerQueue() Microsoft.tvOS.dll:System.Boolean Foundation.NSObject::IsDirectBinding() Microsoft.tvOS.dll:System.Boolean Foundation.NSObject::IsRegisteredToggleRef() +Microsoft.tvOS.dll:System.Boolean Foundation.NSObject::RemoveFromObjectMap() Microsoft.tvOS.dll:System.Boolean Foundation.NSObject/NSObject_Disposer::draining Microsoft.tvOS.dll:System.Boolean Foundation.NSObjectDataHandle::invalidated Microsoft.tvOS.dll:System.Boolean Foundation.NSObjectDataHandle::IsInvalid() diff --git a/tests/dotnet/UnitTests/expected/TVOS-CoreCLR-R2R-preservedapis.txt b/tests/dotnet/UnitTests/expected/TVOS-CoreCLR-R2R-preservedapis.txt index 79700d34c017..1386b847f7ad 100644 --- a/tests/dotnet/UnitTests/expected/TVOS-CoreCLR-R2R-preservedapis.txt +++ b/tests/dotnet/UnitTests/expected/TVOS-CoreCLR-R2R-preservedapis.txt @@ -194,6 +194,7 @@ Microsoft.tvOS.dll:Foundation.NSObject.set_handle(ObjCRuntime.NativeHandle) Microsoft.tvOS.dll:Foundation.NSObject.set_Handle(ObjCRuntime.NativeHandle) Microsoft.tvOS.dll:Foundation.NSObject.set_HasManagedRef(System.Boolean) Microsoft.tvOS.dll:Foundation.NSObject.set_IsDirectBinding(System.Boolean) +Microsoft.tvOS.dll:Foundation.NSObject.set_RemoveFromObjectMap(System.Boolean) Microsoft.tvOS.dll:Foundation.NSObject.ToString() Microsoft.tvOS.dll:Foundation.NSObject.xamarin_release_managed_ref(System.IntPtr, System.Byte) Microsoft.tvOS.dll:Foundation.NSObject.xamarin_set_gchandle_with_flags_safe(System.IntPtr, System.IntPtr, Foundation.NSObject/XamarinGCHandleFlags, System.IntPtr) @@ -726,6 +727,7 @@ Microsoft.tvOS.dll:ObjCRuntime.Runtime.RegisterDelegates(ObjCRuntime.Runtime/Ini Microsoft.tvOS.dll:ObjCRuntime.Runtime.RegisterNSObject(Foundation.NSObject, System.IntPtr) Microsoft.tvOS.dll:ObjCRuntime.Runtime.ReleaseBlockOnMainThread(System.IntPtr) Microsoft.tvOS.dll:ObjCRuntime.Runtime.ReleaseBlockWhenDelegateIsCollected(System.IntPtr, System.Delegate) +Microsoft.tvOS.dll:ObjCRuntime.Runtime.RemoveFromObjectMap(Foundation.NSObject) Microsoft.tvOS.dll:ObjCRuntime.Runtime.ResolvingEventHandler(System.Runtime.Loader.AssemblyLoadContext, System.Reflection.AssemblyName) Microsoft.tvOS.dll:ObjCRuntime.Runtime.retain_nativeobject(System.IntPtr, System.IntPtr*) Microsoft.tvOS.dll:ObjCRuntime.Runtime.RetainNativeObject(ObjCRuntime.INativeObject) @@ -909,6 +911,7 @@ Microsoft.tvOS.dll:System.Boolean Foundation.NSObject::HasManagedRef() Microsoft.tvOS.dll:System.Boolean Foundation.NSObject::InFinalizerQueue() Microsoft.tvOS.dll:System.Boolean Foundation.NSObject::IsDirectBinding() Microsoft.tvOS.dll:System.Boolean Foundation.NSObject::IsRegisteredToggleRef() +Microsoft.tvOS.dll:System.Boolean Foundation.NSObject::RemoveFromObjectMap() Microsoft.tvOS.dll:System.Boolean Foundation.NSObject/NSObject_Disposer::draining Microsoft.tvOS.dll:System.Boolean Foundation.NSObjectDataHandle::invalidated Microsoft.tvOS.dll:System.Boolean Foundation.NSObjectDataHandle::IsInvalid() diff --git a/tests/dotnet/UnitTests/expected/TVOS-CoreCLR-R2R-size.txt b/tests/dotnet/UnitTests/expected/TVOS-CoreCLR-R2R-size.txt index 75480cbb3fbc..7fc6345807d2 100644 --- a/tests/dotnet/UnitTests/expected/TVOS-CoreCLR-R2R-size.txt +++ b/tests/dotnet/UnitTests/expected/TVOS-CoreCLR-R2R-size.txt @@ -1,4 +1,4 @@ -AppBundleSize: 13,138,910 bytes (12,831.0 KB = 12.5 MB) +AppBundleSize: 12,627,550 bytes (12,331.6 KB = 12.0 MB) # The following list of files and their sizes is just informational / for review, and isn't used in the test: _CodeSignature/CodeResources: 10,705 bytes (10.5 KB = 0.0 MB) archived-expanded-entitlements.xcent: 384 bytes (0.4 KB = 0.0 MB) @@ -19,9 +19,9 @@ Frameworks/libSystem.Security.Cryptography.Native.Apple.framework/Info.plist: 85 Frameworks/libSystem.Security.Cryptography.Native.Apple.framework/libSystem.Security.Cryptography.Native.Apple: 195,232 bytes (190.7 KB = 0.2 MB) Frameworks/SizeTestApp.framework/_CodeSignature/CodeResources: 1,798 bytes (1.8 KB = 0.0 MB) Frameworks/SizeTestApp.framework/Info.plist: 792 bytes (0.8 KB = 0.0 MB) -Frameworks/SizeTestApp.framework/SizeTestApp: 3,936,512 bytes (3,844.2 KB = 3.8 MB) +Frameworks/SizeTestApp.framework/SizeTestApp: 3,424,640 bytes (3,344.4 KB = 3.3 MB) Info.plist: 1,117 bytes (1.1 KB = 0.0 MB) -Microsoft.tvOS.dll: 98,304 bytes (96.0 KB = 0.1 MB) +Microsoft.tvOS.dll: 98,816 bytes (96.5 KB = 0.1 MB) PkgInfo: 8 bytes (0.0 KB = 0.0 MB) runtimeconfig.bin: 1,481 bytes (1.4 KB = 0.0 MB) SizeTestApp: 197,104 bytes (192.5 KB = 0.2 MB) diff --git a/tests/dotnet/UnitTests/expected/TVOS-MonoVM-interpreter-size.txt b/tests/dotnet/UnitTests/expected/TVOS-MonoVM-interpreter-size.txt index e175f4f30f6e..7bb70b5cf899 100644 --- a/tests/dotnet/UnitTests/expected/TVOS-MonoVM-interpreter-size.txt +++ b/tests/dotnet/UnitTests/expected/TVOS-MonoVM-interpreter-size.txt @@ -1,9 +1,9 @@ -AppBundleSize: 3,635,745 bytes (3,550.5 KB = 3.5 MB) +AppBundleSize: 3,636,257 bytes (3,551.0 KB = 3.5 MB) # The following list of files and their sizes is just informational / for review, and isn't used in the test: _CodeSignature/CodeResources: 3,999 bytes (3.9 KB = 0.0 MB) archived-expanded-entitlements.xcent: 384 bytes (0.4 KB = 0.0 MB) Info.plist: 1,117 bytes (1.1 KB = 0.0 MB) -Microsoft.tvOS.dll: 154,112 bytes (150.5 KB = 0.1 MB) +Microsoft.tvOS.dll: 154,624 bytes (151.0 KB = 0.1 MB) PkgInfo: 8 bytes (0.0 KB = 0.0 MB) runtimeconfig.bin: 1,405 bytes (1.4 KB = 0.0 MB) SizeTestApp: 2,404,688 bytes (2,348.3 KB = 2.3 MB) diff --git a/tests/dotnet/UnitTests/expected/iOS-CoreCLR-Interpreter-preservedapis.txt b/tests/dotnet/UnitTests/expected/iOS-CoreCLR-Interpreter-preservedapis.txt index a36927a82849..d423b10859b0 100644 --- a/tests/dotnet/UnitTests/expected/iOS-CoreCLR-Interpreter-preservedapis.txt +++ b/tests/dotnet/UnitTests/expected/iOS-CoreCLR-Interpreter-preservedapis.txt @@ -194,6 +194,7 @@ Microsoft.iOS.dll:Foundation.NSObject.set_handle(ObjCRuntime.NativeHandle) Microsoft.iOS.dll:Foundation.NSObject.set_Handle(ObjCRuntime.NativeHandle) Microsoft.iOS.dll:Foundation.NSObject.set_HasManagedRef(System.Boolean) Microsoft.iOS.dll:Foundation.NSObject.set_IsDirectBinding(System.Boolean) +Microsoft.iOS.dll:Foundation.NSObject.set_RemoveFromObjectMap(System.Boolean) Microsoft.iOS.dll:Foundation.NSObject.ToString() Microsoft.iOS.dll:Foundation.NSObject.xamarin_release_managed_ref(System.IntPtr, System.Byte) Microsoft.iOS.dll:Foundation.NSObject.xamarin_set_gchandle_with_flags_safe(System.IntPtr, System.IntPtr, Foundation.NSObject/XamarinGCHandleFlags, System.IntPtr) @@ -726,6 +727,7 @@ Microsoft.iOS.dll:ObjCRuntime.Runtime.RegisterDelegates(ObjCRuntime.Runtime/Init Microsoft.iOS.dll:ObjCRuntime.Runtime.RegisterNSObject(Foundation.NSObject, System.IntPtr) Microsoft.iOS.dll:ObjCRuntime.Runtime.ReleaseBlockOnMainThread(System.IntPtr) Microsoft.iOS.dll:ObjCRuntime.Runtime.ReleaseBlockWhenDelegateIsCollected(System.IntPtr, System.Delegate) +Microsoft.iOS.dll:ObjCRuntime.Runtime.RemoveFromObjectMap(Foundation.NSObject) Microsoft.iOS.dll:ObjCRuntime.Runtime.ResolvingEventHandler(System.Runtime.Loader.AssemblyLoadContext, System.Reflection.AssemblyName) Microsoft.iOS.dll:ObjCRuntime.Runtime.retain_nativeobject(System.IntPtr, System.IntPtr*) Microsoft.iOS.dll:ObjCRuntime.Runtime.RetainNativeObject(ObjCRuntime.INativeObject) @@ -909,6 +911,7 @@ Microsoft.iOS.dll:System.Boolean Foundation.NSObject::HasManagedRef() Microsoft.iOS.dll:System.Boolean Foundation.NSObject::InFinalizerQueue() Microsoft.iOS.dll:System.Boolean Foundation.NSObject::IsDirectBinding() Microsoft.iOS.dll:System.Boolean Foundation.NSObject::IsRegisteredToggleRef() +Microsoft.iOS.dll:System.Boolean Foundation.NSObject::RemoveFromObjectMap() Microsoft.iOS.dll:System.Boolean Foundation.NSObject/NSObject_Disposer::draining Microsoft.iOS.dll:System.Boolean Foundation.NSObjectDataHandle::invalidated Microsoft.iOS.dll:System.Boolean Foundation.NSObjectDataHandle::IsInvalid() diff --git a/tests/dotnet/UnitTests/expected/iOS-CoreCLR-R2R-preservedapis.txt b/tests/dotnet/UnitTests/expected/iOS-CoreCLR-R2R-preservedapis.txt index a36927a82849..d423b10859b0 100644 --- a/tests/dotnet/UnitTests/expected/iOS-CoreCLR-R2R-preservedapis.txt +++ b/tests/dotnet/UnitTests/expected/iOS-CoreCLR-R2R-preservedapis.txt @@ -194,6 +194,7 @@ Microsoft.iOS.dll:Foundation.NSObject.set_handle(ObjCRuntime.NativeHandle) Microsoft.iOS.dll:Foundation.NSObject.set_Handle(ObjCRuntime.NativeHandle) Microsoft.iOS.dll:Foundation.NSObject.set_HasManagedRef(System.Boolean) Microsoft.iOS.dll:Foundation.NSObject.set_IsDirectBinding(System.Boolean) +Microsoft.iOS.dll:Foundation.NSObject.set_RemoveFromObjectMap(System.Boolean) Microsoft.iOS.dll:Foundation.NSObject.ToString() Microsoft.iOS.dll:Foundation.NSObject.xamarin_release_managed_ref(System.IntPtr, System.Byte) Microsoft.iOS.dll:Foundation.NSObject.xamarin_set_gchandle_with_flags_safe(System.IntPtr, System.IntPtr, Foundation.NSObject/XamarinGCHandleFlags, System.IntPtr) @@ -726,6 +727,7 @@ Microsoft.iOS.dll:ObjCRuntime.Runtime.RegisterDelegates(ObjCRuntime.Runtime/Init Microsoft.iOS.dll:ObjCRuntime.Runtime.RegisterNSObject(Foundation.NSObject, System.IntPtr) Microsoft.iOS.dll:ObjCRuntime.Runtime.ReleaseBlockOnMainThread(System.IntPtr) Microsoft.iOS.dll:ObjCRuntime.Runtime.ReleaseBlockWhenDelegateIsCollected(System.IntPtr, System.Delegate) +Microsoft.iOS.dll:ObjCRuntime.Runtime.RemoveFromObjectMap(Foundation.NSObject) Microsoft.iOS.dll:ObjCRuntime.Runtime.ResolvingEventHandler(System.Runtime.Loader.AssemblyLoadContext, System.Reflection.AssemblyName) Microsoft.iOS.dll:ObjCRuntime.Runtime.retain_nativeobject(System.IntPtr, System.IntPtr*) Microsoft.iOS.dll:ObjCRuntime.Runtime.RetainNativeObject(ObjCRuntime.INativeObject) @@ -909,6 +911,7 @@ Microsoft.iOS.dll:System.Boolean Foundation.NSObject::HasManagedRef() Microsoft.iOS.dll:System.Boolean Foundation.NSObject::InFinalizerQueue() Microsoft.iOS.dll:System.Boolean Foundation.NSObject::IsDirectBinding() Microsoft.iOS.dll:System.Boolean Foundation.NSObject::IsRegisteredToggleRef() +Microsoft.iOS.dll:System.Boolean Foundation.NSObject::RemoveFromObjectMap() Microsoft.iOS.dll:System.Boolean Foundation.NSObject/NSObject_Disposer::draining Microsoft.iOS.dll:System.Boolean Foundation.NSObjectDataHandle::invalidated Microsoft.iOS.dll:System.Boolean Foundation.NSObjectDataHandle::IsInvalid() diff --git a/tests/dotnet/UnitTests/expected/iOS-CoreCLR-R2R-size.txt b/tests/dotnet/UnitTests/expected/iOS-CoreCLR-R2R-size.txt index 4689c1729746..9448cbdfcb60 100644 --- a/tests/dotnet/UnitTests/expected/iOS-CoreCLR-R2R-size.txt +++ b/tests/dotnet/UnitTests/expected/iOS-CoreCLR-R2R-size.txt @@ -1,4 +1,4 @@ -AppBundleSize: 13,184,325 bytes (12,875.3 KB = 12.6 MB) +AppBundleSize: 12,675,941 bytes (12,378.8 KB = 12.1 MB) # The following list of files and their sizes is just informational / for review, and isn't used in the test: _CodeSignature/CodeResources: 11,701 bytes (11.4 KB = 0.0 MB) archived-expanded-entitlements.xcent: 384 bytes (0.4 KB = 0.0 MB) @@ -22,9 +22,9 @@ Frameworks/libSystem.Security.Cryptography.Native.Apple.framework/Info.plist: 88 Frameworks/libSystem.Security.Cryptography.Native.Apple.framework/libSystem.Security.Cryptography.Native.Apple: 194,256 bytes (189.7 KB = 0.2 MB) Frameworks/SizeTestApp.framework/_CodeSignature/CodeResources: 1,798 bytes (1.8 KB = 0.0 MB) Frameworks/SizeTestApp.framework/Info.plist: 816 bytes (0.8 KB = 0.0 MB) -Frameworks/SizeTestApp.framework/SizeTestApp: 3,913,728 bytes (3,822.0 KB = 3.7 MB) +Frameworks/SizeTestApp.framework/SizeTestApp: 3,404,832 bytes (3,325.0 KB = 3.2 MB) Info.plist: 1,141 bytes (1.1 KB = 0.0 MB) -Microsoft.iOS.dll: 98,304 bytes (96.0 KB = 0.1 MB) +Microsoft.iOS.dll: 98,816 bytes (96.5 KB = 0.1 MB) PkgInfo: 8 bytes (0.0 KB = 0.0 MB) runtimeconfig.bin: 1,481 bytes (1.4 KB = 0.0 MB) SizeTestApp: 196,048 bytes (191.5 KB = 0.2 MB) diff --git a/tests/dotnet/UnitTests/expected/iOS-MonoVM-interpreter-size.txt b/tests/dotnet/UnitTests/expected/iOS-MonoVM-interpreter-size.txt index 87dca5eef107..961e49e1be9a 100644 --- a/tests/dotnet/UnitTests/expected/iOS-MonoVM-interpreter-size.txt +++ b/tests/dotnet/UnitTests/expected/iOS-MonoVM-interpreter-size.txt @@ -1,9 +1,9 @@ -AppBundleSize: 3,622,183 bytes (3,537.3 KB = 3.5 MB) +AppBundleSize: 3,622,695 bytes (3,537.8 KB = 3.5 MB) # The following list of files and their sizes is just informational / for review, and isn't used in the test: _CodeSignature/CodeResources: 3,997 bytes (3.9 KB = 0.0 MB) archived-expanded-entitlements.xcent: 384 bytes (0.4 KB = 0.0 MB) Info.plist: 1,141 bytes (1.1 KB = 0.0 MB) -Microsoft.iOS.dll: 154,112 bytes (150.5 KB = 0.1 MB) +Microsoft.iOS.dll: 154,624 bytes (151.0 KB = 0.1 MB) PkgInfo: 8 bytes (0.0 KB = 0.0 MB) runtimeconfig.bin: 1,405 bytes (1.4 KB = 0.0 MB) SizeTestApp: 2,391,104 bytes (2,335.1 KB = 2.3 MB) From fbb929bcb10ce19d7bd29a1e943ff09a577b774d Mon Sep 17 00:00:00 2001 From: Rolf Bjarne Kvinge Date: Wed, 22 Apr 2026 13:38:33 +0200 Subject: [PATCH 36/47] [dotnet-linker] Use [DynamicDependency] attributes instead of manual marking of NSObjects. (#25146) Add a new `MarkNSObjectsStep` step that runs before the mark stage in the trimmer, which uses `[DynamicDependency]` attributes to ensure `NSObject` subclasses aren't trimmed away when they shouldn't be. The logic is identical to the existing `MarkNSObjects` sub step, except `MarkNSObjects` directly marks APIs. The advantage is that the new step can easily be moved out of the trimmer (which will be done in a later stage). The new behavior is the default, but keep the old behavior behind an opt-out flag for now. Also update the preservation code to not handle "Xamarin.iOS.dll" or "Xamarin.Forms.Platform.iOS", since those assemblies aren't used anymore. This makes it easier to move this code out of a custom linker step in the future. There's one non-obvious part here: I had to move `Class.ValidateObjectPointers` to the `Runtime` class, because now the `Class` type's `IsBeforeFieldInit` flag is `false` (because otherwise the trimmer doesn't honor the `[DynamicDependency]` attributes we're now adding to the `Class`'s static cctor), and then the trimmer deems the static cctor as having side effects: https://github.com/dotnet/runtime/blob/16b9ae91f456c65ffcc5b28afc97034d828a19ad/src/tools/illink/src/linker/Linker.Steps/UnreachableBlocksOptimizer.cs#L268 and it refuses to inline anything: https://github.com/dotnet/runtime/blob/16b9ae91f456c65ffcc5b28afc97034d828a19ad/src/tools/illink/src/linker/Linker.Steps/UnreachableBlocksOptimizer.cs#L526-L529 Contributes towards https://github.com/dotnet/macios/issues/17693. --------- Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- dotnet/targets/Xamarin.Shared.Sdk.targets | 5 +- src/ILLink.Substitutions.MacCatalyst.xml | 2 +- src/ILLink.Substitutions.iOS.xml | 2 +- src/ILLink.Substitutions.macOS.xml | 2 +- src/ILLink.Substitutions.tvOS.xml | 2 +- src/ObjCRuntime/Class.cs | 9 +- src/ObjCRuntime/Runtime.cs | 7 + ...alyst-MonoVM-interpreter-preservedapis.txt | 40 ++++++ .../MacCatalyst-MonoVM-interpreter-size.txt | 10 +- .../MacCatalyst-MonoVM-preservedapis.txt | 39 ++++++ .../expected/MacCatalyst-MonoVM-size.txt | 16 +-- .../expected/MacCatalyst-NativeAOT-size.txt | 6 +- .../MacOSX-CoreCLR-Interpreter-size.txt | 6 +- .../expected/MacOSX-NativeAOT-size.txt | 6 +- .../TVOS-MonoVM-interpreter-preservedapis.txt | 40 ++++++ .../expected/TVOS-MonoVM-interpreter-size.txt | 8 +- .../expected/TVOS-MonoVM-preservedapis.txt | 39 ++++++ .../UnitTests/expected/TVOS-MonoVM-size.txt | 14 +- .../expected/TVOS-NativeAOT-size.txt | 6 +- .../iOS-MonoVM-interpreter-preservedapis.txt | 40 ++++++ .../expected/iOS-MonoVM-interpreter-size.txt | 10 +- .../expected/iOS-MonoVM-preservedapis.txt | 39 ++++++ .../UnitTests/expected/iOS-MonoVM-size.txt | 14 +- .../UnitTests/expected/iOS-NativeAOT-size.txt | 6 +- tools/common/DerivedLinkContext.cs | 1 + tools/dotnet-linker/AppBundleRewriter.cs | 16 ++- tools/dotnet-linker/MarkNSObjectsStep.cs | 81 ++++++++++++ .../Steps/ManagedRegistrarStep.cs | 8 ++ tools/linker/MarkNSObjects.cs | 124 ++++++++++++------ 29 files changed, 487 insertions(+), 111 deletions(-) create mode 100644 tools/dotnet-linker/MarkNSObjectsStep.cs diff --git a/dotnet/targets/Xamarin.Shared.Sdk.targets b/dotnet/targets/Xamarin.Shared.Sdk.targets index 7c03a3e56412..019e7fda263a 100644 --- a/dotnet/targets/Xamarin.Shared.Sdk.targets +++ b/dotnet/targets/Xamarin.Shared.Sdk.targets @@ -554,6 +554,8 @@ <_UseLinkDescriptionForApplyPreserveAttribute Condition="'$(_UseLinkDescriptionForApplyPreserveAttribute)' == '' And '$(_XamarinRuntime)' == 'NativeAOT'">true <_UseLinkDescriptionForApplyPreserveAttribute Condition="'$(_UseLinkDescriptionForApplyPreserveAttribute)' == ''">$(_UseDynamicDependenciesInsteadOfMarking) <_UseDynamicDependenciesForMarkStaticRegistrar Condition="'$(_UseDynamicDependenciesForMarkStaticRegistrar)' == ''">$(_UseDynamicDependenciesInsteadOfMarking) + <_UseDynamicDependenciesForMarkNSObjects Condition="'$(_UseDynamicDependenciesForMarkNSObjects)' == ''">$(_UseDynamicDependenciesInsteadOfMarking) + <_UseDynamicDependenciesForMarkDispatcher Condition="'$(_UseDynamicDependenciesForMarkDispatcher)' == '' And '$(_UseDynamicDependenciesForApplyPreserveAttribute)' == 'true' And '$(_UseDynamicDependenciesForMarkStaticRegistrar)' == 'true' And '$(_UseDynamicDependenciesForMarkNSObjects)' == 'true'">true @@ -761,6 +763,7 @@ <_TrimmerCustomSteps Include="$(_AdditionalTaskAssembly)" BeforeStep="MarkStep" Type="Xamarin.Linker.Steps.OptimizeGeneratedCodeStep" Condition="'$(_AreAnyAssembliesTrimmed)' == 'true' And '$(_UseDynamicDependenciesForGeneratedCodeOptimizations)' == 'true'" /> <_TrimmerCustomSteps Include="$(_AdditionalTaskAssembly)" BeforeStep="MarkStep" Type="Xamarin.Linker.Steps.ApplyPreserveAttributeStep" Condition="'$(_AreAnyAssembliesTrimmed)' == 'true' And '$(_UseLinkDescriptionForApplyPreserveAttribute)' == 'true'" /> <_TrimmerCustomSteps Include="$(_AdditionalTaskAssembly)" BeforeStep="MarkStep" Type="Xamarin.Linker.Steps.MarkForStaticRegistrarStep" Condition="'$(_AreAnyAssembliesTrimmed)' == 'true' And '$(_UseDynamicDependenciesForMarkStaticRegistrar)' == 'true'" /> + <_TrimmerCustomSteps Include="$(_AdditionalTaskAssembly)" BeforeStep="MarkStep" Type="Xamarin.Linker.Steps.MarkNSObjectsStep" Condition="'$(_AreAnyAssembliesTrimmed)' == 'true' And '$(_UseDynamicDependenciesForMarkNSObjects)' == 'true'" /> <_TrimmerCustomSteps Include="$(_AdditionalTaskAssembly)" BeforeStep="MarkStep" Type="MonoTouch.Tuner.RegistrarRemovalTrackingStep" /> @@ -775,7 +778,7 @@ <_TrimmerCustomSteps Include="$(_AdditionalTaskAssembly)" Condition="'$(_AreAnyAssembliesTrimmed)' == 'true'" Type="Xamarin.Linker.BackingFieldDelayHandler" /> <_TrimmerCustomSteps Include="$(_AdditionalTaskAssembly)" Condition="'$(_AreAnyAssembliesTrimmed)' == 'true' And '$(_UseDynamicDependenciesForProtocolPreservation)' != 'true'" Type="Xamarin.Linker.MarkIProtocolHandler" /> - <_TrimmerCustomSteps Include="$(_AdditionalTaskAssembly)" Condition="'$(_AreAnyAssembliesTrimmed)' == 'true'" Type="Xamarin.Linker.Steps.MarkDispatcher" /> + <_TrimmerCustomSteps Include="$(_AdditionalTaskAssembly)" Condition="'$(_AreAnyAssembliesTrimmed)' == 'true' And '$(_UseDynamicDependenciesForMarkDispatcher)' != 'true'" Type="Xamarin.Linker.Steps.MarkDispatcher" /> <_TrimmerCustomSteps Include="$(_AdditionalTaskAssembly)" Condition="'$(_AreAnyAssembliesTrimmed)' == 'true' And '$(_UseDynamicDependenciesForSmartEnumPreservation)' != 'true'" Type="Xamarin.Linker.Steps.PreserveSmartEnumConversionsHandler" /> $(NoWarn);CA1422 + enable + Nullable From c11dc4a31701a68a2d8dfcc84a1f08be6aa94d4f Mon Sep 17 00:00:00 2001 From: Rolf Bjarne Kvinge Date: Thu, 23 Apr 2026 19:15:55 +0200 Subject: [PATCH 43/47] [Foundation] Improve potential reentrancy problems in NSUrlSessionHandler. (#25183) C# locks are re-entrant, so try to avoid re-entrancy issues by: * In `RemoveInflightData`: fetch and remove the inflight data in a single `Dictionary.Remove` call. This is also faster than doing two dictionary lookups. * In `Dispose`: collect all tasks to cancel and dispose first (inside the lock), and then we cancel and dispose after the lock. This hopefully fixes https://github.com/dotnet/macios/issues/20345 (this solution was tested by a customer and apparently worked). Might fix https://github.com/dotnet/macios/issues/20345. --- src/Foundation/NSUrlSessionHandler.cs | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/src/Foundation/NSUrlSessionHandler.cs b/src/Foundation/NSUrlSessionHandler.cs index d763664a08fb..2c0af8202220 100644 --- a/src/Foundation/NSUrlSessionHandler.cs +++ b/src/Foundation/NSUrlSessionHandler.cs @@ -176,10 +176,9 @@ public NSUrlSessionHandler (NSUrlSessionConfiguration configuration) void RemoveInflightData (NSUrlSessionTask task, bool cancel = true) { lock (inflightRequestsLock) { - if (inflightRequests.TryGetValue (task, out var data)) { + if (inflightRequests.Remove (task, out var data)) { if (cancel) data.CancellationTokenSource.Cancel (); - inflightRequests.Remove (task); } } @@ -192,14 +191,16 @@ void RemoveInflightData (NSUrlSessionTask task, bool cancel = true) /// protected override void Dispose (bool disposing) { + var tasks = new List (); lock (inflightRequestsLock) { - foreach (var pair in inflightRequests) { - pair.Key?.Cancel (); - pair.Key?.Dispose (); - } - + tasks.AddRange (inflightRequests.Keys); inflightRequests.Clear (); } + foreach (var task in tasks) { + task.Cancel (); + task.Dispose (); + } + session.InvalidateAndCancel (); base.Dispose (disposing); } From a144156a9f0273559d8c204d1b1c2b00345a7ff2 Mon Sep 17 00:00:00 2001 From: Rolf Bjarne Kvinge Date: Thu, 23 Apr 2026 22:42:10 +0200 Subject: [PATCH 44/47] [msbuild] Copy some ILLink output back to Windows when building remotely. (#25235) This is needed when building iOS apps using CoreCLR or NativeAOT remotely (in the .NET 11 branch), and I'm adding these changes into main to ease upcoming changes to these files in main. No tests here, but the net11.0 branch already contains tests that will verify this. Ref: #24521 --- msbuild/Xamarin.MacDev.Tasks/Tasks/ILLink.cs | 57 ++++++++++++++++++- .../Xamarin.MacDev.Tasks/Tasks/XamarinTask.cs | 11 +++- .../Xamarin.iOS.Common.After.targets | 4 ++ 3 files changed, 67 insertions(+), 5 deletions(-) diff --git a/msbuild/Xamarin.MacDev.Tasks/Tasks/ILLink.cs b/msbuild/Xamarin.MacDev.Tasks/Tasks/ILLink.cs index 2a3bb34e96bd..fec1b1aae419 100644 --- a/msbuild/Xamarin.MacDev.Tasks/Tasks/ILLink.cs +++ b/msbuild/Xamarin.MacDev.Tasks/Tasks/ILLink.cs @@ -32,10 +32,51 @@ public class ILLink : global::ILLink.Tasks.ILLink, ITaskCallback, IHasSessionId [Output] public ITaskItem [] LinkedItems { get; set; } = Array.Empty (); + // if the linked output should be copied to windows (as opposed to only creating empty output files) + public bool CopyToWindows { get; set; } + + ITaskItem []? linkerCacheItemsToCopyToWindows; + ITaskItem [] LinkerCacheItemsToCopyToWindows { + get { + if (!CopyToWindows) + return []; + + // We might get called before LinkerCacheItems has been populated, in which case we don't want to cache any results. + if (LinkerCacheItems.Length == 0) + return []; + + if (linkerCacheItemsToCopyToWindows is null) { + linkerCacheItemsToCopyToWindows = LinkerCacheItems.Where (item => { + var extension = item.GetMetadata ("Extension"); + switch (extension.ToLowerInvariant ()) { + case ".h": + case ".m": + case ".mm": + return false; // we don't need any native code on Windows. + default: + return true; // copy the rest of the files to Windows + } + }).ToArray (); + } + return linkerCacheItemsToCopyToWindows; + } + } + public override bool Execute () { - if (this.ShouldExecuteRemotely (SessionId)) - return XamarinTask.ExecuteRemotely (this); + if (this.ShouldExecuteRemotely (SessionId)) { + if (XamarinTask.ExecuteRemotely (this, out var taskRunner)) { + if (CopyToWindows) { + var filesToCopy = new List (); + filesToCopy.AddRange (LinkedItems); + filesToCopy.AddRange (LinkerCacheItemsToCopyToWindows); + XamarinTask.CopyFilesToWindowsAsync (this, taskRunner, filesToCopy).Wait (); + } + return true; + } + + return false; + } // Capture execution start time for Mac-side detection var executionStartTime = DateTime.UtcNow; @@ -86,6 +127,18 @@ ITaskItem [] GetAllFilesWithMetadata (string directory, DateTime executionStartT public bool ShouldCreateOutputFile (ITaskItem item) { + if (CopyToWindows) { + if (Array.IndexOf (LinkedItems, item) >= 0) { + Log.LogMessage (MessageImportance.Low, "Not creating output file '{0}' because the entire file will be copied to Windows", item.ItemSpec); + return false; + } + + if (Array.IndexOf (LinkerCacheItemsToCopyToWindows, item) >= 0) { + Log.LogMessage (MessageImportance.Low, "Not creating output file '{0}' because the entire file will be copied to Windows (because it's not native code)", item.ItemSpec); + return false; + } + } + var modifiedMetadata = item.GetMetadata ("Modified"); var wasModified = bool.TryParse (modifiedMetadata, out var modified) && modified; diff --git a/msbuild/Xamarin.MacDev.Tasks/Tasks/XamarinTask.cs b/msbuild/Xamarin.MacDev.Tasks/Tasks/XamarinTask.cs index f25ef2fd388c..603f85252b07 100644 --- a/msbuild/Xamarin.MacDev.Tasks/Tasks/XamarinTask.cs +++ b/msbuild/Xamarin.MacDev.Tasks/Tasks/XamarinTask.cs @@ -317,14 +317,19 @@ protected internal static IEnumerable CreateItemsForAllFilesRecursive return CreateItemsForAllFilesRecursively (directories?.Select (v => v.ItemSpec)); } - internal async global::System.Threading.Tasks.Task CopyFilesToWindowsAsync (TaskRunner runner, IEnumerable items) + internal static async global::System.Threading.Tasks.Task CopyFilesToWindowsAsync (Task task, TaskRunner runner, IEnumerable items) { foreach (var item in items) { - Log.LogMessage (MessageImportance.Low, $"Copying {item.ItemSpec} from the remote Mac to Windows"); - await runner.GetFileAsync (this, item.ItemSpec).ConfigureAwait (false); + task.Log.LogMessage (MessageImportance.Low, $"Copying {item.ItemSpec} from the remote Mac to Windows"); + await runner.GetFileAsync (task, item.ItemSpec).ConfigureAwait (false); } } + internal global::System.Threading.Tasks.Task CopyFilesToWindowsAsync (TaskRunner runner, IEnumerable items) + { + return CopyFilesToWindowsAsync (this, runner, items); + } + /// /// Computes the executable to launch given the specified tool in the Xcode's toolchain: /// * If is specified, return that. diff --git a/msbuild/Xamarin.iOS.Tasks.Windows/Xamarin.iOS.Common.After.targets b/msbuild/Xamarin.iOS.Tasks.Windows/Xamarin.iOS.Common.After.targets index 707596e15f6a..a65255b87f29 100644 --- a/msbuild/Xamarin.iOS.Tasks.Windows/Xamarin.iOS.Common.After.targets +++ b/msbuild/Xamarin.iOS.Tasks.Windows/Xamarin.iOS.Common.After.targets @@ -375,6 +375,8 @@ Copyright (C) 2011-2013 Xamarin. All rights reserved. $(_TrimmerDefaultAction) <_RemoteExtraTrimmerArgs Condition="'$(_ExtraTrimmerArgs)' != ''">$(_ExtraTrimmerArgs.Replace('$(NetCoreRoot)', '$(_DotNetRootRemoteDirectory)')) + + <_CopyLinkerOutputToWindows Condition="'$(UseMonoRuntime)' == 'false'">true @@ -387,6 +389,8 @@ Copyright (C) 2011-2013 Xamarin. All rights reserved. Date: Thu, 23 Apr 2026 22:44:28 +0200 Subject: [PATCH 45/47] [msbuild] Add a condition to make sure empty item groups aren't processed. (#25236) This is a workaround for https://github.com/dotnet/msbuild/issues/4056. Fixes https://devdiv.visualstudio.com/DevDiv/_workitems/edit/2903015. --- msbuild/Xamarin.Shared/Xamarin.Shared.targets | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/msbuild/Xamarin.Shared/Xamarin.Shared.targets b/msbuild/Xamarin.Shared/Xamarin.Shared.targets index 7dfa76428c93..4fb615930ad4 100644 --- a/msbuild/Xamarin.Shared/Xamarin.Shared.targets +++ b/msbuild/Xamarin.Shared/Xamarin.Shared.targets @@ -2952,7 +2952,8 @@ Copyright (C) 2018 Microsoft. All rights reserved. - <_PostProcessingItem Include="@(_FilteredFrameworkToPublish->'$(_AppBundleName)$(AppBundleExtension)/$(_AppFrameworksRelativePath)%(Filename)%(Extension).framework/%(Filename)%(Extension)')"> + + <_PostProcessingItem Condition="@(_FilteredFrameworkToPublish->Count()) > 0" Include="@(_FilteredFrameworkToPublish->'$(_AppBundleName)$(AppBundleExtension)/$(_AppFrameworksRelativePath)%(Filename)%(Extension).framework/%(Filename)%(Extension)')"> %(Identity) From 61dbe84cb03b595b8b35957a4d8ba91598494b57 Mon Sep 17 00:00:00 2001 From: Rolf Bjarne Kvinge Date: Fri, 24 Apr 2026 08:50:10 +0200 Subject: [PATCH 46/47] Update global.json after merge. --- global.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/global.json b/global.json index 73f387f3d324..2ff76b464f1c 100644 --- a/global.json +++ b/global.json @@ -1,6 +1,6 @@ { "sdk": { - "version": "11.0.100-preview.4.26210.111", + "version": "11.0.100-preview.4.26215.121", "paths": [ "builds/downloads/dotnet", "$host$" @@ -8,9 +8,9 @@ "errorMessage": "The .NET SDK could not be found, please run 'make dotnet -C builds'." }, "tools": { - "dotnet": "11.0.100-preview.4.26210.111" + "dotnet": "11.0.100-preview.4.26215.121" }, "msbuild-sdks": { - "Microsoft.DotNet.Arcade.Sdk": "11.0.0-beta.26210.111" + "Microsoft.DotNet.Arcade.Sdk": "11.0.0-beta.26215.121" } } From f3f8842140fbb2ec3d8ac8d17d11969961d7aa12 Mon Sep 17 00:00:00 2001 From: Rolf Bjarne Kvinge Date: Fri, 24 Apr 2026 09:18:16 +0200 Subject: [PATCH 47/47] [tests] Update expected sizes. --- ...lyst-CoreCLR-Interpreter-preservedapis.txt | 59 +- .../MacCatalyst-CoreCLR-Interpreter-size.txt | 10 +- .../MacCatalyst-CoreCLR-R2R-preservedapis.txt | 59 +- .../expected/MacCatalyst-CoreCLR-R2R-size.txt | 12 +- .../MacCatalyst-MonoVM-interpreter-size.txt | 10 +- .../expected/MacCatalyst-MonoVM-size.txt | 14 +- .../expected/MacCatalyst-NativeAOT-size.txt | 4 +- .../MacOSX-CoreCLR-Interpreter-size.txt | 658 ++++++++---------- .../expected/MacOSX-CoreCLR-R2R-size.txt | 658 ++++++++---------- .../expected/MacOSX-NativeAOT-size.txt | 4 +- ...TVOS-CoreCLR-Interpreter-preservedapis.txt | 59 +- .../TVOS-CoreCLR-Interpreter-size.txt | 6 +- .../TVOS-CoreCLR-R2R-preservedapis.txt | 59 +- .../expected/TVOS-CoreCLR-R2R-size.txt | 6 +- .../expected/TVOS-MonoVM-interpreter-size.txt | 6 +- .../UnitTests/expected/TVOS-MonoVM-size.txt | 14 +- .../expected/TVOS-NativeAOT-size.txt | 4 +- .../iOS-CoreCLR-Interpreter-preservedapis.txt | 59 +- .../expected/iOS-CoreCLR-Interpreter-size.txt | 10 +- .../iOS-CoreCLR-R2R-preservedapis.txt | 59 +- .../expected/iOS-CoreCLR-R2R-size.txt | 10 +- .../expected/iOS-MonoVM-interpreter-size.txt | 6 +- .../UnitTests/expected/iOS-MonoVM-size.txt | 14 +- .../UnitTests/expected/iOS-NativeAOT-size.txt | 4 +- 24 files changed, 939 insertions(+), 865 deletions(-) diff --git a/tests/dotnet/UnitTests/expected/MacCatalyst-CoreCLR-Interpreter-preservedapis.txt b/tests/dotnet/UnitTests/expected/MacCatalyst-CoreCLR-Interpreter-preservedapis.txt index 77690c4e653e..3166fc0d9998 100644 --- a/tests/dotnet/UnitTests/expected/MacCatalyst-CoreCLR-Interpreter-preservedapis.txt +++ b/tests/dotnet/UnitTests/expected/MacCatalyst-CoreCLR-Interpreter-preservedapis.txt @@ -863,6 +863,7 @@ Microsoft.MacCatalyst.dll:ObjCRuntime.RuntimeTypeHandleEqualityComparer.Equals(S Microsoft.MacCatalyst.dll:ObjCRuntime.RuntimeTypeHandleEqualityComparer.GetHashCode(System.RuntimeTypeHandle) Microsoft.MacCatalyst.dll:ObjCRuntime.Selector Microsoft.MacCatalyst.dll:ObjCRuntime.Selector._Xamarin_ConstructINativeObject(ObjCRuntime.NativeHandle, System.Boolean) +Microsoft.MacCatalyst.dll:ObjCRuntime.Selector..cctor() Microsoft.MacCatalyst.dll:ObjCRuntime.Selector..ctor(ObjCRuntime.NativeHandle, System.Boolean) Microsoft.MacCatalyst.dll:ObjCRuntime.Selector..ctor(ObjCRuntime.NativeHandle) Microsoft.MacCatalyst.dll:ObjCRuntime.Selector.Equals(ObjCRuntime.Selector) @@ -1173,6 +1174,7 @@ Microsoft.MacCatalyst.dll:UIKit.UIApplication.xamarin_UIApplicationMain(System.I Microsoft.MacCatalyst.dll:UIKit.UIApplicationDelegate Microsoft.MacCatalyst.dll:UIKit.UIApplicationDelegate._Xamarin_ConstructINativeObject(ObjCRuntime.NativeHandle, System.Boolean) Microsoft.MacCatalyst.dll:UIKit.UIApplicationDelegate._Xamarin_ConstructNSObject(ObjCRuntime.NativeHandle) +Microsoft.MacCatalyst.dll:UIKit.UIApplicationDelegate..cctor() Microsoft.MacCatalyst.dll:UIKit.UIApplicationDelegate..ctor() Microsoft.MacCatalyst.dll:UIKit.UIApplicationDelegate..ctor(ObjCRuntime.NativeHandle) Microsoft.MacCatalyst.dll:UIKit.UIApplicationDelegate..ctor(System.IntPtr, ObjCRuntime.IManagedRegistrar) @@ -5424,7 +5426,41 @@ System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.ConstantExpectedAttri System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute.set_Max(System.Object) System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DisallowNullAttribute System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DisallowNullAttribute..ctor() +System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes +System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes::All +System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes::AllConstructors +System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes::AllEvents +System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes::AllFields +System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes::AllMethods +System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes::AllNestedTypes +System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes::AllProperties +System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes::Interfaces +System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes::None +System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes::NonPublicConstructors +System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes::NonPublicConstructorsWithInherited +System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes::NonPublicEvents +System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes::NonPublicEventsWithInherited +System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes::NonPublicFields +System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes::NonPublicFieldsWithInherited +System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes::NonPublicMethods +System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes::NonPublicMethodsWithInherited +System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes::NonPublicNestedTypes +System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes::NonPublicNestedTypesWithInherited +System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes::NonPublicProperties +System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes::NonPublicPropertiesWithInherited +System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes::PublicConstructors +System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes::PublicConstructorsWithInherited +System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes::PublicEvents +System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes::PublicFields +System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes::PublicMethods +System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes::PublicNestedTypes +System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes::PublicNestedTypesWithInherited +System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes::PublicParameterlessConstructor +System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes::PublicProperties +System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes System.Diagnostics.CodeAnalysis.DynamicDependencyAttribute::k__BackingField System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DynamicDependencyAttribute +System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DynamicDependencyAttribute..ctor(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes, System.Type) +System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DynamicDependencyAttribute..ctor(System.String, System.String, System.String) System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DynamicDependencyAttribute..ctor(System.String, System.Type) System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.MaybeNullAttribute System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.MaybeNullAttribute..ctor() @@ -6181,7 +6217,6 @@ System.Private.CoreLib.dll:System.Func`2 System.IO.S System.Private.CoreLib.dll:System.Func`2 System.IO.Stream/<>c::<>9__53_0 System.Private.CoreLib.dll:System.Func`2 System.Threading.Monitor::s_createCondition System.Private.CoreLib.dll:System.Func`2 System.Reflection.TypeNameResolver::_assemblyResolver -System.Private.CoreLib.dll:System.Func`2 System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods/<>O::<0>__CreateMarshalMethods System.Private.CoreLib.dll:System.Func`2 System.StubHelpers.StubHelpers/<>c::<>9__28_0 System.Private.CoreLib.dll:System.Func`3 System.Private.CoreLib.dll:System.Func`3..ctor(System.Object, System.IntPtr) @@ -8252,6 +8287,7 @@ System.Private.CoreLib.dll:System.Int32 System.DefaultBinder/BinderState::_origi System.Private.CoreLib.dll:System.Int32 System.DefaultBinder/Primitives::value__ System.Private.CoreLib.dll:System.Int32 System.Delegate/InvocationListEnumerator`1::_index System.Private.CoreLib.dll:System.Int32 System.DelegateBindingFlags::value__ +System.Private.CoreLib.dll:System.Int32 System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes::value__ System.Private.CoreLib.dll:System.Int32 System.Diagnostics.Contracts.ContractFailureKind::value__ System.Private.CoreLib.dll:System.Int32 System.Diagnostics.DebuggableAttribute/DebuggingModes::value__ System.Private.CoreLib.dll:System.Int32 System.Diagnostics.StackFrame::_columnNumber @@ -8673,6 +8709,7 @@ System.Private.CoreLib.dll:System.Int32 System.Runtime.InteropServices.GCHandleS System.Private.CoreLib.dll:System.Int32 System.Runtime.InteropServices.GCHandleType::value__ System.Private.CoreLib.dll:System.Int32 System.Runtime.InteropServices.Marshal::SystemDefaultCharSize System.Private.CoreLib.dll:System.Int32 System.Runtime.InteropServices.Marshal::SystemMaxDBCSCharSize +System.Private.CoreLib.dll:System.Int32 System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods::_nativeSize System.Private.CoreLib.dll:System.Int32 System.Runtime.InteropServices.MarshalAsAttribute::IidParameterIndex System.Private.CoreLib.dll:System.Int32 System.Runtime.InteropServices.MarshalAsAttribute::SizeConst System.Private.CoreLib.dll:System.Int32 System.Runtime.InteropServices.Marshalling.ComVariant/Blob::_size @@ -13362,7 +13399,6 @@ System.Private.CoreLib.dll:System.Runtime.CompilerServices.ConditionalWeakTable` System.Private.CoreLib.dll:System.Runtime.CompilerServices.ConditionalWeakTable`2 System.Runtime.InteropServices.NativeLibrary::s_nativeDllResolveMap System.Private.CoreLib.dll:System.Runtime.CompilerServices.ConditionalWeakTable`2 System.StubHelpers.BSTRMarshaler::s_trailByteTable System.Private.CoreLib.dll:System.Runtime.CompilerServices.ConditionalWeakTable`2 System.Threading.Tasks.TaskScheduler::s_activeTaskSchedulers -System.Private.CoreLib.dll:System.Runtime.CompilerServices.ConditionalWeakTable`2 System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods::s_marshalerCache System.Private.CoreLib.dll:System.Runtime.CompilerServices.ConditionalWeakTable`2 System.StubHelpers.StubHelpers::s_structureMarshalInfoCache System.Private.CoreLib.dll:System.Runtime.CompilerServices.ConditionalWeakTable`2 System.Runtime.CompilerServices.ConditionalWeakTable`2/Container::_parent System.Private.CoreLib.dll:System.Runtime.CompilerServices.ConditionalWeakTable`2 System.Runtime.CompilerServices.ConditionalWeakTable`2/Enumerator::_table @@ -14247,17 +14283,18 @@ System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal.WriteInt64(Sys System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal.WriteIntPtr(System.IntPtr, System.Int32, System.IntPtr) System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal.WriteIntPtr(System.IntPtr, System.IntPtr) System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods -System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods..cctor() -System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods..ctor(System.Type) -System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods.g__CreateMarshalMethods|20_0(System.Type) -System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods.ConvertToManaged(System.Object, System.Byte*, System.StubHelpers.CleanupWorkListElement&) -System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods.ConvertToUnmanaged(System.Object, System.Byte*, System.Int32, System.StubHelpers.CleanupWorkListElement&) -System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods.Free(System.Object, System.Byte*, System.Int32, System.StubHelpers.CleanupWorkListElement&) +System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods System.RuntimeType/CompositeCacheEntry::_marshalerMethods +System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods..ctor(System.Type, System.Int32) +System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods.ConvertToManaged(System.Object, System.Byte*) +System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods.ConvertToUnmanaged(System.Object, System.Byte*, System.StubHelpers.CleanupWorkListElement&) +System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods.Create(System.RuntimeType) +System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods.Free(System.Byte*) System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods.get_ConvertToManagedMethod() System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods.get_ConvertToUnmanagedMethod() System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods.get_FreeMethod() -System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods.GetMarshalMethodsForType(System.Type) -System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods/<>O +System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods.GetMarshalMethodsForType(System.RuntimeType) +System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods.GetStorageRef(System.RuntimeType/CompositeCacheEntry) +System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods.InitializeCompositeCache(System.RuntimeType/CompositeCacheEntry) System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods/ConvertToManagedDelegate System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods/ConvertToManagedDelegate System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods::_convertToManaged System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods/ConvertToManagedDelegate..ctor(System.Object, System.IntPtr) @@ -16218,7 +16255,9 @@ System.Private.CoreLib.dll:System.String System.Boolean::TrueString System.Private.CoreLib.dll:System.String System.Byte::System.IBinaryIntegerParseAndFormatInfo.OverflowMessage() System.Private.CoreLib.dll:System.String System.Char::System.IBinaryIntegerParseAndFormatInfo.OverflowMessage() System.Private.CoreLib.dll:System.String System.CharEnumerator::_str +System.Private.CoreLib.dll:System.String System.Diagnostics.CodeAnalysis.DynamicDependencyAttribute::k__BackingField System.Private.CoreLib.dll:System.String System.Diagnostics.CodeAnalysis.DynamicDependencyAttribute::k__BackingField +System.Private.CoreLib.dll:System.String System.Diagnostics.CodeAnalysis.DynamicDependencyAttribute::k__BackingField System.Private.CoreLib.dll:System.String System.Diagnostics.Contracts.ContractException::_condition System.Private.CoreLib.dll:System.String System.Diagnostics.Contracts.ContractException::_userMessage System.Private.CoreLib.dll:System.String System.Diagnostics.StackFrame::_fileName diff --git a/tests/dotnet/UnitTests/expected/MacCatalyst-CoreCLR-Interpreter-size.txt b/tests/dotnet/UnitTests/expected/MacCatalyst-CoreCLR-Interpreter-size.txt index 883e287a2028..1188b2ae0ed2 100644 --- a/tests/dotnet/UnitTests/expected/MacCatalyst-CoreCLR-Interpreter-size.txt +++ b/tests/dotnet/UnitTests/expected/MacCatalyst-CoreCLR-Interpreter-size.txt @@ -1,12 +1,12 @@ -AppBundleSize: 10,462,403 bytes (10,217.2 KB = 10.0 MB) +AppBundleSize: 10,463,475 bytes (10,218.2 KB = 10.0 MB) # The following list of files and their sizes is just informational / for review, and isn't used in the test: Contents/_CodeSignature/CodeResources: 4,951 bytes (4.8 KB = 0.0 MB) Contents/Info.plist: 1,099 bytes (1.1 KB = 0.0 MB) -Contents/MacOS/SizeTestApp: 241,936 bytes (236.3 KB = 0.2 MB) -Contents/MonoBundle/libcoreclr.dylib: 6,386,800 bytes (6,237.1 KB = 6.1 MB) +Contents/MacOS/SizeTestApp: 242,128 bytes (236.5 KB = 0.2 MB) +Contents/MonoBundle/libcoreclr.dylib: 6,386,608 bytes (6,236.9 KB = 6.1 MB) Contents/MonoBundle/libSystem.Globalization.Native.dylib: 110,432 bytes (107.8 KB = 0.1 MB) Contents/MonoBundle/libSystem.IO.Compression.Native.dylib: 1,442,208 bytes (1,408.4 KB = 1.4 MB) -Contents/MonoBundle/libSystem.Native.dylib: 146,720 bytes (143.3 KB = 0.1 MB) +Contents/MonoBundle/libSystem.Native.dylib: 146,768 bytes (143.3 KB = 0.1 MB) Contents/MonoBundle/libSystem.Net.Security.Native.dylib: 71,120 bytes (69.5 KB = 0.1 MB) Contents/MonoBundle/libSystem.Security.Cryptography.Native.Apple.dylib: 204,768 bytes (200.0 KB = 0.2 MB) Contents/MonoBundle/Microsoft.MacCatalyst.dll: 101,888 bytes (99.5 KB = 0.1 MB) @@ -16,7 +16,7 @@ Contents/MonoBundle/System.Collections.Immutable.dll: 14,848 bytes (14.5 KB = 0. Contents/MonoBundle/System.Diagnostics.StackTrace.dll: 8,192 bytes (8.0 KB = 0.0 MB) Contents/MonoBundle/System.IO.Compression.dll: 22,528 bytes (22.0 KB = 0.0 MB) Contents/MonoBundle/System.IO.MemoryMappedFiles.dll: 22,016 bytes (21.5 KB = 0.0 MB) -Contents/MonoBundle/System.Private.CoreLib.dll: 1,575,936 bytes (1,539.0 KB = 1.5 MB) +Contents/MonoBundle/System.Private.CoreLib.dll: 1,576,960 bytes (1,540.0 KB = 1.5 MB) Contents/MonoBundle/System.Reflection.Metadata.dll: 84,480 bytes (82.5 KB = 0.1 MB) Contents/MonoBundle/System.Runtime.dll: 5,120 bytes (5.0 KB = 0.0 MB) Contents/MonoBundle/System.Runtime.InteropServices.dll: 8,192 bytes (8.0 KB = 0.0 MB) diff --git a/tests/dotnet/UnitTests/expected/MacCatalyst-CoreCLR-R2R-preservedapis.txt b/tests/dotnet/UnitTests/expected/MacCatalyst-CoreCLR-R2R-preservedapis.txt index 77690c4e653e..3166fc0d9998 100644 --- a/tests/dotnet/UnitTests/expected/MacCatalyst-CoreCLR-R2R-preservedapis.txt +++ b/tests/dotnet/UnitTests/expected/MacCatalyst-CoreCLR-R2R-preservedapis.txt @@ -863,6 +863,7 @@ Microsoft.MacCatalyst.dll:ObjCRuntime.RuntimeTypeHandleEqualityComparer.Equals(S Microsoft.MacCatalyst.dll:ObjCRuntime.RuntimeTypeHandleEqualityComparer.GetHashCode(System.RuntimeTypeHandle) Microsoft.MacCatalyst.dll:ObjCRuntime.Selector Microsoft.MacCatalyst.dll:ObjCRuntime.Selector._Xamarin_ConstructINativeObject(ObjCRuntime.NativeHandle, System.Boolean) +Microsoft.MacCatalyst.dll:ObjCRuntime.Selector..cctor() Microsoft.MacCatalyst.dll:ObjCRuntime.Selector..ctor(ObjCRuntime.NativeHandle, System.Boolean) Microsoft.MacCatalyst.dll:ObjCRuntime.Selector..ctor(ObjCRuntime.NativeHandle) Microsoft.MacCatalyst.dll:ObjCRuntime.Selector.Equals(ObjCRuntime.Selector) @@ -1173,6 +1174,7 @@ Microsoft.MacCatalyst.dll:UIKit.UIApplication.xamarin_UIApplicationMain(System.I Microsoft.MacCatalyst.dll:UIKit.UIApplicationDelegate Microsoft.MacCatalyst.dll:UIKit.UIApplicationDelegate._Xamarin_ConstructINativeObject(ObjCRuntime.NativeHandle, System.Boolean) Microsoft.MacCatalyst.dll:UIKit.UIApplicationDelegate._Xamarin_ConstructNSObject(ObjCRuntime.NativeHandle) +Microsoft.MacCatalyst.dll:UIKit.UIApplicationDelegate..cctor() Microsoft.MacCatalyst.dll:UIKit.UIApplicationDelegate..ctor() Microsoft.MacCatalyst.dll:UIKit.UIApplicationDelegate..ctor(ObjCRuntime.NativeHandle) Microsoft.MacCatalyst.dll:UIKit.UIApplicationDelegate..ctor(System.IntPtr, ObjCRuntime.IManagedRegistrar) @@ -5424,7 +5426,41 @@ System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.ConstantExpectedAttri System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute.set_Max(System.Object) System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DisallowNullAttribute System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DisallowNullAttribute..ctor() +System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes +System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes::All +System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes::AllConstructors +System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes::AllEvents +System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes::AllFields +System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes::AllMethods +System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes::AllNestedTypes +System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes::AllProperties +System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes::Interfaces +System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes::None +System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes::NonPublicConstructors +System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes::NonPublicConstructorsWithInherited +System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes::NonPublicEvents +System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes::NonPublicEventsWithInherited +System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes::NonPublicFields +System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes::NonPublicFieldsWithInherited +System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes::NonPublicMethods +System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes::NonPublicMethodsWithInherited +System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes::NonPublicNestedTypes +System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes::NonPublicNestedTypesWithInherited +System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes::NonPublicProperties +System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes::NonPublicPropertiesWithInherited +System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes::PublicConstructors +System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes::PublicConstructorsWithInherited +System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes::PublicEvents +System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes::PublicFields +System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes::PublicMethods +System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes::PublicNestedTypes +System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes::PublicNestedTypesWithInherited +System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes::PublicParameterlessConstructor +System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes::PublicProperties +System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes System.Diagnostics.CodeAnalysis.DynamicDependencyAttribute::k__BackingField System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DynamicDependencyAttribute +System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DynamicDependencyAttribute..ctor(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes, System.Type) +System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DynamicDependencyAttribute..ctor(System.String, System.String, System.String) System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DynamicDependencyAttribute..ctor(System.String, System.Type) System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.MaybeNullAttribute System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.MaybeNullAttribute..ctor() @@ -6181,7 +6217,6 @@ System.Private.CoreLib.dll:System.Func`2 System.IO.S System.Private.CoreLib.dll:System.Func`2 System.IO.Stream/<>c::<>9__53_0 System.Private.CoreLib.dll:System.Func`2 System.Threading.Monitor::s_createCondition System.Private.CoreLib.dll:System.Func`2 System.Reflection.TypeNameResolver::_assemblyResolver -System.Private.CoreLib.dll:System.Func`2 System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods/<>O::<0>__CreateMarshalMethods System.Private.CoreLib.dll:System.Func`2 System.StubHelpers.StubHelpers/<>c::<>9__28_0 System.Private.CoreLib.dll:System.Func`3 System.Private.CoreLib.dll:System.Func`3..ctor(System.Object, System.IntPtr) @@ -8252,6 +8287,7 @@ System.Private.CoreLib.dll:System.Int32 System.DefaultBinder/BinderState::_origi System.Private.CoreLib.dll:System.Int32 System.DefaultBinder/Primitives::value__ System.Private.CoreLib.dll:System.Int32 System.Delegate/InvocationListEnumerator`1::_index System.Private.CoreLib.dll:System.Int32 System.DelegateBindingFlags::value__ +System.Private.CoreLib.dll:System.Int32 System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes::value__ System.Private.CoreLib.dll:System.Int32 System.Diagnostics.Contracts.ContractFailureKind::value__ System.Private.CoreLib.dll:System.Int32 System.Diagnostics.DebuggableAttribute/DebuggingModes::value__ System.Private.CoreLib.dll:System.Int32 System.Diagnostics.StackFrame::_columnNumber @@ -8673,6 +8709,7 @@ System.Private.CoreLib.dll:System.Int32 System.Runtime.InteropServices.GCHandleS System.Private.CoreLib.dll:System.Int32 System.Runtime.InteropServices.GCHandleType::value__ System.Private.CoreLib.dll:System.Int32 System.Runtime.InteropServices.Marshal::SystemDefaultCharSize System.Private.CoreLib.dll:System.Int32 System.Runtime.InteropServices.Marshal::SystemMaxDBCSCharSize +System.Private.CoreLib.dll:System.Int32 System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods::_nativeSize System.Private.CoreLib.dll:System.Int32 System.Runtime.InteropServices.MarshalAsAttribute::IidParameterIndex System.Private.CoreLib.dll:System.Int32 System.Runtime.InteropServices.MarshalAsAttribute::SizeConst System.Private.CoreLib.dll:System.Int32 System.Runtime.InteropServices.Marshalling.ComVariant/Blob::_size @@ -13362,7 +13399,6 @@ System.Private.CoreLib.dll:System.Runtime.CompilerServices.ConditionalWeakTable` System.Private.CoreLib.dll:System.Runtime.CompilerServices.ConditionalWeakTable`2 System.Runtime.InteropServices.NativeLibrary::s_nativeDllResolveMap System.Private.CoreLib.dll:System.Runtime.CompilerServices.ConditionalWeakTable`2 System.StubHelpers.BSTRMarshaler::s_trailByteTable System.Private.CoreLib.dll:System.Runtime.CompilerServices.ConditionalWeakTable`2 System.Threading.Tasks.TaskScheduler::s_activeTaskSchedulers -System.Private.CoreLib.dll:System.Runtime.CompilerServices.ConditionalWeakTable`2 System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods::s_marshalerCache System.Private.CoreLib.dll:System.Runtime.CompilerServices.ConditionalWeakTable`2 System.StubHelpers.StubHelpers::s_structureMarshalInfoCache System.Private.CoreLib.dll:System.Runtime.CompilerServices.ConditionalWeakTable`2 System.Runtime.CompilerServices.ConditionalWeakTable`2/Container::_parent System.Private.CoreLib.dll:System.Runtime.CompilerServices.ConditionalWeakTable`2 System.Runtime.CompilerServices.ConditionalWeakTable`2/Enumerator::_table @@ -14247,17 +14283,18 @@ System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal.WriteInt64(Sys System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal.WriteIntPtr(System.IntPtr, System.Int32, System.IntPtr) System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal.WriteIntPtr(System.IntPtr, System.IntPtr) System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods -System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods..cctor() -System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods..ctor(System.Type) -System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods.g__CreateMarshalMethods|20_0(System.Type) -System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods.ConvertToManaged(System.Object, System.Byte*, System.StubHelpers.CleanupWorkListElement&) -System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods.ConvertToUnmanaged(System.Object, System.Byte*, System.Int32, System.StubHelpers.CleanupWorkListElement&) -System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods.Free(System.Object, System.Byte*, System.Int32, System.StubHelpers.CleanupWorkListElement&) +System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods System.RuntimeType/CompositeCacheEntry::_marshalerMethods +System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods..ctor(System.Type, System.Int32) +System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods.ConvertToManaged(System.Object, System.Byte*) +System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods.ConvertToUnmanaged(System.Object, System.Byte*, System.StubHelpers.CleanupWorkListElement&) +System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods.Create(System.RuntimeType) +System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods.Free(System.Byte*) System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods.get_ConvertToManagedMethod() System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods.get_ConvertToUnmanagedMethod() System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods.get_FreeMethod() -System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods.GetMarshalMethodsForType(System.Type) -System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods/<>O +System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods.GetMarshalMethodsForType(System.RuntimeType) +System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods.GetStorageRef(System.RuntimeType/CompositeCacheEntry) +System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods.InitializeCompositeCache(System.RuntimeType/CompositeCacheEntry) System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods/ConvertToManagedDelegate System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods/ConvertToManagedDelegate System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods::_convertToManaged System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods/ConvertToManagedDelegate..ctor(System.Object, System.IntPtr) @@ -16218,7 +16255,9 @@ System.Private.CoreLib.dll:System.String System.Boolean::TrueString System.Private.CoreLib.dll:System.String System.Byte::System.IBinaryIntegerParseAndFormatInfo.OverflowMessage() System.Private.CoreLib.dll:System.String System.Char::System.IBinaryIntegerParseAndFormatInfo.OverflowMessage() System.Private.CoreLib.dll:System.String System.CharEnumerator::_str +System.Private.CoreLib.dll:System.String System.Diagnostics.CodeAnalysis.DynamicDependencyAttribute::k__BackingField System.Private.CoreLib.dll:System.String System.Diagnostics.CodeAnalysis.DynamicDependencyAttribute::k__BackingField +System.Private.CoreLib.dll:System.String System.Diagnostics.CodeAnalysis.DynamicDependencyAttribute::k__BackingField System.Private.CoreLib.dll:System.String System.Diagnostics.Contracts.ContractException::_condition System.Private.CoreLib.dll:System.String System.Diagnostics.Contracts.ContractException::_userMessage System.Private.CoreLib.dll:System.String System.Diagnostics.StackFrame::_fileName diff --git a/tests/dotnet/UnitTests/expected/MacCatalyst-CoreCLR-R2R-size.txt b/tests/dotnet/UnitTests/expected/MacCatalyst-CoreCLR-R2R-size.txt index 1a467ac6430b..25f95b4add07 100644 --- a/tests/dotnet/UnitTests/expected/MacCatalyst-CoreCLR-R2R-size.txt +++ b/tests/dotnet/UnitTests/expected/MacCatalyst-CoreCLR-R2R-size.txt @@ -1,23 +1,23 @@ -AppBundleSize: 19,322,797 bytes (18,869.9 KB = 18.4 MB) +AppBundleSize: 19,324,509 bytes (18,871.6 KB = 18.4 MB) # The following list of files and their sizes is just informational / for review, and isn't used in the test: Contents/_CodeSignature/CodeResources: 5,105 bytes (5.0 KB = 0.0 MB) Contents/Info.plist: 1,099 bytes (1.1 KB = 0.0 MB) -Contents/MacOS/SizeTestApp: 241,984 bytes (236.3 KB = 0.2 MB) -Contents/MonoBundle/libcoreclr.dylib: 6,386,800 bytes (6,237.1 KB = 6.1 MB) +Contents/MacOS/SizeTestApp: 242,176 bytes (236.5 KB = 0.2 MB) +Contents/MonoBundle/libcoreclr.dylib: 6,386,608 bytes (6,236.9 KB = 6.1 MB) Contents/MonoBundle/libSystem.Globalization.Native.dylib: 110,432 bytes (107.8 KB = 0.1 MB) Contents/MonoBundle/libSystem.IO.Compression.Native.dylib: 1,442,208 bytes (1,408.4 KB = 1.4 MB) -Contents/MonoBundle/libSystem.Native.dylib: 146,720 bytes (143.3 KB = 0.1 MB) +Contents/MonoBundle/libSystem.Native.dylib: 146,768 bytes (143.3 KB = 0.1 MB) Contents/MonoBundle/libSystem.Net.Security.Native.dylib: 71,120 bytes (69.5 KB = 0.1 MB) Contents/MonoBundle/libSystem.Security.Cryptography.Native.Apple.dylib: 204,768 bytes (200.0 KB = 0.2 MB) Contents/MonoBundle/Microsoft.MacCatalyst.dll: 101,888 bytes (99.5 KB = 0.1 MB) Contents/MonoBundle/runtimeconfig.bin: 1,481 bytes (1.4 KB = 0.0 MB) Contents/MonoBundle/SizeTestApp.dll: 7,680 bytes (7.5 KB = 0.0 MB) -Contents/MonoBundle/SizeTestApp.r2r.dylib: 8,846,368 bytes (8,639.0 KB = 8.4 MB) +Contents/MonoBundle/SizeTestApp.r2r.dylib: 8,847,008 bytes (8,639.7 KB = 8.4 MB) Contents/MonoBundle/System.Collections.Immutable.dll: 13,824 bytes (13.5 KB = 0.0 MB) Contents/MonoBundle/System.Diagnostics.StackTrace.dll: 7,680 bytes (7.5 KB = 0.0 MB) Contents/MonoBundle/System.IO.Compression.dll: 22,016 bytes (21.5 KB = 0.0 MB) Contents/MonoBundle/System.IO.MemoryMappedFiles.dll: 21,504 bytes (21.0 KB = 0.0 MB) -Contents/MonoBundle/System.Private.CoreLib.dll: 1,594,368 bytes (1,557.0 KB = 1.5 MB) +Contents/MonoBundle/System.Private.CoreLib.dll: 1,595,392 bytes (1,558.0 KB = 1.5 MB) Contents/MonoBundle/System.Reflection.Metadata.dll: 83,968 bytes (82.0 KB = 0.1 MB) Contents/MonoBundle/System.Runtime.dll: 4,096 bytes (4.0 KB = 0.0 MB) Contents/MonoBundle/System.Runtime.InteropServices.dll: 7,680 bytes (7.5 KB = 0.0 MB) diff --git a/tests/dotnet/UnitTests/expected/MacCatalyst-MonoVM-interpreter-size.txt b/tests/dotnet/UnitTests/expected/MacCatalyst-MonoVM-interpreter-size.txt index e43e0cff8d51..3828d79e6957 100644 --- a/tests/dotnet/UnitTests/expected/MacCatalyst-MonoVM-interpreter-size.txt +++ b/tests/dotnet/UnitTests/expected/MacCatalyst-MonoVM-interpreter-size.txt @@ -1,13 +1,13 @@ -AppBundleSize: 5,810,670 bytes (5,674.5 KB = 5.5 MB) +AppBundleSize: 5,814,166 bytes (5,677.9 KB = 5.5 MB) # The following list of files and their sizes is just informational / for review, and isn't used in the test: Contents/_CodeSignature/CodeResources: 3,310 bytes (3.2 KB = 0.0 MB) Contents/Info.plist: 1,099 bytes (1.1 KB = 0.0 MB) -Contents/MacOS/SizeTestApp: 4,567,472 bytes (4,460.4 KB = 4.4 MB) -Contents/MonoBundle/Microsoft.MacCatalyst.dll: 157,184 bytes (153.5 KB = 0.1 MB) +Contents/MacOS/SizeTestApp: 4,569,408 bytes (4,462.3 KB = 4.4 MB) +Contents/MonoBundle/Microsoft.MacCatalyst.dll: 157,696 bytes (154.0 KB = 0.2 MB) Contents/MonoBundle/runtimeconfig.bin: 1,405 bytes (1.4 KB = 0.0 MB) Contents/MonoBundle/SizeTestApp.dll: 7,680 bytes (7.5 KB = 0.0 MB) -Contents/MonoBundle/System.Private.CoreLib.aotdata.arm64: 41,344 bytes (40.4 KB = 0.0 MB) -Contents/MonoBundle/System.Private.CoreLib.dll: 1,017,856 bytes (994.0 KB = 1.0 MB) +Contents/MonoBundle/System.Private.CoreLib.aotdata.arm64: 41,368 bytes (40.4 KB = 0.0 MB) +Contents/MonoBundle/System.Private.CoreLib.dll: 1,018,880 bytes (995.0 KB = 1.0 MB) Contents/MonoBundle/System.Runtime.dll: 5,120 bytes (5.0 KB = 0.0 MB) Contents/MonoBundle/System.Runtime.InteropServices.dll: 8,192 bytes (8.0 KB = 0.0 MB) Contents/PkgInfo: 8 bytes (0.0 KB = 0.0 MB) diff --git a/tests/dotnet/UnitTests/expected/MacCatalyst-MonoVM-size.txt b/tests/dotnet/UnitTests/expected/MacCatalyst-MonoVM-size.txt index 91e818b5f590..f69e6829026d 100644 --- a/tests/dotnet/UnitTests/expected/MacCatalyst-MonoVM-size.txt +++ b/tests/dotnet/UnitTests/expected/MacCatalyst-MonoVM-size.txt @@ -1,16 +1,16 @@ -AppBundleSize: 16,518,962 bytes (16,131.8 KB = 15.8 MB) +AppBundleSize: 16,525,506 bytes (16,138.2 KB = 15.8 MB) # The following list of files and their sizes is just informational / for review, and isn't used in the test: Contents/_CodeSignature/CodeResources: 4,134 bytes (4.0 KB = 0.0 MB) Contents/Info.plist: 1,099 bytes (1.1 KB = 0.0 MB) -Contents/MacOS/SizeTestApp: 13,979,600 bytes (13,652.0 KB = 13.3 MB) +Contents/MacOS/SizeTestApp: 13,984,464 bytes (13,656.7 KB = 13.3 MB) Contents/MonoBundle/aot-instances.aotdata.arm64: 1,037,632 bytes (1,013.3 KB = 1.0 MB) -Contents/MonoBundle/Microsoft.MacCatalyst.aotdata.arm64: 35,896 bytes (35.1 KB = 0.0 MB) -Contents/MonoBundle/Microsoft.MacCatalyst.dll: 50,688 bytes (49.5 KB = 0.0 MB) +Contents/MonoBundle/Microsoft.MacCatalyst.aotdata.arm64: 35,976 bytes (35.1 KB = 0.0 MB) +Contents/MonoBundle/Microsoft.MacCatalyst.dll: 51,200 bytes (50.0 KB = 0.0 MB) Contents/MonoBundle/runtimeconfig.bin: 1,481 bytes (1.4 KB = 0.0 MB) -Contents/MonoBundle/SizeTestApp.aotdata.arm64: 1,544 bytes (1.5 KB = 0.0 MB) +Contents/MonoBundle/SizeTestApp.aotdata.arm64: 1,552 bytes (1.5 KB = 0.0 MB) Contents/MonoBundle/SizeTestApp.dll: 7,168 bytes (7.0 KB = 0.0 MB) -Contents/MonoBundle/System.Private.CoreLib.aotdata.arm64: 844,768 bytes (825.0 KB = 0.8 MB) -Contents/MonoBundle/System.Private.CoreLib.dll: 540,672 bytes (528.0 KB = 0.5 MB) +Contents/MonoBundle/System.Private.CoreLib.aotdata.arm64: 844,824 bytes (825.0 KB = 0.8 MB) +Contents/MonoBundle/System.Private.CoreLib.dll: 541,696 bytes (529.0 KB = 0.5 MB) Contents/MonoBundle/System.Runtime.aotdata.arm64: 472 bytes (0.5 KB = 0.0 MB) Contents/MonoBundle/System.Runtime.dll: 5,120 bytes (5.0 KB = 0.0 MB) Contents/MonoBundle/System.Runtime.InteropServices.aotdata.arm64: 488 bytes (0.5 KB = 0.0 MB) diff --git a/tests/dotnet/UnitTests/expected/MacCatalyst-NativeAOT-size.txt b/tests/dotnet/UnitTests/expected/MacCatalyst-NativeAOT-size.txt index 01e865f827eb..2c53322aefb9 100644 --- a/tests/dotnet/UnitTests/expected/MacCatalyst-NativeAOT-size.txt +++ b/tests/dotnet/UnitTests/expected/MacCatalyst-NativeAOT-size.txt @@ -1,7 +1,7 @@ -AppBundleSize: 2,649,577 bytes (2,587.5 KB = 2.5 MB) +AppBundleSize: 2,815,241 bytes (2,749.3 KB = 2.7 MB) # The following list of files and their sizes is just informational / for review, and isn't used in the test: Contents/_CodeSignature/CodeResources: 2,358 bytes (2.3 KB = 0.0 MB) Contents/Info.plist: 1,099 bytes (1.1 KB = 0.0 MB) -Contents/MacOS/SizeTestApp: 2,644,304 bytes (2,582.3 KB = 2.5 MB) +Contents/MacOS/SizeTestApp: 2,809,968 bytes (2,744.1 KB = 2.7 MB) Contents/MonoBundle/runtimeconfig.bin: 1,808 bytes (1.8 KB = 0.0 MB) Contents/PkgInfo: 8 bytes (0.0 KB = 0.0 MB) diff --git a/tests/dotnet/UnitTests/expected/MacOSX-CoreCLR-Interpreter-size.txt b/tests/dotnet/UnitTests/expected/MacOSX-CoreCLR-Interpreter-size.txt index 38a5ce9a6dc6..38ac47ac2bbc 100644 --- a/tests/dotnet/UnitTests/expected/MacOSX-CoreCLR-Interpreter-size.txt +++ b/tests/dotnet/UnitTests/expected/MacOSX-CoreCLR-Interpreter-size.txt @@ -1,387 +1,307 @@ -AppBundleSize: 251,559,640 bytes (245,663.7 KB = 239.9 MB) +AppBundleSize: 246,986,938 bytes (241,198.2 KB = 235.5 MB) # The following list of files and their sizes is just informational / for review, and isn't used in the test: -Contents/_CodeSignature/CodeResources: 70,698 bytes (69.0 KB = 0.1 MB) +Contents/_CodeSignature/CodeResources: 54,948 bytes (53.7 KB = 0.1 MB) Contents/Info.plist: 730 bytes (0.7 KB = 0.0 MB) -Contents/MacOS/SizeTestApp: 7,963,712 bytes (7,777.1 KB = 7.6 MB) -Contents/MonoBundle/.xamarin/osx-arm64/Microsoft.CSharp.dll: 894,728 bytes (873.8 KB = 0.9 MB) -Contents/MonoBundle/.xamarin/osx-arm64/Microsoft.Extensions.Caching.Abstractions.dll: 66,832 bytes (65.3 KB = 0.1 MB) -Contents/MonoBundle/.xamarin/osx-arm64/Microsoft.Extensions.Configuration.Abstractions.dll: 38,664 bytes (37.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/Microsoft.Extensions.DependencyInjection.Abstractions.dll: 151,816 bytes (148.3 KB = 0.1 MB) -Contents/MonoBundle/.xamarin/osx-arm64/Microsoft.Extensions.Diagnostics.Abstractions.dll: 29,960 bytes (29.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/Microsoft.Extensions.FileProviders.Abstractions.dll: 25,904 bytes (25.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/Microsoft.Extensions.Hosting.Abstractions.dll: 48,912 bytes (47.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/Microsoft.Extensions.Logging.Abstractions.dll: 157,960 bytes (154.3 KB = 0.2 MB) -Contents/MonoBundle/.xamarin/osx-arm64/Microsoft.Extensions.Options.dll: 144,176 bytes (140.8 KB = 0.1 MB) -Contents/MonoBundle/.xamarin/osx-arm64/Microsoft.Extensions.Primitives.dll: 80,648 bytes (78.8 KB = 0.1 MB) +Contents/MacOS/SizeTestApp: 7,963,952 bytes (7,777.3 KB = 7.6 MB) +Contents/MonoBundle/.xamarin/osx-arm64/Microsoft.CSharp.dll: 884,224 bytes (863.5 KB = 0.8 MB) +Contents/MonoBundle/.xamarin/osx-arm64/Microsoft.Extensions.Caching.Abstractions.dll: 56,320 bytes (55.0 KB = 0.1 MB) +Contents/MonoBundle/.xamarin/osx-arm64/Microsoft.Extensions.Configuration.Abstractions.dll: 28,160 bytes (27.5 KB = 0.0 MB) +Contents/MonoBundle/.xamarin/osx-arm64/Microsoft.Extensions.DependencyInjection.Abstractions.dll: 141,312 bytes (138.0 KB = 0.1 MB) +Contents/MonoBundle/.xamarin/osx-arm64/Microsoft.Extensions.Diagnostics.Abstractions.dll: 19,456 bytes (19.0 KB = 0.0 MB) +Contents/MonoBundle/.xamarin/osx-arm64/Microsoft.Extensions.FileProviders.Abstractions.dll: 15,360 bytes (15.0 KB = 0.0 MB) +Contents/MonoBundle/.xamarin/osx-arm64/Microsoft.Extensions.Hosting.Abstractions.dll: 38,400 bytes (37.5 KB = 0.0 MB) +Contents/MonoBundle/.xamarin/osx-arm64/Microsoft.Extensions.Logging.Abstractions.dll: 147,456 bytes (144.0 KB = 0.1 MB) +Contents/MonoBundle/.xamarin/osx-arm64/Microsoft.Extensions.Options.dll: 133,632 bytes (130.5 KB = 0.1 MB) +Contents/MonoBundle/.xamarin/osx-arm64/Microsoft.Extensions.Primitives.dll: 70,144 bytes (68.5 KB = 0.1 MB) Contents/MonoBundle/.xamarin/osx-arm64/Microsoft.macOS.dll: 36,710,400 bytes (35,850.0 KB = 35.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/Microsoft.VisualBasic.Core.dll: 1,335,056 bytes (1,303.8 KB = 1.3 MB) -Contents/MonoBundle/.xamarin/osx-arm64/Microsoft.VisualBasic.dll: 17,672 bytes (17.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/Microsoft.Win32.Primitives.dll: 16,136 bytes (15.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/Microsoft.Win32.Registry.dll: 34,568 bytes (33.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/mscorlib.dll: 60,208 bytes (58.8 KB = 0.1 MB) -Contents/MonoBundle/.xamarin/osx-arm64/netstandard.dll: 101,640 bytes (99.3 KB = 0.1 MB) +Contents/MonoBundle/.xamarin/osx-arm64/Microsoft.VisualBasic.Core.dll: 1,324,544 bytes (1,293.5 KB = 1.3 MB) +Contents/MonoBundle/.xamarin/osx-arm64/Microsoft.Win32.Registry.dll: 24,064 bytes (23.5 KB = 0.0 MB) Contents/MonoBundle/.xamarin/osx-arm64/SizeTestApp.dll: 6,656 bytes (6.5 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.AppContext.dll: 15,624 bytes (15.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Buffers.dll: 15,624 bytes (15.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Collections.Concurrent.dll: 147,760 bytes (144.3 KB = 0.1 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Collections.dll: 329,480 bytes (321.8 KB = 0.3 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Collections.Immutable.dll: 1,120,008 bytes (1,093.8 KB = 1.1 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Collections.NonGeneric.dll: 105,232 bytes (102.8 KB = 0.1 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Collections.Specialized.dll: 105,736 bytes (103.3 KB = 0.1 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.ComponentModel.Annotations.dll: 217,352 bytes (212.3 KB = 0.2 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.ComponentModel.DataAnnotations.dll: 17,160 bytes (16.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.ComponentModel.dll: 17,680 bytes (17.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.ComponentModel.EventBasedAsync.dll: 39,176 bytes (38.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.ComponentModel.Primitives.dll: 80,136 bytes (78.3 KB = 0.1 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.ComponentModel.TypeConverter.dll: 881,416 bytes (860.8 KB = 0.8 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Configuration.dll: 19,720 bytes (19.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Console.dll: 221,456 bytes (216.3 KB = 0.2 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Core.dll: 23,816 bytes (23.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Data.Common.dll: 3,228,464 bytes (3,152.8 KB = 3.1 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Data.DataSetExtensions.dll: 16,184 bytes (15.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Data.dll: 25,904 bytes (25.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Diagnostics.Contracts.dll: 16,648 bytes (16.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Diagnostics.Debug.dll: 16,184 bytes (15.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Diagnostics.DiagnosticSource.dll: 561,936 bytes (548.8 KB = 0.5 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Diagnostics.FileVersionInfo.dll: 46,384 bytes (45.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Diagnostics.Process.dll: 294,160 bytes (287.3 KB = 0.3 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Diagnostics.StackTrace.dll: 36,656 bytes (35.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Diagnostics.TextWriterTraceListener.dll: 65,808 bytes (64.3 KB = 0.1 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Diagnostics.Tools.dll: 15,632 bytes (15.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Diagnostics.TraceSource.dll: 151,824 bytes (148.3 KB = 0.1 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Diagnostics.Tracing.dll: 16,688 bytes (16.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.dll: 50,952 bytes (49.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Drawing.dll: 20,744 bytes (20.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Drawing.Primitives.dll: 129,288 bytes (126.3 KB = 0.1 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Dynamic.Runtime.dll: 16,688 bytes (16.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Formats.Asn1.dll: 259,896 bytes (253.8 KB = 0.2 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Formats.Tar.dll: 328,496 bytes (320.8 KB = 0.3 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Globalization.Calendars.dll: 16,144 bytes (15.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Globalization.dll: 16,144 bytes (15.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Globalization.Extensions.dll: 16,144 bytes (15.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.IO.Compression.Brotli.dll: 83,720 bytes (81.8 KB = 0.1 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.IO.Compression.dll: 537,360 bytes (524.8 KB = 0.5 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.IO.Compression.FileSystem.dll: 15,624 bytes (15.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.IO.Compression.ZipFile.dll: 102,192 bytes (99.8 KB = 0.1 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.IO.dll: 16,176 bytes (15.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.IO.FileSystem.AccessControl.dll: 33,552 bytes (32.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.IO.FileSystem.dll: 16,184 bytes (15.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.IO.FileSystem.DriveInfo.dll: 89,352 bytes (87.3 KB = 0.1 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.IO.FileSystem.Primitives.dll: 15,624 bytes (15.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.IO.FileSystem.Watcher.dll: 122,160 bytes (119.3 KB = 0.1 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.IO.IsolatedStorage.dll: 84,232 bytes (82.3 KB = 0.1 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.IO.MemoryMappedFiles.dll: 95,024 bytes (92.8 KB = 0.1 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.IO.Pipelines.dll: 199,992 bytes (195.3 KB = 0.2 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.IO.Pipes.AccessControl.dll: 24,840 bytes (24.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.IO.Pipes.dll: 146,184 bytes (142.8 KB = 0.1 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.IO.UnmanagedMemoryStream.dll: 16,176 bytes (15.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Linq.AsyncEnumerable.dll: 1,497,904 bytes (1,462.8 KB = 1.4 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Linq.dll: 798,984 bytes (780.3 KB = 0.8 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Linq.Expressions.dll: 4,653,320 bytes (4,544.3 KB = 4.4 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Linq.Parallel.dll: 894,776 bytes (873.8 KB = 0.9 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Linq.Queryable.dll: 214,800 bytes (209.8 KB = 0.2 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Memory.dll: 165,176 bytes (161.3 KB = 0.2 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Net.dll: 17,672 bytes (17.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Net.Http.dll: 1,893,136 bytes (1,848.8 KB = 1.8 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Net.Http.Json.dll: 129,800 bytes (126.8 KB = 0.1 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Net.HttpListener.dll: 327,944 bytes (320.3 KB = 0.3 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Net.Mail.dll: 543,504 bytes (530.8 KB = 0.5 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Net.NameResolution.dll: 115,976 bytes (113.3 KB = 0.1 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Net.NetworkInformation.dll: 154,376 bytes (150.8 KB = 0.1 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Net.Ping.dll: 99,120 bytes (96.8 KB = 0.1 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Net.Primitives.dll: 252,176 bytes (246.3 KB = 0.2 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Net.Quic.dll: 382,776 bytes (373.8 KB = 0.4 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Net.Requests.dll: 417,584 bytes (407.8 KB = 0.4 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Net.Security.dll: 805,128 bytes (786.3 KB = 0.8 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Net.ServerSentEvents.dll: 78,096 bytes (76.3 KB = 0.1 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Net.ServicePoint.dll: 15,624 bytes (15.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Net.Sockets.dll: 705,288 bytes (688.8 KB = 0.7 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Net.WebClient.dll: 177,416 bytes (173.3 KB = 0.2 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Net.WebHeaderCollection.dll: 62,736 bytes (61.3 KB = 0.1 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Net.WebProxy.dll: 37,168 bytes (36.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Net.WebSockets.Client.dll: 99,600 bytes (97.3 KB = 0.1 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Net.WebSockets.dll: 250,160 bytes (244.3 KB = 0.2 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Numerics.dll: 15,624 bytes (15.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Numerics.Vectors.dll: 16,688 bytes (16.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.ObjectModel.dll: 77,624 bytes (75.8 KB = 0.1 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Private.CoreLib.dll: 17,958,160 bytes (17,537.3 KB = 17.1 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Private.DataContractSerialization.dll: 2,391,312 bytes (2,335.3 KB = 2.3 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Private.Uri.dll: 263,440 bytes (257.3 KB = 0.3 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Private.Xml.dll: 8,829,712 bytes (8,622.8 KB = 8.4 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Private.Xml.Linq.dll: 426,760 bytes (416.8 KB = 0.4 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Reflection.DispatchProxy.dll: 73,488 bytes (71.8 KB = 0.1 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Reflection.dll: 16,648 bytes (16.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Reflection.Emit.dll: 347,920 bytes (339.8 KB = 0.3 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Reflection.Emit.ILGeneration.dll: 16,144 bytes (15.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Reflection.Emit.Lightweight.dll: 16,176 bytes (15.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Reflection.Extensions.dll: 15,664 bytes (15.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Reflection.Metadata.dll: 1,285,936 bytes (1,255.8 KB = 1.2 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Reflection.Primitives.dll: 16,136 bytes (15.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Reflection.TypeExtensions.dll: 34,616 bytes (33.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Resources.Reader.dll: 15,624 bytes (15.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Resources.ResourceManager.dll: 16,136 bytes (15.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Resources.Writer.dll: 46,352 bytes (45.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Runtime.CompilerServices.Unsafe.dll: 15,624 bytes (15.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Runtime.CompilerServices.VisualC.dll: 19,720 bytes (19.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Runtime.dll: 45,832 bytes (44.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Runtime.Extensions.dll: 18,232 bytes (17.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Runtime.Handles.dll: 16,136 bytes (15.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Runtime.InteropServices.dll: 111,880 bytes (109.3 KB = 0.1 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Runtime.InteropServices.JavaScript.dll: 40,208 bytes (39.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Runtime.InteropServices.RuntimeInformation.dll: 16,144 bytes (15.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Runtime.Intrinsics.dll: 19,208 bytes (18.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Runtime.Loader.dll: 16,136 bytes (15.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Runtime.Numerics.dll: 450,824 bytes (440.3 KB = 0.4 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Runtime.Serialization.dll: 17,680 bytes (17.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Runtime.Serialization.Formatters.dll: 129,288 bytes (126.3 KB = 0.1 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Runtime.Serialization.Json.dll: 16,176 bytes (15.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Runtime.Serialization.Primitives.dll: 30,480 bytes (29.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Runtime.Serialization.Xml.dll: 17,200 bytes (16.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Security.AccessControl.dll: 59,664 bytes (58.3 KB = 0.1 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Security.Claims.dll: 102,672 bytes (100.3 KB = 0.1 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Security.Cryptography.Algorithms.dll: 17,680 bytes (17.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Security.Cryptography.Cng.dll: 16,648 bytes (16.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Security.Cryptography.Csp.dll: 16,688 bytes (16.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Security.Cryptography.dll: 2,437,392 bytes (2,380.3 KB = 2.3 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Security.Cryptography.Encoding.dll: 16,136 bytes (15.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Security.Cryptography.OpenSsl.dll: 16,144 bytes (15.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Security.Cryptography.Primitives.dll: 16,144 bytes (15.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Security.Cryptography.X509Certificates.dll: 17,712 bytes (17.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Security.dll: 18,704 bytes (18.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Security.Principal.dll: 15,632 bytes (15.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Security.Principal.Windows.dll: 39,184 bytes (38.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Security.SecureString.dll: 16,176 bytes (15.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.ServiceModel.Web.dll: 17,160 bytes (16.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.ServiceProcess.dll: 16,176 bytes (15.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Text.Encoding.CodePages.dll: 867,088 bytes (846.8 KB = 0.8 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Text.Encoding.dll: 16,136 bytes (15.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Text.Encoding.Extensions.dll: 16,176 bytes (15.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Text.Encodings.Web.dll: 123,664 bytes (120.8 KB = 0.1 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Text.Json.dll: 2,172,688 bytes (2,121.8 KB = 2.1 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Text.RegularExpressions.dll: 1,191,728 bytes (1,163.8 KB = 1.1 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Threading.AccessControl.dll: 35,088 bytes (34.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Threading.Channels.dll: 165,680 bytes (161.8 KB = 0.2 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Threading.dll: 81,712 bytes (79.8 KB = 0.1 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Threading.Overlapped.dll: 16,136 bytes (15.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Threading.Tasks.Dataflow.dll: 534,288 bytes (521.8 KB = 0.5 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Threading.Tasks.dll: 17,168 bytes (16.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Threading.Tasks.Extensions.dll: 16,136 bytes (15.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Threading.Tasks.Parallel.dll: 133,392 bytes (130.3 KB = 0.1 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Threading.Thread.dll: 16,176 bytes (15.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Threading.ThreadPool.dll: 16,136 bytes (15.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Threading.Timer.dll: 15,624 bytes (15.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Transactions.dll: 17,160 bytes (16.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Transactions.Local.dll: 402,184 bytes (392.8 KB = 0.4 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.ValueTuple.dll: 16,136 bytes (15.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Web.dll: 15,664 bytes (15.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Web.HttpUtility.dll: 57,608 bytes (56.3 KB = 0.1 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Windows.dll: 16,144 bytes (15.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Xml.dll: 23,824 bytes (23.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Xml.Linq.dll: 16,176 bytes (15.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Xml.ReaderWriter.dll: 22,288 bytes (21.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Xml.Serialization.dll: 16,688 bytes (16.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Xml.XDocument.dll: 16,648 bytes (16.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Xml.XmlDocument.dll: 16,144 bytes (15.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Xml.XmlSerializer.dll: 18,184 bytes (17.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Xml.XPath.dll: 16,144 bytes (15.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Xml.XPath.XDocument.dll: 17,672 bytes (17.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/WindowsBase.dll: 16,648 bytes (16.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/Microsoft.CSharp.dll: 798,000 bytes (779.3 KB = 0.8 MB) -Contents/MonoBundle/.xamarin/osx-x64/Microsoft.Extensions.Caching.Abstractions.dll: 62,728 bytes (61.3 KB = 0.1 MB) -Contents/MonoBundle/.xamarin/osx-x64/Microsoft.Extensions.Configuration.Abstractions.dll: 37,128 bytes (36.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/Microsoft.Extensions.DependencyInjection.Abstractions.dll: 133,904 bytes (130.8 KB = 0.1 MB) -Contents/MonoBundle/.xamarin/osx-x64/Microsoft.Extensions.Diagnostics.Abstractions.dll: 28,936 bytes (28.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/Microsoft.Extensions.FileProviders.Abstractions.dll: 25,352 bytes (24.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/Microsoft.Extensions.Hosting.Abstractions.dll: 46,352 bytes (45.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/Microsoft.Extensions.Logging.Abstractions.dll: 142,640 bytes (139.3 KB = 0.1 MB) -Contents/MonoBundle/.xamarin/osx-x64/Microsoft.Extensions.Options.dll: 128,776 bytes (125.8 KB = 0.1 MB) -Contents/MonoBundle/.xamarin/osx-x64/Microsoft.Extensions.Primitives.dll: 74,000 bytes (72.3 KB = 0.1 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Collections.Concurrent.dll: 137,216 bytes (134.0 KB = 0.1 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Collections.dll: 318,976 bytes (311.5 KB = 0.3 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Collections.Immutable.dll: 1,109,504 bytes (1,083.5 KB = 1.1 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Collections.NonGeneric.dll: 94,720 bytes (92.5 KB = 0.1 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Collections.Specialized.dll: 95,232 bytes (93.0 KB = 0.1 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.ComponentModel.Annotations.dll: 206,848 bytes (202.0 KB = 0.2 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.ComponentModel.dll: 7,168 bytes (7.0 KB = 0.0 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.ComponentModel.EventBasedAsync.dll: 28,672 bytes (28.0 KB = 0.0 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.ComponentModel.Primitives.dll: 69,632 bytes (68.0 KB = 0.1 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.ComponentModel.TypeConverter.dll: 870,912 bytes (850.5 KB = 0.8 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Console.dll: 210,944 bytes (206.0 KB = 0.2 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Data.Common.dll: 3,217,920 bytes (3,142.5 KB = 3.1 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Diagnostics.DiagnosticSource.dll: 551,424 bytes (538.5 KB = 0.5 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Diagnostics.FileVersionInfo.dll: 35,840 bytes (35.0 KB = 0.0 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Diagnostics.Process.dll: 285,184 bytes (278.5 KB = 0.3 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Diagnostics.StackTrace.dll: 26,112 bytes (25.5 KB = 0.0 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Diagnostics.TextWriterTraceListener.dll: 55,296 bytes (54.0 KB = 0.1 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Diagnostics.TraceSource.dll: 141,312 bytes (138.0 KB = 0.1 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Drawing.Primitives.dll: 118,784 bytes (116.0 KB = 0.1 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Formats.Asn1.dll: 249,344 bytes (243.5 KB = 0.2 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Formats.Tar.dll: 317,952 bytes (310.5 KB = 0.3 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.IO.Compression.Brotli.dll: 73,216 bytes (71.5 KB = 0.1 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.IO.Compression.dll: 523,776 bytes (511.5 KB = 0.5 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.IO.Compression.ZipFile.dll: 91,648 bytes (89.5 KB = 0.1 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.IO.FileSystem.AccessControl.dll: 23,040 bytes (22.5 KB = 0.0 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.IO.FileSystem.DriveInfo.dll: 78,848 bytes (77.0 KB = 0.1 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.IO.FileSystem.Watcher.dll: 111,616 bytes (109.0 KB = 0.1 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.IO.IsolatedStorage.dll: 73,728 bytes (72.0 KB = 0.1 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.IO.MemoryMappedFiles.dll: 84,480 bytes (82.5 KB = 0.1 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.IO.Pipelines.dll: 189,440 bytes (185.0 KB = 0.2 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.IO.Pipes.AccessControl.dll: 14,336 bytes (14.0 KB = 0.0 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.IO.Pipes.dll: 135,680 bytes (132.5 KB = 0.1 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Linq.AsyncEnumerable.dll: 1,487,360 bytes (1,452.5 KB = 1.4 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Linq.dll: 788,480 bytes (770.0 KB = 0.8 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Linq.Expressions.dll: 4,642,816 bytes (4,534.0 KB = 4.4 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Linq.Parallel.dll: 884,224 bytes (863.5 KB = 0.8 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Linq.Queryable.dll: 204,288 bytes (199.5 KB = 0.2 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Memory.dll: 154,624 bytes (151.0 KB = 0.1 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Net.Http.dll: 1,882,624 bytes (1,838.5 KB = 1.8 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Net.Http.Json.dll: 119,296 bytes (116.5 KB = 0.1 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Net.HttpListener.dll: 317,440 bytes (310.0 KB = 0.3 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Net.Mail.dll: 532,992 bytes (520.5 KB = 0.5 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Net.NameResolution.dll: 105,472 bytes (103.0 KB = 0.1 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Net.NetworkInformation.dll: 143,872 bytes (140.5 KB = 0.1 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Net.Ping.dll: 88,576 bytes (86.5 KB = 0.1 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Net.Primitives.dll: 241,664 bytes (236.0 KB = 0.2 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Net.Quic.dll: 372,224 bytes (363.5 KB = 0.4 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Net.Requests.dll: 407,040 bytes (397.5 KB = 0.4 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Net.Security.dll: 794,624 bytes (776.0 KB = 0.8 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Net.ServerSentEvents.dll: 67,584 bytes (66.0 KB = 0.1 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Net.Sockets.dll: 694,784 bytes (678.5 KB = 0.7 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Net.WebClient.dll: 166,912 bytes (163.0 KB = 0.2 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Net.WebHeaderCollection.dll: 52,224 bytes (51.0 KB = 0.0 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Net.WebProxy.dll: 26,624 bytes (26.0 KB = 0.0 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Net.WebSockets.Client.dll: 88,576 bytes (86.5 KB = 0.1 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Net.WebSockets.dll: 239,616 bytes (234.0 KB = 0.2 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.ObjectModel.dll: 67,072 bytes (65.5 KB = 0.1 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Private.CoreLib.dll: 17,944,064 bytes (17,523.5 KB = 17.1 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Private.DataContractSerialization.dll: 2,380,800 bytes (2,325.0 KB = 2.3 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Private.Uri.dll: 252,928 bytes (247.0 KB = 0.2 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Private.Xml.dll: 8,819,200 bytes (8,612.5 KB = 8.4 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Private.Xml.Linq.dll: 416,256 bytes (406.5 KB = 0.4 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Reflection.DispatchProxy.dll: 62,976 bytes (61.5 KB = 0.1 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Reflection.Emit.dll: 337,408 bytes (329.5 KB = 0.3 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Reflection.Metadata.dll: 1,275,392 bytes (1,245.5 KB = 1.2 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Reflection.TypeExtensions.dll: 24,064 bytes (23.5 KB = 0.0 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Resources.Writer.dll: 35,840 bytes (35.0 KB = 0.0 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Runtime.CompilerServices.VisualC.dll: 9,216 bytes (9.0 KB = 0.0 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Runtime.InteropServices.dll: 101,376 bytes (99.0 KB = 0.1 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Runtime.InteropServices.JavaScript.dll: 29,696 bytes (29.0 KB = 0.0 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Runtime.Numerics.dll: 440,320 bytes (430.0 KB = 0.4 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Runtime.Serialization.Formatters.dll: 118,784 bytes (116.0 KB = 0.1 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Runtime.Serialization.Primitives.dll: 19,968 bytes (19.5 KB = 0.0 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Security.AccessControl.dll: 49,152 bytes (48.0 KB = 0.0 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Security.Claims.dll: 92,160 bytes (90.0 KB = 0.1 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Security.Cryptography.dll: 2,426,880 bytes (2,370.0 KB = 2.3 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Security.Principal.Windows.dll: 28,672 bytes (28.0 KB = 0.0 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Text.Encoding.CodePages.dll: 856,576 bytes (836.5 KB = 0.8 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Text.Encodings.Web.dll: 113,152 bytes (110.5 KB = 0.1 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Text.Json.dll: 2,162,176 bytes (2,111.5 KB = 2.1 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Text.RegularExpressions.dll: 1,181,184 bytes (1,153.5 KB = 1.1 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Threading.AccessControl.dll: 24,576 bytes (24.0 KB = 0.0 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Threading.Channels.dll: 155,136 bytes (151.5 KB = 0.1 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Threading.dll: 71,168 bytes (69.5 KB = 0.1 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Threading.Tasks.Dataflow.dll: 523,776 bytes (511.5 KB = 0.5 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Threading.Tasks.Parallel.dll: 122,880 bytes (120.0 KB = 0.1 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Transactions.Local.dll: 391,680 bytes (382.5 KB = 0.4 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Web.HttpUtility.dll: 47,104 bytes (46.0 KB = 0.0 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Xml.XPath.XDocument.dll: 7,168 bytes (7.0 KB = 0.0 MB) +Contents/MonoBundle/.xamarin/osx-x64/Microsoft.CSharp.dll: 787,456 bytes (769.0 KB = 0.8 MB) +Contents/MonoBundle/.xamarin/osx-x64/Microsoft.Extensions.Caching.Abstractions.dll: 52,224 bytes (51.0 KB = 0.0 MB) +Contents/MonoBundle/.xamarin/osx-x64/Microsoft.Extensions.Configuration.Abstractions.dll: 26,624 bytes (26.0 KB = 0.0 MB) +Contents/MonoBundle/.xamarin/osx-x64/Microsoft.Extensions.DependencyInjection.Abstractions.dll: 123,392 bytes (120.5 KB = 0.1 MB) +Contents/MonoBundle/.xamarin/osx-x64/Microsoft.Extensions.Diagnostics.Abstractions.dll: 18,432 bytes (18.0 KB = 0.0 MB) +Contents/MonoBundle/.xamarin/osx-x64/Microsoft.Extensions.FileProviders.Abstractions.dll: 14,848 bytes (14.5 KB = 0.0 MB) +Contents/MonoBundle/.xamarin/osx-x64/Microsoft.Extensions.Hosting.Abstractions.dll: 35,840 bytes (35.0 KB = 0.0 MB) +Contents/MonoBundle/.xamarin/osx-x64/Microsoft.Extensions.Logging.Abstractions.dll: 132,096 bytes (129.0 KB = 0.1 MB) +Contents/MonoBundle/.xamarin/osx-x64/Microsoft.Extensions.Options.dll: 118,272 bytes (115.5 KB = 0.1 MB) +Contents/MonoBundle/.xamarin/osx-x64/Microsoft.Extensions.Primitives.dll: 63,488 bytes (62.0 KB = 0.1 MB) Contents/MonoBundle/.xamarin/osx-x64/Microsoft.macOS.dll: 36,710,400 bytes (35,850.0 KB = 35.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/Microsoft.VisualBasic.Core.dll: 1,165,576 bytes (1,138.3 KB = 1.1 MB) -Contents/MonoBundle/.xamarin/osx-x64/Microsoft.VisualBasic.dll: 17,672 bytes (17.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/Microsoft.Win32.Primitives.dll: 16,136 bytes (15.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/Microsoft.Win32.Registry.dll: 34,576 bytes (33.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/mscorlib.dll: 60,168 bytes (58.8 KB = 0.1 MB) -Contents/MonoBundle/.xamarin/osx-x64/netstandard.dll: 101,688 bytes (99.3 KB = 0.1 MB) +Contents/MonoBundle/.xamarin/osx-x64/Microsoft.VisualBasic.Core.dll: 1,155,072 bytes (1,128.0 KB = 1.1 MB) +Contents/MonoBundle/.xamarin/osx-x64/Microsoft.Win32.Registry.dll: 24,064 bytes (23.5 KB = 0.0 MB) Contents/MonoBundle/.xamarin/osx-x64/SizeTestApp.dll: 6,656 bytes (6.5 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.AppContext.dll: 15,672 bytes (15.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Buffers.dll: 15,632 bytes (15.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Collections.Concurrent.dll: 133,392 bytes (130.3 KB = 0.1 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Collections.dll: 289,552 bytes (282.8 KB = 0.3 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Collections.Immutable.dll: 987,400 bytes (964.3 KB = 0.9 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Collections.NonGeneric.dll: 93,448 bytes (91.3 KB = 0.1 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Collections.Specialized.dll: 92,944 bytes (90.8 KB = 0.1 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.ComponentModel.Annotations.dll: 191,760 bytes (187.3 KB = 0.2 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.ComponentModel.DataAnnotations.dll: 17,200 bytes (16.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.ComponentModel.dll: 17,712 bytes (17.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.ComponentModel.EventBasedAsync.dll: 36,616 bytes (35.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.ComponentModel.Primitives.dll: 70,928 bytes (69.3 KB = 0.1 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.ComponentModel.TypeConverter.dll: 765,712 bytes (747.8 KB = 0.7 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Configuration.dll: 19,760 bytes (19.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Console.dll: 195,336 bytes (190.8 KB = 0.2 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Core.dll: 23,816 bytes (23.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Data.Common.dll: 2,799,376 bytes (2,733.8 KB = 2.7 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Data.DataSetExtensions.dll: 16,136 bytes (15.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Data.dll: 25,864 bytes (25.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Diagnostics.Contracts.dll: 16,656 bytes (16.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Diagnostics.Debug.dll: 16,176 bytes (15.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Diagnostics.DiagnosticSource.dll: 501,008 bytes (489.3 KB = 0.5 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Diagnostics.FileVersionInfo.dll: 43,824 bytes (42.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Diagnostics.Process.dll: 255,248 bytes (249.3 KB = 0.2 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Diagnostics.StackTrace.dll: 35,640 bytes (34.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Diagnostics.TextWriterTraceListener.dll: 59,184 bytes (57.8 KB = 0.1 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Diagnostics.Tools.dll: 15,632 bytes (15.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Diagnostics.TraceSource.dll: 131,848 bytes (128.8 KB = 0.1 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Diagnostics.Tracing.dll: 16,688 bytes (16.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.dll: 50,952 bytes (49.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Drawing.dll: 20,784 bytes (20.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Drawing.Primitives.dll: 123,696 bytes (120.8 KB = 0.1 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Dynamic.Runtime.dll: 16,648 bytes (16.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Formats.Asn1.dll: 232,712 bytes (227.3 KB = 0.2 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Formats.Tar.dll: 285,968 bytes (279.3 KB = 0.3 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Globalization.Calendars.dll: 16,184 bytes (15.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Globalization.dll: 16,136 bytes (15.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Globalization.Extensions.dll: 16,176 bytes (15.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.IO.Compression.Brotli.dll: 73,520 bytes (71.8 KB = 0.1 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.IO.Compression.dll: 463,632 bytes (452.8 KB = 0.4 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.IO.Compression.FileSystem.dll: 15,664 bytes (15.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.IO.Compression.ZipFile.dll: 92,464 bytes (90.3 KB = 0.1 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.IO.dll: 16,144 bytes (15.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.IO.FileSystem.AccessControl.dll: 33,552 bytes (32.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.IO.FileSystem.dll: 16,136 bytes (15.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.IO.FileSystem.DriveInfo.dll: 79,632 bytes (77.8 KB = 0.1 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.IO.FileSystem.Primitives.dll: 15,624 bytes (15.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.IO.FileSystem.Watcher.dll: 106,800 bytes (104.3 KB = 0.1 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.IO.IsolatedStorage.dll: 77,064 bytes (75.3 KB = 0.1 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.IO.MemoryMappedFiles.dll: 83,208 bytes (81.3 KB = 0.1 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.IO.Pipelines.dll: 182,576 bytes (178.3 KB = 0.2 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.IO.Pipes.AccessControl.dll: 24,848 bytes (24.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.IO.Pipes.dll: 127,288 bytes (124.3 KB = 0.1 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.IO.UnmanagedMemoryStream.dll: 16,144 bytes (15.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Linq.AsyncEnumerable.dll: 1,335,088 bytes (1,303.8 KB = 1.3 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Linq.dll: 701,192 bytes (684.8 KB = 0.7 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Linq.Expressions.dll: 3,726,128 bytes (3,638.8 KB = 3.6 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Linq.Parallel.dll: 779,024 bytes (760.8 KB = 0.7 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Linq.Queryable.dll: 178,992 bytes (174.8 KB = 0.2 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Memory.dll: 152,880 bytes (149.3 KB = 0.1 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Net.dll: 17,712 bytes (17.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Net.Http.dll: 1,666,312 bytes (1,627.3 KB = 1.6 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Net.Http.Json.dll: 120,072 bytes (117.3 KB = 0.1 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Net.HttpListener.dll: 290,568 bytes (283.8 KB = 0.3 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Net.Mail.dll: 472,880 bytes (461.8 KB = 0.5 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Net.NameResolution.dll: 102,664 bytes (100.3 KB = 0.1 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Net.NetworkInformation.dll: 135,944 bytes (132.8 KB = 0.1 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Net.Ping.dll: 88,848 bytes (86.8 KB = 0.1 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Net.Primitives.dll: 223,496 bytes (218.3 KB = 0.2 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Net.Quic.dll: 340,752 bytes (332.8 KB = 0.3 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Net.Requests.dll: 363,280 bytes (354.8 KB = 0.3 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Net.Security.dll: 699,656 bytes (683.3 KB = 0.7 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Net.ServerSentEvents.dll: 72,504 bytes (70.8 KB = 0.1 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Net.ServicePoint.dll: 15,632 bytes (15.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Net.Sockets.dll: 605,456 bytes (591.3 KB = 0.6 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Net.WebClient.dll: 157,968 bytes (154.3 KB = 0.2 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Net.WebHeaderCollection.dll: 55,056 bytes (53.8 KB = 0.1 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Net.WebProxy.dll: 34,576 bytes (33.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Net.WebSockets.Client.dll: 90,416 bytes (88.3 KB = 0.1 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Net.WebSockets.dll: 223,504 bytes (218.3 KB = 0.2 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Numerics.dll: 15,664 bytes (15.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Numerics.Vectors.dll: 16,648 bytes (16.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.ObjectModel.dll: 69,384 bytes (67.8 KB = 0.1 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Private.CoreLib.dll: 16,502,024 bytes (16,115.3 KB = 15.7 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Private.DataContractSerialization.dll: 2,064,656 bytes (2,016.3 KB = 2.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Private.Uri.dll: 240,392 bytes (234.8 KB = 0.2 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Private.Xml.dll: 7,690,504 bytes (7,510.3 KB = 7.3 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Private.Xml.Linq.dll: 370,960 bytes (362.3 KB = 0.4 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Reflection.DispatchProxy.dll: 67,856 bytes (66.3 KB = 0.1 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Reflection.dll: 16,688 bytes (16.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Reflection.Emit.dll: 305,928 bytes (298.8 KB = 0.3 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Reflection.Emit.ILGeneration.dll: 16,176 bytes (15.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Reflection.Emit.Lightweight.dll: 16,176 bytes (15.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Reflection.Extensions.dll: 15,672 bytes (15.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Reflection.Metadata.dll: 1,154,824 bytes (1,127.8 KB = 1.1 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Reflection.Primitives.dll: 16,144 bytes (15.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Reflection.TypeExtensions.dll: 32,008 bytes (31.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Resources.Reader.dll: 15,664 bytes (15.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Resources.ResourceManager.dll: 16,136 bytes (15.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Resources.Writer.dll: 42,768 bytes (41.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Runtime.CompilerServices.Unsafe.dll: 15,664 bytes (15.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Runtime.CompilerServices.VisualC.dll: 19,256 bytes (18.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Runtime.dll: 45,832 bytes (44.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Runtime.Extensions.dll: 18,184 bytes (17.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Runtime.Handles.dll: 16,136 bytes (15.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Runtime.InteropServices.dll: 102,704 bytes (100.3 KB = 0.1 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Runtime.InteropServices.JavaScript.dll: 40,200 bytes (39.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Runtime.InteropServices.RuntimeInformation.dll: 16,136 bytes (15.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Runtime.Intrinsics.dll: 19,248 bytes (18.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Runtime.Loader.dll: 16,136 bytes (15.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Runtime.Numerics.dll: 421,688 bytes (411.8 KB = 0.4 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Runtime.Serialization.dll: 17,672 bytes (17.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Runtime.Serialization.Formatters.dll: 115,976 bytes (113.3 KB = 0.1 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Runtime.Serialization.Json.dll: 16,136 bytes (15.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Runtime.Serialization.Primitives.dll: 28,944 bytes (28.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Runtime.Serialization.Xml.dll: 17,160 bytes (16.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Security.AccessControl.dll: 59,656 bytes (58.3 KB = 0.1 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Security.Claims.dll: 92,936 bytes (90.8 KB = 0.1 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Security.Cryptography.Algorithms.dll: 17,672 bytes (17.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Security.Cryptography.Cng.dll: 16,688 bytes (16.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Security.Cryptography.Csp.dll: 16,656 bytes (16.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Security.Cryptography.dll: 2,116,408 bytes (2,066.8 KB = 2.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Security.Cryptography.Encoding.dll: 16,176 bytes (15.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Security.Cryptography.OpenSsl.dll: 16,136 bytes (15.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Security.Cryptography.Primitives.dll: 16,136 bytes (15.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Security.Cryptography.X509Certificates.dll: 17,680 bytes (17.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Security.dll: 18,696 bytes (18.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Security.Principal.dll: 15,632 bytes (15.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Security.Principal.Windows.dll: 39,216 bytes (38.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Security.SecureString.dll: 16,184 bytes (15.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.ServiceModel.Web.dll: 17,208 bytes (16.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.ServiceProcess.dll: 16,176 bytes (15.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Text.Encoding.CodePages.dll: 850,736 bytes (830.8 KB = 0.8 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Text.Encoding.dll: 16,144 bytes (15.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Text.Encoding.Extensions.dll: 16,136 bytes (15.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Text.Encodings.Web.dll: 114,952 bytes (112.3 KB = 0.1 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Text.Json.dll: 1,945,392 bytes (1,899.8 KB = 1.9 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Text.RegularExpressions.dll: 1,063,696 bytes (1,038.8 KB = 1.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Threading.AccessControl.dll: 34,568 bytes (33.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Threading.Channels.dll: 150,320 bytes (146.8 KB = 0.1 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Threading.dll: 75,016 bytes (73.3 KB = 0.1 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Threading.Overlapped.dll: 16,136 bytes (15.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Threading.Tasks.Dataflow.dll: 472,336 bytes (461.3 KB = 0.5 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Threading.Tasks.dll: 17,160 bytes (16.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Threading.Tasks.Extensions.dll: 16,176 bytes (15.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Threading.Tasks.Parallel.dll: 120,624 bytes (117.8 KB = 0.1 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Threading.Thread.dll: 16,136 bytes (15.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Threading.ThreadPool.dll: 16,136 bytes (15.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Threading.Timer.dll: 15,624 bytes (15.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Transactions.dll: 17,208 bytes (16.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Transactions.Local.dll: 357,176 bytes (348.8 KB = 0.3 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.ValueTuple.dll: 16,144 bytes (15.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Web.dll: 15,624 bytes (15.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Web.HttpUtility.dll: 53,552 bytes (52.3 KB = 0.1 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Windows.dll: 16,176 bytes (15.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Xml.dll: 23,816 bytes (23.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Xml.Linq.dll: 16,136 bytes (15.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Xml.ReaderWriter.dll: 22,280 bytes (21.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Xml.Serialization.dll: 16,648 bytes (16.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Xml.XDocument.dll: 16,648 bytes (16.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Xml.XmlDocument.dll: 16,136 bytes (15.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Xml.XmlSerializer.dll: 18,224 bytes (17.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Xml.XPath.dll: 16,176 bytes (15.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Xml.XPath.XDocument.dll: 17,160 bytes (16.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/WindowsBase.dll: 16,656 bytes (16.3 KB = 0.0 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Collections.Concurrent.dll: 122,880 bytes (120.0 KB = 0.1 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Collections.dll: 279,040 bytes (272.5 KB = 0.3 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Collections.Immutable.dll: 976,896 bytes (954.0 KB = 0.9 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Collections.NonGeneric.dll: 82,944 bytes (81.0 KB = 0.1 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Collections.Specialized.dll: 82,432 bytes (80.5 KB = 0.1 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.ComponentModel.Annotations.dll: 181,248 bytes (177.0 KB = 0.2 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.ComponentModel.dll: 7,168 bytes (7.0 KB = 0.0 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.ComponentModel.EventBasedAsync.dll: 26,112 bytes (25.5 KB = 0.0 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.ComponentModel.Primitives.dll: 60,416 bytes (59.0 KB = 0.1 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.ComponentModel.TypeConverter.dll: 755,200 bytes (737.5 KB = 0.7 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Console.dll: 184,832 bytes (180.5 KB = 0.2 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Data.Common.dll: 2,788,864 bytes (2,723.5 KB = 2.7 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Diagnostics.DiagnosticSource.dll: 490,496 bytes (479.0 KB = 0.5 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Diagnostics.FileVersionInfo.dll: 33,280 bytes (32.5 KB = 0.0 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Diagnostics.Process.dll: 245,760 bytes (240.0 KB = 0.2 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Diagnostics.StackTrace.dll: 25,088 bytes (24.5 KB = 0.0 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Diagnostics.TextWriterTraceListener.dll: 48,640 bytes (47.5 KB = 0.0 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Diagnostics.TraceSource.dll: 121,344 bytes (118.5 KB = 0.1 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Drawing.Primitives.dll: 113,152 bytes (110.5 KB = 0.1 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Formats.Asn1.dll: 222,208 bytes (217.0 KB = 0.2 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Formats.Tar.dll: 275,456 bytes (269.0 KB = 0.3 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.IO.Compression.Brotli.dll: 62,976 bytes (61.5 KB = 0.1 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.IO.Compression.dll: 450,048 bytes (439.5 KB = 0.4 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.IO.Compression.ZipFile.dll: 81,920 bytes (80.0 KB = 0.1 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.IO.FileSystem.AccessControl.dll: 23,040 bytes (22.5 KB = 0.0 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.IO.FileSystem.DriveInfo.dll: 69,120 bytes (67.5 KB = 0.1 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.IO.FileSystem.Watcher.dll: 96,256 bytes (94.0 KB = 0.1 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.IO.IsolatedStorage.dll: 66,560 bytes (65.0 KB = 0.1 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.IO.MemoryMappedFiles.dll: 72,704 bytes (71.0 KB = 0.1 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.IO.Pipelines.dll: 172,032 bytes (168.0 KB = 0.2 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.IO.Pipes.AccessControl.dll: 14,336 bytes (14.0 KB = 0.0 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.IO.Pipes.dll: 116,736 bytes (114.0 KB = 0.1 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Linq.AsyncEnumerable.dll: 1,324,544 bytes (1,293.5 KB = 1.3 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Linq.dll: 690,688 bytes (674.5 KB = 0.7 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Linq.Expressions.dll: 3,715,584 bytes (3,628.5 KB = 3.5 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Linq.Parallel.dll: 768,512 bytes (750.5 KB = 0.7 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Linq.Queryable.dll: 168,448 bytes (164.5 KB = 0.2 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Memory.dll: 142,336 bytes (139.0 KB = 0.1 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Net.Http.dll: 1,655,808 bytes (1,617.0 KB = 1.6 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Net.Http.Json.dll: 109,568 bytes (107.0 KB = 0.1 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Net.HttpListener.dll: 280,064 bytes (273.5 KB = 0.3 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Net.Mail.dll: 462,336 bytes (451.5 KB = 0.4 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Net.NameResolution.dll: 92,160 bytes (90.0 KB = 0.1 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Net.NetworkInformation.dll: 125,440 bytes (122.5 KB = 0.1 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Net.Ping.dll: 78,336 bytes (76.5 KB = 0.1 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Net.Primitives.dll: 212,992 bytes (208.0 KB = 0.2 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Net.Quic.dll: 330,240 bytes (322.5 KB = 0.3 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Net.Requests.dll: 352,768 bytes (344.5 KB = 0.3 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Net.Security.dll: 689,152 bytes (673.0 KB = 0.7 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Net.ServerSentEvents.dll: 61,952 bytes (60.5 KB = 0.1 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Net.Sockets.dll: 594,944 bytes (581.0 KB = 0.6 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Net.WebClient.dll: 147,456 bytes (144.0 KB = 0.1 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Net.WebHeaderCollection.dll: 44,544 bytes (43.5 KB = 0.0 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Net.WebProxy.dll: 24,064 bytes (23.5 KB = 0.0 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Net.WebSockets.Client.dll: 79,872 bytes (78.0 KB = 0.1 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Net.WebSockets.dll: 212,992 bytes (208.0 KB = 0.2 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.ObjectModel.dll: 58,880 bytes (57.5 KB = 0.1 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Private.CoreLib.dll: 16,488,448 bytes (16,102.0 KB = 15.7 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Private.DataContractSerialization.dll: 2,054,144 bytes (2,006.0 KB = 2.0 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Private.Uri.dll: 229,888 bytes (224.5 KB = 0.2 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Private.Xml.dll: 7,680,000 bytes (7,500.0 KB = 7.3 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Private.Xml.Linq.dll: 360,448 bytes (352.0 KB = 0.3 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Reflection.DispatchProxy.dll: 57,344 bytes (56.0 KB = 0.1 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Reflection.Emit.dll: 295,424 bytes (288.5 KB = 0.3 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Reflection.Metadata.dll: 1,144,320 bytes (1,117.5 KB = 1.1 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Reflection.TypeExtensions.dll: 21,504 bytes (21.0 KB = 0.0 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Resources.Writer.dll: 32,256 bytes (31.5 KB = 0.0 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Runtime.CompilerServices.VisualC.dll: 8,704 bytes (8.5 KB = 0.0 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Runtime.InteropServices.dll: 92,160 bytes (90.0 KB = 0.1 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Runtime.InteropServices.JavaScript.dll: 29,696 bytes (29.0 KB = 0.0 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Runtime.Numerics.dll: 411,136 bytes (401.5 KB = 0.4 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Runtime.Serialization.Formatters.dll: 105,472 bytes (103.0 KB = 0.1 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Runtime.Serialization.Primitives.dll: 18,432 bytes (18.0 KB = 0.0 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Security.AccessControl.dll: 49,152 bytes (48.0 KB = 0.0 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Security.Claims.dll: 82,432 bytes (80.5 KB = 0.1 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Security.Cryptography.dll: 2,105,856 bytes (2,056.5 KB = 2.0 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Security.Principal.Windows.dll: 28,672 bytes (28.0 KB = 0.0 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Text.Encoding.CodePages.dll: 840,192 bytes (820.5 KB = 0.8 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Text.Encodings.Web.dll: 104,448 bytes (102.0 KB = 0.1 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Text.Json.dll: 1,934,848 bytes (1,889.5 KB = 1.8 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Text.RegularExpressions.dll: 1,053,184 bytes (1,028.5 KB = 1.0 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Threading.AccessControl.dll: 24,064 bytes (23.5 KB = 0.0 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Threading.Channels.dll: 139,776 bytes (136.5 KB = 0.1 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Threading.dll: 64,512 bytes (63.0 KB = 0.1 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Threading.Tasks.Dataflow.dll: 461,824 bytes (451.0 KB = 0.4 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Threading.Tasks.Parallel.dll: 110,080 bytes (107.5 KB = 0.1 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Transactions.Local.dll: 346,624 bytes (338.5 KB = 0.3 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Web.HttpUtility.dll: 43,008 bytes (42.0 KB = 0.0 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Xml.XPath.XDocument.dll: 6,656 bytes (6.5 KB = 0.0 MB) Contents/MonoBundle/libclrgc.dylib: 2,038,512 bytes (1,990.7 KB = 1.9 MB) Contents/MonoBundle/libclrgcexp.dylib: 2,199,008 bytes (2,147.5 KB = 2.1 MB) -Contents/MonoBundle/libclrjit.dylib: 6,487,216 bytes (6,335.2 KB = 6.2 MB) -Contents/MonoBundle/libcoreclr.dylib: 12,862,496 bytes (12,561.0 KB = 12.3 MB) +Contents/MonoBundle/libclrjit.dylib: 6,487,232 bytes (6,335.2 KB = 6.2 MB) +Contents/MonoBundle/libcoreclr.dylib: 12,829,056 bytes (12,528.4 KB = 12.2 MB) Contents/MonoBundle/libhostfxr.dylib: 833,536 bytes (814.0 KB = 0.8 MB) Contents/MonoBundle/libhostpolicy.dylib: 776,624 bytes (758.4 KB = 0.7 MB) -Contents/MonoBundle/libmscordaccore.dylib: 4,511,504 bytes (4,405.8 KB = 4.3 MB) +Contents/MonoBundle/libmscordaccore.dylib: 4,511,296 bytes (4,405.6 KB = 4.3 MB) Contents/MonoBundle/libmscordbi.dylib: 3,442,608 bytes (3,361.9 KB = 3.3 MB) Contents/MonoBundle/libSystem.Globalization.Native.dylib: 286,816 bytes (280.1 KB = 0.3 MB) Contents/MonoBundle/libSystem.IO.Compression.Native.dylib: 3,278,528 bytes (3,201.7 KB = 3.1 MB) -Contents/MonoBundle/libSystem.Native.dylib: 296,256 bytes (289.3 KB = 0.3 MB) +Contents/MonoBundle/libSystem.Native.dylib: 296,304 bytes (289.4 KB = 0.3 MB) Contents/MonoBundle/libSystem.Net.Security.Native.dylib: 136,656 bytes (133.5 KB = 0.1 MB) Contents/MonoBundle/libSystem.Security.Cryptography.Native.Apple.dylib: 436,400 bytes (426.2 KB = 0.4 MB) +Contents/MonoBundle/Microsoft.VisualBasic.dll: 7,168 bytes (7.0 KB = 0.0 MB) +Contents/MonoBundle/Microsoft.Win32.Primitives.dll: 5,632 bytes (5.5 KB = 0.0 MB) +Contents/MonoBundle/mscorlib.dll: 49,664 bytes (48.5 KB = 0.0 MB) +Contents/MonoBundle/netstandard.dll: 91,136 bytes (89.0 KB = 0.1 MB) Contents/MonoBundle/runtimeconfig.bin: 1,363 bytes (1.3 KB = 0.0 MB) +Contents/MonoBundle/System.AppContext.dll: 5,120 bytes (5.0 KB = 0.0 MB) +Contents/MonoBundle/System.Buffers.dll: 5,120 bytes (5.0 KB = 0.0 MB) +Contents/MonoBundle/System.ComponentModel.DataAnnotations.dll: 6,656 bytes (6.5 KB = 0.0 MB) +Contents/MonoBundle/System.Configuration.dll: 9,216 bytes (9.0 KB = 0.0 MB) +Contents/MonoBundle/System.Core.dll: 13,312 bytes (13.0 KB = 0.0 MB) +Contents/MonoBundle/System.Data.DataSetExtensions.dll: 5,632 bytes (5.5 KB = 0.0 MB) +Contents/MonoBundle/System.Data.dll: 15,360 bytes (15.0 KB = 0.0 MB) +Contents/MonoBundle/System.Diagnostics.Contracts.dll: 6,144 bytes (6.0 KB = 0.0 MB) +Contents/MonoBundle/System.Diagnostics.Debug.dll: 5,632 bytes (5.5 KB = 0.0 MB) +Contents/MonoBundle/System.Diagnostics.Tools.dll: 5,120 bytes (5.0 KB = 0.0 MB) +Contents/MonoBundle/System.Diagnostics.Tracing.dll: 6,144 bytes (6.0 KB = 0.0 MB) +Contents/MonoBundle/System.dll: 40,448 bytes (39.5 KB = 0.0 MB) +Contents/MonoBundle/System.Drawing.dll: 10,240 bytes (10.0 KB = 0.0 MB) +Contents/MonoBundle/System.Dynamic.Runtime.dll: 6,144 bytes (6.0 KB = 0.0 MB) +Contents/MonoBundle/System.Globalization.Calendars.dll: 5,632 bytes (5.5 KB = 0.0 MB) +Contents/MonoBundle/System.Globalization.dll: 5,632 bytes (5.5 KB = 0.0 MB) +Contents/MonoBundle/System.Globalization.Extensions.dll: 5,632 bytes (5.5 KB = 0.0 MB) +Contents/MonoBundle/System.IO.Compression.FileSystem.dll: 5,120 bytes (5.0 KB = 0.0 MB) +Contents/MonoBundle/System.IO.dll: 5,632 bytes (5.5 KB = 0.0 MB) +Contents/MonoBundle/System.IO.FileSystem.dll: 5,632 bytes (5.5 KB = 0.0 MB) +Contents/MonoBundle/System.IO.FileSystem.Primitives.dll: 5,120 bytes (5.0 KB = 0.0 MB) +Contents/MonoBundle/System.IO.UnmanagedMemoryStream.dll: 5,632 bytes (5.5 KB = 0.0 MB) +Contents/MonoBundle/System.Net.dll: 7,168 bytes (7.0 KB = 0.0 MB) +Contents/MonoBundle/System.Net.ServicePoint.dll: 5,120 bytes (5.0 KB = 0.0 MB) +Contents/MonoBundle/System.Numerics.dll: 5,120 bytes (5.0 KB = 0.0 MB) +Contents/MonoBundle/System.Numerics.Vectors.dll: 6,144 bytes (6.0 KB = 0.0 MB) +Contents/MonoBundle/System.Reflection.dll: 6,144 bytes (6.0 KB = 0.0 MB) +Contents/MonoBundle/System.Reflection.Emit.ILGeneration.dll: 5,632 bytes (5.5 KB = 0.0 MB) +Contents/MonoBundle/System.Reflection.Emit.Lightweight.dll: 5,632 bytes (5.5 KB = 0.0 MB) +Contents/MonoBundle/System.Reflection.Extensions.dll: 5,120 bytes (5.0 KB = 0.0 MB) +Contents/MonoBundle/System.Reflection.Primitives.dll: 5,632 bytes (5.5 KB = 0.0 MB) +Contents/MonoBundle/System.Resources.Reader.dll: 5,120 bytes (5.0 KB = 0.0 MB) +Contents/MonoBundle/System.Resources.ResourceManager.dll: 5,632 bytes (5.5 KB = 0.0 MB) +Contents/MonoBundle/System.Runtime.CompilerServices.Unsafe.dll: 5,120 bytes (5.0 KB = 0.0 MB) +Contents/MonoBundle/System.Runtime.dll: 35,328 bytes (34.5 KB = 0.0 MB) +Contents/MonoBundle/System.Runtime.Extensions.dll: 7,680 bytes (7.5 KB = 0.0 MB) +Contents/MonoBundle/System.Runtime.Handles.dll: 5,632 bytes (5.5 KB = 0.0 MB) +Contents/MonoBundle/System.Runtime.InteropServices.RuntimeInformation.dll: 5,632 bytes (5.5 KB = 0.0 MB) +Contents/MonoBundle/System.Runtime.Intrinsics.dll: 8,704 bytes (8.5 KB = 0.0 MB) +Contents/MonoBundle/System.Runtime.Loader.dll: 5,632 bytes (5.5 KB = 0.0 MB) +Contents/MonoBundle/System.Runtime.Serialization.dll: 7,168 bytes (7.0 KB = 0.0 MB) +Contents/MonoBundle/System.Runtime.Serialization.Json.dll: 5,632 bytes (5.5 KB = 0.0 MB) +Contents/MonoBundle/System.Runtime.Serialization.Xml.dll: 6,656 bytes (6.5 KB = 0.0 MB) +Contents/MonoBundle/System.Security.Cryptography.Algorithms.dll: 7,168 bytes (7.0 KB = 0.0 MB) +Contents/MonoBundle/System.Security.Cryptography.Cng.dll: 6,144 bytes (6.0 KB = 0.0 MB) +Contents/MonoBundle/System.Security.Cryptography.Csp.dll: 6,144 bytes (6.0 KB = 0.0 MB) +Contents/MonoBundle/System.Security.Cryptography.Encoding.dll: 5,632 bytes (5.5 KB = 0.0 MB) +Contents/MonoBundle/System.Security.Cryptography.OpenSsl.dll: 5,632 bytes (5.5 KB = 0.0 MB) +Contents/MonoBundle/System.Security.Cryptography.Primitives.dll: 5,632 bytes (5.5 KB = 0.0 MB) +Contents/MonoBundle/System.Security.Cryptography.X509Certificates.dll: 7,168 bytes (7.0 KB = 0.0 MB) +Contents/MonoBundle/System.Security.dll: 8,192 bytes (8.0 KB = 0.0 MB) +Contents/MonoBundle/System.Security.Principal.dll: 5,120 bytes (5.0 KB = 0.0 MB) +Contents/MonoBundle/System.Security.SecureString.dll: 5,632 bytes (5.5 KB = 0.0 MB) +Contents/MonoBundle/System.ServiceModel.Web.dll: 6,656 bytes (6.5 KB = 0.0 MB) +Contents/MonoBundle/System.ServiceProcess.dll: 5,632 bytes (5.5 KB = 0.0 MB) +Contents/MonoBundle/System.Text.Encoding.dll: 5,632 bytes (5.5 KB = 0.0 MB) +Contents/MonoBundle/System.Text.Encoding.Extensions.dll: 5,632 bytes (5.5 KB = 0.0 MB) +Contents/MonoBundle/System.Threading.Overlapped.dll: 5,632 bytes (5.5 KB = 0.0 MB) +Contents/MonoBundle/System.Threading.Tasks.dll: 6,656 bytes (6.5 KB = 0.0 MB) +Contents/MonoBundle/System.Threading.Tasks.Extensions.dll: 5,632 bytes (5.5 KB = 0.0 MB) +Contents/MonoBundle/System.Threading.Thread.dll: 5,632 bytes (5.5 KB = 0.0 MB) +Contents/MonoBundle/System.Threading.ThreadPool.dll: 5,632 bytes (5.5 KB = 0.0 MB) +Contents/MonoBundle/System.Threading.Timer.dll: 5,120 bytes (5.0 KB = 0.0 MB) +Contents/MonoBundle/System.Transactions.dll: 6,656 bytes (6.5 KB = 0.0 MB) +Contents/MonoBundle/System.ValueTuple.dll: 5,632 bytes (5.5 KB = 0.0 MB) +Contents/MonoBundle/System.Web.dll: 5,120 bytes (5.0 KB = 0.0 MB) +Contents/MonoBundle/System.Windows.dll: 5,632 bytes (5.5 KB = 0.0 MB) +Contents/MonoBundle/System.Xml.dll: 13,312 bytes (13.0 KB = 0.0 MB) +Contents/MonoBundle/System.Xml.Linq.dll: 5,632 bytes (5.5 KB = 0.0 MB) +Contents/MonoBundle/System.Xml.ReaderWriter.dll: 11,776 bytes (11.5 KB = 0.0 MB) +Contents/MonoBundle/System.Xml.Serialization.dll: 6,144 bytes (6.0 KB = 0.0 MB) +Contents/MonoBundle/System.Xml.XDocument.dll: 6,144 bytes (6.0 KB = 0.0 MB) +Contents/MonoBundle/System.Xml.XmlDocument.dll: 5,632 bytes (5.5 KB = 0.0 MB) +Contents/MonoBundle/System.Xml.XmlSerializer.dll: 7,680 bytes (7.5 KB = 0.0 MB) +Contents/MonoBundle/System.Xml.XPath.dll: 5,632 bytes (5.5 KB = 0.0 MB) +Contents/MonoBundle/WindowsBase.dll: 6,144 bytes (6.0 KB = 0.0 MB) Contents/PkgInfo: 8 bytes (0.0 KB = 0.0 MB) Contents/Resources/archived-expanded-entitlements.xcent: 241 bytes (0.2 KB = 0.0 MB) diff --git a/tests/dotnet/UnitTests/expected/MacOSX-CoreCLR-R2R-size.txt b/tests/dotnet/UnitTests/expected/MacOSX-CoreCLR-R2R-size.txt index df3753b59c4b..ddb515429633 100644 --- a/tests/dotnet/UnitTests/expected/MacOSX-CoreCLR-R2R-size.txt +++ b/tests/dotnet/UnitTests/expected/MacOSX-CoreCLR-R2R-size.txt @@ -1,387 +1,307 @@ -AppBundleSize: 318,434,008 bytes (310,970.7 KB = 303.7 MB) +AppBundleSize: 313,861,306 bytes (306,505.2 KB = 299.3 MB) # The following list of files and their sizes is just informational / for review, and isn't used in the test: -Contents/_CodeSignature/CodeResources: 70,698 bytes (69.0 KB = 0.1 MB) +Contents/_CodeSignature/CodeResources: 54,948 bytes (53.7 KB = 0.1 MB) Contents/Info.plist: 730 bytes (0.7 KB = 0.0 MB) -Contents/MacOS/SizeTestApp: 7,963,712 bytes (7,777.1 KB = 7.6 MB) -Contents/MonoBundle/.xamarin/osx-arm64/Microsoft.CSharp.dll: 894,728 bytes (873.8 KB = 0.9 MB) -Contents/MonoBundle/.xamarin/osx-arm64/Microsoft.Extensions.Caching.Abstractions.dll: 66,832 bytes (65.3 KB = 0.1 MB) -Contents/MonoBundle/.xamarin/osx-arm64/Microsoft.Extensions.Configuration.Abstractions.dll: 38,664 bytes (37.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/Microsoft.Extensions.DependencyInjection.Abstractions.dll: 151,816 bytes (148.3 KB = 0.1 MB) -Contents/MonoBundle/.xamarin/osx-arm64/Microsoft.Extensions.Diagnostics.Abstractions.dll: 29,960 bytes (29.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/Microsoft.Extensions.FileProviders.Abstractions.dll: 25,904 bytes (25.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/Microsoft.Extensions.Hosting.Abstractions.dll: 48,912 bytes (47.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/Microsoft.Extensions.Logging.Abstractions.dll: 157,960 bytes (154.3 KB = 0.2 MB) -Contents/MonoBundle/.xamarin/osx-arm64/Microsoft.Extensions.Options.dll: 144,176 bytes (140.8 KB = 0.1 MB) -Contents/MonoBundle/.xamarin/osx-arm64/Microsoft.Extensions.Primitives.dll: 80,648 bytes (78.8 KB = 0.1 MB) +Contents/MacOS/SizeTestApp: 7,963,952 bytes (7,777.3 KB = 7.6 MB) +Contents/MonoBundle/.xamarin/osx-arm64/Microsoft.CSharp.dll: 884,224 bytes (863.5 KB = 0.8 MB) +Contents/MonoBundle/.xamarin/osx-arm64/Microsoft.Extensions.Caching.Abstractions.dll: 56,320 bytes (55.0 KB = 0.1 MB) +Contents/MonoBundle/.xamarin/osx-arm64/Microsoft.Extensions.Configuration.Abstractions.dll: 28,160 bytes (27.5 KB = 0.0 MB) +Contents/MonoBundle/.xamarin/osx-arm64/Microsoft.Extensions.DependencyInjection.Abstractions.dll: 141,312 bytes (138.0 KB = 0.1 MB) +Contents/MonoBundle/.xamarin/osx-arm64/Microsoft.Extensions.Diagnostics.Abstractions.dll: 19,456 bytes (19.0 KB = 0.0 MB) +Contents/MonoBundle/.xamarin/osx-arm64/Microsoft.Extensions.FileProviders.Abstractions.dll: 15,360 bytes (15.0 KB = 0.0 MB) +Contents/MonoBundle/.xamarin/osx-arm64/Microsoft.Extensions.Hosting.Abstractions.dll: 38,400 bytes (37.5 KB = 0.0 MB) +Contents/MonoBundle/.xamarin/osx-arm64/Microsoft.Extensions.Logging.Abstractions.dll: 147,456 bytes (144.0 KB = 0.1 MB) +Contents/MonoBundle/.xamarin/osx-arm64/Microsoft.Extensions.Options.dll: 133,632 bytes (130.5 KB = 0.1 MB) +Contents/MonoBundle/.xamarin/osx-arm64/Microsoft.Extensions.Primitives.dll: 70,144 bytes (68.5 KB = 0.1 MB) Contents/MonoBundle/.xamarin/osx-arm64/Microsoft.macOS.dll: 75,900,928 bytes (74,122.0 KB = 72.4 MB) -Contents/MonoBundle/.xamarin/osx-arm64/Microsoft.VisualBasic.Core.dll: 1,335,056 bytes (1,303.8 KB = 1.3 MB) -Contents/MonoBundle/.xamarin/osx-arm64/Microsoft.VisualBasic.dll: 17,672 bytes (17.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/Microsoft.Win32.Primitives.dll: 16,136 bytes (15.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/Microsoft.Win32.Registry.dll: 34,568 bytes (33.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/mscorlib.dll: 60,208 bytes (58.8 KB = 0.1 MB) -Contents/MonoBundle/.xamarin/osx-arm64/netstandard.dll: 101,640 bytes (99.3 KB = 0.1 MB) +Contents/MonoBundle/.xamarin/osx-arm64/Microsoft.VisualBasic.Core.dll: 1,324,544 bytes (1,293.5 KB = 1.3 MB) +Contents/MonoBundle/.xamarin/osx-arm64/Microsoft.Win32.Registry.dll: 24,064 bytes (23.5 KB = 0.0 MB) Contents/MonoBundle/.xamarin/osx-arm64/SizeTestApp.dll: 10,240 bytes (10.0 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.AppContext.dll: 15,624 bytes (15.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Buffers.dll: 15,624 bytes (15.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Collections.Concurrent.dll: 147,760 bytes (144.3 KB = 0.1 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Collections.dll: 329,480 bytes (321.8 KB = 0.3 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Collections.Immutable.dll: 1,120,008 bytes (1,093.8 KB = 1.1 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Collections.NonGeneric.dll: 105,232 bytes (102.8 KB = 0.1 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Collections.Specialized.dll: 105,736 bytes (103.3 KB = 0.1 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.ComponentModel.Annotations.dll: 217,352 bytes (212.3 KB = 0.2 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.ComponentModel.DataAnnotations.dll: 17,160 bytes (16.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.ComponentModel.dll: 17,680 bytes (17.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.ComponentModel.EventBasedAsync.dll: 39,176 bytes (38.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.ComponentModel.Primitives.dll: 80,136 bytes (78.3 KB = 0.1 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.ComponentModel.TypeConverter.dll: 881,416 bytes (860.8 KB = 0.8 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Configuration.dll: 19,720 bytes (19.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Console.dll: 221,456 bytes (216.3 KB = 0.2 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Core.dll: 23,816 bytes (23.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Data.Common.dll: 3,228,464 bytes (3,152.8 KB = 3.1 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Data.DataSetExtensions.dll: 16,184 bytes (15.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Data.dll: 25,904 bytes (25.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Diagnostics.Contracts.dll: 16,648 bytes (16.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Diagnostics.Debug.dll: 16,184 bytes (15.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Diagnostics.DiagnosticSource.dll: 561,936 bytes (548.8 KB = 0.5 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Diagnostics.FileVersionInfo.dll: 46,384 bytes (45.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Diagnostics.Process.dll: 294,160 bytes (287.3 KB = 0.3 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Diagnostics.StackTrace.dll: 36,656 bytes (35.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Diagnostics.TextWriterTraceListener.dll: 65,808 bytes (64.3 KB = 0.1 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Diagnostics.Tools.dll: 15,632 bytes (15.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Diagnostics.TraceSource.dll: 151,824 bytes (148.3 KB = 0.1 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Diagnostics.Tracing.dll: 16,688 bytes (16.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.dll: 50,952 bytes (49.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Drawing.dll: 20,744 bytes (20.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Drawing.Primitives.dll: 129,288 bytes (126.3 KB = 0.1 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Dynamic.Runtime.dll: 16,688 bytes (16.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Formats.Asn1.dll: 259,896 bytes (253.8 KB = 0.2 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Formats.Tar.dll: 328,496 bytes (320.8 KB = 0.3 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Globalization.Calendars.dll: 16,144 bytes (15.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Globalization.dll: 16,144 bytes (15.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Globalization.Extensions.dll: 16,144 bytes (15.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.IO.Compression.Brotli.dll: 83,720 bytes (81.8 KB = 0.1 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.IO.Compression.dll: 537,360 bytes (524.8 KB = 0.5 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.IO.Compression.FileSystem.dll: 15,624 bytes (15.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.IO.Compression.ZipFile.dll: 102,192 bytes (99.8 KB = 0.1 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.IO.dll: 16,176 bytes (15.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.IO.FileSystem.AccessControl.dll: 33,552 bytes (32.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.IO.FileSystem.dll: 16,184 bytes (15.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.IO.FileSystem.DriveInfo.dll: 89,352 bytes (87.3 KB = 0.1 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.IO.FileSystem.Primitives.dll: 15,624 bytes (15.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.IO.FileSystem.Watcher.dll: 122,160 bytes (119.3 KB = 0.1 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.IO.IsolatedStorage.dll: 84,232 bytes (82.3 KB = 0.1 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.IO.MemoryMappedFiles.dll: 95,024 bytes (92.8 KB = 0.1 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.IO.Pipelines.dll: 199,992 bytes (195.3 KB = 0.2 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.IO.Pipes.AccessControl.dll: 24,840 bytes (24.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.IO.Pipes.dll: 146,184 bytes (142.8 KB = 0.1 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.IO.UnmanagedMemoryStream.dll: 16,176 bytes (15.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Linq.AsyncEnumerable.dll: 1,497,904 bytes (1,462.8 KB = 1.4 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Linq.dll: 798,984 bytes (780.3 KB = 0.8 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Linq.Expressions.dll: 4,653,320 bytes (4,544.3 KB = 4.4 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Linq.Parallel.dll: 894,776 bytes (873.8 KB = 0.9 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Linq.Queryable.dll: 214,800 bytes (209.8 KB = 0.2 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Memory.dll: 165,176 bytes (161.3 KB = 0.2 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Net.dll: 17,672 bytes (17.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Net.Http.dll: 1,893,136 bytes (1,848.8 KB = 1.8 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Net.Http.Json.dll: 129,800 bytes (126.8 KB = 0.1 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Net.HttpListener.dll: 327,944 bytes (320.3 KB = 0.3 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Net.Mail.dll: 543,504 bytes (530.8 KB = 0.5 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Net.NameResolution.dll: 115,976 bytes (113.3 KB = 0.1 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Net.NetworkInformation.dll: 154,376 bytes (150.8 KB = 0.1 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Net.Ping.dll: 99,120 bytes (96.8 KB = 0.1 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Net.Primitives.dll: 252,176 bytes (246.3 KB = 0.2 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Net.Quic.dll: 382,776 bytes (373.8 KB = 0.4 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Net.Requests.dll: 417,584 bytes (407.8 KB = 0.4 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Net.Security.dll: 805,128 bytes (786.3 KB = 0.8 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Net.ServerSentEvents.dll: 78,096 bytes (76.3 KB = 0.1 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Net.ServicePoint.dll: 15,624 bytes (15.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Net.Sockets.dll: 705,288 bytes (688.8 KB = 0.7 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Net.WebClient.dll: 177,416 bytes (173.3 KB = 0.2 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Net.WebHeaderCollection.dll: 62,736 bytes (61.3 KB = 0.1 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Net.WebProxy.dll: 37,168 bytes (36.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Net.WebSockets.Client.dll: 99,600 bytes (97.3 KB = 0.1 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Net.WebSockets.dll: 250,160 bytes (244.3 KB = 0.2 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Numerics.dll: 15,624 bytes (15.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Numerics.Vectors.dll: 16,688 bytes (16.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.ObjectModel.dll: 77,624 bytes (75.8 KB = 0.1 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Private.CoreLib.dll: 17,958,160 bytes (17,537.3 KB = 17.1 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Private.DataContractSerialization.dll: 2,391,312 bytes (2,335.3 KB = 2.3 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Private.Uri.dll: 263,440 bytes (257.3 KB = 0.3 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Private.Xml.dll: 8,829,712 bytes (8,622.8 KB = 8.4 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Private.Xml.Linq.dll: 426,760 bytes (416.8 KB = 0.4 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Reflection.DispatchProxy.dll: 73,488 bytes (71.8 KB = 0.1 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Reflection.dll: 16,648 bytes (16.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Reflection.Emit.dll: 347,920 bytes (339.8 KB = 0.3 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Reflection.Emit.ILGeneration.dll: 16,144 bytes (15.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Reflection.Emit.Lightweight.dll: 16,176 bytes (15.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Reflection.Extensions.dll: 15,664 bytes (15.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Reflection.Metadata.dll: 1,285,936 bytes (1,255.8 KB = 1.2 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Reflection.Primitives.dll: 16,136 bytes (15.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Reflection.TypeExtensions.dll: 34,616 bytes (33.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Resources.Reader.dll: 15,624 bytes (15.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Resources.ResourceManager.dll: 16,136 bytes (15.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Resources.Writer.dll: 46,352 bytes (45.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Runtime.CompilerServices.Unsafe.dll: 15,624 bytes (15.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Runtime.CompilerServices.VisualC.dll: 19,720 bytes (19.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Runtime.dll: 45,832 bytes (44.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Runtime.Extensions.dll: 18,232 bytes (17.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Runtime.Handles.dll: 16,136 bytes (15.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Runtime.InteropServices.dll: 111,880 bytes (109.3 KB = 0.1 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Runtime.InteropServices.JavaScript.dll: 40,208 bytes (39.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Runtime.InteropServices.RuntimeInformation.dll: 16,144 bytes (15.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Runtime.Intrinsics.dll: 19,208 bytes (18.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Runtime.Loader.dll: 16,136 bytes (15.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Runtime.Numerics.dll: 450,824 bytes (440.3 KB = 0.4 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Runtime.Serialization.dll: 17,680 bytes (17.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Runtime.Serialization.Formatters.dll: 129,288 bytes (126.3 KB = 0.1 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Runtime.Serialization.Json.dll: 16,176 bytes (15.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Runtime.Serialization.Primitives.dll: 30,480 bytes (29.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Runtime.Serialization.Xml.dll: 17,200 bytes (16.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Security.AccessControl.dll: 59,664 bytes (58.3 KB = 0.1 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Security.Claims.dll: 102,672 bytes (100.3 KB = 0.1 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Security.Cryptography.Algorithms.dll: 17,680 bytes (17.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Security.Cryptography.Cng.dll: 16,648 bytes (16.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Security.Cryptography.Csp.dll: 16,688 bytes (16.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Security.Cryptography.dll: 2,437,392 bytes (2,380.3 KB = 2.3 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Security.Cryptography.Encoding.dll: 16,136 bytes (15.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Security.Cryptography.OpenSsl.dll: 16,144 bytes (15.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Security.Cryptography.Primitives.dll: 16,144 bytes (15.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Security.Cryptography.X509Certificates.dll: 17,712 bytes (17.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Security.dll: 18,704 bytes (18.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Security.Principal.dll: 15,632 bytes (15.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Security.Principal.Windows.dll: 39,184 bytes (38.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Security.SecureString.dll: 16,176 bytes (15.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.ServiceModel.Web.dll: 17,160 bytes (16.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.ServiceProcess.dll: 16,176 bytes (15.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Text.Encoding.CodePages.dll: 867,088 bytes (846.8 KB = 0.8 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Text.Encoding.dll: 16,136 bytes (15.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Text.Encoding.Extensions.dll: 16,176 bytes (15.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Text.Encodings.Web.dll: 123,664 bytes (120.8 KB = 0.1 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Text.Json.dll: 2,172,688 bytes (2,121.8 KB = 2.1 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Text.RegularExpressions.dll: 1,191,728 bytes (1,163.8 KB = 1.1 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Threading.AccessControl.dll: 35,088 bytes (34.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Threading.Channels.dll: 165,680 bytes (161.8 KB = 0.2 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Threading.dll: 81,712 bytes (79.8 KB = 0.1 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Threading.Overlapped.dll: 16,136 bytes (15.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Threading.Tasks.Dataflow.dll: 534,288 bytes (521.8 KB = 0.5 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Threading.Tasks.dll: 17,168 bytes (16.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Threading.Tasks.Extensions.dll: 16,136 bytes (15.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Threading.Tasks.Parallel.dll: 133,392 bytes (130.3 KB = 0.1 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Threading.Thread.dll: 16,176 bytes (15.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Threading.ThreadPool.dll: 16,136 bytes (15.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Threading.Timer.dll: 15,624 bytes (15.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Transactions.dll: 17,160 bytes (16.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Transactions.Local.dll: 402,184 bytes (392.8 KB = 0.4 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.ValueTuple.dll: 16,136 bytes (15.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Web.dll: 15,664 bytes (15.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Web.HttpUtility.dll: 57,608 bytes (56.3 KB = 0.1 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Windows.dll: 16,144 bytes (15.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Xml.dll: 23,824 bytes (23.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Xml.Linq.dll: 16,176 bytes (15.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Xml.ReaderWriter.dll: 22,288 bytes (21.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Xml.Serialization.dll: 16,688 bytes (16.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Xml.XDocument.dll: 16,648 bytes (16.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Xml.XmlDocument.dll: 16,144 bytes (15.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Xml.XmlSerializer.dll: 18,184 bytes (17.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Xml.XPath.dll: 16,144 bytes (15.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/System.Xml.XPath.XDocument.dll: 17,672 bytes (17.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-arm64/WindowsBase.dll: 16,648 bytes (16.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/Microsoft.CSharp.dll: 798,000 bytes (779.3 KB = 0.8 MB) -Contents/MonoBundle/.xamarin/osx-x64/Microsoft.Extensions.Caching.Abstractions.dll: 62,728 bytes (61.3 KB = 0.1 MB) -Contents/MonoBundle/.xamarin/osx-x64/Microsoft.Extensions.Configuration.Abstractions.dll: 37,128 bytes (36.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/Microsoft.Extensions.DependencyInjection.Abstractions.dll: 133,904 bytes (130.8 KB = 0.1 MB) -Contents/MonoBundle/.xamarin/osx-x64/Microsoft.Extensions.Diagnostics.Abstractions.dll: 28,936 bytes (28.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/Microsoft.Extensions.FileProviders.Abstractions.dll: 25,352 bytes (24.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/Microsoft.Extensions.Hosting.Abstractions.dll: 46,352 bytes (45.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/Microsoft.Extensions.Logging.Abstractions.dll: 142,640 bytes (139.3 KB = 0.1 MB) -Contents/MonoBundle/.xamarin/osx-x64/Microsoft.Extensions.Options.dll: 128,776 bytes (125.8 KB = 0.1 MB) -Contents/MonoBundle/.xamarin/osx-x64/Microsoft.Extensions.Primitives.dll: 74,000 bytes (72.3 KB = 0.1 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Collections.Concurrent.dll: 137,216 bytes (134.0 KB = 0.1 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Collections.dll: 318,976 bytes (311.5 KB = 0.3 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Collections.Immutable.dll: 1,109,504 bytes (1,083.5 KB = 1.1 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Collections.NonGeneric.dll: 94,720 bytes (92.5 KB = 0.1 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Collections.Specialized.dll: 95,232 bytes (93.0 KB = 0.1 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.ComponentModel.Annotations.dll: 206,848 bytes (202.0 KB = 0.2 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.ComponentModel.dll: 7,168 bytes (7.0 KB = 0.0 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.ComponentModel.EventBasedAsync.dll: 28,672 bytes (28.0 KB = 0.0 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.ComponentModel.Primitives.dll: 69,632 bytes (68.0 KB = 0.1 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.ComponentModel.TypeConverter.dll: 870,912 bytes (850.5 KB = 0.8 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Console.dll: 210,944 bytes (206.0 KB = 0.2 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Data.Common.dll: 3,217,920 bytes (3,142.5 KB = 3.1 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Diagnostics.DiagnosticSource.dll: 551,424 bytes (538.5 KB = 0.5 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Diagnostics.FileVersionInfo.dll: 35,840 bytes (35.0 KB = 0.0 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Diagnostics.Process.dll: 285,184 bytes (278.5 KB = 0.3 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Diagnostics.StackTrace.dll: 26,112 bytes (25.5 KB = 0.0 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Diagnostics.TextWriterTraceListener.dll: 55,296 bytes (54.0 KB = 0.1 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Diagnostics.TraceSource.dll: 141,312 bytes (138.0 KB = 0.1 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Drawing.Primitives.dll: 118,784 bytes (116.0 KB = 0.1 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Formats.Asn1.dll: 249,344 bytes (243.5 KB = 0.2 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Formats.Tar.dll: 317,952 bytes (310.5 KB = 0.3 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.IO.Compression.Brotli.dll: 73,216 bytes (71.5 KB = 0.1 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.IO.Compression.dll: 523,776 bytes (511.5 KB = 0.5 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.IO.Compression.ZipFile.dll: 91,648 bytes (89.5 KB = 0.1 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.IO.FileSystem.AccessControl.dll: 23,040 bytes (22.5 KB = 0.0 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.IO.FileSystem.DriveInfo.dll: 78,848 bytes (77.0 KB = 0.1 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.IO.FileSystem.Watcher.dll: 111,616 bytes (109.0 KB = 0.1 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.IO.IsolatedStorage.dll: 73,728 bytes (72.0 KB = 0.1 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.IO.MemoryMappedFiles.dll: 84,480 bytes (82.5 KB = 0.1 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.IO.Pipelines.dll: 189,440 bytes (185.0 KB = 0.2 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.IO.Pipes.AccessControl.dll: 14,336 bytes (14.0 KB = 0.0 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.IO.Pipes.dll: 135,680 bytes (132.5 KB = 0.1 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Linq.AsyncEnumerable.dll: 1,487,360 bytes (1,452.5 KB = 1.4 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Linq.dll: 788,480 bytes (770.0 KB = 0.8 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Linq.Expressions.dll: 4,642,816 bytes (4,534.0 KB = 4.4 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Linq.Parallel.dll: 884,224 bytes (863.5 KB = 0.8 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Linq.Queryable.dll: 204,288 bytes (199.5 KB = 0.2 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Memory.dll: 154,624 bytes (151.0 KB = 0.1 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Net.Http.dll: 1,882,624 bytes (1,838.5 KB = 1.8 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Net.Http.Json.dll: 119,296 bytes (116.5 KB = 0.1 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Net.HttpListener.dll: 317,440 bytes (310.0 KB = 0.3 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Net.Mail.dll: 532,992 bytes (520.5 KB = 0.5 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Net.NameResolution.dll: 105,472 bytes (103.0 KB = 0.1 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Net.NetworkInformation.dll: 143,872 bytes (140.5 KB = 0.1 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Net.Ping.dll: 88,576 bytes (86.5 KB = 0.1 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Net.Primitives.dll: 241,664 bytes (236.0 KB = 0.2 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Net.Quic.dll: 372,224 bytes (363.5 KB = 0.4 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Net.Requests.dll: 407,040 bytes (397.5 KB = 0.4 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Net.Security.dll: 794,624 bytes (776.0 KB = 0.8 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Net.ServerSentEvents.dll: 67,584 bytes (66.0 KB = 0.1 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Net.Sockets.dll: 694,784 bytes (678.5 KB = 0.7 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Net.WebClient.dll: 166,912 bytes (163.0 KB = 0.2 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Net.WebHeaderCollection.dll: 52,224 bytes (51.0 KB = 0.0 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Net.WebProxy.dll: 26,624 bytes (26.0 KB = 0.0 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Net.WebSockets.Client.dll: 88,576 bytes (86.5 KB = 0.1 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Net.WebSockets.dll: 239,616 bytes (234.0 KB = 0.2 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.ObjectModel.dll: 67,072 bytes (65.5 KB = 0.1 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Private.CoreLib.dll: 17,944,064 bytes (17,523.5 KB = 17.1 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Private.DataContractSerialization.dll: 2,380,800 bytes (2,325.0 KB = 2.3 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Private.Uri.dll: 252,928 bytes (247.0 KB = 0.2 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Private.Xml.dll: 8,819,200 bytes (8,612.5 KB = 8.4 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Private.Xml.Linq.dll: 416,256 bytes (406.5 KB = 0.4 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Reflection.DispatchProxy.dll: 62,976 bytes (61.5 KB = 0.1 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Reflection.Emit.dll: 337,408 bytes (329.5 KB = 0.3 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Reflection.Metadata.dll: 1,275,392 bytes (1,245.5 KB = 1.2 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Reflection.TypeExtensions.dll: 24,064 bytes (23.5 KB = 0.0 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Resources.Writer.dll: 35,840 bytes (35.0 KB = 0.0 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Runtime.CompilerServices.VisualC.dll: 9,216 bytes (9.0 KB = 0.0 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Runtime.InteropServices.dll: 101,376 bytes (99.0 KB = 0.1 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Runtime.InteropServices.JavaScript.dll: 29,696 bytes (29.0 KB = 0.0 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Runtime.Numerics.dll: 440,320 bytes (430.0 KB = 0.4 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Runtime.Serialization.Formatters.dll: 118,784 bytes (116.0 KB = 0.1 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Runtime.Serialization.Primitives.dll: 19,968 bytes (19.5 KB = 0.0 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Security.AccessControl.dll: 49,152 bytes (48.0 KB = 0.0 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Security.Claims.dll: 92,160 bytes (90.0 KB = 0.1 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Security.Cryptography.dll: 2,426,880 bytes (2,370.0 KB = 2.3 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Security.Principal.Windows.dll: 28,672 bytes (28.0 KB = 0.0 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Text.Encoding.CodePages.dll: 856,576 bytes (836.5 KB = 0.8 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Text.Encodings.Web.dll: 113,152 bytes (110.5 KB = 0.1 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Text.Json.dll: 2,162,176 bytes (2,111.5 KB = 2.1 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Text.RegularExpressions.dll: 1,181,184 bytes (1,153.5 KB = 1.1 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Threading.AccessControl.dll: 24,576 bytes (24.0 KB = 0.0 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Threading.Channels.dll: 155,136 bytes (151.5 KB = 0.1 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Threading.dll: 71,168 bytes (69.5 KB = 0.1 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Threading.Tasks.Dataflow.dll: 523,776 bytes (511.5 KB = 0.5 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Threading.Tasks.Parallel.dll: 122,880 bytes (120.0 KB = 0.1 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Transactions.Local.dll: 391,680 bytes (382.5 KB = 0.4 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Web.HttpUtility.dll: 47,104 bytes (46.0 KB = 0.0 MB) +Contents/MonoBundle/.xamarin/osx-arm64/System.Xml.XPath.XDocument.dll: 7,168 bytes (7.0 KB = 0.0 MB) +Contents/MonoBundle/.xamarin/osx-x64/Microsoft.CSharp.dll: 787,456 bytes (769.0 KB = 0.8 MB) +Contents/MonoBundle/.xamarin/osx-x64/Microsoft.Extensions.Caching.Abstractions.dll: 52,224 bytes (51.0 KB = 0.0 MB) +Contents/MonoBundle/.xamarin/osx-x64/Microsoft.Extensions.Configuration.Abstractions.dll: 26,624 bytes (26.0 KB = 0.0 MB) +Contents/MonoBundle/.xamarin/osx-x64/Microsoft.Extensions.DependencyInjection.Abstractions.dll: 123,392 bytes (120.5 KB = 0.1 MB) +Contents/MonoBundle/.xamarin/osx-x64/Microsoft.Extensions.Diagnostics.Abstractions.dll: 18,432 bytes (18.0 KB = 0.0 MB) +Contents/MonoBundle/.xamarin/osx-x64/Microsoft.Extensions.FileProviders.Abstractions.dll: 14,848 bytes (14.5 KB = 0.0 MB) +Contents/MonoBundle/.xamarin/osx-x64/Microsoft.Extensions.Hosting.Abstractions.dll: 35,840 bytes (35.0 KB = 0.0 MB) +Contents/MonoBundle/.xamarin/osx-x64/Microsoft.Extensions.Logging.Abstractions.dll: 132,096 bytes (129.0 KB = 0.1 MB) +Contents/MonoBundle/.xamarin/osx-x64/Microsoft.Extensions.Options.dll: 118,272 bytes (115.5 KB = 0.1 MB) +Contents/MonoBundle/.xamarin/osx-x64/Microsoft.Extensions.Primitives.dll: 63,488 bytes (62.0 KB = 0.1 MB) Contents/MonoBundle/.xamarin/osx-x64/Microsoft.macOS.dll: 64,387,584 bytes (62,878.5 KB = 61.4 MB) -Contents/MonoBundle/.xamarin/osx-x64/Microsoft.VisualBasic.Core.dll: 1,165,576 bytes (1,138.3 KB = 1.1 MB) -Contents/MonoBundle/.xamarin/osx-x64/Microsoft.VisualBasic.dll: 17,672 bytes (17.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/Microsoft.Win32.Primitives.dll: 16,136 bytes (15.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/Microsoft.Win32.Registry.dll: 34,576 bytes (33.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/mscorlib.dll: 60,168 bytes (58.8 KB = 0.1 MB) -Contents/MonoBundle/.xamarin/osx-x64/netstandard.dll: 101,688 bytes (99.3 KB = 0.1 MB) +Contents/MonoBundle/.xamarin/osx-x64/Microsoft.VisualBasic.Core.dll: 1,155,072 bytes (1,128.0 KB = 1.1 MB) +Contents/MonoBundle/.xamarin/osx-x64/Microsoft.Win32.Registry.dll: 24,064 bytes (23.5 KB = 0.0 MB) Contents/MonoBundle/.xamarin/osx-x64/SizeTestApp.dll: 9,728 bytes (9.5 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.AppContext.dll: 15,672 bytes (15.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Buffers.dll: 15,632 bytes (15.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Collections.Concurrent.dll: 133,392 bytes (130.3 KB = 0.1 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Collections.dll: 289,552 bytes (282.8 KB = 0.3 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Collections.Immutable.dll: 987,400 bytes (964.3 KB = 0.9 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Collections.NonGeneric.dll: 93,448 bytes (91.3 KB = 0.1 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Collections.Specialized.dll: 92,944 bytes (90.8 KB = 0.1 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.ComponentModel.Annotations.dll: 191,760 bytes (187.3 KB = 0.2 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.ComponentModel.DataAnnotations.dll: 17,200 bytes (16.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.ComponentModel.dll: 17,712 bytes (17.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.ComponentModel.EventBasedAsync.dll: 36,616 bytes (35.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.ComponentModel.Primitives.dll: 70,928 bytes (69.3 KB = 0.1 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.ComponentModel.TypeConverter.dll: 765,712 bytes (747.8 KB = 0.7 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Configuration.dll: 19,760 bytes (19.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Console.dll: 195,336 bytes (190.8 KB = 0.2 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Core.dll: 23,816 bytes (23.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Data.Common.dll: 2,799,376 bytes (2,733.8 KB = 2.7 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Data.DataSetExtensions.dll: 16,136 bytes (15.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Data.dll: 25,864 bytes (25.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Diagnostics.Contracts.dll: 16,656 bytes (16.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Diagnostics.Debug.dll: 16,176 bytes (15.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Diagnostics.DiagnosticSource.dll: 501,008 bytes (489.3 KB = 0.5 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Diagnostics.FileVersionInfo.dll: 43,824 bytes (42.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Diagnostics.Process.dll: 255,248 bytes (249.3 KB = 0.2 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Diagnostics.StackTrace.dll: 35,640 bytes (34.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Diagnostics.TextWriterTraceListener.dll: 59,184 bytes (57.8 KB = 0.1 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Diagnostics.Tools.dll: 15,632 bytes (15.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Diagnostics.TraceSource.dll: 131,848 bytes (128.8 KB = 0.1 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Diagnostics.Tracing.dll: 16,688 bytes (16.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.dll: 50,952 bytes (49.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Drawing.dll: 20,784 bytes (20.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Drawing.Primitives.dll: 123,696 bytes (120.8 KB = 0.1 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Dynamic.Runtime.dll: 16,648 bytes (16.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Formats.Asn1.dll: 232,712 bytes (227.3 KB = 0.2 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Formats.Tar.dll: 285,968 bytes (279.3 KB = 0.3 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Globalization.Calendars.dll: 16,184 bytes (15.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Globalization.dll: 16,136 bytes (15.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Globalization.Extensions.dll: 16,176 bytes (15.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.IO.Compression.Brotli.dll: 73,520 bytes (71.8 KB = 0.1 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.IO.Compression.dll: 463,632 bytes (452.8 KB = 0.4 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.IO.Compression.FileSystem.dll: 15,664 bytes (15.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.IO.Compression.ZipFile.dll: 92,464 bytes (90.3 KB = 0.1 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.IO.dll: 16,144 bytes (15.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.IO.FileSystem.AccessControl.dll: 33,552 bytes (32.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.IO.FileSystem.dll: 16,136 bytes (15.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.IO.FileSystem.DriveInfo.dll: 79,632 bytes (77.8 KB = 0.1 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.IO.FileSystem.Primitives.dll: 15,624 bytes (15.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.IO.FileSystem.Watcher.dll: 106,800 bytes (104.3 KB = 0.1 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.IO.IsolatedStorage.dll: 77,064 bytes (75.3 KB = 0.1 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.IO.MemoryMappedFiles.dll: 83,208 bytes (81.3 KB = 0.1 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.IO.Pipelines.dll: 182,576 bytes (178.3 KB = 0.2 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.IO.Pipes.AccessControl.dll: 24,848 bytes (24.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.IO.Pipes.dll: 127,288 bytes (124.3 KB = 0.1 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.IO.UnmanagedMemoryStream.dll: 16,144 bytes (15.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Linq.AsyncEnumerable.dll: 1,335,088 bytes (1,303.8 KB = 1.3 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Linq.dll: 701,192 bytes (684.8 KB = 0.7 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Linq.Expressions.dll: 3,726,128 bytes (3,638.8 KB = 3.6 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Linq.Parallel.dll: 779,024 bytes (760.8 KB = 0.7 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Linq.Queryable.dll: 178,992 bytes (174.8 KB = 0.2 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Memory.dll: 152,880 bytes (149.3 KB = 0.1 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Net.dll: 17,712 bytes (17.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Net.Http.dll: 1,666,312 bytes (1,627.3 KB = 1.6 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Net.Http.Json.dll: 120,072 bytes (117.3 KB = 0.1 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Net.HttpListener.dll: 290,568 bytes (283.8 KB = 0.3 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Net.Mail.dll: 472,880 bytes (461.8 KB = 0.5 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Net.NameResolution.dll: 102,664 bytes (100.3 KB = 0.1 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Net.NetworkInformation.dll: 135,944 bytes (132.8 KB = 0.1 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Net.Ping.dll: 88,848 bytes (86.8 KB = 0.1 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Net.Primitives.dll: 223,496 bytes (218.3 KB = 0.2 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Net.Quic.dll: 340,752 bytes (332.8 KB = 0.3 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Net.Requests.dll: 363,280 bytes (354.8 KB = 0.3 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Net.Security.dll: 699,656 bytes (683.3 KB = 0.7 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Net.ServerSentEvents.dll: 72,504 bytes (70.8 KB = 0.1 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Net.ServicePoint.dll: 15,632 bytes (15.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Net.Sockets.dll: 605,456 bytes (591.3 KB = 0.6 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Net.WebClient.dll: 157,968 bytes (154.3 KB = 0.2 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Net.WebHeaderCollection.dll: 55,056 bytes (53.8 KB = 0.1 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Net.WebProxy.dll: 34,576 bytes (33.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Net.WebSockets.Client.dll: 90,416 bytes (88.3 KB = 0.1 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Net.WebSockets.dll: 223,504 bytes (218.3 KB = 0.2 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Numerics.dll: 15,664 bytes (15.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Numerics.Vectors.dll: 16,648 bytes (16.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.ObjectModel.dll: 69,384 bytes (67.8 KB = 0.1 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Private.CoreLib.dll: 16,502,024 bytes (16,115.3 KB = 15.7 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Private.DataContractSerialization.dll: 2,064,656 bytes (2,016.3 KB = 2.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Private.Uri.dll: 240,392 bytes (234.8 KB = 0.2 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Private.Xml.dll: 7,690,504 bytes (7,510.3 KB = 7.3 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Private.Xml.Linq.dll: 370,960 bytes (362.3 KB = 0.4 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Reflection.DispatchProxy.dll: 67,856 bytes (66.3 KB = 0.1 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Reflection.dll: 16,688 bytes (16.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Reflection.Emit.dll: 305,928 bytes (298.8 KB = 0.3 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Reflection.Emit.ILGeneration.dll: 16,176 bytes (15.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Reflection.Emit.Lightweight.dll: 16,176 bytes (15.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Reflection.Extensions.dll: 15,672 bytes (15.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Reflection.Metadata.dll: 1,154,824 bytes (1,127.8 KB = 1.1 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Reflection.Primitives.dll: 16,144 bytes (15.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Reflection.TypeExtensions.dll: 32,008 bytes (31.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Resources.Reader.dll: 15,664 bytes (15.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Resources.ResourceManager.dll: 16,136 bytes (15.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Resources.Writer.dll: 42,768 bytes (41.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Runtime.CompilerServices.Unsafe.dll: 15,664 bytes (15.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Runtime.CompilerServices.VisualC.dll: 19,256 bytes (18.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Runtime.dll: 45,832 bytes (44.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Runtime.Extensions.dll: 18,184 bytes (17.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Runtime.Handles.dll: 16,136 bytes (15.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Runtime.InteropServices.dll: 102,704 bytes (100.3 KB = 0.1 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Runtime.InteropServices.JavaScript.dll: 40,200 bytes (39.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Runtime.InteropServices.RuntimeInformation.dll: 16,136 bytes (15.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Runtime.Intrinsics.dll: 19,248 bytes (18.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Runtime.Loader.dll: 16,136 bytes (15.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Runtime.Numerics.dll: 421,688 bytes (411.8 KB = 0.4 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Runtime.Serialization.dll: 17,672 bytes (17.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Runtime.Serialization.Formatters.dll: 115,976 bytes (113.3 KB = 0.1 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Runtime.Serialization.Json.dll: 16,136 bytes (15.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Runtime.Serialization.Primitives.dll: 28,944 bytes (28.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Runtime.Serialization.Xml.dll: 17,160 bytes (16.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Security.AccessControl.dll: 59,656 bytes (58.3 KB = 0.1 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Security.Claims.dll: 92,936 bytes (90.8 KB = 0.1 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Security.Cryptography.Algorithms.dll: 17,672 bytes (17.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Security.Cryptography.Cng.dll: 16,688 bytes (16.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Security.Cryptography.Csp.dll: 16,656 bytes (16.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Security.Cryptography.dll: 2,116,408 bytes (2,066.8 KB = 2.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Security.Cryptography.Encoding.dll: 16,176 bytes (15.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Security.Cryptography.OpenSsl.dll: 16,136 bytes (15.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Security.Cryptography.Primitives.dll: 16,136 bytes (15.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Security.Cryptography.X509Certificates.dll: 17,680 bytes (17.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Security.dll: 18,696 bytes (18.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Security.Principal.dll: 15,632 bytes (15.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Security.Principal.Windows.dll: 39,216 bytes (38.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Security.SecureString.dll: 16,184 bytes (15.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.ServiceModel.Web.dll: 17,208 bytes (16.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.ServiceProcess.dll: 16,176 bytes (15.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Text.Encoding.CodePages.dll: 850,736 bytes (830.8 KB = 0.8 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Text.Encoding.dll: 16,144 bytes (15.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Text.Encoding.Extensions.dll: 16,136 bytes (15.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Text.Encodings.Web.dll: 114,952 bytes (112.3 KB = 0.1 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Text.Json.dll: 1,945,392 bytes (1,899.8 KB = 1.9 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Text.RegularExpressions.dll: 1,063,696 bytes (1,038.8 KB = 1.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Threading.AccessControl.dll: 34,568 bytes (33.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Threading.Channels.dll: 150,320 bytes (146.8 KB = 0.1 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Threading.dll: 75,016 bytes (73.3 KB = 0.1 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Threading.Overlapped.dll: 16,136 bytes (15.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Threading.Tasks.Dataflow.dll: 472,336 bytes (461.3 KB = 0.5 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Threading.Tasks.dll: 17,160 bytes (16.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Threading.Tasks.Extensions.dll: 16,176 bytes (15.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Threading.Tasks.Parallel.dll: 120,624 bytes (117.8 KB = 0.1 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Threading.Thread.dll: 16,136 bytes (15.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Threading.ThreadPool.dll: 16,136 bytes (15.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Threading.Timer.dll: 15,624 bytes (15.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Transactions.dll: 17,208 bytes (16.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Transactions.Local.dll: 357,176 bytes (348.8 KB = 0.3 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.ValueTuple.dll: 16,144 bytes (15.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Web.dll: 15,624 bytes (15.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Web.HttpUtility.dll: 53,552 bytes (52.3 KB = 0.1 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Windows.dll: 16,176 bytes (15.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Xml.dll: 23,816 bytes (23.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Xml.Linq.dll: 16,136 bytes (15.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Xml.ReaderWriter.dll: 22,280 bytes (21.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Xml.Serialization.dll: 16,648 bytes (16.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Xml.XDocument.dll: 16,648 bytes (16.3 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Xml.XmlDocument.dll: 16,136 bytes (15.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Xml.XmlSerializer.dll: 18,224 bytes (17.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Xml.XPath.dll: 16,176 bytes (15.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/System.Xml.XPath.XDocument.dll: 17,160 bytes (16.8 KB = 0.0 MB) -Contents/MonoBundle/.xamarin/osx-x64/WindowsBase.dll: 16,656 bytes (16.3 KB = 0.0 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Collections.Concurrent.dll: 122,880 bytes (120.0 KB = 0.1 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Collections.dll: 279,040 bytes (272.5 KB = 0.3 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Collections.Immutable.dll: 976,896 bytes (954.0 KB = 0.9 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Collections.NonGeneric.dll: 82,944 bytes (81.0 KB = 0.1 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Collections.Specialized.dll: 82,432 bytes (80.5 KB = 0.1 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.ComponentModel.Annotations.dll: 181,248 bytes (177.0 KB = 0.2 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.ComponentModel.dll: 7,168 bytes (7.0 KB = 0.0 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.ComponentModel.EventBasedAsync.dll: 26,112 bytes (25.5 KB = 0.0 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.ComponentModel.Primitives.dll: 60,416 bytes (59.0 KB = 0.1 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.ComponentModel.TypeConverter.dll: 755,200 bytes (737.5 KB = 0.7 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Console.dll: 184,832 bytes (180.5 KB = 0.2 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Data.Common.dll: 2,788,864 bytes (2,723.5 KB = 2.7 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Diagnostics.DiagnosticSource.dll: 490,496 bytes (479.0 KB = 0.5 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Diagnostics.FileVersionInfo.dll: 33,280 bytes (32.5 KB = 0.0 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Diagnostics.Process.dll: 245,760 bytes (240.0 KB = 0.2 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Diagnostics.StackTrace.dll: 25,088 bytes (24.5 KB = 0.0 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Diagnostics.TextWriterTraceListener.dll: 48,640 bytes (47.5 KB = 0.0 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Diagnostics.TraceSource.dll: 121,344 bytes (118.5 KB = 0.1 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Drawing.Primitives.dll: 113,152 bytes (110.5 KB = 0.1 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Formats.Asn1.dll: 222,208 bytes (217.0 KB = 0.2 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Formats.Tar.dll: 275,456 bytes (269.0 KB = 0.3 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.IO.Compression.Brotli.dll: 62,976 bytes (61.5 KB = 0.1 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.IO.Compression.dll: 450,048 bytes (439.5 KB = 0.4 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.IO.Compression.ZipFile.dll: 81,920 bytes (80.0 KB = 0.1 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.IO.FileSystem.AccessControl.dll: 23,040 bytes (22.5 KB = 0.0 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.IO.FileSystem.DriveInfo.dll: 69,120 bytes (67.5 KB = 0.1 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.IO.FileSystem.Watcher.dll: 96,256 bytes (94.0 KB = 0.1 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.IO.IsolatedStorage.dll: 66,560 bytes (65.0 KB = 0.1 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.IO.MemoryMappedFiles.dll: 72,704 bytes (71.0 KB = 0.1 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.IO.Pipelines.dll: 172,032 bytes (168.0 KB = 0.2 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.IO.Pipes.AccessControl.dll: 14,336 bytes (14.0 KB = 0.0 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.IO.Pipes.dll: 116,736 bytes (114.0 KB = 0.1 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Linq.AsyncEnumerable.dll: 1,324,544 bytes (1,293.5 KB = 1.3 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Linq.dll: 690,688 bytes (674.5 KB = 0.7 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Linq.Expressions.dll: 3,715,584 bytes (3,628.5 KB = 3.5 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Linq.Parallel.dll: 768,512 bytes (750.5 KB = 0.7 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Linq.Queryable.dll: 168,448 bytes (164.5 KB = 0.2 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Memory.dll: 142,336 bytes (139.0 KB = 0.1 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Net.Http.dll: 1,655,808 bytes (1,617.0 KB = 1.6 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Net.Http.Json.dll: 109,568 bytes (107.0 KB = 0.1 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Net.HttpListener.dll: 280,064 bytes (273.5 KB = 0.3 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Net.Mail.dll: 462,336 bytes (451.5 KB = 0.4 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Net.NameResolution.dll: 92,160 bytes (90.0 KB = 0.1 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Net.NetworkInformation.dll: 125,440 bytes (122.5 KB = 0.1 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Net.Ping.dll: 78,336 bytes (76.5 KB = 0.1 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Net.Primitives.dll: 212,992 bytes (208.0 KB = 0.2 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Net.Quic.dll: 330,240 bytes (322.5 KB = 0.3 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Net.Requests.dll: 352,768 bytes (344.5 KB = 0.3 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Net.Security.dll: 689,152 bytes (673.0 KB = 0.7 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Net.ServerSentEvents.dll: 61,952 bytes (60.5 KB = 0.1 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Net.Sockets.dll: 594,944 bytes (581.0 KB = 0.6 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Net.WebClient.dll: 147,456 bytes (144.0 KB = 0.1 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Net.WebHeaderCollection.dll: 44,544 bytes (43.5 KB = 0.0 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Net.WebProxy.dll: 24,064 bytes (23.5 KB = 0.0 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Net.WebSockets.Client.dll: 79,872 bytes (78.0 KB = 0.1 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Net.WebSockets.dll: 212,992 bytes (208.0 KB = 0.2 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.ObjectModel.dll: 58,880 bytes (57.5 KB = 0.1 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Private.CoreLib.dll: 16,488,448 bytes (16,102.0 KB = 15.7 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Private.DataContractSerialization.dll: 2,054,144 bytes (2,006.0 KB = 2.0 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Private.Uri.dll: 229,888 bytes (224.5 KB = 0.2 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Private.Xml.dll: 7,680,000 bytes (7,500.0 KB = 7.3 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Private.Xml.Linq.dll: 360,448 bytes (352.0 KB = 0.3 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Reflection.DispatchProxy.dll: 57,344 bytes (56.0 KB = 0.1 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Reflection.Emit.dll: 295,424 bytes (288.5 KB = 0.3 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Reflection.Metadata.dll: 1,144,320 bytes (1,117.5 KB = 1.1 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Reflection.TypeExtensions.dll: 21,504 bytes (21.0 KB = 0.0 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Resources.Writer.dll: 32,256 bytes (31.5 KB = 0.0 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Runtime.CompilerServices.VisualC.dll: 8,704 bytes (8.5 KB = 0.0 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Runtime.InteropServices.dll: 92,160 bytes (90.0 KB = 0.1 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Runtime.InteropServices.JavaScript.dll: 29,696 bytes (29.0 KB = 0.0 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Runtime.Numerics.dll: 411,136 bytes (401.5 KB = 0.4 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Runtime.Serialization.Formatters.dll: 105,472 bytes (103.0 KB = 0.1 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Runtime.Serialization.Primitives.dll: 18,432 bytes (18.0 KB = 0.0 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Security.AccessControl.dll: 49,152 bytes (48.0 KB = 0.0 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Security.Claims.dll: 82,432 bytes (80.5 KB = 0.1 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Security.Cryptography.dll: 2,105,856 bytes (2,056.5 KB = 2.0 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Security.Principal.Windows.dll: 28,672 bytes (28.0 KB = 0.0 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Text.Encoding.CodePages.dll: 840,192 bytes (820.5 KB = 0.8 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Text.Encodings.Web.dll: 104,448 bytes (102.0 KB = 0.1 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Text.Json.dll: 1,934,848 bytes (1,889.5 KB = 1.8 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Text.RegularExpressions.dll: 1,053,184 bytes (1,028.5 KB = 1.0 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Threading.AccessControl.dll: 24,064 bytes (23.5 KB = 0.0 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Threading.Channels.dll: 139,776 bytes (136.5 KB = 0.1 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Threading.dll: 64,512 bytes (63.0 KB = 0.1 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Threading.Tasks.Dataflow.dll: 461,824 bytes (451.0 KB = 0.4 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Threading.Tasks.Parallel.dll: 110,080 bytes (107.5 KB = 0.1 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Transactions.Local.dll: 346,624 bytes (338.5 KB = 0.3 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Web.HttpUtility.dll: 43,008 bytes (42.0 KB = 0.0 MB) +Contents/MonoBundle/.xamarin/osx-x64/System.Xml.XPath.XDocument.dll: 6,656 bytes (6.5 KB = 0.0 MB) Contents/MonoBundle/libclrgc.dylib: 2,038,512 bytes (1,990.7 KB = 1.9 MB) Contents/MonoBundle/libclrgcexp.dylib: 2,199,008 bytes (2,147.5 KB = 2.1 MB) -Contents/MonoBundle/libclrjit.dylib: 6,487,216 bytes (6,335.2 KB = 6.2 MB) -Contents/MonoBundle/libcoreclr.dylib: 12,862,496 bytes (12,561.0 KB = 12.3 MB) +Contents/MonoBundle/libclrjit.dylib: 6,487,232 bytes (6,335.2 KB = 6.2 MB) +Contents/MonoBundle/libcoreclr.dylib: 12,829,056 bytes (12,528.4 KB = 12.2 MB) Contents/MonoBundle/libhostfxr.dylib: 833,536 bytes (814.0 KB = 0.8 MB) Contents/MonoBundle/libhostpolicy.dylib: 776,624 bytes (758.4 KB = 0.7 MB) -Contents/MonoBundle/libmscordaccore.dylib: 4,511,504 bytes (4,405.8 KB = 4.3 MB) +Contents/MonoBundle/libmscordaccore.dylib: 4,511,296 bytes (4,405.6 KB = 4.3 MB) Contents/MonoBundle/libmscordbi.dylib: 3,442,608 bytes (3,361.9 KB = 3.3 MB) Contents/MonoBundle/libSystem.Globalization.Native.dylib: 286,816 bytes (280.1 KB = 0.3 MB) Contents/MonoBundle/libSystem.IO.Compression.Native.dylib: 3,278,528 bytes (3,201.7 KB = 3.1 MB) -Contents/MonoBundle/libSystem.Native.dylib: 296,256 bytes (289.3 KB = 0.3 MB) +Contents/MonoBundle/libSystem.Native.dylib: 296,304 bytes (289.4 KB = 0.3 MB) Contents/MonoBundle/libSystem.Net.Security.Native.dylib: 136,656 bytes (133.5 KB = 0.1 MB) Contents/MonoBundle/libSystem.Security.Cryptography.Native.Apple.dylib: 436,400 bytes (426.2 KB = 0.4 MB) +Contents/MonoBundle/Microsoft.VisualBasic.dll: 7,168 bytes (7.0 KB = 0.0 MB) +Contents/MonoBundle/Microsoft.Win32.Primitives.dll: 5,632 bytes (5.5 KB = 0.0 MB) +Contents/MonoBundle/mscorlib.dll: 49,664 bytes (48.5 KB = 0.0 MB) +Contents/MonoBundle/netstandard.dll: 91,136 bytes (89.0 KB = 0.1 MB) Contents/MonoBundle/runtimeconfig.bin: 1,363 bytes (1.3 KB = 0.0 MB) +Contents/MonoBundle/System.AppContext.dll: 5,120 bytes (5.0 KB = 0.0 MB) +Contents/MonoBundle/System.Buffers.dll: 5,120 bytes (5.0 KB = 0.0 MB) +Contents/MonoBundle/System.ComponentModel.DataAnnotations.dll: 6,656 bytes (6.5 KB = 0.0 MB) +Contents/MonoBundle/System.Configuration.dll: 9,216 bytes (9.0 KB = 0.0 MB) +Contents/MonoBundle/System.Core.dll: 13,312 bytes (13.0 KB = 0.0 MB) +Contents/MonoBundle/System.Data.DataSetExtensions.dll: 5,632 bytes (5.5 KB = 0.0 MB) +Contents/MonoBundle/System.Data.dll: 15,360 bytes (15.0 KB = 0.0 MB) +Contents/MonoBundle/System.Diagnostics.Contracts.dll: 6,144 bytes (6.0 KB = 0.0 MB) +Contents/MonoBundle/System.Diagnostics.Debug.dll: 5,632 bytes (5.5 KB = 0.0 MB) +Contents/MonoBundle/System.Diagnostics.Tools.dll: 5,120 bytes (5.0 KB = 0.0 MB) +Contents/MonoBundle/System.Diagnostics.Tracing.dll: 6,144 bytes (6.0 KB = 0.0 MB) +Contents/MonoBundle/System.dll: 40,448 bytes (39.5 KB = 0.0 MB) +Contents/MonoBundle/System.Drawing.dll: 10,240 bytes (10.0 KB = 0.0 MB) +Contents/MonoBundle/System.Dynamic.Runtime.dll: 6,144 bytes (6.0 KB = 0.0 MB) +Contents/MonoBundle/System.Globalization.Calendars.dll: 5,632 bytes (5.5 KB = 0.0 MB) +Contents/MonoBundle/System.Globalization.dll: 5,632 bytes (5.5 KB = 0.0 MB) +Contents/MonoBundle/System.Globalization.Extensions.dll: 5,632 bytes (5.5 KB = 0.0 MB) +Contents/MonoBundle/System.IO.Compression.FileSystem.dll: 5,120 bytes (5.0 KB = 0.0 MB) +Contents/MonoBundle/System.IO.dll: 5,632 bytes (5.5 KB = 0.0 MB) +Contents/MonoBundle/System.IO.FileSystem.dll: 5,632 bytes (5.5 KB = 0.0 MB) +Contents/MonoBundle/System.IO.FileSystem.Primitives.dll: 5,120 bytes (5.0 KB = 0.0 MB) +Contents/MonoBundle/System.IO.UnmanagedMemoryStream.dll: 5,632 bytes (5.5 KB = 0.0 MB) +Contents/MonoBundle/System.Net.dll: 7,168 bytes (7.0 KB = 0.0 MB) +Contents/MonoBundle/System.Net.ServicePoint.dll: 5,120 bytes (5.0 KB = 0.0 MB) +Contents/MonoBundle/System.Numerics.dll: 5,120 bytes (5.0 KB = 0.0 MB) +Contents/MonoBundle/System.Numerics.Vectors.dll: 6,144 bytes (6.0 KB = 0.0 MB) +Contents/MonoBundle/System.Reflection.dll: 6,144 bytes (6.0 KB = 0.0 MB) +Contents/MonoBundle/System.Reflection.Emit.ILGeneration.dll: 5,632 bytes (5.5 KB = 0.0 MB) +Contents/MonoBundle/System.Reflection.Emit.Lightweight.dll: 5,632 bytes (5.5 KB = 0.0 MB) +Contents/MonoBundle/System.Reflection.Extensions.dll: 5,120 bytes (5.0 KB = 0.0 MB) +Contents/MonoBundle/System.Reflection.Primitives.dll: 5,632 bytes (5.5 KB = 0.0 MB) +Contents/MonoBundle/System.Resources.Reader.dll: 5,120 bytes (5.0 KB = 0.0 MB) +Contents/MonoBundle/System.Resources.ResourceManager.dll: 5,632 bytes (5.5 KB = 0.0 MB) +Contents/MonoBundle/System.Runtime.CompilerServices.Unsafe.dll: 5,120 bytes (5.0 KB = 0.0 MB) +Contents/MonoBundle/System.Runtime.dll: 35,328 bytes (34.5 KB = 0.0 MB) +Contents/MonoBundle/System.Runtime.Extensions.dll: 7,680 bytes (7.5 KB = 0.0 MB) +Contents/MonoBundle/System.Runtime.Handles.dll: 5,632 bytes (5.5 KB = 0.0 MB) +Contents/MonoBundle/System.Runtime.InteropServices.RuntimeInformation.dll: 5,632 bytes (5.5 KB = 0.0 MB) +Contents/MonoBundle/System.Runtime.Intrinsics.dll: 8,704 bytes (8.5 KB = 0.0 MB) +Contents/MonoBundle/System.Runtime.Loader.dll: 5,632 bytes (5.5 KB = 0.0 MB) +Contents/MonoBundle/System.Runtime.Serialization.dll: 7,168 bytes (7.0 KB = 0.0 MB) +Contents/MonoBundle/System.Runtime.Serialization.Json.dll: 5,632 bytes (5.5 KB = 0.0 MB) +Contents/MonoBundle/System.Runtime.Serialization.Xml.dll: 6,656 bytes (6.5 KB = 0.0 MB) +Contents/MonoBundle/System.Security.Cryptography.Algorithms.dll: 7,168 bytes (7.0 KB = 0.0 MB) +Contents/MonoBundle/System.Security.Cryptography.Cng.dll: 6,144 bytes (6.0 KB = 0.0 MB) +Contents/MonoBundle/System.Security.Cryptography.Csp.dll: 6,144 bytes (6.0 KB = 0.0 MB) +Contents/MonoBundle/System.Security.Cryptography.Encoding.dll: 5,632 bytes (5.5 KB = 0.0 MB) +Contents/MonoBundle/System.Security.Cryptography.OpenSsl.dll: 5,632 bytes (5.5 KB = 0.0 MB) +Contents/MonoBundle/System.Security.Cryptography.Primitives.dll: 5,632 bytes (5.5 KB = 0.0 MB) +Contents/MonoBundle/System.Security.Cryptography.X509Certificates.dll: 7,168 bytes (7.0 KB = 0.0 MB) +Contents/MonoBundle/System.Security.dll: 8,192 bytes (8.0 KB = 0.0 MB) +Contents/MonoBundle/System.Security.Principal.dll: 5,120 bytes (5.0 KB = 0.0 MB) +Contents/MonoBundle/System.Security.SecureString.dll: 5,632 bytes (5.5 KB = 0.0 MB) +Contents/MonoBundle/System.ServiceModel.Web.dll: 6,656 bytes (6.5 KB = 0.0 MB) +Contents/MonoBundle/System.ServiceProcess.dll: 5,632 bytes (5.5 KB = 0.0 MB) +Contents/MonoBundle/System.Text.Encoding.dll: 5,632 bytes (5.5 KB = 0.0 MB) +Contents/MonoBundle/System.Text.Encoding.Extensions.dll: 5,632 bytes (5.5 KB = 0.0 MB) +Contents/MonoBundle/System.Threading.Overlapped.dll: 5,632 bytes (5.5 KB = 0.0 MB) +Contents/MonoBundle/System.Threading.Tasks.dll: 6,656 bytes (6.5 KB = 0.0 MB) +Contents/MonoBundle/System.Threading.Tasks.Extensions.dll: 5,632 bytes (5.5 KB = 0.0 MB) +Contents/MonoBundle/System.Threading.Thread.dll: 5,632 bytes (5.5 KB = 0.0 MB) +Contents/MonoBundle/System.Threading.ThreadPool.dll: 5,632 bytes (5.5 KB = 0.0 MB) +Contents/MonoBundle/System.Threading.Timer.dll: 5,120 bytes (5.0 KB = 0.0 MB) +Contents/MonoBundle/System.Transactions.dll: 6,656 bytes (6.5 KB = 0.0 MB) +Contents/MonoBundle/System.ValueTuple.dll: 5,632 bytes (5.5 KB = 0.0 MB) +Contents/MonoBundle/System.Web.dll: 5,120 bytes (5.0 KB = 0.0 MB) +Contents/MonoBundle/System.Windows.dll: 5,632 bytes (5.5 KB = 0.0 MB) +Contents/MonoBundle/System.Xml.dll: 13,312 bytes (13.0 KB = 0.0 MB) +Contents/MonoBundle/System.Xml.Linq.dll: 5,632 bytes (5.5 KB = 0.0 MB) +Contents/MonoBundle/System.Xml.ReaderWriter.dll: 11,776 bytes (11.5 KB = 0.0 MB) +Contents/MonoBundle/System.Xml.Serialization.dll: 6,144 bytes (6.0 KB = 0.0 MB) +Contents/MonoBundle/System.Xml.XDocument.dll: 6,144 bytes (6.0 KB = 0.0 MB) +Contents/MonoBundle/System.Xml.XmlDocument.dll: 5,632 bytes (5.5 KB = 0.0 MB) +Contents/MonoBundle/System.Xml.XmlSerializer.dll: 7,680 bytes (7.5 KB = 0.0 MB) +Contents/MonoBundle/System.Xml.XPath.dll: 5,632 bytes (5.5 KB = 0.0 MB) +Contents/MonoBundle/WindowsBase.dll: 6,144 bytes (6.0 KB = 0.0 MB) Contents/PkgInfo: 8 bytes (0.0 KB = 0.0 MB) Contents/Resources/archived-expanded-entitlements.xcent: 241 bytes (0.2 KB = 0.0 MB) diff --git a/tests/dotnet/UnitTests/expected/MacOSX-NativeAOT-size.txt b/tests/dotnet/UnitTests/expected/MacOSX-NativeAOT-size.txt index ec95e91c0058..0a5e2c42e299 100644 --- a/tests/dotnet/UnitTests/expected/MacOSX-NativeAOT-size.txt +++ b/tests/dotnet/UnitTests/expected/MacOSX-NativeAOT-size.txt @@ -1,8 +1,8 @@ -AppBundleSize: 5,676,317 bytes (5,543.3 KB = 5.4 MB) +AppBundleSize: 6,087,693 bytes (5,945.0 KB = 5.8 MB) # The following list of files and their sizes is just informational / for review, and isn't used in the test: Contents/_CodeSignature/CodeResources: 2,644 bytes (2.6 KB = 0.0 MB) Contents/Info.plist: 730 bytes (0.7 KB = 0.0 MB) -Contents/MacOS/SizeTestApp: 5,670,928 bytes (5,538.0 KB = 5.4 MB) +Contents/MacOS/SizeTestApp: 6,082,304 bytes (5,939.8 KB = 5.8 MB) Contents/MonoBundle/runtimeconfig.bin: 1,766 bytes (1.7 KB = 0.0 MB) Contents/PkgInfo: 8 bytes (0.0 KB = 0.0 MB) Contents/Resources/archived-expanded-entitlements.xcent: 241 bytes (0.2 KB = 0.0 MB) diff --git a/tests/dotnet/UnitTests/expected/TVOS-CoreCLR-Interpreter-preservedapis.txt b/tests/dotnet/UnitTests/expected/TVOS-CoreCLR-Interpreter-preservedapis.txt index 1386b847f7ad..a8f9cd53db1a 100644 --- a/tests/dotnet/UnitTests/expected/TVOS-CoreCLR-Interpreter-preservedapis.txt +++ b/tests/dotnet/UnitTests/expected/TVOS-CoreCLR-Interpreter-preservedapis.txt @@ -857,6 +857,7 @@ Microsoft.tvOS.dll:ObjCRuntime.RuntimeTypeHandleEqualityComparer.Equals(System.R Microsoft.tvOS.dll:ObjCRuntime.RuntimeTypeHandleEqualityComparer.GetHashCode(System.RuntimeTypeHandle) Microsoft.tvOS.dll:ObjCRuntime.Selector Microsoft.tvOS.dll:ObjCRuntime.Selector._Xamarin_ConstructINativeObject(ObjCRuntime.NativeHandle, System.Boolean) +Microsoft.tvOS.dll:ObjCRuntime.Selector..cctor() Microsoft.tvOS.dll:ObjCRuntime.Selector..ctor(ObjCRuntime.NativeHandle, System.Boolean) Microsoft.tvOS.dll:ObjCRuntime.Selector..ctor(ObjCRuntime.NativeHandle) Microsoft.tvOS.dll:ObjCRuntime.Selector.Equals(ObjCRuntime.Selector) @@ -1164,6 +1165,7 @@ Microsoft.tvOS.dll:UIKit.UIApplication.xamarin_UIApplicationMain(System.Int32, S Microsoft.tvOS.dll:UIKit.UIApplicationDelegate Microsoft.tvOS.dll:UIKit.UIApplicationDelegate._Xamarin_ConstructINativeObject(ObjCRuntime.NativeHandle, System.Boolean) Microsoft.tvOS.dll:UIKit.UIApplicationDelegate._Xamarin_ConstructNSObject(ObjCRuntime.NativeHandle) +Microsoft.tvOS.dll:UIKit.UIApplicationDelegate..cctor() Microsoft.tvOS.dll:UIKit.UIApplicationDelegate..ctor() Microsoft.tvOS.dll:UIKit.UIApplicationDelegate..ctor(ObjCRuntime.NativeHandle) Microsoft.tvOS.dll:UIKit.UIApplicationDelegate..ctor(System.IntPtr, ObjCRuntime.IManagedRegistrar) @@ -5413,7 +5415,41 @@ System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.ConstantExpectedAttri System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute.set_Max(System.Object) System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DisallowNullAttribute System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DisallowNullAttribute..ctor() +System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes +System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes::All +System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes::AllConstructors +System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes::AllEvents +System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes::AllFields +System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes::AllMethods +System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes::AllNestedTypes +System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes::AllProperties +System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes::Interfaces +System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes::None +System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes::NonPublicConstructors +System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes::NonPublicConstructorsWithInherited +System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes::NonPublicEvents +System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes::NonPublicEventsWithInherited +System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes::NonPublicFields +System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes::NonPublicFieldsWithInherited +System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes::NonPublicMethods +System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes::NonPublicMethodsWithInherited +System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes::NonPublicNestedTypes +System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes::NonPublicNestedTypesWithInherited +System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes::NonPublicProperties +System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes::NonPublicPropertiesWithInherited +System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes::PublicConstructors +System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes::PublicConstructorsWithInherited +System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes::PublicEvents +System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes::PublicFields +System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes::PublicMethods +System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes::PublicNestedTypes +System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes::PublicNestedTypesWithInherited +System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes::PublicParameterlessConstructor +System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes::PublicProperties +System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes System.Diagnostics.CodeAnalysis.DynamicDependencyAttribute::k__BackingField System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DynamicDependencyAttribute +System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DynamicDependencyAttribute..ctor(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes, System.Type) +System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DynamicDependencyAttribute..ctor(System.String, System.String, System.String) System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DynamicDependencyAttribute..ctor(System.String, System.Type) System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.MaybeNullAttribute System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.MaybeNullAttribute..ctor() @@ -6170,7 +6206,6 @@ System.Private.CoreLib.dll:System.Func`2 System.IO.S System.Private.CoreLib.dll:System.Func`2 System.IO.Stream/<>c::<>9__53_0 System.Private.CoreLib.dll:System.Func`2 System.Threading.Monitor::s_createCondition System.Private.CoreLib.dll:System.Func`2 System.Reflection.TypeNameResolver::_assemblyResolver -System.Private.CoreLib.dll:System.Func`2 System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods/<>O::<0>__CreateMarshalMethods System.Private.CoreLib.dll:System.Func`2 System.StubHelpers.StubHelpers/<>c::<>9__28_0 System.Private.CoreLib.dll:System.Func`3 System.Private.CoreLib.dll:System.Func`3..ctor(System.Object, System.IntPtr) @@ -8202,6 +8237,7 @@ System.Private.CoreLib.dll:System.Int32 System.DefaultBinder/BinderState::_origi System.Private.CoreLib.dll:System.Int32 System.DefaultBinder/Primitives::value__ System.Private.CoreLib.dll:System.Int32 System.Delegate/InvocationListEnumerator`1::_index System.Private.CoreLib.dll:System.Int32 System.DelegateBindingFlags::value__ +System.Private.CoreLib.dll:System.Int32 System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes::value__ System.Private.CoreLib.dll:System.Int32 System.Diagnostics.Contracts.ContractFailureKind::value__ System.Private.CoreLib.dll:System.Int32 System.Diagnostics.DebuggableAttribute/DebuggingModes::value__ System.Private.CoreLib.dll:System.Int32 System.Diagnostics.StackFrame::_columnNumber @@ -8622,6 +8658,7 @@ System.Private.CoreLib.dll:System.Int32 System.Runtime.InteropServices.GCHandleS System.Private.CoreLib.dll:System.Int32 System.Runtime.InteropServices.GCHandleType::value__ System.Private.CoreLib.dll:System.Int32 System.Runtime.InteropServices.Marshal::SystemDefaultCharSize System.Private.CoreLib.dll:System.Int32 System.Runtime.InteropServices.Marshal::SystemMaxDBCSCharSize +System.Private.CoreLib.dll:System.Int32 System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods::_nativeSize System.Private.CoreLib.dll:System.Int32 System.Runtime.InteropServices.MarshalAsAttribute::IidParameterIndex System.Private.CoreLib.dll:System.Int32 System.Runtime.InteropServices.MarshalAsAttribute::SizeConst System.Private.CoreLib.dll:System.Int32 System.Runtime.InteropServices.Marshalling.ComVariant/Blob::_size @@ -13305,7 +13342,6 @@ System.Private.CoreLib.dll:System.Runtime.CompilerServices.ConditionalWeakTable` System.Private.CoreLib.dll:System.Runtime.CompilerServices.ConditionalWeakTable`2 System.Runtime.InteropServices.NativeLibrary::s_nativeDllResolveMap System.Private.CoreLib.dll:System.Runtime.CompilerServices.ConditionalWeakTable`2 System.StubHelpers.BSTRMarshaler::s_trailByteTable System.Private.CoreLib.dll:System.Runtime.CompilerServices.ConditionalWeakTable`2 System.Threading.Tasks.TaskScheduler::s_activeTaskSchedulers -System.Private.CoreLib.dll:System.Runtime.CompilerServices.ConditionalWeakTable`2 System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods::s_marshalerCache System.Private.CoreLib.dll:System.Runtime.CompilerServices.ConditionalWeakTable`2 System.StubHelpers.StubHelpers::s_structureMarshalInfoCache System.Private.CoreLib.dll:System.Runtime.CompilerServices.ConditionalWeakTable`2 System.Runtime.CompilerServices.ConditionalWeakTable`2/Container::_parent System.Private.CoreLib.dll:System.Runtime.CompilerServices.ConditionalWeakTable`2 System.Runtime.CompilerServices.ConditionalWeakTable`2/Enumerator::_table @@ -14190,17 +14226,18 @@ System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal.WriteInt64(Sys System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal.WriteIntPtr(System.IntPtr, System.Int32, System.IntPtr) System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal.WriteIntPtr(System.IntPtr, System.IntPtr) System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods -System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods..cctor() -System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods..ctor(System.Type) -System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods.g__CreateMarshalMethods|20_0(System.Type) -System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods.ConvertToManaged(System.Object, System.Byte*, System.StubHelpers.CleanupWorkListElement&) -System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods.ConvertToUnmanaged(System.Object, System.Byte*, System.Int32, System.StubHelpers.CleanupWorkListElement&) -System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods.Free(System.Object, System.Byte*, System.Int32, System.StubHelpers.CleanupWorkListElement&) +System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods System.RuntimeType/CompositeCacheEntry::_marshalerMethods +System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods..ctor(System.Type, System.Int32) +System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods.ConvertToManaged(System.Object, System.Byte*) +System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods.ConvertToUnmanaged(System.Object, System.Byte*, System.StubHelpers.CleanupWorkListElement&) +System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods.Create(System.RuntimeType) +System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods.Free(System.Byte*) System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods.get_ConvertToManagedMethod() System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods.get_ConvertToUnmanagedMethod() System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods.get_FreeMethod() -System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods.GetMarshalMethodsForType(System.Type) -System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods/<>O +System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods.GetMarshalMethodsForType(System.RuntimeType) +System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods.GetStorageRef(System.RuntimeType/CompositeCacheEntry) +System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods.InitializeCompositeCache(System.RuntimeType/CompositeCacheEntry) System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods/ConvertToManagedDelegate System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods/ConvertToManagedDelegate System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods::_convertToManaged System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods/ConvertToManagedDelegate..ctor(System.Object, System.IntPtr) @@ -16160,7 +16197,9 @@ System.Private.CoreLib.dll:System.String System.Boolean::TrueString System.Private.CoreLib.dll:System.String System.Byte::System.IBinaryIntegerParseAndFormatInfo.OverflowMessage() System.Private.CoreLib.dll:System.String System.Char::System.IBinaryIntegerParseAndFormatInfo.OverflowMessage() System.Private.CoreLib.dll:System.String System.CharEnumerator::_str +System.Private.CoreLib.dll:System.String System.Diagnostics.CodeAnalysis.DynamicDependencyAttribute::k__BackingField System.Private.CoreLib.dll:System.String System.Diagnostics.CodeAnalysis.DynamicDependencyAttribute::k__BackingField +System.Private.CoreLib.dll:System.String System.Diagnostics.CodeAnalysis.DynamicDependencyAttribute::k__BackingField System.Private.CoreLib.dll:System.String System.Diagnostics.Contracts.ContractException::_condition System.Private.CoreLib.dll:System.String System.Diagnostics.Contracts.ContractException::_userMessage System.Private.CoreLib.dll:System.String System.Diagnostics.StackFrame::_fileName diff --git a/tests/dotnet/UnitTests/expected/TVOS-CoreCLR-Interpreter-size.txt b/tests/dotnet/UnitTests/expected/TVOS-CoreCLR-Interpreter-size.txt index f04264f52768..d0985c362b6c 100644 --- a/tests/dotnet/UnitTests/expected/TVOS-CoreCLR-Interpreter-size.txt +++ b/tests/dotnet/UnitTests/expected/TVOS-CoreCLR-Interpreter-size.txt @@ -1,4 +1,4 @@ -AppBundleSize: 9,185,562 bytes (8,970.3 KB = 8.8 MB) +AppBundleSize: 9,187,098 bytes (8,971.8 KB = 8.8 MB) # The following list of files and their sizes is just informational / for review, and isn't used in the test: _CodeSignature/CodeResources: 9,851 bytes (9.6 KB = 0.0 MB) archived-expanded-entitlements.xcent: 384 bytes (0.4 KB = 0.0 MB) @@ -18,7 +18,7 @@ Frameworks/libSystem.Security.Cryptography.Native.Apple.framework/_CodeSignature Frameworks/libSystem.Security.Cryptography.Native.Apple.framework/Info.plist: 859 bytes (0.8 KB = 0.0 MB) Frameworks/libSystem.Security.Cryptography.Native.Apple.framework/libSystem.Security.Cryptography.Native.Apple: 195,232 bytes (190.7 KB = 0.2 MB) Info.plist: 1,117 bytes (1.1 KB = 0.0 MB) -Microsoft.tvOS.dll: 98,816 bytes (96.5 KB = 0.1 MB) +Microsoft.tvOS.dll: 99,328 bytes (97.0 KB = 0.1 MB) PkgInfo: 8 bytes (0.0 KB = 0.0 MB) runtimeconfig.bin: 1,481 bytes (1.4 KB = 0.0 MB) SizeTestApp: 197,024 bytes (192.4 KB = 0.2 MB) @@ -27,7 +27,7 @@ System.Collections.Immutable.dll: 14,848 bytes (14.5 KB = 0.0 MB) System.Diagnostics.StackTrace.dll: 8,192 bytes (8.0 KB = 0.0 MB) System.IO.Compression.dll: 22,528 bytes (22.0 KB = 0.0 MB) System.IO.MemoryMappedFiles.dll: 22,016 bytes (21.5 KB = 0.0 MB) -System.Private.CoreLib.dll: 1,567,232 bytes (1,530.5 KB = 1.5 MB) +System.Private.CoreLib.dll: 1,568,256 bytes (1,531.5 KB = 1.5 MB) System.Reflection.Metadata.dll: 84,480 bytes (82.5 KB = 0.1 MB) System.Runtime.dll: 5,120 bytes (5.0 KB = 0.0 MB) System.Runtime.InteropServices.dll: 8,192 bytes (8.0 KB = 0.0 MB) diff --git a/tests/dotnet/UnitTests/expected/TVOS-CoreCLR-R2R-preservedapis.txt b/tests/dotnet/UnitTests/expected/TVOS-CoreCLR-R2R-preservedapis.txt index 1386b847f7ad..a8f9cd53db1a 100644 --- a/tests/dotnet/UnitTests/expected/TVOS-CoreCLR-R2R-preservedapis.txt +++ b/tests/dotnet/UnitTests/expected/TVOS-CoreCLR-R2R-preservedapis.txt @@ -857,6 +857,7 @@ Microsoft.tvOS.dll:ObjCRuntime.RuntimeTypeHandleEqualityComparer.Equals(System.R Microsoft.tvOS.dll:ObjCRuntime.RuntimeTypeHandleEqualityComparer.GetHashCode(System.RuntimeTypeHandle) Microsoft.tvOS.dll:ObjCRuntime.Selector Microsoft.tvOS.dll:ObjCRuntime.Selector._Xamarin_ConstructINativeObject(ObjCRuntime.NativeHandle, System.Boolean) +Microsoft.tvOS.dll:ObjCRuntime.Selector..cctor() Microsoft.tvOS.dll:ObjCRuntime.Selector..ctor(ObjCRuntime.NativeHandle, System.Boolean) Microsoft.tvOS.dll:ObjCRuntime.Selector..ctor(ObjCRuntime.NativeHandle) Microsoft.tvOS.dll:ObjCRuntime.Selector.Equals(ObjCRuntime.Selector) @@ -1164,6 +1165,7 @@ Microsoft.tvOS.dll:UIKit.UIApplication.xamarin_UIApplicationMain(System.Int32, S Microsoft.tvOS.dll:UIKit.UIApplicationDelegate Microsoft.tvOS.dll:UIKit.UIApplicationDelegate._Xamarin_ConstructINativeObject(ObjCRuntime.NativeHandle, System.Boolean) Microsoft.tvOS.dll:UIKit.UIApplicationDelegate._Xamarin_ConstructNSObject(ObjCRuntime.NativeHandle) +Microsoft.tvOS.dll:UIKit.UIApplicationDelegate..cctor() Microsoft.tvOS.dll:UIKit.UIApplicationDelegate..ctor() Microsoft.tvOS.dll:UIKit.UIApplicationDelegate..ctor(ObjCRuntime.NativeHandle) Microsoft.tvOS.dll:UIKit.UIApplicationDelegate..ctor(System.IntPtr, ObjCRuntime.IManagedRegistrar) @@ -5413,7 +5415,41 @@ System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.ConstantExpectedAttri System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute.set_Max(System.Object) System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DisallowNullAttribute System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DisallowNullAttribute..ctor() +System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes +System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes::All +System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes::AllConstructors +System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes::AllEvents +System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes::AllFields +System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes::AllMethods +System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes::AllNestedTypes +System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes::AllProperties +System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes::Interfaces +System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes::None +System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes::NonPublicConstructors +System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes::NonPublicConstructorsWithInherited +System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes::NonPublicEvents +System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes::NonPublicEventsWithInherited +System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes::NonPublicFields +System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes::NonPublicFieldsWithInherited +System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes::NonPublicMethods +System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes::NonPublicMethodsWithInherited +System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes::NonPublicNestedTypes +System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes::NonPublicNestedTypesWithInherited +System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes::NonPublicProperties +System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes::NonPublicPropertiesWithInherited +System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes::PublicConstructors +System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes::PublicConstructorsWithInherited +System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes::PublicEvents +System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes::PublicFields +System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes::PublicMethods +System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes::PublicNestedTypes +System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes::PublicNestedTypesWithInherited +System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes::PublicParameterlessConstructor +System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes::PublicProperties +System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes System.Diagnostics.CodeAnalysis.DynamicDependencyAttribute::k__BackingField System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DynamicDependencyAttribute +System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DynamicDependencyAttribute..ctor(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes, System.Type) +System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DynamicDependencyAttribute..ctor(System.String, System.String, System.String) System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DynamicDependencyAttribute..ctor(System.String, System.Type) System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.MaybeNullAttribute System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.MaybeNullAttribute..ctor() @@ -6170,7 +6206,6 @@ System.Private.CoreLib.dll:System.Func`2 System.IO.S System.Private.CoreLib.dll:System.Func`2 System.IO.Stream/<>c::<>9__53_0 System.Private.CoreLib.dll:System.Func`2 System.Threading.Monitor::s_createCondition System.Private.CoreLib.dll:System.Func`2 System.Reflection.TypeNameResolver::_assemblyResolver -System.Private.CoreLib.dll:System.Func`2 System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods/<>O::<0>__CreateMarshalMethods System.Private.CoreLib.dll:System.Func`2 System.StubHelpers.StubHelpers/<>c::<>9__28_0 System.Private.CoreLib.dll:System.Func`3 System.Private.CoreLib.dll:System.Func`3..ctor(System.Object, System.IntPtr) @@ -8202,6 +8237,7 @@ System.Private.CoreLib.dll:System.Int32 System.DefaultBinder/BinderState::_origi System.Private.CoreLib.dll:System.Int32 System.DefaultBinder/Primitives::value__ System.Private.CoreLib.dll:System.Int32 System.Delegate/InvocationListEnumerator`1::_index System.Private.CoreLib.dll:System.Int32 System.DelegateBindingFlags::value__ +System.Private.CoreLib.dll:System.Int32 System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes::value__ System.Private.CoreLib.dll:System.Int32 System.Diagnostics.Contracts.ContractFailureKind::value__ System.Private.CoreLib.dll:System.Int32 System.Diagnostics.DebuggableAttribute/DebuggingModes::value__ System.Private.CoreLib.dll:System.Int32 System.Diagnostics.StackFrame::_columnNumber @@ -8622,6 +8658,7 @@ System.Private.CoreLib.dll:System.Int32 System.Runtime.InteropServices.GCHandleS System.Private.CoreLib.dll:System.Int32 System.Runtime.InteropServices.GCHandleType::value__ System.Private.CoreLib.dll:System.Int32 System.Runtime.InteropServices.Marshal::SystemDefaultCharSize System.Private.CoreLib.dll:System.Int32 System.Runtime.InteropServices.Marshal::SystemMaxDBCSCharSize +System.Private.CoreLib.dll:System.Int32 System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods::_nativeSize System.Private.CoreLib.dll:System.Int32 System.Runtime.InteropServices.MarshalAsAttribute::IidParameterIndex System.Private.CoreLib.dll:System.Int32 System.Runtime.InteropServices.MarshalAsAttribute::SizeConst System.Private.CoreLib.dll:System.Int32 System.Runtime.InteropServices.Marshalling.ComVariant/Blob::_size @@ -13305,7 +13342,6 @@ System.Private.CoreLib.dll:System.Runtime.CompilerServices.ConditionalWeakTable` System.Private.CoreLib.dll:System.Runtime.CompilerServices.ConditionalWeakTable`2 System.Runtime.InteropServices.NativeLibrary::s_nativeDllResolveMap System.Private.CoreLib.dll:System.Runtime.CompilerServices.ConditionalWeakTable`2 System.StubHelpers.BSTRMarshaler::s_trailByteTable System.Private.CoreLib.dll:System.Runtime.CompilerServices.ConditionalWeakTable`2 System.Threading.Tasks.TaskScheduler::s_activeTaskSchedulers -System.Private.CoreLib.dll:System.Runtime.CompilerServices.ConditionalWeakTable`2 System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods::s_marshalerCache System.Private.CoreLib.dll:System.Runtime.CompilerServices.ConditionalWeakTable`2 System.StubHelpers.StubHelpers::s_structureMarshalInfoCache System.Private.CoreLib.dll:System.Runtime.CompilerServices.ConditionalWeakTable`2 System.Runtime.CompilerServices.ConditionalWeakTable`2/Container::_parent System.Private.CoreLib.dll:System.Runtime.CompilerServices.ConditionalWeakTable`2 System.Runtime.CompilerServices.ConditionalWeakTable`2/Enumerator::_table @@ -14190,17 +14226,18 @@ System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal.WriteInt64(Sys System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal.WriteIntPtr(System.IntPtr, System.Int32, System.IntPtr) System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal.WriteIntPtr(System.IntPtr, System.IntPtr) System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods -System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods..cctor() -System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods..ctor(System.Type) -System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods.g__CreateMarshalMethods|20_0(System.Type) -System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods.ConvertToManaged(System.Object, System.Byte*, System.StubHelpers.CleanupWorkListElement&) -System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods.ConvertToUnmanaged(System.Object, System.Byte*, System.Int32, System.StubHelpers.CleanupWorkListElement&) -System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods.Free(System.Object, System.Byte*, System.Int32, System.StubHelpers.CleanupWorkListElement&) +System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods System.RuntimeType/CompositeCacheEntry::_marshalerMethods +System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods..ctor(System.Type, System.Int32) +System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods.ConvertToManaged(System.Object, System.Byte*) +System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods.ConvertToUnmanaged(System.Object, System.Byte*, System.StubHelpers.CleanupWorkListElement&) +System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods.Create(System.RuntimeType) +System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods.Free(System.Byte*) System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods.get_ConvertToManagedMethod() System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods.get_ConvertToUnmanagedMethod() System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods.get_FreeMethod() -System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods.GetMarshalMethodsForType(System.Type) -System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods/<>O +System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods.GetMarshalMethodsForType(System.RuntimeType) +System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods.GetStorageRef(System.RuntimeType/CompositeCacheEntry) +System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods.InitializeCompositeCache(System.RuntimeType/CompositeCacheEntry) System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods/ConvertToManagedDelegate System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods/ConvertToManagedDelegate System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods::_convertToManaged System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods/ConvertToManagedDelegate..ctor(System.Object, System.IntPtr) @@ -16160,7 +16197,9 @@ System.Private.CoreLib.dll:System.String System.Boolean::TrueString System.Private.CoreLib.dll:System.String System.Byte::System.IBinaryIntegerParseAndFormatInfo.OverflowMessage() System.Private.CoreLib.dll:System.String System.Char::System.IBinaryIntegerParseAndFormatInfo.OverflowMessage() System.Private.CoreLib.dll:System.String System.CharEnumerator::_str +System.Private.CoreLib.dll:System.String System.Diagnostics.CodeAnalysis.DynamicDependencyAttribute::k__BackingField System.Private.CoreLib.dll:System.String System.Diagnostics.CodeAnalysis.DynamicDependencyAttribute::k__BackingField +System.Private.CoreLib.dll:System.String System.Diagnostics.CodeAnalysis.DynamicDependencyAttribute::k__BackingField System.Private.CoreLib.dll:System.String System.Diagnostics.Contracts.ContractException::_condition System.Private.CoreLib.dll:System.String System.Diagnostics.Contracts.ContractException::_userMessage System.Private.CoreLib.dll:System.String System.Diagnostics.StackFrame::_fileName diff --git a/tests/dotnet/UnitTests/expected/TVOS-CoreCLR-R2R-size.txt b/tests/dotnet/UnitTests/expected/TVOS-CoreCLR-R2R-size.txt index 7fc6345807d2..805b44955d1f 100644 --- a/tests/dotnet/UnitTests/expected/TVOS-CoreCLR-R2R-size.txt +++ b/tests/dotnet/UnitTests/expected/TVOS-CoreCLR-R2R-size.txt @@ -1,4 +1,4 @@ -AppBundleSize: 12,627,550 bytes (12,331.6 KB = 12.0 MB) +AppBundleSize: 12,628,622 bytes (12,332.6 KB = 12.0 MB) # The following list of files and their sizes is just informational / for review, and isn't used in the test: _CodeSignature/CodeResources: 10,705 bytes (10.5 KB = 0.0 MB) archived-expanded-entitlements.xcent: 384 bytes (0.4 KB = 0.0 MB) @@ -19,7 +19,7 @@ Frameworks/libSystem.Security.Cryptography.Native.Apple.framework/Info.plist: 85 Frameworks/libSystem.Security.Cryptography.Native.Apple.framework/libSystem.Security.Cryptography.Native.Apple: 195,232 bytes (190.7 KB = 0.2 MB) Frameworks/SizeTestApp.framework/_CodeSignature/CodeResources: 1,798 bytes (1.8 KB = 0.0 MB) Frameworks/SizeTestApp.framework/Info.plist: 792 bytes (0.8 KB = 0.0 MB) -Frameworks/SizeTestApp.framework/SizeTestApp: 3,424,640 bytes (3,344.4 KB = 3.3 MB) +Frameworks/SizeTestApp.framework/SizeTestApp: 3,424,688 bytes (3,344.4 KB = 3.3 MB) Info.plist: 1,117 bytes (1.1 KB = 0.0 MB) Microsoft.tvOS.dll: 98,816 bytes (96.5 KB = 0.1 MB) PkgInfo: 8 bytes (0.0 KB = 0.0 MB) @@ -30,7 +30,7 @@ System.Collections.Immutable.dll: 13,824 bytes (13.5 KB = 0.0 MB) System.Diagnostics.StackTrace.dll: 7,680 bytes (7.5 KB = 0.0 MB) System.IO.Compression.dll: 22,016 bytes (21.5 KB = 0.0 MB) System.IO.MemoryMappedFiles.dll: 21,504 bytes (21.0 KB = 0.0 MB) -System.Private.CoreLib.dll: 1,585,664 bytes (1,548.5 KB = 1.5 MB) +System.Private.CoreLib.dll: 1,586,688 bytes (1,549.5 KB = 1.5 MB) System.Reflection.Metadata.dll: 83,968 bytes (82.0 KB = 0.1 MB) System.Runtime.dll: 4,096 bytes (4.0 KB = 0.0 MB) System.Runtime.InteropServices.dll: 7,680 bytes (7.5 KB = 0.0 MB) diff --git a/tests/dotnet/UnitTests/expected/TVOS-MonoVM-interpreter-size.txt b/tests/dotnet/UnitTests/expected/TVOS-MonoVM-interpreter-size.txt index 7bb70b5cf899..8fd6cd4deab4 100644 --- a/tests/dotnet/UnitTests/expected/TVOS-MonoVM-interpreter-size.txt +++ b/tests/dotnet/UnitTests/expected/TVOS-MonoVM-interpreter-size.txt @@ -1,4 +1,4 @@ -AppBundleSize: 3,636,257 bytes (3,551.0 KB = 3.5 MB) +AppBundleSize: 3,637,817 bytes (3,552.6 KB = 3.5 MB) # The following list of files and their sizes is just informational / for review, and isn't used in the test: _CodeSignature/CodeResources: 3,999 bytes (3.9 KB = 0.0 MB) archived-expanded-entitlements.xcent: 384 bytes (0.4 KB = 0.0 MB) @@ -8,7 +8,7 @@ PkgInfo: 8 bytes (0.0 KB = 0.0 MB) runtimeconfig.bin: 1,405 bytes (1.4 KB = 0.0 MB) SizeTestApp: 2,404,688 bytes (2,348.3 KB = 2.3 MB) SizeTestApp.dll: 7,680 bytes (7.5 KB = 0.0 MB) -System.Private.CoreLib.aotdata.arm64: 41,424 bytes (40.5 KB = 0.0 MB) -System.Private.CoreLib.dll: 1,007,616 bytes (984.0 KB = 1.0 MB) +System.Private.CoreLib.aotdata.arm64: 41,448 bytes (40.5 KB = 0.0 MB) +System.Private.CoreLib.dll: 1,009,152 bytes (985.5 KB = 1.0 MB) System.Runtime.dll: 5,120 bytes (5.0 KB = 0.0 MB) System.Runtime.InteropServices.dll: 8,192 bytes (8.0 KB = 0.0 MB) diff --git a/tests/dotnet/UnitTests/expected/TVOS-MonoVM-size.txt b/tests/dotnet/UnitTests/expected/TVOS-MonoVM-size.txt index ef49a58931ae..76e4c9384a09 100644 --- a/tests/dotnet/UnitTests/expected/TVOS-MonoVM-size.txt +++ b/tests/dotnet/UnitTests/expected/TVOS-MonoVM-size.txt @@ -1,18 +1,18 @@ -AppBundleSize: 9,501,703 bytes (9,279.0 KB = 9.1 MB) +AppBundleSize: 9,503,383 bytes (9,280.6 KB = 9.1 MB) # The following list of files and their sizes is just informational / for review, and isn't used in the test: _CodeSignature/CodeResources: 5,233 bytes (5.1 KB = 0.0 MB) aot-instances.aotdata.arm64: 818,536 bytes (799.4 KB = 0.8 MB) archived-expanded-entitlements.xcent: 384 bytes (0.4 KB = 0.0 MB) Info.plist: 1,117 bytes (1.1 KB = 0.0 MB) -Microsoft.tvOS.aotdata.arm64: 22,552 bytes (22.0 KB = 0.0 MB) -Microsoft.tvOS.dll: 48,640 bytes (47.5 KB = 0.0 MB) +Microsoft.tvOS.aotdata.arm64: 22,584 bytes (22.1 KB = 0.0 MB) +Microsoft.tvOS.dll: 49,152 bytes (48.0 KB = 0.0 MB) PkgInfo: 8 bytes (0.0 KB = 0.0 MB) runtimeconfig.bin: 1,481 bytes (1.4 KB = 0.0 MB) -SizeTestApp: 7,377,120 bytes (7,204.2 KB = 7.0 MB) -SizeTestApp.aotdata.arm64: 1,456 bytes (1.4 KB = 0.0 MB) +SizeTestApp: 7,377,152 bytes (7,204.2 KB = 7.0 MB) +SizeTestApp.aotdata.arm64: 1,464 bytes (1.4 KB = 0.0 MB) SizeTestApp.dll: 7,168 bytes (7.0 KB = 0.0 MB) -System.Private.CoreLib.aotdata.arm64: 665,512 bytes (649.9 KB = 0.6 MB) -System.Private.CoreLib.dll: 537,600 bytes (525.0 KB = 0.5 MB) +System.Private.CoreLib.aotdata.arm64: 665,584 bytes (650.0 KB = 0.6 MB) +System.Private.CoreLib.dll: 538,624 bytes (526.0 KB = 0.5 MB) System.Runtime.aotdata.arm64: 784 bytes (0.8 KB = 0.0 MB) System.Runtime.dll: 5,120 bytes (5.0 KB = 0.0 MB) System.Runtime.InteropServices.aotdata.arm64: 800 bytes (0.8 KB = 0.0 MB) diff --git a/tests/dotnet/UnitTests/expected/TVOS-NativeAOT-size.txt b/tests/dotnet/UnitTests/expected/TVOS-NativeAOT-size.txt index be5b8350db85..daacc6d7e0dc 100644 --- a/tests/dotnet/UnitTests/expected/TVOS-NativeAOT-size.txt +++ b/tests/dotnet/UnitTests/expected/TVOS-NativeAOT-size.txt @@ -1,8 +1,8 @@ -AppBundleSize: 2,682,786 bytes (2,619.9 KB = 2.6 MB) +AppBundleSize: 2,849,442 bytes (2,782.7 KB = 2.7 MB) # The following list of files and their sizes is just informational / for review, and isn't used in the test: _CodeSignature/CodeResources: 2,589 bytes (2.5 KB = 0.0 MB) archived-expanded-entitlements.xcent: 384 bytes (0.4 KB = 0.0 MB) Info.plist: 1,117 bytes (1.1 KB = 0.0 MB) PkgInfo: 8 bytes (0.0 KB = 0.0 MB) runtimeconfig.bin: 1,808 bytes (1.8 KB = 0.0 MB) -SizeTestApp: 2,676,880 bytes (2,614.1 KB = 2.6 MB) +SizeTestApp: 2,843,536 bytes (2,776.9 KB = 2.7 MB) diff --git a/tests/dotnet/UnitTests/expected/iOS-CoreCLR-Interpreter-preservedapis.txt b/tests/dotnet/UnitTests/expected/iOS-CoreCLR-Interpreter-preservedapis.txt index d423b10859b0..56bf48e17967 100644 --- a/tests/dotnet/UnitTests/expected/iOS-CoreCLR-Interpreter-preservedapis.txt +++ b/tests/dotnet/UnitTests/expected/iOS-CoreCLR-Interpreter-preservedapis.txt @@ -857,6 +857,7 @@ Microsoft.iOS.dll:ObjCRuntime.RuntimeTypeHandleEqualityComparer.Equals(System.Ru Microsoft.iOS.dll:ObjCRuntime.RuntimeTypeHandleEqualityComparer.GetHashCode(System.RuntimeTypeHandle) Microsoft.iOS.dll:ObjCRuntime.Selector Microsoft.iOS.dll:ObjCRuntime.Selector._Xamarin_ConstructINativeObject(ObjCRuntime.NativeHandle, System.Boolean) +Microsoft.iOS.dll:ObjCRuntime.Selector..cctor() Microsoft.iOS.dll:ObjCRuntime.Selector..ctor(ObjCRuntime.NativeHandle, System.Boolean) Microsoft.iOS.dll:ObjCRuntime.Selector..ctor(ObjCRuntime.NativeHandle) Microsoft.iOS.dll:ObjCRuntime.Selector.Equals(ObjCRuntime.Selector) @@ -1164,6 +1165,7 @@ Microsoft.iOS.dll:UIKit.UIApplication.xamarin_UIApplicationMain(System.Int32, Sy Microsoft.iOS.dll:UIKit.UIApplicationDelegate Microsoft.iOS.dll:UIKit.UIApplicationDelegate._Xamarin_ConstructINativeObject(ObjCRuntime.NativeHandle, System.Boolean) Microsoft.iOS.dll:UIKit.UIApplicationDelegate._Xamarin_ConstructNSObject(ObjCRuntime.NativeHandle) +Microsoft.iOS.dll:UIKit.UIApplicationDelegate..cctor() Microsoft.iOS.dll:UIKit.UIApplicationDelegate..ctor() Microsoft.iOS.dll:UIKit.UIApplicationDelegate..ctor(ObjCRuntime.NativeHandle) Microsoft.iOS.dll:UIKit.UIApplicationDelegate..ctor(System.IntPtr, ObjCRuntime.IManagedRegistrar) @@ -5413,7 +5415,41 @@ System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.ConstantExpectedAttri System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute.set_Max(System.Object) System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DisallowNullAttribute System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DisallowNullAttribute..ctor() +System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes +System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes::All +System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes::AllConstructors +System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes::AllEvents +System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes::AllFields +System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes::AllMethods +System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes::AllNestedTypes +System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes::AllProperties +System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes::Interfaces +System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes::None +System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes::NonPublicConstructors +System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes::NonPublicConstructorsWithInherited +System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes::NonPublicEvents +System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes::NonPublicEventsWithInherited +System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes::NonPublicFields +System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes::NonPublicFieldsWithInherited +System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes::NonPublicMethods +System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes::NonPublicMethodsWithInherited +System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes::NonPublicNestedTypes +System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes::NonPublicNestedTypesWithInherited +System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes::NonPublicProperties +System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes::NonPublicPropertiesWithInherited +System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes::PublicConstructors +System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes::PublicConstructorsWithInherited +System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes::PublicEvents +System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes::PublicFields +System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes::PublicMethods +System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes::PublicNestedTypes +System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes::PublicNestedTypesWithInherited +System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes::PublicParameterlessConstructor +System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes::PublicProperties +System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes System.Diagnostics.CodeAnalysis.DynamicDependencyAttribute::k__BackingField System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DynamicDependencyAttribute +System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DynamicDependencyAttribute..ctor(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes, System.Type) +System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DynamicDependencyAttribute..ctor(System.String, System.String, System.String) System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DynamicDependencyAttribute..ctor(System.String, System.Type) System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.MaybeNullAttribute System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.MaybeNullAttribute..ctor() @@ -6170,7 +6206,6 @@ System.Private.CoreLib.dll:System.Func`2 System.IO.S System.Private.CoreLib.dll:System.Func`2 System.IO.Stream/<>c::<>9__53_0 System.Private.CoreLib.dll:System.Func`2 System.Threading.Monitor::s_createCondition System.Private.CoreLib.dll:System.Func`2 System.Reflection.TypeNameResolver::_assemblyResolver -System.Private.CoreLib.dll:System.Func`2 System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods/<>O::<0>__CreateMarshalMethods System.Private.CoreLib.dll:System.Func`2 System.StubHelpers.StubHelpers/<>c::<>9__28_0 System.Private.CoreLib.dll:System.Func`3 System.Private.CoreLib.dll:System.Func`3..ctor(System.Object, System.IntPtr) @@ -8202,6 +8237,7 @@ System.Private.CoreLib.dll:System.Int32 System.DefaultBinder/BinderState::_origi System.Private.CoreLib.dll:System.Int32 System.DefaultBinder/Primitives::value__ System.Private.CoreLib.dll:System.Int32 System.Delegate/InvocationListEnumerator`1::_index System.Private.CoreLib.dll:System.Int32 System.DelegateBindingFlags::value__ +System.Private.CoreLib.dll:System.Int32 System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes::value__ System.Private.CoreLib.dll:System.Int32 System.Diagnostics.Contracts.ContractFailureKind::value__ System.Private.CoreLib.dll:System.Int32 System.Diagnostics.DebuggableAttribute/DebuggingModes::value__ System.Private.CoreLib.dll:System.Int32 System.Diagnostics.StackFrame::_columnNumber @@ -8622,6 +8658,7 @@ System.Private.CoreLib.dll:System.Int32 System.Runtime.InteropServices.GCHandleS System.Private.CoreLib.dll:System.Int32 System.Runtime.InteropServices.GCHandleType::value__ System.Private.CoreLib.dll:System.Int32 System.Runtime.InteropServices.Marshal::SystemDefaultCharSize System.Private.CoreLib.dll:System.Int32 System.Runtime.InteropServices.Marshal::SystemMaxDBCSCharSize +System.Private.CoreLib.dll:System.Int32 System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods::_nativeSize System.Private.CoreLib.dll:System.Int32 System.Runtime.InteropServices.MarshalAsAttribute::IidParameterIndex System.Private.CoreLib.dll:System.Int32 System.Runtime.InteropServices.MarshalAsAttribute::SizeConst System.Private.CoreLib.dll:System.Int32 System.Runtime.InteropServices.Marshalling.ComVariant/Blob::_size @@ -13305,7 +13342,6 @@ System.Private.CoreLib.dll:System.Runtime.CompilerServices.ConditionalWeakTable` System.Private.CoreLib.dll:System.Runtime.CompilerServices.ConditionalWeakTable`2 System.Runtime.InteropServices.NativeLibrary::s_nativeDllResolveMap System.Private.CoreLib.dll:System.Runtime.CompilerServices.ConditionalWeakTable`2 System.StubHelpers.BSTRMarshaler::s_trailByteTable System.Private.CoreLib.dll:System.Runtime.CompilerServices.ConditionalWeakTable`2 System.Threading.Tasks.TaskScheduler::s_activeTaskSchedulers -System.Private.CoreLib.dll:System.Runtime.CompilerServices.ConditionalWeakTable`2 System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods::s_marshalerCache System.Private.CoreLib.dll:System.Runtime.CompilerServices.ConditionalWeakTable`2 System.StubHelpers.StubHelpers::s_structureMarshalInfoCache System.Private.CoreLib.dll:System.Runtime.CompilerServices.ConditionalWeakTable`2 System.Runtime.CompilerServices.ConditionalWeakTable`2/Container::_parent System.Private.CoreLib.dll:System.Runtime.CompilerServices.ConditionalWeakTable`2 System.Runtime.CompilerServices.ConditionalWeakTable`2/Enumerator::_table @@ -14190,17 +14226,18 @@ System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal.WriteInt64(Sys System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal.WriteIntPtr(System.IntPtr, System.Int32, System.IntPtr) System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal.WriteIntPtr(System.IntPtr, System.IntPtr) System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods -System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods..cctor() -System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods..ctor(System.Type) -System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods.g__CreateMarshalMethods|20_0(System.Type) -System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods.ConvertToManaged(System.Object, System.Byte*, System.StubHelpers.CleanupWorkListElement&) -System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods.ConvertToUnmanaged(System.Object, System.Byte*, System.Int32, System.StubHelpers.CleanupWorkListElement&) -System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods.Free(System.Object, System.Byte*, System.Int32, System.StubHelpers.CleanupWorkListElement&) +System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods System.RuntimeType/CompositeCacheEntry::_marshalerMethods +System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods..ctor(System.Type, System.Int32) +System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods.ConvertToManaged(System.Object, System.Byte*) +System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods.ConvertToUnmanaged(System.Object, System.Byte*, System.StubHelpers.CleanupWorkListElement&) +System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods.Create(System.RuntimeType) +System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods.Free(System.Byte*) System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods.get_ConvertToManagedMethod() System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods.get_ConvertToUnmanagedMethod() System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods.get_FreeMethod() -System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods.GetMarshalMethodsForType(System.Type) -System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods/<>O +System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods.GetMarshalMethodsForType(System.RuntimeType) +System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods.GetStorageRef(System.RuntimeType/CompositeCacheEntry) +System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods.InitializeCompositeCache(System.RuntimeType/CompositeCacheEntry) System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods/ConvertToManagedDelegate System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods/ConvertToManagedDelegate System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods::_convertToManaged System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods/ConvertToManagedDelegate..ctor(System.Object, System.IntPtr) @@ -16160,7 +16197,9 @@ System.Private.CoreLib.dll:System.String System.Boolean::TrueString System.Private.CoreLib.dll:System.String System.Byte::System.IBinaryIntegerParseAndFormatInfo.OverflowMessage() System.Private.CoreLib.dll:System.String System.Char::System.IBinaryIntegerParseAndFormatInfo.OverflowMessage() System.Private.CoreLib.dll:System.String System.CharEnumerator::_str +System.Private.CoreLib.dll:System.String System.Diagnostics.CodeAnalysis.DynamicDependencyAttribute::k__BackingField System.Private.CoreLib.dll:System.String System.Diagnostics.CodeAnalysis.DynamicDependencyAttribute::k__BackingField +System.Private.CoreLib.dll:System.String System.Diagnostics.CodeAnalysis.DynamicDependencyAttribute::k__BackingField System.Private.CoreLib.dll:System.String System.Diagnostics.Contracts.ContractException::_condition System.Private.CoreLib.dll:System.String System.Diagnostics.Contracts.ContractException::_userMessage System.Private.CoreLib.dll:System.String System.Diagnostics.StackFrame::_fileName diff --git a/tests/dotnet/UnitTests/expected/iOS-CoreCLR-Interpreter-size.txt b/tests/dotnet/UnitTests/expected/iOS-CoreCLR-Interpreter-size.txt index e260e77427c3..612738da6cc9 100644 --- a/tests/dotnet/UnitTests/expected/iOS-CoreCLR-Interpreter-size.txt +++ b/tests/dotnet/UnitTests/expected/iOS-CoreCLR-Interpreter-size.txt @@ -1,10 +1,10 @@ -AppBundleSize: 9,253,769 bytes (9,036.9 KB = 8.8 MB) +AppBundleSize: 9,255,337 bytes (9,038.4 KB = 8.8 MB) # The following list of files and their sizes is just informational / for review, and isn't used in the test: _CodeSignature/CodeResources: 10,847 bytes (10.6 KB = 0.0 MB) archived-expanded-entitlements.xcent: 384 bytes (0.4 KB = 0.0 MB) Frameworks/libcoreclr.framework/_CodeSignature/CodeResources: 1,798 bytes (1.8 KB = 0.0 MB) Frameworks/libcoreclr.framework/Info.plist: 813 bytes (0.8 KB = 0.0 MB) -Frameworks/libcoreclr.framework/libcoreclr: 5,203,952 bytes (5,082.0 KB = 5.0 MB) +Frameworks/libcoreclr.framework/libcoreclr: 5,203,936 bytes (5,082.0 KB = 5.0 MB) Frameworks/libSystem.Globalization.Native.framework/_CodeSignature/CodeResources: 1,798 bytes (1.8 KB = 0.0 MB) Frameworks/libSystem.Globalization.Native.framework/Info.plist: 855 bytes (0.8 KB = 0.0 MB) Frameworks/libSystem.Globalization.Native.framework/libSystem.Globalization.Native: 109,232 bytes (106.7 KB = 0.1 MB) @@ -13,7 +13,7 @@ Frameworks/libSystem.IO.Compression.Native.framework/Info.plist: 857 bytes (0.8 Frameworks/libSystem.IO.Compression.Native.framework/libSystem.IO.Compression.Native: 1,431,280 bytes (1,397.7 KB = 1.4 MB) Frameworks/libSystem.Native.framework/_CodeSignature/CodeResources: 1,798 bytes (1.8 KB = 0.0 MB) Frameworks/libSystem.Native.framework/Info.plist: 827 bytes (0.8 KB = 0.0 MB) -Frameworks/libSystem.Native.framework/libSystem.Native: 162,208 bytes (158.4 KB = 0.2 MB) +Frameworks/libSystem.Native.framework/libSystem.Native: 162,256 bytes (158.5 KB = 0.2 MB) Frameworks/libSystem.Net.Security.Native.framework/_CodeSignature/CodeResources: 1,798 bytes (1.8 KB = 0.0 MB) Frameworks/libSystem.Net.Security.Native.framework/Info.plist: 853 bytes (0.8 KB = 0.0 MB) Frameworks/libSystem.Net.Security.Native.framework/libSystem.Net.Security.Native: 88,000 bytes (85.9 KB = 0.1 MB) @@ -21,7 +21,7 @@ Frameworks/libSystem.Security.Cryptography.Native.Apple.framework/_CodeSignature Frameworks/libSystem.Security.Cryptography.Native.Apple.framework/Info.plist: 883 bytes (0.9 KB = 0.0 MB) Frameworks/libSystem.Security.Cryptography.Native.Apple.framework/libSystem.Security.Cryptography.Native.Apple: 194,256 bytes (189.7 KB = 0.2 MB) Info.plist: 1,141 bytes (1.1 KB = 0.0 MB) -Microsoft.iOS.dll: 98,816 bytes (96.5 KB = 0.1 MB) +Microsoft.iOS.dll: 99,328 bytes (97.0 KB = 0.1 MB) PkgInfo: 8 bytes (0.0 KB = 0.0 MB) runtimeconfig.bin: 1,481 bytes (1.4 KB = 0.0 MB) SizeTestApp: 196,000 bytes (191.4 KB = 0.2 MB) @@ -30,7 +30,7 @@ System.Collections.Immutable.dll: 14,848 bytes (14.5 KB = 0.0 MB) System.Diagnostics.StackTrace.dll: 8,192 bytes (8.0 KB = 0.0 MB) System.IO.Compression.dll: 22,528 bytes (22.0 KB = 0.0 MB) System.IO.MemoryMappedFiles.dll: 22,016 bytes (21.5 KB = 0.0 MB) -System.Private.CoreLib.dll: 1,567,232 bytes (1,530.5 KB = 1.5 MB) +System.Private.CoreLib.dll: 1,568,256 bytes (1,531.5 KB = 1.5 MB) System.Reflection.Metadata.dll: 84,480 bytes (82.5 KB = 0.1 MB) System.Runtime.dll: 5,120 bytes (5.0 KB = 0.0 MB) System.Runtime.InteropServices.dll: 8,192 bytes (8.0 KB = 0.0 MB) diff --git a/tests/dotnet/UnitTests/expected/iOS-CoreCLR-R2R-preservedapis.txt b/tests/dotnet/UnitTests/expected/iOS-CoreCLR-R2R-preservedapis.txt index d423b10859b0..56bf48e17967 100644 --- a/tests/dotnet/UnitTests/expected/iOS-CoreCLR-R2R-preservedapis.txt +++ b/tests/dotnet/UnitTests/expected/iOS-CoreCLR-R2R-preservedapis.txt @@ -857,6 +857,7 @@ Microsoft.iOS.dll:ObjCRuntime.RuntimeTypeHandleEqualityComparer.Equals(System.Ru Microsoft.iOS.dll:ObjCRuntime.RuntimeTypeHandleEqualityComparer.GetHashCode(System.RuntimeTypeHandle) Microsoft.iOS.dll:ObjCRuntime.Selector Microsoft.iOS.dll:ObjCRuntime.Selector._Xamarin_ConstructINativeObject(ObjCRuntime.NativeHandle, System.Boolean) +Microsoft.iOS.dll:ObjCRuntime.Selector..cctor() Microsoft.iOS.dll:ObjCRuntime.Selector..ctor(ObjCRuntime.NativeHandle, System.Boolean) Microsoft.iOS.dll:ObjCRuntime.Selector..ctor(ObjCRuntime.NativeHandle) Microsoft.iOS.dll:ObjCRuntime.Selector.Equals(ObjCRuntime.Selector) @@ -1164,6 +1165,7 @@ Microsoft.iOS.dll:UIKit.UIApplication.xamarin_UIApplicationMain(System.Int32, Sy Microsoft.iOS.dll:UIKit.UIApplicationDelegate Microsoft.iOS.dll:UIKit.UIApplicationDelegate._Xamarin_ConstructINativeObject(ObjCRuntime.NativeHandle, System.Boolean) Microsoft.iOS.dll:UIKit.UIApplicationDelegate._Xamarin_ConstructNSObject(ObjCRuntime.NativeHandle) +Microsoft.iOS.dll:UIKit.UIApplicationDelegate..cctor() Microsoft.iOS.dll:UIKit.UIApplicationDelegate..ctor() Microsoft.iOS.dll:UIKit.UIApplicationDelegate..ctor(ObjCRuntime.NativeHandle) Microsoft.iOS.dll:UIKit.UIApplicationDelegate..ctor(System.IntPtr, ObjCRuntime.IManagedRegistrar) @@ -5413,7 +5415,41 @@ System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.ConstantExpectedAttri System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute.set_Max(System.Object) System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DisallowNullAttribute System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DisallowNullAttribute..ctor() +System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes +System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes::All +System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes::AllConstructors +System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes::AllEvents +System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes::AllFields +System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes::AllMethods +System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes::AllNestedTypes +System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes::AllProperties +System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes::Interfaces +System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes::None +System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes::NonPublicConstructors +System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes::NonPublicConstructorsWithInherited +System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes::NonPublicEvents +System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes::NonPublicEventsWithInherited +System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes::NonPublicFields +System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes::NonPublicFieldsWithInherited +System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes::NonPublicMethods +System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes::NonPublicMethodsWithInherited +System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes::NonPublicNestedTypes +System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes::NonPublicNestedTypesWithInherited +System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes::NonPublicProperties +System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes::NonPublicPropertiesWithInherited +System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes::PublicConstructors +System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes::PublicConstructorsWithInherited +System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes::PublicEvents +System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes::PublicFields +System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes::PublicMethods +System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes::PublicNestedTypes +System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes::PublicNestedTypesWithInherited +System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes::PublicParameterlessConstructor +System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes::PublicProperties +System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes System.Diagnostics.CodeAnalysis.DynamicDependencyAttribute::k__BackingField System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DynamicDependencyAttribute +System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DynamicDependencyAttribute..ctor(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes, System.Type) +System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DynamicDependencyAttribute..ctor(System.String, System.String, System.String) System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.DynamicDependencyAttribute..ctor(System.String, System.Type) System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.MaybeNullAttribute System.Private.CoreLib.dll:System.Diagnostics.CodeAnalysis.MaybeNullAttribute..ctor() @@ -6170,7 +6206,6 @@ System.Private.CoreLib.dll:System.Func`2 System.IO.S System.Private.CoreLib.dll:System.Func`2 System.IO.Stream/<>c::<>9__53_0 System.Private.CoreLib.dll:System.Func`2 System.Threading.Monitor::s_createCondition System.Private.CoreLib.dll:System.Func`2 System.Reflection.TypeNameResolver::_assemblyResolver -System.Private.CoreLib.dll:System.Func`2 System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods/<>O::<0>__CreateMarshalMethods System.Private.CoreLib.dll:System.Func`2 System.StubHelpers.StubHelpers/<>c::<>9__28_0 System.Private.CoreLib.dll:System.Func`3 System.Private.CoreLib.dll:System.Func`3..ctor(System.Object, System.IntPtr) @@ -8202,6 +8237,7 @@ System.Private.CoreLib.dll:System.Int32 System.DefaultBinder/BinderState::_origi System.Private.CoreLib.dll:System.Int32 System.DefaultBinder/Primitives::value__ System.Private.CoreLib.dll:System.Int32 System.Delegate/InvocationListEnumerator`1::_index System.Private.CoreLib.dll:System.Int32 System.DelegateBindingFlags::value__ +System.Private.CoreLib.dll:System.Int32 System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes::value__ System.Private.CoreLib.dll:System.Int32 System.Diagnostics.Contracts.ContractFailureKind::value__ System.Private.CoreLib.dll:System.Int32 System.Diagnostics.DebuggableAttribute/DebuggingModes::value__ System.Private.CoreLib.dll:System.Int32 System.Diagnostics.StackFrame::_columnNumber @@ -8622,6 +8658,7 @@ System.Private.CoreLib.dll:System.Int32 System.Runtime.InteropServices.GCHandleS System.Private.CoreLib.dll:System.Int32 System.Runtime.InteropServices.GCHandleType::value__ System.Private.CoreLib.dll:System.Int32 System.Runtime.InteropServices.Marshal::SystemDefaultCharSize System.Private.CoreLib.dll:System.Int32 System.Runtime.InteropServices.Marshal::SystemMaxDBCSCharSize +System.Private.CoreLib.dll:System.Int32 System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods::_nativeSize System.Private.CoreLib.dll:System.Int32 System.Runtime.InteropServices.MarshalAsAttribute::IidParameterIndex System.Private.CoreLib.dll:System.Int32 System.Runtime.InteropServices.MarshalAsAttribute::SizeConst System.Private.CoreLib.dll:System.Int32 System.Runtime.InteropServices.Marshalling.ComVariant/Blob::_size @@ -13305,7 +13342,6 @@ System.Private.CoreLib.dll:System.Runtime.CompilerServices.ConditionalWeakTable` System.Private.CoreLib.dll:System.Runtime.CompilerServices.ConditionalWeakTable`2 System.Runtime.InteropServices.NativeLibrary::s_nativeDllResolveMap System.Private.CoreLib.dll:System.Runtime.CompilerServices.ConditionalWeakTable`2 System.StubHelpers.BSTRMarshaler::s_trailByteTable System.Private.CoreLib.dll:System.Runtime.CompilerServices.ConditionalWeakTable`2 System.Threading.Tasks.TaskScheduler::s_activeTaskSchedulers -System.Private.CoreLib.dll:System.Runtime.CompilerServices.ConditionalWeakTable`2 System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods::s_marshalerCache System.Private.CoreLib.dll:System.Runtime.CompilerServices.ConditionalWeakTable`2 System.StubHelpers.StubHelpers::s_structureMarshalInfoCache System.Private.CoreLib.dll:System.Runtime.CompilerServices.ConditionalWeakTable`2 System.Runtime.CompilerServices.ConditionalWeakTable`2/Container::_parent System.Private.CoreLib.dll:System.Runtime.CompilerServices.ConditionalWeakTable`2 System.Runtime.CompilerServices.ConditionalWeakTable`2/Enumerator::_table @@ -14190,17 +14226,18 @@ System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal.WriteInt64(Sys System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal.WriteIntPtr(System.IntPtr, System.Int32, System.IntPtr) System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal.WriteIntPtr(System.IntPtr, System.IntPtr) System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods -System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods..cctor() -System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods..ctor(System.Type) -System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods.g__CreateMarshalMethods|20_0(System.Type) -System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods.ConvertToManaged(System.Object, System.Byte*, System.StubHelpers.CleanupWorkListElement&) -System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods.ConvertToUnmanaged(System.Object, System.Byte*, System.Int32, System.StubHelpers.CleanupWorkListElement&) -System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods.Free(System.Object, System.Byte*, System.Int32, System.StubHelpers.CleanupWorkListElement&) +System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods System.RuntimeType/CompositeCacheEntry::_marshalerMethods +System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods..ctor(System.Type, System.Int32) +System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods.ConvertToManaged(System.Object, System.Byte*) +System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods.ConvertToUnmanaged(System.Object, System.Byte*, System.StubHelpers.CleanupWorkListElement&) +System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods.Create(System.RuntimeType) +System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods.Free(System.Byte*) System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods.get_ConvertToManagedMethod() System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods.get_ConvertToUnmanagedMethod() System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods.get_FreeMethod() -System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods.GetMarshalMethodsForType(System.Type) -System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods/<>O +System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods.GetMarshalMethodsForType(System.RuntimeType) +System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods.GetStorageRef(System.RuntimeType/CompositeCacheEntry) +System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods.InitializeCompositeCache(System.RuntimeType/CompositeCacheEntry) System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods/ConvertToManagedDelegate System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods/ConvertToManagedDelegate System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods::_convertToManaged System.Private.CoreLib.dll:System.Runtime.InteropServices.Marshal/LayoutTypeMarshalerMethods/ConvertToManagedDelegate..ctor(System.Object, System.IntPtr) @@ -16160,7 +16197,9 @@ System.Private.CoreLib.dll:System.String System.Boolean::TrueString System.Private.CoreLib.dll:System.String System.Byte::System.IBinaryIntegerParseAndFormatInfo.OverflowMessage() System.Private.CoreLib.dll:System.String System.Char::System.IBinaryIntegerParseAndFormatInfo.OverflowMessage() System.Private.CoreLib.dll:System.String System.CharEnumerator::_str +System.Private.CoreLib.dll:System.String System.Diagnostics.CodeAnalysis.DynamicDependencyAttribute::k__BackingField System.Private.CoreLib.dll:System.String System.Diagnostics.CodeAnalysis.DynamicDependencyAttribute::k__BackingField +System.Private.CoreLib.dll:System.String System.Diagnostics.CodeAnalysis.DynamicDependencyAttribute::k__BackingField System.Private.CoreLib.dll:System.String System.Diagnostics.Contracts.ContractException::_condition System.Private.CoreLib.dll:System.String System.Diagnostics.Contracts.ContractException::_userMessage System.Private.CoreLib.dll:System.String System.Diagnostics.StackFrame::_fileName diff --git a/tests/dotnet/UnitTests/expected/iOS-CoreCLR-R2R-size.txt b/tests/dotnet/UnitTests/expected/iOS-CoreCLR-R2R-size.txt index 9448cbdfcb60..7256e3308504 100644 --- a/tests/dotnet/UnitTests/expected/iOS-CoreCLR-R2R-size.txt +++ b/tests/dotnet/UnitTests/expected/iOS-CoreCLR-R2R-size.txt @@ -1,10 +1,10 @@ -AppBundleSize: 12,675,941 bytes (12,378.8 KB = 12.1 MB) +AppBundleSize: 12,677,045 bytes (12,379.9 KB = 12.1 MB) # The following list of files and their sizes is just informational / for review, and isn't used in the test: _CodeSignature/CodeResources: 11,701 bytes (11.4 KB = 0.0 MB) archived-expanded-entitlements.xcent: 384 bytes (0.4 KB = 0.0 MB) Frameworks/libcoreclr.framework/_CodeSignature/CodeResources: 1,798 bytes (1.8 KB = 0.0 MB) Frameworks/libcoreclr.framework/Info.plist: 813 bytes (0.8 KB = 0.0 MB) -Frameworks/libcoreclr.framework/libcoreclr: 5,203,952 bytes (5,082.0 KB = 5.0 MB) +Frameworks/libcoreclr.framework/libcoreclr: 5,203,936 bytes (5,082.0 KB = 5.0 MB) Frameworks/libSystem.Globalization.Native.framework/_CodeSignature/CodeResources: 1,798 bytes (1.8 KB = 0.0 MB) Frameworks/libSystem.Globalization.Native.framework/Info.plist: 855 bytes (0.8 KB = 0.0 MB) Frameworks/libSystem.Globalization.Native.framework/libSystem.Globalization.Native: 109,232 bytes (106.7 KB = 0.1 MB) @@ -13,7 +13,7 @@ Frameworks/libSystem.IO.Compression.Native.framework/Info.plist: 857 bytes (0.8 Frameworks/libSystem.IO.Compression.Native.framework/libSystem.IO.Compression.Native: 1,431,280 bytes (1,397.7 KB = 1.4 MB) Frameworks/libSystem.Native.framework/_CodeSignature/CodeResources: 1,798 bytes (1.8 KB = 0.0 MB) Frameworks/libSystem.Native.framework/Info.plist: 827 bytes (0.8 KB = 0.0 MB) -Frameworks/libSystem.Native.framework/libSystem.Native: 162,208 bytes (158.4 KB = 0.2 MB) +Frameworks/libSystem.Native.framework/libSystem.Native: 162,256 bytes (158.5 KB = 0.2 MB) Frameworks/libSystem.Net.Security.Native.framework/_CodeSignature/CodeResources: 1,798 bytes (1.8 KB = 0.0 MB) Frameworks/libSystem.Net.Security.Native.framework/Info.plist: 853 bytes (0.8 KB = 0.0 MB) Frameworks/libSystem.Net.Security.Native.framework/libSystem.Net.Security.Native: 88,000 bytes (85.9 KB = 0.1 MB) @@ -22,7 +22,7 @@ Frameworks/libSystem.Security.Cryptography.Native.Apple.framework/Info.plist: 88 Frameworks/libSystem.Security.Cryptography.Native.Apple.framework/libSystem.Security.Cryptography.Native.Apple: 194,256 bytes (189.7 KB = 0.2 MB) Frameworks/SizeTestApp.framework/_CodeSignature/CodeResources: 1,798 bytes (1.8 KB = 0.0 MB) Frameworks/SizeTestApp.framework/Info.plist: 816 bytes (0.8 KB = 0.0 MB) -Frameworks/SizeTestApp.framework/SizeTestApp: 3,404,832 bytes (3,325.0 KB = 3.2 MB) +Frameworks/SizeTestApp.framework/SizeTestApp: 3,404,880 bytes (3,325.1 KB = 3.2 MB) Info.plist: 1,141 bytes (1.1 KB = 0.0 MB) Microsoft.iOS.dll: 98,816 bytes (96.5 KB = 0.1 MB) PkgInfo: 8 bytes (0.0 KB = 0.0 MB) @@ -33,7 +33,7 @@ System.Collections.Immutable.dll: 13,824 bytes (13.5 KB = 0.0 MB) System.Diagnostics.StackTrace.dll: 7,680 bytes (7.5 KB = 0.0 MB) System.IO.Compression.dll: 22,016 bytes (21.5 KB = 0.0 MB) System.IO.MemoryMappedFiles.dll: 21,504 bytes (21.0 KB = 0.0 MB) -System.Private.CoreLib.dll: 1,585,664 bytes (1,548.5 KB = 1.5 MB) +System.Private.CoreLib.dll: 1,586,688 bytes (1,549.5 KB = 1.5 MB) System.Reflection.Metadata.dll: 83,968 bytes (82.0 KB = 0.1 MB) System.Runtime.dll: 4,096 bytes (4.0 KB = 0.0 MB) System.Runtime.InteropServices.dll: 7,680 bytes (7.5 KB = 0.0 MB) diff --git a/tests/dotnet/UnitTests/expected/iOS-MonoVM-interpreter-size.txt b/tests/dotnet/UnitTests/expected/iOS-MonoVM-interpreter-size.txt index 961e49e1be9a..53977d8b9561 100644 --- a/tests/dotnet/UnitTests/expected/iOS-MonoVM-interpreter-size.txt +++ b/tests/dotnet/UnitTests/expected/iOS-MonoVM-interpreter-size.txt @@ -1,4 +1,4 @@ -AppBundleSize: 3,622,695 bytes (3,537.8 KB = 3.5 MB) +AppBundleSize: 3,624,255 bytes (3,539.3 KB = 3.5 MB) # The following list of files and their sizes is just informational / for review, and isn't used in the test: _CodeSignature/CodeResources: 3,997 bytes (3.9 KB = 0.0 MB) archived-expanded-entitlements.xcent: 384 bytes (0.4 KB = 0.0 MB) @@ -8,7 +8,7 @@ PkgInfo: 8 bytes (0.0 KB = 0.0 MB) runtimeconfig.bin: 1,405 bytes (1.4 KB = 0.0 MB) SizeTestApp: 2,391,104 bytes (2,335.1 KB = 2.3 MB) SizeTestApp.dll: 7,680 bytes (7.5 KB = 0.0 MB) -System.Private.CoreLib.aotdata.arm64: 41,424 bytes (40.5 KB = 0.0 MB) -System.Private.CoreLib.dll: 1,007,616 bytes (984.0 KB = 1.0 MB) +System.Private.CoreLib.aotdata.arm64: 41,448 bytes (40.5 KB = 0.0 MB) +System.Private.CoreLib.dll: 1,009,152 bytes (985.5 KB = 1.0 MB) System.Runtime.dll: 5,120 bytes (5.0 KB = 0.0 MB) System.Runtime.InteropServices.dll: 8,192 bytes (8.0 KB = 0.0 MB) diff --git a/tests/dotnet/UnitTests/expected/iOS-MonoVM-size.txt b/tests/dotnet/UnitTests/expected/iOS-MonoVM-size.txt index ce1db03d0bc2..85c091554a05 100644 --- a/tests/dotnet/UnitTests/expected/iOS-MonoVM-size.txt +++ b/tests/dotnet/UnitTests/expected/iOS-MonoVM-size.txt @@ -1,18 +1,18 @@ -AppBundleSize: 9,458,955 bytes (9,237.3 KB = 9.0 MB) +AppBundleSize: 9,460,643 bytes (9,238.9 KB = 9.0 MB) # The following list of files and their sizes is just informational / for review, and isn't used in the test: _CodeSignature/CodeResources: 5,229 bytes (5.1 KB = 0.0 MB) aot-instances.aotdata.arm64: 818,536 bytes (799.4 KB = 0.8 MB) archived-expanded-entitlements.xcent: 384 bytes (0.4 KB = 0.0 MB) Info.plist: 1,141 bytes (1.1 KB = 0.0 MB) -Microsoft.iOS.aotdata.arm64: 22,904 bytes (22.4 KB = 0.0 MB) -Microsoft.iOS.dll: 48,640 bytes (47.5 KB = 0.0 MB) +Microsoft.iOS.aotdata.arm64: 22,944 bytes (22.4 KB = 0.0 MB) +Microsoft.iOS.dll: 49,152 bytes (48.0 KB = 0.0 MB) PkgInfo: 8 bytes (0.0 KB = 0.0 MB) runtimeconfig.bin: 1,481 bytes (1.4 KB = 0.0 MB) -SizeTestApp: 7,334,000 bytes (7,162.1 KB = 7.0 MB) -SizeTestApp.aotdata.arm64: 1,456 bytes (1.4 KB = 0.0 MB) +SizeTestApp: 7,334,032 bytes (7,162.1 KB = 7.0 MB) +SizeTestApp.aotdata.arm64: 1,464 bytes (1.4 KB = 0.0 MB) SizeTestApp.dll: 7,168 bytes (7.0 KB = 0.0 MB) -System.Private.CoreLib.aotdata.arm64: 665,512 bytes (649.9 KB = 0.6 MB) -System.Private.CoreLib.dll: 537,600 bytes (525.0 KB = 0.5 MB) +System.Private.CoreLib.aotdata.arm64: 665,584 bytes (650.0 KB = 0.6 MB) +System.Private.CoreLib.dll: 538,624 bytes (526.0 KB = 0.5 MB) System.Runtime.aotdata.arm64: 784 bytes (0.8 KB = 0.0 MB) System.Runtime.dll: 5,120 bytes (5.0 KB = 0.0 MB) System.Runtime.InteropServices.aotdata.arm64: 800 bytes (0.8 KB = 0.0 MB) diff --git a/tests/dotnet/UnitTests/expected/iOS-NativeAOT-size.txt b/tests/dotnet/UnitTests/expected/iOS-NativeAOT-size.txt index c95a8dd82c75..931608ccc372 100644 --- a/tests/dotnet/UnitTests/expected/iOS-NativeAOT-size.txt +++ b/tests/dotnet/UnitTests/expected/iOS-NativeAOT-size.txt @@ -1,8 +1,8 @@ -AppBundleSize: 2,667,434 bytes (2,604.9 KB = 2.5 MB) +AppBundleSize: 2,849,802 bytes (2,783.0 KB = 2.7 MB) # The following list of files and their sizes is just informational / for review, and isn't used in the test: _CodeSignature/CodeResources: 2,589 bytes (2.5 KB = 0.0 MB) archived-expanded-entitlements.xcent: 384 bytes (0.4 KB = 0.0 MB) Info.plist: 1,141 bytes (1.1 KB = 0.0 MB) PkgInfo: 8 bytes (0.0 KB = 0.0 MB) runtimeconfig.bin: 1,808 bytes (1.8 KB = 0.0 MB) -SizeTestApp: 2,661,504 bytes (2,599.1 KB = 2.5 MB) +SizeTestApp: 2,843,872 bytes (2,777.2 KB = 2.7 MB)