Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

An item with the same key has already been added. Key: System.String System.Reflection.ParameterInfo::get_Name() #4978

Closed
Ali-YousefiTelori opened this issue Oct 12, 2018 · 3 comments
Assignees
Labels
bug If an issue is a bug or a pull request a bug fix iOS Issues affecting Xamarin.iOS
Milestone

Comments

@Ali-YousefiTelori
Copy link

Ali-YousefiTelori commented Oct 12, 2018

Cannot compile my xamarin app when i using package SignalGo.Net.Shared
This happening when I using linked.xml

Build Logs

7>C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\Xamarin\iOS\Xamarin.iOS.Common.targets(794,3): error MT2102: Error processing the method 'System.Boolean SignalGo.Shared.Helpers.ReflectionHelper/d__0::MoveNext()' in the assembly 'SignalGo.Shared.dll': An item with the same key has already been added. Key: System.String System.Reflection.ParameterInfo::get_Name()
7> --- inner exception
7> Mono.Linker.MarkException: Error processing method: 'System.Boolean SignalGo.Shared.Helpers.ReflectionHelper/d__0::MoveNext()' in assembly: 'SignalGo.Shared.dll' ---> System.ArgumentException: An item with the same key has already been added. Key: System.String System.Reflection.ParameterInfo::get_Name()
7> at System.Collections.Generic.Dictionary2[TKey,TValue].TryInsert (TKey key, TValue value, System.Collections.Generic.InsertionBehavior behavior) [0x0015a] in <14f1e720d53a4a6a8800252bec102319>:0 7> at System.Collections.Generic.Dictionary2[TKey,TValue].Add (TKey key, TValue value) [0x00000] in <14f1e720d53a4a6a8800252bec102319>:0
7> at MonoTouch.Tuner.MonoTouchMarkStep.MarkMethod (Mono.Cecil.MethodReference reference) [0x000b2] in /Users/builder/jenkins/workspace/xamarin-macios/xamarin-macios/tools/linker/MonoTouch.Tuner/MonoTouchMarkStep.cs:112
7> at Mono.Linker.Steps.MarkStep.MarkInstruction (Mono.Cecil.Cil.Instruction instruction) [0x00048] in /Users/builder/jenkins/workspace/xamarin-macios/xamarin-macios/external/mono/external/linker/linker/Linker.Steps/MarkStep.cs:1638
7> at Xamarin.Linker.Steps.CoreMarkStep.MarkInstruction (Mono.Cecil.Cil.Instruction instruction) [0x00042] in /Users/builder/jenkins/workspace/xamarin-macios/xamarin-macios/tools/linker/CoreMarkStep.cs:223
7> at Mono.Linker.Steps.MarkStep.MarkMethodBody (Mono.Cecil.Cil.MethodBody body) [0x000a5] in /Users/builder/jenkins/workspace/xamarin-macios/xamarin-macios/external/mono/external/linker/linker/Linker.Steps/MarkStep.cs:1617
7> at MonoTouch.Tuner.MonoTouchMarkStep.MarkMethodBody (Mono.Cecil.Cil.MethodBody body) [0x0000d] in /Users/builder/jenkins/workspace/xamarin-macios/xamarin-macios/tools/linker/MonoTouch.Tuner/MonoTouchMarkStep.cs:160
7> at Mono.Linker.Steps.MarkStep.ProcessMethod (Mono.Cecil.MethodDefinition method) [0x0019d] in /Users/builder/jenkins/workspace/xamarin-macios/xamarin-macios/external/mono/external/linker/linker/Linker.Steps/MarkStep.cs:1465
7> at Xamarin.Linker.Steps.CoreMarkStep.ProcessMethod (Mono.Cecil.MethodDefinition method) [0x00060] in /Users/builder/jenkins/workspace/xamarin-macios/xamarin-macios/tools/linker/CoreMarkStep.cs:187
7> at Mono.Linker.Steps.MarkStep.ProcessQueue () [0x0001f] in /Users/builder/jenkins/workspace/xamarin-macios/xamarin-macios/external/mono/external/linker/linker/Linker.Steps/MarkStep.cs:188
7> --- End of inner exception stack trace ---
7> at Mono.Linker.Steps.MarkStep.ProcessQueue () [0x0002c] in /Users/builder/jenkins/workspace/xamarin-macios/xamarin-macios/external/mono/external/linker/linker/Linker.Steps/MarkStep.cs:190
7> at Mono.Linker.Steps.MarkStep.ProcessPrimaryQueue () [0x00012] in /Users/builder/jenkins/workspace/xamarin-macios/xamarin-macios/external/mono/external/linker/linker/Linker.Steps/MarkStep.cs:174
7> at Mono.Linker.Steps.MarkStep.Process () [0x00146] in /Users/builder/jenkins/workspace/xamarin-macios/xamarin-macios/external/mono/external/linker/linker/Linker.Steps/MarkStep.cs:136
7> at Mono.Linker.Steps.MarkStep.Process (Mono.Linker.LinkContext context) [0x0000f] in /Users/builder/jenkins/workspace/xamarin-macios/xamarin-macios/external/mono/external/linker/linker/Linker.Steps/MarkStep.cs:77
7> at Xamarin.Linker.Steps.MobileMarkStep.Process (Mono.Linker.LinkContext context) [0x00001] in /Users/builder/jenkins/workspace/xamarin-macios/xamarin-macios/tools/linker/MobileMarkStep.cs:33
7> at Xamarin.Linker.Steps.CoreMarkStep.Process (Mono.Linker.LinkContext context) [0x00017] in /Users/builder/jenkins/workspace/xamarin-macios/xamarin-macios/tools/linker/CoreMarkStep.cs:32
7> at MonoTouch.Tuner.MonoTouchMarkStep.Process (Mono.Linker.LinkContext context) [0x0001d] in /Users/builder/jenkins/workspace/xamarin-macios/xamarin-macios/tools/linker/MonoTouch.Tuner/MonoTouchMarkStep.cs:36
7> at Mono.Linker.Pipeline.Process (Mono.Linker.LinkContext context) [0x0001f] in /Users/builder/jenkins/workspace/xamarin-macios/xamarin-macios/external/mono/external/linker/linker/Linker/Pipeline.cs:127
7> at MonoTouch.Tuner.Linker.Process (MonoTouch.Tuner.LinkerOptions options, MonoTouch.Tuner.MonoTouchLinkContext& context, System.Collections.Generic.List1[Mono.Cecil.AssemblyDefinition]& assemblies) [0x000e0] in /Users/builder/jenkins/workspace/xamarin-macios/xamarin-macios/tools/mtouch/Tuning.cs:80 7> --- 7> --- inner exception 7> System.ArgumentException: An item with the same key has already been added. Key: System.String System.Reflection.ParameterInfo::get_Name() 7> at System.Collections.Generic.Dictionary2[TKey,TValue].TryInsert (TKey key, TValue value, System.Collections.Generic.InsertionBehavior behavior) [0x0015a] in <14f1e720d53a4a6a8800252bec102319>:0
7> at System.Collections.Generic.Dictionary2[TKey,TValue].Add (TKey key, TValue value) [0x00000] in <14f1e720d53a4a6a8800252bec102319>:0 7> at MonoTouch.Tuner.MonoTouchMarkStep.MarkMethod (Mono.Cecil.MethodReference reference) [0x000b2] in /Users/builder/jenkins/workspace/xamarin-macios/xamarin-macios/tools/linker/MonoTouch.Tuner/MonoTouchMarkStep.cs:112 7> at Mono.Linker.Steps.MarkStep.MarkInstruction (Mono.Cecil.Cil.Instruction instruction) [0x00048] in /Users/builder/jenkins/workspace/xamarin-macios/xamarin-macios/external/mono/external/linker/linker/Linker.Steps/MarkStep.cs:1638 7> at Xamarin.Linker.Steps.CoreMarkStep.MarkInstruction (Mono.Cecil.Cil.Instruction instruction) [0x00042] in /Users/builder/jenkins/workspace/xamarin-macios/xamarin-macios/tools/linker/CoreMarkStep.cs:223 7> at Mono.Linker.Steps.MarkStep.MarkMethodBody (Mono.Cecil.Cil.MethodBody body) [0x000a5] in /Users/builder/jenkins/workspace/xamarin-macios/xamarin-macios/external/mono/external/linker/linker/Linker.Steps/MarkStep.cs:1617 7> at MonoTouch.Tuner.MonoTouchMarkStep.MarkMethodBody (Mono.Cecil.Cil.MethodBody body) [0x0000d] in /Users/builder/jenkins/workspace/xamarin-macios/xamarin-macios/tools/linker/MonoTouch.Tuner/MonoTouchMarkStep.cs:160 7> at Mono.Linker.Steps.MarkStep.ProcessMethod (Mono.Cecil.MethodDefinition method) [0x0019d] in /Users/builder/jenkins/workspace/xamarin-macios/xamarin-macios/external/mono/external/linker/linker/Linker.Steps/MarkStep.cs:1465 7> at Xamarin.Linker.Steps.CoreMarkStep.ProcessMethod (Mono.Cecil.MethodDefinition method) [0x00060] in /Users/builder/jenkins/workspace/xamarin-macios/xamarin-macios/tools/linker/CoreMarkStep.cs:187 7> at Mono.Linker.Steps.MarkStep.ProcessQueue () [0x0001f] in /Users/builder/jenkins/workspace/xamarin-macios/xamarin-macios/external/mono/external/linker/linker/Linker.Steps/MarkStep.cs:188 7> --- 7> at MonoTouch.Tuner.Linker.Process (MonoTouch.Tuner.LinkerOptions options, MonoTouch.Tuner.MonoTouchLinkContext& context, System.Collections.Generic.List1[Mono.Cecil.AssemblyDefinition]& assemblies) [0x00145] in /Users/builder/jenkins/workspace/xamarin-macios/xamarin-macios/tools/mtouch/Tuning.cs:92
7> at Xamarin.Bundler.Target.LinkAssemblies (System.Collections.Generic.List1[Mono.Cecil.AssemblyDefinition]& assemblies, System.String output_dir, System.Collections.Generic.IEnumerable1[T] sharedCodeTargets) [0x00256] in /Users/builder/jenkins/workspace/xamarin-macios/xamarin-macios/tools/mtouch/Target.cs:517
7> at Xamarin.Bundler.Target.ManagedLink () [0x00720] in /Users/builder/jenkins/workspace/xamarin-macios/xamarin-macios/tools/mtouch/Target.cs:664
7> at Xamarin.Bundler.Target.ProcessAssemblies () [0x000c2] in /Users/builder/jenkins/workspace/xamarin-macios/xamarin-macios/tools/mtouch/Target.cs:868
7> at Xamarin.Bundler.Application.ProcessAssemblies () [0x0002f] in /Users/builder/jenkins/workspace/xamarin-macios/xamarin-macios/tools/mtouch/Application.cs:1411
7> at Xamarin.Bundler.Application.BuildManaged () [0x00001] in /Users/builder/jenkins/workspace/xamarin-macios/xamarin-macios/tools/mtouch/Application.cs:839
7> at Xamarin.Bundler.Application+<>c.b__140_1 (Xamarin.Bundler.Application v) [0x00000] in /Users/builder/jenkins/workspace/xamarin-macios/xamarin-macios/tools/mtouch/Application.cs:787
7> at System.Collections.Generic.List1[T].ForEach (System.Action1[T] action) [0x0001e] in <14f1e720d53a4a6a8800252bec102319>:0
7> at Xamarin.Bundler.Application.BuildAll () [0x00050] in /Users/builder/jenkins/workspace/xamarin-macios/xamarin-macios/tools/mtouch/Application.cs:787
7> at Xamarin.Bundler.Driver.Main2 (System.String[] args) [0x00423] in /Users/builder/jenkins/workspace/xamarin-macios/xamarin-macios/tools/mtouch/mtouch.cs:1402
7> at Xamarin.Bundler.Driver.Main (System.String[] args) [0x00015] in /Users/builder/jenkins/workspace/xamarin-macios/xamarin-macios/tools/mtouch/mtouch.cs:934
========== Build: 6 succeeded, 1 failed, 17 up-to-date, 0 skipped ==========

in the signalgo source:

/// <summary>
    /// helper of reflection methods
    /// </summary>
    public static class ReflectionHelper
    {

        public static IEnumerable<Shared.Models.GoParameterInfo> MethodToParameters1(this MethodInfo methodInfo, Func<object, string> serialize, params object[] args)
        {
            ParameterInfo[] methodParams = methodInfo.GetParameters();

            for (int i = 0; i < args.Length; i++)
            {
                yield return new Shared.Models.GoParameterInfo() { Name = methodParams[i].Name, Value = serialize(args[i]) };
            }
        }

        public static IEnumerable<Shared.Models.GoParameterInfo> MethodToParameters2(this Models.ServiceDetailsMethod methodInfo, List<Models.ServiceDetailsParameterInfo> parameters, Func<object, string> serialize)
        {
            foreach (Models.ServiceDetailsParameterInfo parameterInfo in parameters)
            {
                yield return new Shared.Models.GoParameterInfo() { Name = parameterInfo.Name, Value = serialize(parameterInfo.Value) };
            }
        }

#if (!NET35)
        public static IEnumerable<Shared.Models.GoParameterInfo> MethodToParameters3(this System.Dynamic.InvokeMemberBinder methodInfo, Func<object, string> serialize, params object[] args)
        {
            System.Collections.ObjectModel.ReadOnlyCollection<string> methodParams = methodInfo.CallInfo.ArgumentNames;

            for (int i = 0; i < args.Length; i++)
            {
                yield return new Shared.Models.GoParameterInfo() { Name = methodParams[i], Value = serialize(args[i]) };
            }
        }
#endif

linked.xml File:

<?xml version="1.0" encoding="utf-8" ?>
<linker>
  <assembly fullname="Agrin.InternetServiceProvider">
    <type fullname="*" />
  </assembly>

   <assembly fullname="Agrin.UI.ViewModels">
    <type fullname="*" />
  </assembly>
  <assembly fullname="SignalGo.Client">
    <type fullname="*" />
  </assembly>
  <assembly fullname="SignalGo.Shared">
    <type fullname="*" />
  </assembly>
 <assembly fullname="Framesoft.Parallax">
    <type fullname="*" />
  </assembly>
  <assembly fullname="MvvmGo">
    <type fullname="*" />
  </assembly>
  <assembly fullname="AsNum.XFControls">
    <type fullname="*" />
  </assembly>
  <assembly fullname="mscorlib">
    <type fullname="System.Reflection*" />
  </assembly>
  <assembly fullname="LiteDB">
    <type fullname="*" />
  </assembly>
  <assembly fullname="GoStorageCaching.Engine">
    <type fullname="*" />
  </assembly>
  <assembly fullname="CrazyMapper">
    <type fullname="*" />
  </assembly>
  <assembly fullname="Agrin.Client.DataBase">
    <type fullname="*" />
  </assembly>
  <assembly fullname="Agrin.Models">
    <type fullname="*" />
  </assembly>
  <assembly fullname="Agrin.Download">
    <type fullname="*" />
  </assembly>
  <assembly fullname="Agrin.Foundation">
    <type fullname="*" />
  </assembly>
  <assembly fullname="Agrin.Component">
    <type fullname="*" />
  </assembly>
  <assembly fullname="System">
    <type fullname="System.Net.Sockets*" />
  </assembly>
  </linker>
@spouliot spouliot self-assigned this Oct 12, 2018
@spouliot spouliot added this to the d16-0 milestone Oct 12, 2018
@spouliot spouliot added bug If an issue is a bug or a pull request a bug fix iOS Issues affecting Xamarin.iOS labels Oct 12, 2018
@spouliot
Copy link
Contributor

Commit 996d906 forgot to set a flag. This makes the use of the XML file to preserve ParameterInfo clash with its use.

The workaround will be to edit your XML file to be more precise, i.e. remove

<assembly fullname="mscorlib">
    <type fullname="System.Reflection*" />
  </assembly>

and replace it with the types that you need - but do not add ParameterInfo. The side benefit is that you can likely optimize what's preserved and get a smaller application.

spouliot added a commit to spouliot/xamarin-macios that referenced this issue Oct 12, 2018
…es. Fixes xamarin#4978

Commit xamarin@996d906 fixed the use of XML files. However it did not set the flags so if it's used in both XML and in code then the dictionary is being added twice, which throws an exception like

```
error MT2102: Error processing the method 'System.Boolean SignalGo.Shared.Helpers.ReflectionHelper/d__0::MoveNext()' in the assembly 'SignalGo.Shared.dll': An item with the same key has already been added. Key: System.String System.Reflection.ParameterInfo::get_Name()
```

reference: xamarin#4978
@Ali-YousefiTelori
Copy link
Author

thank you it's works now.

baulig pushed a commit that referenced this issue Oct 31, 2018
commit 08c1eb4
Author: Martin Baulig <martin.baulig@xamarin.com>
Date:   Tue Oct 30 02:45:50 2018 -0400

    X

commit b4185d8
Author: Martin Baulig <martin.baulig@xamarin.com>
Date:   Tue Oct 30 02:36:47 2018 -0400

    X

commit 3416bdb
Author: Martin Baulig <mabaul@microsoft.com>
Date:   Mon Oct 29 22:55:20 2018 -0400

    X

commit 0b412c7
Author: Martin Baulig <mabaul@microsoft.com>
Date:   Mon Oct 29 20:48:09 2018 -0400

    X

commit 986946d
Author: Martin Baulig <mabaul@microsoft.com>
Date:   Mon Oct 29 12:51:28 2018 -0400

    X

commit 4cf6eae
Author: Martin Baulig <mabaul@microsoft.com>
Date:   Mon Oct 29 10:53:57 2018 -0400

    X

commit 9446c39
Author: Martin Baulig <martin.baulig@xamarin.com>
Date:   Mon Oct 29 10:23:17 2018 -0400

    X

commit 9f28ef6
Author: Martin Baulig <mabaul@microsoft.com>
Date:   Mon Oct 29 08:34:19 2018 -0400

    X

commit 21a0005
Author: Martin Baulig <mabaul@microsoft.com>
Date:   Mon Oct 29 08:13:09 2018 -0400

    X

commit 947524d
Author: Martin Baulig <martin.baulig@xamarin.com>
Date:   Sun Oct 28 18:02:44 2018 -0400

    X

commit cfbcf6c
Author: Martin Baulig <martin.baulig@xamarin.com>
Date:   Fri Oct 26 05:42:20 2018 -0400

    X

commit ae8fcaa
Author: Martin Baulig <martin.baulig@xamarin.com>
Date:   Fri Oct 26 02:27:06 2018 -0400

    X

commit 41dac5b
Author: Chris Hamons <chris.hamons@xamarin.com>
Date:   Thu Oct 25 11:56:23 2018 -0500

    [macos] Add NSScrollView.AddFloatingSubview (#5040)

    - #5039

commit de197e3
Author: Rolf Bjarne Kvinge <rolf@xamarin.com>
Date:   Thu Oct 25 17:47:05 2018 +0200

    [introspection] Fix a few issues found on iPad Air 2 with iOS 12. (#5034)

    * [introspection] MPSCnnBinaryKernel's kernelHeight/kernelWidth are missing on iOS too.

    * [introspection] CoreNFC is not even available on all devices.

commit 374898a
Author: Rolf Bjarne Kvinge <rolf@xamarin.com>
Date:   Thu Oct 25 17:17:03 2018 +0200

    [tests] Only build exactly what's neded for running XM tests on older bots. (#5038)

    Also build what we can in parallel (and manually building shared dependencies first).

commit 82e0c73
Author: Rolf Bjarne Kvinge <rolf@xamarin.com>
Date:   Fri Oct 26 17:15:00 2018 +0200

    Bump minimum mono one that has 'mono_dangerous_add_raw_internal_call'.

commit 93e7286
Author: Rolf Bjarne Kvinge <rolf@xamarin.com>
Date:   Fri Oct 26 15:23:36 2018 +0200

    [mmptest] Less hardcoding.

commit 7449e51
Author: Aleksey Kliger (λgeek) <akliger@gmail.com>
Date:   Fri Oct 26 00:46:28 2018 -0500

    [2018-08][watchos] Use mono_dangerous_add_raw_internal_call for watchOS icalls (#5030)

    * Add optional mono_dangerous_add_raw_internal_call to exports.t4

    * Use mono_dangerous_add_raw_internal_call on watchOS for icall registration

    Internal calls added with mono_dangerous_add_raw_internal_call run in GC Unsafe
    mode under cooperative and hybrid suspend, whereas internal calls added with
    mono_add_internal_call run in GC Safe mode since
    mono/mono@5756ba4 in order for hybrid suspend
    to be a transparent replacement for preemptive suspend (the old default).  The
    icalls in GC Unsafe mode have a responsibility not to block indefinitely
    without manually performing a thread state transition to GC Safe mode, and in
    return they avoid a thread state transition when the icall is invoked from a
    managed method.

commit 0b27eef
Author: Marek Safar <marek.safar@gmail.com>
Date:   Thu Oct 25 20:14:41 2018 +0200

    Bump mono

commit 36209e5
Author: Rolf Bjarne Kvinge <rolf@xamarin.com>
Date:   Thu Oct 25 12:31:26 2018 +0200

    Remove 10.7 & 10.8 availability attributes, since they're redundant now.

commit 2755245
Author: Rolf Bjarne Kvinge <rolf@xamarin.com>
Date:   Thu Oct 25 17:04:56 2018 +0200

    [tests] More min macOS version setting to 10.9.

commit 3f5aceb
Author: Rolf Bjarne Kvinge <rolf@xamarin.com>
Date:   Thu Oct 25 09:50:21 2018 +0200

    Bump guiunit to get updated min macOS version.

    Commit list for mono/guiunit:

    * mono/guiunit@9f67042 Bump min macOS version to 10.9.
    * mono/guiunit@0c3159a [Harness] Fix exit code of 0 being reported in case of exceptions in the harness
    * mono/guiunit@9b7497c Merge pull request #15 from mono/fix-more-warnings
    * mono/guiunit@a264470 Fix more warnings
    * mono/guiunit@dd094e7 Merge pull request #14 from mono/fix-warnings
    * mono/guiunit@b3afede Fix build warnings

    Diff: mono/guiunit@1306b0d...9f67042

commit 04b7c94
Author: Rolf Bjarne Kvinge <rolf@xamarin.com>
Date:   Thu Oct 25 09:13:56 2018 +0200

    Bump min mono version for XM system apps.

    Using a system mono < 5.18 results in a TypeLoadException:

        Could not resolve type with token 01000032 from typeref (expected class 'Mono.ISystemDependencyProvider' in assembly 'mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089')

commit cca50fe
Author: Rolf Bjarne Kvinge <rolf@xamarin.com>
Date:   Thu Oct 25 00:10:28 2018 +0200

    Mono 2018-08 requires macOS 10.9+, so Xamarin.Mac must as well.

commit 0ebc514
Merge: 545c7bf d836c88
Author: Rolf Bjarne Kvinge <rolf@xamarin.com>
Date:   Thu Oct 25 09:54:07 2018 +0200

    Merge remote-tracking branch 'origin/master' into mono-2018-08

commit d836c88
Author: Jeffrey Stedfast <jestedfa@microsoft.com>
Date:   Wed Oct 24 20:11:17 2018 -0400

    [msbuild] Always set IOSDebugOverWiFi to true for WatchOS apps/extensions (#5035)

    Fixes https://devdiv.visualstudio.com/DevDiv/_workitems/edit/712824

commit 51e7a47
Author: Vincent Dondain <vidondai@microsoft.com>
Date:   Wed Oct 24 20:10:55 2018 -0400

    [coregraphics] Make MatrixOrder a normal enum instead of a nested enum (#5036)

    This enum might prove useful to other APIs in the future so move outside of `CGAffineTransform`.

commit 74576fa
Author: Rolf Bjarne Kvinge <rolf@xamarin.com>
Date:   Wed Oct 24 23:58:14 2018 +0200

    [Metal/SpriteKit] Fix availability attributes on a few API. (#5033)

commit 9688c42
Author: Bernhard Urban <bernhard.urban@xamarin.com>
Date:   Wed Oct 24 21:24:22 2018 +0200

    Bump mono and enable monotouch-test with interpreter (#5023)

    * Bump Mono 2018-06

    Commit list for mono/mono:

    * mono/mono@c0fe7243790 [aot] Reenable recursion checking when initing shared got entries (#11295)
    * mono/mono@f55f7e53e36 [interp] use unsigned conversion for nuint (#11285)
    * mono/mono@5986920bdbc [2018-06] [arm64] Remove the limitation on the number of nullable arguments for dyncalls (#11266)
    * mono/mono@665a308c397 [WinForms] Propagate the flags from DrawTextInternal to MeasureTextInternal (#11251)
    * mono/mono@5ed4143b4f4 [2018-06] Crash Reporter V2 (#11162)
    * mono/mono@f0db92c2b6d [interp] Implement interpreter entry trampolines on amd64 (#10978) (#11165)
    * mono/mono@c1f1a7bfed9 [ci] Move OSX .pkg build to a separate bot pool
    * mono/mono@d80ced607b4 [aot] Ensure shared got entries are initialized before loading methods (#11225)
    * mono/mono@d07c626a748 [pkg] Add preinstall which removes existing Mono of the same version (#11209)
    * mono/mono@cda3acc57cd [sdks] futimens and futimes symbols are missing on anything earlier than 10.13 (#11174)
    * mono/mono@226e91a0644 Bump xunit-binaries

    Diff: mono/mono@2343f26...c0fe724

    * [tests] enable monotouch-test with --interpreter on Jenkins

commit 545c7bf
Merge: 63025fe 0ddc355
Author: Rolf Bjarne Kvinge <rolf@xamarin.com>
Date:   Wed Oct 24 13:49:26 2018 +0200

    Merge remote-tracking branch 'origin/master' into mono-2018-08

commit 0ddc355
Author: Rolf Bjarne Kvinge <rolf@xamarin.com>
Date:   Wed Oct 24 07:54:50 2018 +0200

    [Foundation] Fix compiler warnings in NSUrlSessionHandler. (#5032)

    Fix these warnings:

        src/Foundation/NSUrlSessionHandler.cs(71,57): warning CS3001: Argument type 'NSUrlSessionConfiguration' is not CLS-compliant
        src/Foundation/NSUrlSessionHandler.cs(89,14): warning CS0618: 'NSUrlSession.FromConfiguration(NSUrlSessionConfiguration, NSUrlSessionDelegate, NSOperationQueue)' is obsolete: 'Use the overload with a 'INSUrlSessionDelegate' parameter.'

commit ad67a39
Author: Rolf Bjarne Kvinge <rolf@xamarin.com>
Date:   Wed Oct 24 07:52:58 2018 +0200

    [runtime] Improve diagnostics/behavior in case of failure to contact the IDE when debugging. (#5029)

    When debugging watchOS apps on device, we wait forever [1] for a connection to
    be established to the IDE (iOS apps wait for only 2 seconds, but that's
    because the app will be killed after a while, which we avoid on watchOS by
    attaching the native debugger).

    Unfortunately our error handling was not quite optimal, which meant that if
    the connection to the IDE failed, we'd wait forever instead of launching the
    app without attaching the debugger.

    So improve this, by printing "Waiting for connection to the IDE..." messages
    while trying to connect, and printing detailed log messages if the
    connection attempt fails (as well as terminating the wait and launching the
    watch app).

    [1] In this case forever technically means "1 hour".

commit 63025fe
Author: Martin Baulig <martin.baulig@xamarin.com>
Date:   Wed Oct 24 00:10:10 2018 -0400

    [security]: `NATIVE_APPLE_CERTIFICATE` should now be defined on watchOS as well.

commit d2a9a57
Author: Sebastien Pouliot <sebastien.pouliot@gmail.com>
Date:   Tue Oct 23 14:15:58 2018 -0400

    [mtouch] Display a specific error is a .framework binary is invalid. Fixes #5028 (#5031)

    Instead of a generic `MT0000` caused by an exception reading the magic
    numbers of the binary framework file.

    This was caused be uncompressing an archive, with a symlink, into a
    file system that does not support symlinks (on Windows).

    ref: #5028

commit b403da0
Author: Sebastien Pouliot <sebastien.pouliot@gmail.com>
Date:   Mon Oct 22 21:54:54 2018 -0400

    [uikit] Preserve method associated with `updateSearchResultsForSearchController:`. Fixes #5024 (#5027)

    This method is called back from iOS (or tvOS) so there's no managed
    reference pointing to it. However we know that if it's (private inner)
    type is present it's because the callback (from native) is possible so
    we can preserve the method conditionally (to the type presence).

    #5024

commit 74102bc
Author: Rolf Bjarne Kvinge <rolf@xamarin.com>
Date:   Tue Oct 23 01:52:45 2018 +0200

    Use the zlib-helper.o library built by mono, instead of building our own. (#5021)

    This also makes it possible to simplify/remove some of our build logic.

commit 0cbf960
Author: Jeffrey Stedfast <jestedfa@microsoft.com>
Date:   Mon Oct 22 10:22:52 2018 -0400

    Update mtouch-errors.md

commit 502d811
Author: Jeffrey Stedfast <jestedfa@microsoft.com>
Date:   Mon Oct 22 10:20:57 2018 -0400

    Update mtouch-errors.md

commit d899d4f
Author: Rolf Bjarne Kvinge <rolf@xamarin.com>
Date:   Mon Oct 22 16:14:26 2018 +0200

    Remove bitrotted support for a separate mono submodule for watchOS support. (#5022)

    Unce upon a time we used a separate mono submodule for watchOS support, to make
    development of watchOS support easier (we referenced mono/master, to avoid
    backporting fixes for watchOS support through various release branches in
    mono).

    This only worked until our watchOS support became stable, since then we had to
    start using a stable version of mono for watchOS support.

    This means that our build support for using a separate mono clone for watchOS
    support is no longer needed; and in any case it's broken because of build
    changes done later.

commit f87f3b8
Author: Vincent Dondain <vidondai@microsoft.com>
Date:   Mon Oct 22 08:42:52 2018 -0400

    [coregraphics] Add 'MatrixOrder' overload for Scale, Rotate and Translate (#5011)

    - Fixes #4698: CGAffineTransform.Scale does not work like Swift's .scaledBy(x:y:)
      (#4698)
    - 'Scale' monotouch-test now covers the new overload for the new multiplication order.
    - Changed the Scale test's values so we have different values for 'x0' (it was always 0 before) and so it matches the test case from the bug report.

    * Same fix for Rotate and Translate

commit c378d6b
Author: Rolf Bjarne Kvinge <rolf@xamarin.com>
Date:   Mon Oct 22 07:57:16 2018 +0200

    Add a UserType flag for registered types, and use it to improve the performance for is_user_type. (#5017)

    * Refactor type map to have a separate flag field for each type instead of magic location in the array.

    Refactor the type map to have a separate flag field for each type instead of a
    magic location in the array. This simplifies some code, but also allows us to
    introduce more flags in the future (which becomes increasingly complex if the
    location in the array is to determine yet another value).

    This has neglible performance impacts.

    * Add a UserType flag for registered types, and use it to improve the performance for is_user_type.

    Reflection in the Objective-C runtime is apparently quite slow, so try to
    avoid it by computing the information we need for determining whether a
    particular Objective-C type represents a user type or not in the static
    registrar.

    We store this information in a flag for the type in question in the type map,
    and use a binary search to search the type map when needed.

    This provides a significant improvement, in particular in the dontlink
    scenario (probably because there are many more Objective-C types in the app,
    which made Objective-C reflection slow). In fact, it somehow made the dontlink
    scenario so fast that it's faster than the linkall scenario (which also
    improved, but not nearly as much). While quite inexplicable, it's a consistent
    result I've seen over multiple test runs.

    Numbers
    =======

    Test case: rolfbjarne/TestApp@004283d

    Fix 1 refers to PR #5009.
    Fix 2 refers to PR #5013.
    Fix 3 refers to PR #5016.
    Fix 4 is this fix.

    iPad Air 2
    ----------

    | Configuration       | Before | After fix 1 | After fix 2  | After fix 3  | After fix 4  | Improvement from fix 3 to fix 4 | Cumulative improvement |
    | ------------------- | ------ | ----------: | -----------: | -----------: | -----------: | ------------------------------: | ---------------------: |
    | Release (link all)  | 477 ms |      481 ms |       224 ms |       172 ms |       148 ms |                     24 ms (14%) |           329 ms (69%) |
    | Release (dont link) | 738 ms |      656 ms |       377 ms |       201 ms |       146 ms |                     55 ms (27%) |           592 ms (80%) |

    iPhone X
    --------

    | Configuration       | Before | After fix 1 | After fix 2  | After fix 3  | After fix 4  | Improvement from fix 3 to fix 4 | Cumulative improvement |
    | ------------------- | ------ | ----------: | -----------: | -----------: | -----------: | ------------------------------: | ---------------------: |
    | Release (link all)  |  98 ms |       99 ms |        42 ms |        31 ms |        29 ms |                      2 ms ( 6%) |            69 ms (70%) |
    | Release (dont link) | 197 ms |      153 ms |        91 ms |        43 ms |        28 ms |                     15 ms (35%) |           169 ms (86%) |

    When linking all assemblies, the type map has 24 entries, and when not linking
    at all it has 2993 entries.

    This is part 4 (the last) of multiple fixes for #4936.

    The total speed-up is 69-86% (3-7x faster).

commit 097e3fc
Author: Rolf Bjarne Kvinge <rolf@xamarin.com>
Date:   Fri Oct 19 18:33:45 2018 +0200

    [Class] Cache the IntPtr constructors in a dictionary. (#5016)

    Using reflection to find these constructors is computation-intensitive, so
    cache the results.

    Numbers
    =======

    Test case: rolfbjarne/TestApp@004283d

    Fix 1 refers to PR #5009.
    Fix 2 refers to PR #5013.
    Fix 3 is this fix.

    iPad Air 2
    ----------

    | Configuration       | Before | After fix 1 | After fix 2  | After fix 3  | Improvement from fix 2 to fix 3 | Cumulative improvement |
    | ------------------- | ------ | ----------: | -----------: | -----------: | ------------------------------: | ---------------------: |
    | Release (link all)  | 477 ms |      481 ms |       224 ms |       172 ms |                     52 ms (23%) |           305 ms (64%) |
    | Release (dont link) | 738 ms |      656 ms |       377 ms |       201 ms |                    176 ms (47%) |           537 ms (73%) |

    iPhone X
    --------

    | Configuration       | Before | After fix 1 | After fix 2  | After fix 3  | Improvement from fix 2 to fix 3 | Cumulative improvement |
    | ------------------- | ------ | ----------: | -----------: | -----------: | ------------------------------: | ---------------------: |
    | Release (link all)  |  98 ms |       99 ms |        42 ms |        31 ms |                     11 ms (26%) |            67 ms (68%) |
    | Release (dont link) | 197 ms |      153 ms |        91 ms |        43 ms |                     48 ms (53%) |           154 ms (78%) |

    When linking all assemblies, the type map has 24 entries, and when not linking
    at all it has 2993 entries.

    This is part 3 of multiple fixes for #4936.

commit 1279dd1
Author: Rolf Bjarne Kvinge <rolf@xamarin.com>
Date:   Fri Oct 19 16:54:44 2018 +0200

    Get the F# binaries from macios-binaries instead of building them every time. (#5015)

    It's still possible to build from source if desired.

    Also remove the fsharp submodule (it will be cloned manually only if building
    from source).

commit ac87108
Author: Rolf Bjarne Kvinge <rolf@xamarin.com>
Date:   Fri Oct 19 16:04:36 2018 +0200

    [Class] Make looking up a System.Type given a native Class instance faster (#5013)

    Cache the Class -> System.Type lookup in an array.

    I could also have used a dictionary, but there are a couple of disadvantages
    compared to the array approach:

    * A dictionary would require a lock every time it's read/written to. The array
      is created at launch, and after that we don't have to care about thread
      safety because it's safe to do the slow lookup multiple times.
    * Its memory requirements would be higher with more elements (in particular
      since we'd not only need to store the Type instance, but also a boolean
      determining whether it's a user type or not).
    * It's ~1% slower (probably due to the lock).

    Numbers
    =======

    Test case: rolfbjarne/TestApp@004283d

    Fix 1 refers to PR #5009.
    Fix 2 is this fix.

    iPad Air 2
    ----------

    | Configuration       | Before | After fix 1 | After fix 2  | Improvement from fix 1 to fix 2 | Cumulative improvement |
    | ------------------- | ------ | ----------: | -----------: | ------------------------------: | ---------------------: |
    | Release (link all)  | 477 ms |      481 ms |       224 ms |                    257 ms (53%) |           253 ms (53%) |
    | Release (dont link) | 738 ms |      656 ms |       377 ms |                    279 ms (43%) |           459 ms (62%) |

    iPhone X
    --------

    | Configuration       | Before | After fix 1 | After fix 2  | Improvement from fix 1 to fix 2 | Cumulative improvement |
    | ------------------- | ------ | ----------: | -----------: | ------------------------------: | ---------------------: |
    | Release (link all)  |  98 ms |       99 ms |        42 ms |                     57 ms (58%) |            56 ms (57%) |
    | Release (dont link) | 197 ms |      153 ms |        91 ms |                     62 ms (41%) |           106 ms (54%) |

    When linking all assemblies, the type map has 24 entries, and when not linking
    at all it has 2993 entries.

    This is part 2 of multiple fixes for #4936.

commit 900356c
Author: Rolf Bjarne Kvinge <rolf@xamarin.com>
Date:   Fri Oct 19 07:33:15 2018 +0200

    [Class] Sort our array of Class -> token references so that we can do binary instead of linear searches in it. (#5009)

    Our type map has two sections: first come all the wrapper types, then all the
    custom types. This means we need to sort these two sections separately, since
    code elsewhere depends on this split in order to determine if a type is a
    custom type or not.

    We also need a minor modification in the array of skipped types, since it
    contained indexes into the type map, which won't be valid after is has been
    sorted. Instead store a type reference for the actual type in the array, and
    use that to search the type map for the corresponding Class. This is a little
    bit slower, but the results are cached in a dictionary, so it'll only happen
    once for each type.

    The performance is slightly slower when the type map has very few entries, but
    that is repaid many times over when the number of entries go up.

    Numbers
    =======

    Test case: rolfbjarne/TestApp@004283d

    iPad Air 2
    ----------

    | Configuration       | Before | After  | Improvement   |
    | ------------------- | ------ | ------ | ------------: |
    | Release (link all)  | 477 ms | 481 ms | -4 ms (-0,8%) |
    | Release (dont link) | 738 ms | 656 ms |   82 ms (11%) |

    iPhone X
    --------

    | Configuration       | Before | After  | Improvement |
    | ------------------- | ------ | ------ | ----------: |
    | Release (link all)  |  98 ms |  99 ms | -1 ms (-1%) |
    | Release (dont link) | 197 ms | 153 ms | 44 ms (22%) |

    When linking all assemblies, the type map has 24 entries, and when not linking
    at all it has 2993 entries.

    This is part 1 of multiple fixes for #4936.

commit 1ec90f0
Author: monojenkins <jo.shields+jenkins@xamarin.com>
Date:   Thu Oct 18 14:37:30 2018 -0400

    [uikit] Duplicate bindings for 'UIScrollView.ContentOffset' to get correct availability information. Fixes #4893 (#5007)

    `ContentOffset` was moved to `UIFocusItemScrollableContainer` in iOS 12.
    Since it's a new protocol it's decorated as introduced in iOS 12 - but
    the API was actually already available for a long time.

    The _trick_ is to keep the original binding inside `UIScrollView`
    so it overrides the protocol and keeps the correct availability info.
    It requires adding `new` to bindings to avoid compiler warnings.

    reference: #4893

    ---

    from @rolfbjarne

    In iOS 12 this property was moved to a protocol, but that protocol's
    availability attributes limits it to iOS 12, not iOS 2 where this property was
    originally introduced.

    This is problematic, because it means we'll throw a
    PlatformNotSupportedException if someone tries to call it on 32-bit iOS.

    So put the property back on UIScrollView, so that the generated code ends up
    with the right availability attributes (and a correct 32-bit implementation).

    #5004

commit 99641c7
Author: Sebastien Pouliot <sebastien.pouliot@gmail.com>
Date:   Thu Oct 18 14:03:17 2018 -0400

    [msbuild] Avoid possible NullReferenceException in ScnToolTaskBase. Fixes #4039 (#5006)

    `EnvironmentVariables` can be null (not empty) and cause the NRE in the
    attached test case.

    It's not clear that the extra logic is needed if we were using `xcrun`.
    There's an enhancement for this #4634

    reference: #4039

commit 5ad55d6
Author: Sebastien Pouliot <sebastien.pouliot@gmail.com>
Date:   Thu Oct 18 11:16:24 2018 -0400

    [tests][linkall] Add a check that the Makefile produced version number is 'legit'. Fixes #4859 (#5005)

    History: a marge conflict caused a version string to become "12.3." and
    this was found in the API diff much later.

    reference: #4859

commit dca1f47
Author: Miguel de Icaza <miguel@gnome.org>
Date:   Thu Oct 18 06:31:39 2018 -0400

    [UIKit] UIGestureRecognizer, support a way of unsubscribing without creating cycles (#4729)

    * [UIKit] UIGestureRecognizer, support a way of unsubscribing without creating cycles

    This now tracks all the uses of AddTarget with delegates by recording
    the Token/Selector pair and making `Dispose()` release all the linkage
    as well as providing an enumerator that can be used to get all the
    registered Action handlers - this can then be used with .First() and
    then passed to `RemoveTarget`.

    This addresses #4190

    This initial patch is here for discussion of the approach, want to
    review and test this before we merge.

    * Simplify code a little bit.

    * Add test.

    * [tests] Add an NSAutoreleasePool to make GestureRecognizerTest.NoStrongCycles happy on 32-bit.

commit d2bcd4b
Author: Martin Baulig <mabaul@microsoft.com>
Date:   Wed Oct 17 15:12:39 2018 -0400

    Bump Mono.

commit ee1f7dc
Author: Rolf Bjarne Kvinge <rolf@xamarin.com>
Date:   Wed Oct 17 14:42:29 2018 +0200

    [CoreFoundation] Implement missing dispatch API. Fixes #4606. (#4967)

    * [CoreFoundation] Add DispatchQueue.DispatchBarrierSync.

    * [CoreFoundation] Bind dispatch_queue_[set|get]_specific.

    * [CoreFoundation] Bind dispatch_queue_get_qos_class.

    * [CoreFoundation] Bind dispatch_queue_create_with_target.

    * Add tests.

    * Update xtro.

    * Add missing availability attributes.

    * [tests] Do a version check before testing new API.

    * Remove redundant code.

commit 6751f27
Author: Sebastien Pouliot <sebastien.pouliot@gmail.com>
Date:   Wed Oct 17 08:25:37 2018 -0400

    [tests][mmp] Move TypeDescriptor (regression) tests to unit tests (#4994)

    Also move some tests to share more (now and in future commits)
    with iOS linker-related tests.

    Part of #4975

commit 6044a74
Author: Rolf Bjarne Kvinge <rolf@xamarin.com>
Date:   Wed Oct 17 07:13:25 2018 +0200

    Bump maccore to get fix for xamarin/maccore#1090. (#4989)

    * Bump maccore to get fix for xamarin/maccore#1090.

    Diff: https://github.com/xamarin/maccore/compare/46a12247947cdf546e0e07f4e7062ef2f5fcf515...b93ee3155d89e4414c4c228cf19bb89489b03bb1

    * Bump maccore again.

    Commit list for xamarin/maccore:

    * xamarin/maccore@b35c3a8d76 Build mlaunch with msbuild instead of xbuild. (#1091)

    Diff: https://github.com/xamarin/maccore/compare/b93ee3155d89e4414c4c228cf19bb89489b03bb1...b35c3a8d7682c8482c7c749d7c1670b3d4bbed5c

commit c308071
Author: Martin Baulig <mabaul@microsoft.com>
Date:   Tue Oct 16 15:18:33 2018 -0400

    Revert "[monotouch-test] Disable X509Certificate(byte[]) tests on watchOS (#4942)"

    This reverts commit d003a9b.

commit 8e72ea8
Author: Bernhard Urban <bernhard.urban@xamarin.com>
Date:   Tue Oct 16 20:05:19 2018 +0200

    [tests] improve MonoWeakReferenceTest to avoid false pinning (#4961)

    Fixes an issue when executed with interpreter. Now, the test is closer
    to what we do in the runtime test:

    https://github.com/mono/mono/blob/831e73abcd5b9e10b4aaff7872b8d68e8e0f60fd/mono/tests/weak-fields.cs
    https://github.com/mono/mono/blob/831e73abcd5b9e10b4aaff7872b8d68e8e0f60fd/mono/mini/TestHelpers.cs

commit e05d87d
Author: Sebastien Pouliot <sebastien.pouliot@gmail.com>
Date:   Tue Oct 16 13:58:08 2018 -0400

    [mediaplayer] Fix NRE in MPNowPlayingInfoCenter wrt null dictionary entries. Fixes #4988 (#4992)

    The custom `TryGetValue` could return `true` and an `out null`. That was
    fine for many items, e.g. converting `null` to `NSString` or `NSDate` is
    fine.

    However this cause an `NullReferenceException` when trying to create
    arrays (thru `NSArray`) or converting `NSNumber` into value types.

    The _normal_ `TryGetValue` behavior fixes this - and avoid extraneous
    (and non-required) conversions of `null` items.

    ref: #4988

commit e73b1a9
Author: Sebastien Pouliot <sebastien.pouliot@gmail.com>
Date:   Tue Oct 16 13:57:25 2018 -0400

    [mac] Fix logic to include branch name in packages. Fixes #4990 (#4991)

    so it can be reported inside VSM.

    The logic was not updated (for XM) with the simpler one we can use
    on the internal Jenkins bots.

    ref: #4990

commit 60b06b9
Author: Bernhard Urban <bernhard.urban@xamarin.com>
Date:   Tue Oct 16 17:25:35 2018 +0200

    [tests] make Symbols.FunctionNames aware of interpreter (#4973)

commit 13b2647
Author: Rolf Bjarne Kvinge <rolf@xamarin.com>
Date:   Tue Oct 16 16:55:11 2018 +0200

    Fix the llvm32 build by using Xcode 9.4. (#4985)

    Since Xcode 10 doesn't support building 32-bit macOS binaries.

commit b2a596d
Author: Sebastien Pouliot <sebastien.pouliot@gmail.com>
Date:   Mon Oct 15 20:00:03 2018 -0400

    Apply XM audit fixes from `xcode10` (#4986)

    Backport of
    b40230c

commit 1082ce7
Author: Chris Hamons <chris.hamons@xamarin.com>
Date:   Mon Oct 15 10:43:17 2018 -0500

    Add xtro test for [Deprecated] attributes and fix up usages (#4966)

    - #4431

commit 8feb753
Merge: 0249138 e8b87b7
Author: Sebastien Pouliot <sebastien.pouliot@gmail.com>
Date:   Mon Oct 15 11:23:27 2018 -0400

    Merge branch 'master' into mono-2018-08

commit e8b87b7
Author: Sebastien Pouliot <sebastien.pouliot@gmail.com>
Date:   Mon Oct 15 11:15:20 2018 -0400

    [tests][mmp] Convert old mmp calendar regression tests to unit tests (#4983)

commit 250fd97
Merge: 904be25 5fbfacc
Author: Rolf Bjarne Kvinge <rolf@xamarin.com>
Date:   Mon Oct 15 16:55:53 2018 +0200

    Merge pull request #4111 from radical/msbuild-port

    [msbuild] Move from xbuild to msbuild

commit 904be25
Author: Rolf Bjarne Kvinge <rolf@xamarin.com>
Date:   Mon Oct 15 16:51:46 2018 +0200

    [xharness] Generate a system variant of dont link, and run it using the oldest mono version we support in Jenkins. Fixes #4121. (#4968)

    This is an addition to the tests we already run on older macOS bots (and as such will not execute on our PR bots).

    Fixes #4121.

commit 0249138
Merge: 25ae88f d29ede7
Author: Aleksey Kliger <alklig@microsoft.com>
Date:   Mon Oct 15 10:50:38 2018 -0400

    Merge remote-tracking branch 'origin/master' into mono-2018-08

commit d29ede7
Author: Chris Hamons <chris.hamons@xamarin.com>
Date:   Mon Oct 15 09:12:56 2018 -0500

    [mmp] Include libmono-system-native.a when embedding mono if it exists (#4980)

commit 855e682
Author: Sebastien Pouliot <sebastien.pouliot@gmail.com>
Date:   Mon Oct 15 08:26:49 2018 -0400

    [linker] Set flag when processing ParameterInfo.get_Name from XML files. Fixes #4978 (#4981)

    Commit 996d906 fixed the use of XML files. However it did not set the flags so if it's used in both XML and in code then the dictionary is being added twice, which throws an exception like

    ```
    error MT2102: Error processing the method 'System.Boolean SignalGo.Shared.Helpers.ReflectionHelper/d__0::MoveNext()' in the assembly 'SignalGo.Shared.dll': An item with the same key has already been added. Key: System.String System.Reflection.ParameterInfo::get_Name()
    ```

    reference: #4978

commit 5fbfacc
Author: Rolf Bjarne Kvinge <rolf@xamarin.com>
Date:   Mon Oct 15 10:41:33 2018 +0200

    [tests] Only restore packages.config, not the mtouch test project.

    Restoring the mtouch.csproj makes nuget try to restore Mono.Cecil.csproj as
    well, which doesn't work.

    So just restore what's listed in our packages.config instead.

commit d13f66a
Author: Sebastien Pouliot <sebastien.pouliot@gmail.com>
Date:   Fri Oct 12 17:09:20 2018 -0400

    [appkit] Add missing `[NullAllowed]` on `NSView.NextKeyView`. Fixes #4558 (#4979)

    Confirmed with headers.

    reference: #4558

commit f4dbb68
Author: Sebastien Pouliot <sebastien.pouliot@gmail.com>
Date:   Fri Oct 12 11:56:57 2018 -0400

    [foundation] Fix inlined 'NSUserActivity (IntentsAdditions)' to work if nothing else from Intents is used. Fixes #4894 (#4974)

    The selectors `suggestedInvocationPhrase` and `setSuggestedInvocationPhrase`
    needs Intents.framework to be loaded into memory. Otherwise an exception
    occurs:

    ```
    Objective-C exception thrown. Name: NSInvalidArgumentException Reason: -[NSUserActivity setSuggestedInvocationPhrase:]: unrecognized selector sent to instance 0x19cb3f00
    ```

    When the linker is enabled there's no clue (e.g. namespaces from
    preserved types) that `Intents` is required to call the property.

    The fix is to provide an hint that will force the linker to keep a type
    (a small enum available in all platforms in this case) which tells
    `mtouch` (based on the type's namespace) to instruct the native linker
    (Apple's `ld`) to [weak]link the Intents.framework in the application
    executable.

    Note: other selections from the category works fine.

    reference:
    #4894

commit 40288e4
Author: Rolf Bjarne Kvinge <rolf@xamarin.com>
Date:   Thu Oct 11 23:08:59 2018 +0200

    Bump mono. (#4971)

    Commit list for mono/mono:

    * mono/mono@2343f267067 [sdks] Add cmake toolchain file for LLVM MXE builds (#11056)
    * mono/mono@46b723d6b01 [2018-06] [sdks] Create archive targets for pre-building on CI (#10936)
    * mono/mono@ab3c897d685 Merge pull request #10997 from lewurm/2018-06-interp-fixes-for-native-type
    * mono/mono@914a62ab2e7 [interp] introduce float R4 stack type
    * mono/mono@62f23a83652 [interp] support ntype.ToString ()
    * mono/mono@2c48c62e66f [interp] support nfloat.*Infinity
    * mono/mono@5c5a48b1449 [interp] support ntype.Equals ()
    * mono/mono@13e412ee52a [interp] support ntype.CompareTo ()
    * mono/mono@a576a799b16 [interp] fix op_implicit/op_explicit conversions for native types
    * mono/mono@1d9378713e6 [sdks/ios] Build libMonoPosixHelper for device architectures, so that zlib-helper.o is created. (#10921) (#10970)
    * mono/mono@6e48ad4f7b1 Merge pull request #10905 from monojenkins/backport-pr-10899-to-2018-06
    * mono/mono@d050e323ed9 [runtime] Fix undefined pthread_main_np (#10930)
    * mono/mono@b549fa7f32a [Reflection] Fix issue with finding types in module using an asterisk as filter criteria
    * mono/mono@0dffbef2690 Bump corefx to disable more tests
    * mono/mono@6c46acfe697 [runtime] Disable stack guard for main thread on osx
    * mono/mono@46e0249d4cd [sdks] One more update to get XA PR builds working on Linux (#10855)
    * mono/mono@910395a05f6 corefx bump
    * mono/mono@2cdfb380a3e [2018-06] [System]: Make sure `HttpWebRequest` observes exceptions on timeout.  #10488. (#10732)
    * mono/mono@aebef84fa2c [merp] Fix return value handling of posix_spawn (#10828)
    * mono/mono@59f2dbf28b0 [sdks] Debian Linux doesn't need to build MXE (#10819)
    * mono/mono@401bce867d3 Bump msbuild to track mono-2018-06
    * mono/mono@65737564b04 Bump corefx
    * mono/mono@40d991c3257 [SDKS] Build host runtime with correct bitness (#10742)
    * mono/mono@1a71d5101f2 [crash] Fix summarize_frame assertion
    * mono/mono@8f36212ad3a [2018-06] Ignore some xunit tests for XA (non compatible with xunit 2.4) (#10721)
    * mono/mono@410792459a8 [corlib] Makes remoting test more robust (and disable it on mobile)
    * mono/mono@7dd65f79a53 [mono-api-html] Render something for fields with marshalling info. (#10698)
    * mono/mono@7c898271e73 [offset-tool] Error out when parsing fails. (#10696)
    * mono/mono@adbb8f72c8b [2018-06] Implement IEnumerable for ConditionalWeakTable (#10657)

    Diff: mono/mono@1b18f39...2343f26

commit 7c1d23d
Author: Chris Hamons <chris.hamons@xamarin.com>
Date:   Thu Oct 11 09:14:48 2018 -0500

    Bind 2 high visibility PrintCore APIs (#4933)

    - #4713

commit 4362842
Author: Rolf Bjarne Kvinge <rolf@xamarin.com>
Date:   Thu Oct 11 12:25:47 2018 +0200

    [mmptests] Update according to MSBuild changes.

commit ffd85c9
Author: Rolf Bjarne Kvinge <rolf@xamarin.com>
Date:   Thu Oct 11 08:53:44 2018 +0200

    [generator] Throw PlatformNotSupportException in 32-bit mode for 64-bit-only iOS API. Fixes #4689. (#4954)

    Throw PlatformNotSupportedException for iOS API that was introduced in iOS 11+
    in 32-bit mode, since that API is clearly not available in any 32-bit capable
    iOS version.

    This makes the 32-bit version of Xamarin.iOS.dll smaller (from 15.282.176
    bytes to 14.575.616 bytes, ~700kb smaller - small enough that this makes the
    dontlink test work in 32-bit mode again on device).

    Fixes #4689.

commit 745c18c
Merge: 42645d5 f96faaa
Author: Rolf Bjarne Kvinge <rolf@xamarin.com>
Date:   Thu Oct 11 07:30:35 2018 +0200

    Merge remote-tracking branch 'origin/master' into msbuild-port

commit f96faaa
Author: Rolf Bjarne Kvinge <rolf@xamarin.com>
Date:   Thu Oct 11 07:26:55 2018 +0200

    [CoreFoundation] Refactor Dispatch code to take advantage of recent code improvements. (#4939)

    * [CoreFoundation] Make DispatchObject inherit from NativeObject to share more code.

    * [CoreFoundation] Replace calls to Check () with calls to GetCheckedHandle () to reuse more code.

    * [CoreFoundation] Simplify a bit by reusing code in base constructors.

    * [CoreFoundation] Use Handle instead of handle.

    * [CoreFoundation] Use InitializeHandle instead of setting the 'handle' field.

    * [CoreFoundation] Remove temporary 'handle' field.

    * [CoreFoundation] Remove needless 'unsafe' blocks.

    * Reintroduce DispatchObject.Check, since it's public API.

commit 73fbb53
Author: Ankit Jain <radical@gmail.com>
Date:   Wed Oct 10 17:14:31 2018 -0700

    [msbuild] Enable nuget package conflict resolution (#4945)

    Fixes mono/mono#10602 .

    From the issue:
    ```
    We need to enable this to support the system assemblies conflict
    resolution which we now rely on for any new packages to enhance
    developers experience and get us out of dependency on specific package
    versions.
    ```

commit 42645d5
Author: Rolf Bjarne Kvinge <rolf@xamarin.com>
Date:   Tue Jul 31 11:48:15 2018 +0200

    [tests][msbuild] Seems like we need to copy System.Reflection.Metadata.dll locally, since the MSBuild dlls need it.

commit acad87b
Author: Rolf Bjarne Kvinge <rolf@xamarin.com>
Date:   Mon Jul 30 16:03:35 2018 +0200

    Bump system mono to 5.16 to see if that gets an MSBuild with the fixes we need for this PR.

commit 2e75028
Author: Rolf Bjarne Kvinge <rolf@xamarin.com>
Date:   Mon Jul 30 16:00:55 2018 +0200

    [tests] Set XamarinMacFrameworkRoot as an environment variable when running MSBuild tests.

    Set XamarinMacFrameworkRoot as an environment variable when running MSBuild
    tests, because we have command-line tools that needs it (bgen), and only
    passing it as a MSBuild parameter doesn't reach the environment (and any
    subprocesses).

commit 06d7410
Author: Rolf Bjarne Kvinge <rolf@xamarin.com>
Date:   Fri Jul 27 17:40:29 2018 +0200

    Remove debug spew.

commit 50e0554
Author: Rolf Bjarne Kvinge <rolf@xamarin.com>
Date:   Fri Jul 27 17:40:29 2018 +0200

    [xharness] Process Import elements, but don't add LogicalName to them.

commit afcad3b
Author: Rolf Bjarne Kvinge <rolf@xamarin.com>
Date:   Fri Jul 27 11:41:23 2018 +0200

    [xharness] Set the right variable to point msbuild to our locally built xbuild targets.

commit 19d9a64
Author: Rolf Bjarne Kvinge <rolf@xamarin.com>
Date:   Fri Jul 27 11:40:53 2018 +0200

    [xharness] Don't add LogicalName beneath Import elements, it doesn't work with MSBuild.

commit 516aab9
Merge: 16e512a 9e31d07
Author: Rolf Bjarne Kvinge <rolf@xamarin.com>
Date:   Fri Jul 27 09:43:14 2018 +0200

    Merge remote-tracking branch 'origin/master' into msbuild-port

commit 16e512a
Author: Ankit <radical@gmail.com>
Date:   Mon May 21 19:42:30 2018 -0400

    Revert "[msbuild] Add forward compatibility with symlinks support (#648)"

    This can be reverted as we have now moved to msbuild assemblies, and
    they already have this property.

    This reverts commit d45f52f.

commit 526f009
Author: Ankit <radical@gmail.com>
Date:   Mon May 21 16:13:11 2018 -0400

    [tests] Fix Xamarin.iOS.Tasks.TargetTests.GenerateBundleName_ExecutableProject

    msbuild has the path in it's original form (with windows slashes).

    ```
     Test Failure : Xamarin.iOS.Tasks.TargetTests.GenerateBundleName_ExecutableProject
         #3
      String lengths are both 42. Strings differ at index 3.
      Expected: "bin/iPhoneSimulator/Debug/MySingleView.app"
      But was:  "bin\\iPhoneSimulator\\Debug\\MySingleView.app"
      --------------^

    at Xamarin.iOS.Tasks.TargetTests.GenerateBundleName_ExecutableProject () [0x00054] in /Users/ankit/dev/xamarin-macios/msbuild/tests/Xamarin.iOS.Tasks.Tests/TargetTests/TargetTests.cs:394
    ```

commit b578593
Author: Ankit <radical@gmail.com>
Date:   Tue May 22 14:17:31 2018 -0400

    [tests] Remove TI.UnifiedTestConfig.DiagnosticMSBuild

    .. as we always build with diagnostic verbosity now. And remove the
    parameter from `TI.BuildProject(..)`.

commit 6278f10
Author: Ankit <radical@gmail.com>
Date:   Fri May 18 18:29:10 2018 -0400

    [tests] Remove `bool useMSBuild` arg from ProjectTestHelpers

    .. as we always use msbuild now.

commit 8f0df14
Author: Ankit <radical@gmail.com>
Date:   Fri May 18 18:23:29 2018 -0400

    [tests] Remove project path at the end of errors/warnings before comparing

    - msbuild adds project path at the end of errors/warnings, which xbuild didn't
    do. This caused two tests to fail:

    	Xamarin.MMP.Tests.MMPTests.MM0132("inline-runtime-arch")
    	Xamarin.MMP.Tests.MMPTests.MM0132("foo")

commit 26abe1b
Author: Ankit <radical@gmail.com>
Date:   Thu May 17 17:38:11 2018 -0400

    [tests] Fix tests that depend on tool output

    Lot of tests depend on comparing text in tool output. In xbuild, this
    was logged with `MessageImportance.Normal` but in msbuild the default is
    `MessageImportance.Low`. So, now the tool output doesn't show up in the
    normal verbosity log, causing the build to fail.

    Due to the number of tests depending on this, the default is changed to
    `diagnosticMSBuild = true`.

    A better way would probably (future) be to use a custom logger and get the output
    from the logging events.

commit 6fc89ab
Author: Ankit <radical@gmail.com>
Date:   Thu May 17 16:12:38 2018 -0400

    [tests] msbuild-mac Fix tests depending on msbuild specific strings

    	Xamarin.MMP.Tests.MMPTests.BuildingSameBindingProject_TwoTimes_ShallNotInvokeMMPTwoTimes
    	Xamarin.MMP.Tests.MMPTests.BuildingSameProject_TwoTimes_ShallNotInvokeMMPTwoTimes

commit 9e53fd5
Author: Ankit <radical@gmail.com>
Date:   Thu May 17 15:23:39 2018 -0400

    [tests] Xamarin.iOS.Tasks.TargetTests.RebuildExecutable_TouchLibraryDll

    msbuild just copies the output assembly from obj to bin. So, the test
    needs to `touch` the file in `obj` to trigger a rebuild.

commit b883c4f
Author: Ankit <radical@gmail.com>
Date:   Mon May 21 18:54:57 2018 -0400

    [tests] Don't use WriteLine in TestHelpers.Loggers as msbuild adds that

    .. itself.

commit 2805bea
Author: Ankit <radical@gmail.com>
Date:   Mon May 21 18:53:24 2018 -0400

    [tests] Ensure that the correct msbuild.dll.config gets picked up

    .. by setting `MSBUILD_EXE_PATH` to the corresponding `MSBuild.dll`.

commit 18f7168
Author: Ankit <radical@gmail.com>
Date:   Mon May 21 18:42:37 2018 -0400

    [tests] Fix DetectAppManifest_ExecutableProject_NoPList

    `ProjectInstance.GetPropertyValue` returns empty string if the property
    doesn't exist.

    https://docs.microsoft.com/en-us/dotnet/api/microsoft.build.execution.projectinstance.getpropertyvalue?view=netframework-4.7.2#Microsoft_Build_Execution_ProjectInstance_GetPropertyValue_System_String_

commit a5670f2
Author: Ankit <radical@gmail.com>
Date:   Thu May 17 13:43:11 2018 -0400

    [msbuild] Port the tasks and tests to use new msbuild API

    Mono's msbuild does not have implementation assemblies for the older
    APIs (think `Microsoft.Build.Engine`), and so as part of the port to
    msbuild we switch over to using the newer APIs.

    With this commit, we are buildable again (with lots of test failures!).

commit 256035e
Author: Ankit <radical@gmail.com>
Date:   Wed May 9 17:50:22 2018 -0400

    [msbuild] Update xbuild assembly references to msbuild ones

    .. and switch from v4.0 to the new .Core assemblies.

commit c7b0514
Author: Ankit <radical@gmail.com>
Date:   Wed May 9 17:00:38 2018 -0400

    [msbuild] Replace all invocations of xbuild with msbuild

    - And map xbuild properties to msbuild ones for fallback paths

    `XBUILD_FRAMEWORK_FOLDERS_PATH -> TargetFrameworkFallbackSearchPaths`

    `MSBuildExtensionsPath -> MSBuildExtensionsPathFallbackPathsOverride`

    Note:
    Earlier with xbuild, the order of lookup for (example)
    `MSBuildExtensionsPath` was:

    	1. The value of $(MSBuildExtensionsPath), which we were setting to
    	the in-tree path

    	2. /Library/Frameworks/Mono.framework/External/xbuild on osx

    	3. $prefix/lib/mono/xbuild (default location)

    And with the above changes, it will be:

    	1. The value of $(MSBuildExtensionsPath), which we are no longer
    	setting, so the default path : $prefix/lib/mono/xbuild

    	2. The in-tree path, via $(MSBuildExtensionsPathFallbackPathsOverride)

    	3. /Library/Frameworks/Mono.framework/External/xbuild on osx

    Since, XI/XM targets are used via fallback path
    `/Library/Frameworks/Mono.framework/External/xbuild`, the default
    location doesn't matter. And the order of the remaining two remains the
    same.

    The same thing applies to the target frameworks also.
baulig pushed a commit that referenced this issue Oct 31, 2018
commit 600da056f5c054e98ded4e3b35632e567c64baa6
Author: Marek Safar <marek.safar@gmail.com>
Date:   Tue Oct 30 14:26:34 2018 +0100

    Bump system mono dependency

commit 08813eff2d20fbd669c28eab2402ff2f745d73d5
Author: Marek Safar <marek.safar@gmail.com>
Date:   Tue Oct 30 10:12:52 2018 +0100

    Bump mono

commit 7425218c7843bb81bd29c832fcfb8fe43e8a21ee
Merge: 82e0c73e0ba c69c74b3d33
Author: Rolf Bjarne Kvinge <rolf@xamarin.com>
Date:   Tue Oct 30 07:42:02 2018 +0100

    Merge remote-tracking branch 'origin/master' into mono-2018-08

commit c69c74b3d337f6c50f3d5ebd4d136c1cddef0091
Author: Rolf Bjarne Kvinge <rolf@xamarin.com>
Date:   Mon Oct 29 16:09:30 2018 +0100

    Clone files if possible whenever it makes sense. (#5049)

    Cloning is faster when supported, and it also saves disk space.

commit 15849eeff820b4a8a760f9e2b18eeca9754df0f9
Author: Bernhard Urban <bernhard.urban@xamarin.com>
Date:   Mon Oct 29 13:37:13 2018 +0100

    Bump to mono:2018-06 (#5050)

    Commit list for mono/mono:

    * mono/mono@3ae42fc38d5 [2018-06] [aot] add unbox_arbitrary_trampoline for fullaot/interp mixed mode (#11362)
    * mono/mono@c4f7644e976 [tests] lower recursion depth of PerformNoPinAction (#11325)
    * mono/mono@adeaf3e0330 [SDKS, LLVM] Disable detection and use of libxml2 (#11341)
    * mono/mono@32d1539629f [runtime] Don't init classes in ves_icall_RuntimeTypeHandle_is_subclass_of

    Diff: https://github.com/mono/mono/compare/c0fe724379084be07e0e0f66a6340167ebab8bcf...3ae42fc38d5b24c4fa9a58cc84607dedd9c817dc

commit aa668710f753880901ca9b09a91b4bceba691d3e
Author: Rolf Bjarne Kvinge <rolf@xamarin.com>
Date:   Fri Oct 26 23:22:03 2018 +0200

    [iTunesLibrary] Fix typo & confusion. (#5046)

    I'm not sure why we have an entry in our list of frameworks claiming that
    iTunesLibrary was introduced in macOS 10.9, when we didn't have any bindings
    for the library back then.

    In any case we also have an entry for iTunesLibrary in our list of frameworks
    claiming that iTunesLibrary was introduced in macOS 10.14.

    I looked at some of Apple's documentation for the types in iTunesLibrary, and
    they all claim to be introduced in macOS 10.13 [2].

    And to make matters even more interesting, Apple's documentation for the
    framework itself states the library is in
    /Library/Frameworks/iTunesLibrary.framework, and ships with iTunes 11.0+ [1]
    (which is introduced in 2012).

    Then I looked at a macOS 10.14 machine, and the framework is available at
    /System/Library/Frameworks/iTunesLibrary.framework, and
    /Library/Frameworks/iTunesLibrary.framework is just a symlink there
    (/System/Library/Frameworks/iTunesLibrary.framework does not exist on my macOS
    10.13 machines, while /Library/Frameworks/iTunesLibrary.framework does). From
    this I conclude that the framework was converted into a
    system framework in macOS 10.14, and as such our claim that the framework was
    introduced in 10.14 is at least somewhat right.

    So treat iTunesLibrary as any other framework introduced in macOS 10.14, and
    remove our (duplicated) framework entry for 10.9 (for which we didn't have any
    bindings anyway).

    Also fix the path to the framework, I'm wonder how this got past our tests in
    the first place.

    [1] https://developer.apple.com/documentation/ituneslibrary: "... located at /Library/Frameworks/iTunesLibrary.framework ... The iTunes Library framework is available to users running iTunes v11.0 or above."
    [2] https://developer.apple.com/documentation/ituneslibrary/itlibrary?language=objc

commit 917214828d9ca90771bae2be1d4174bf2e0a1561
Author: Sebastien Pouliot <sebastien.pouliot@gmail.com>
Date:   Fri Oct 26 13:34:08 2018 -0400

    [xharness] Log the environment variables in the execution logs (#5045)

    While trying to debug an msbuild unit tests it was not possible to
    successfully copy/paste the command from the execution log and
    run it in a shell.

    It's not that hard to run xharness and figure it out - but the
    same can happen on bots (which could be harder).

    So that little change prints out the host and xharness changes
    to the environment variables to make copy/pasters life even
    lazier :)

commit eaa6435e89ac146febc0ce5eca58b0696ba18338
Author: Sebastien Pouliot <sebastien.pouliot@gmail.com>
Date:   Fri Oct 26 13:18:05 2018 -0400

    [msbuild] Avoid an NRE in BtouchTask when an invalid extra argument is provided (#5041)

    The task itself should not throw. An invalid argument is an error that
    should (and is) reported by `btouch` itself (and the task picks it up).
    This makes the error reporting much more useful and the way an exception
    is reported, from Windows, is also confusing
    ```
    MessagingRemoteException: An error occured on client Build4110732 while executing a reply for topic xvs/Build/4.11.0.732/execute-task/ClassLibrary1/6e85b94002fBTouch ArgumentNullException: Value cannot be null.
    ```

    Unit tests added.

    Fixes https://devdiv.visualstudio.com/DevDiv/_workitems/edit/656983

commit 82e0c73e0ba8567bd89989d0764727a204c18caa
Author: Rolf Bjarne Kvinge <rolf@xamarin.com>
Date:   Fri Oct 26 17:15:00 2018 +0200

    Bump minimum mono one that has 'mono_dangerous_add_raw_internal_call'.

commit 93e72862f7e71efcc637a86ec9afaf6e4bf19318
Author: Rolf Bjarne Kvinge <rolf@xamarin.com>
Date:   Fri Oct 26 15:23:36 2018 +0200

    [mmptest] Less hardcoding.

commit 7449e51bbadf59857242d6ef800a6ec23c37d63b
Author: Aleksey Kliger (λgeek) <akliger@gmail.com>
Date:   Fri Oct 26 00:46:28 2018 -0500

    [2018-08][watchos] Use mono_dangerous_add_raw_internal_call for watchOS icalls (#5030)

    * Add optional mono_dangerous_add_raw_internal_call to exports.t4

    * Use mono_dangerous_add_raw_internal_call on watchOS for icall registration

    Internal calls added with mono_dangerous_add_raw_internal_call run in GC Unsafe
    mode under cooperative and hybrid suspend, whereas internal calls added with
    mono_add_internal_call run in GC Safe mode since
    mono/mono@5756ba4b46f43d4f1c61c0d7dbbcf27a271f24ab in order for hybrid suspend
    to be a transparent replacement for preemptive suspend (the old default).  The
    icalls in GC Unsafe mode have a responsibility not to block indefinitely
    without manually performing a thread state transition to GC Safe mode, and in
    return they avoid a thread state transition when the icall is invoked from a
    managed method.

commit 0b27eef7dcd717e2ffe95fb2a38b8e2b0e61108f
Author: Marek Safar <marek.safar@gmail.com>
Date:   Thu Oct 25 20:14:41 2018 +0200

    Bump mono

commit 12262c4cbafc595d27b8521826be5577dbba26f5
Author: Chris Hamons <chris.hamons@xamarin.com>
Date:   Thu Oct 25 11:56:23 2018 -0500

    [macos] Add NSScrollView.AddFloatingSubview (#5040)

    - https://github.com/xamarin/xamarin-macios/issues/5039

commit 35df3a529452a6a1da13647a29f78ea05d274ddf
Author: Rolf Bjarne Kvinge <rolf@xamarin.com>
Date:   Thu Oct 25 17:47:05 2018 +0200

    [introspection] Fix a few issues found on iPad Air 2 with iOS 12. (#5034)

    * [introspection] MPSCnnBinaryKernel's kernelHeight/kernelWidth are missing on iOS too.

    * [introspection] CoreNFC is not even available on all devices.

commit 2b85aaef56f66c7a2b7732f40ad92f21fd59e279
Author: Rolf Bjarne Kvinge <rolf@xamarin.com>
Date:   Thu Oct 25 17:17:03 2018 +0200

    [tests] Only build exactly what's neded for running XM tests on older bots. (#5038)

    Also build what we can in parallel (and manually building shared dependencies first).

commit 36209e55e9818b91559836726e402b5b5891749a
Author: Rolf Bjarne Kvinge <rolf@xamarin.com>
Date:   Thu Oct 25 12:31:26 2018 +0200

    Remove 10.7 & 10.8 availability attributes, since they're redundant now.

commit 2755245b914e611cc26a29f776b43f3765d4270d
Author: Rolf Bjarne Kvinge <rolf@xamarin.com>
Date:   Thu Oct 25 17:04:56 2018 +0200

    [tests] More min macOS version setting to 10.9.

commit 3f5aceb4f6791c1354c889f7af426443208340db
Author: Rolf Bjarne Kvinge <rolf@xamarin.com>
Date:   Thu Oct 25 09:50:21 2018 +0200

    Bump guiunit to get updated min macOS version.

    Commit list for mono/guiunit:

    * mono/guiunit@9f67042 Bump min macOS version to 10.9.
    * mono/guiunit@0c3159a [Harness] Fix exit code of 0 being reported in case of exceptions in the harness
    * mono/guiunit@9b7497c Merge pull request #15 from mono/fix-more-warnings
    * mono/guiunit@a264470 Fix more warnings
    * mono/guiunit@dd094e7 Merge pull request #14 from mono/fix-warnings
    * mono/guiunit@b3afede Fix build warnings

    Diff: https://github.com/mono/guiunit/compare/1306b0d420bd69efcd8f1951c5c68dc7065ce9eb...9f67042498c8a3bc28888c7765a93af9b3475329

commit 04b7c94b17addb15bfb7b9bdea263521b708e61b
Author: Rolf Bjarne Kvinge <rolf@xamarin.com>
Date:   Thu Oct 25 09:13:56 2018 +0200

    Bump min mono version for XM system apps.

    Using a system mono < 5.18 results in a TypeLoadException:

        Could not resolve type with token 01000032 from typeref (expected class 'Mono.ISystemDependencyProvider' in assembly 'mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089')

commit cca50fe5000f9a094da17c89c9382e4a434a60fb
Author: Rolf Bjarne Kvinge <rolf@xamarin.com>
Date:   Thu Oct 25 00:10:28 2018 +0200

    Mono 2018-08 requires macOS 10.9+, so Xamarin.Mac must as well.

commit 0ebc514467805f7baeb19404c85d43ca62c834ed
Merge: 545c7bf4ba7 d836c8867dc
Author: Rolf Bjarne Kvinge <rolf@xamarin.com>
Date:   Thu Oct 25 09:54:07 2018 +0200

    Merge remote-tracking branch 'origin/master' into mono-2018-08

commit d836c8867dc8282d45a1ce50d177e0a16419a2bd
Author: Jeffrey Stedfast <jestedfa@microsoft.com>
Date:   Wed Oct 24 20:11:17 2018 -0400

    [msbuild] Always set IOSDebugOverWiFi to true for WatchOS apps/extensions (#5035)

    Fixes https://devdiv.visualstudio.com/DevDiv/_workitems/edit/712824

commit 51e7a477000cf73137e09e2bbbed76339747e943
Author: Vincent Dondain <vidondai@microsoft.com>
Date:   Wed Oct 24 20:10:55 2018 -0400

    [coregraphics] Make MatrixOrder a normal enum instead of a nested enum (#5036)

    This enum might prove useful to other APIs in the future so move outside of `CGAffineTransform`.

commit 74576fa5ca2095af44d6ebd2563fac98eb052b8f
Author: Rolf Bjarne Kvinge <rolf@xamarin.com>
Date:   Wed Oct 24 23:58:14 2018 +0200

    [Metal/SpriteKit] Fix availability attributes on a few API. (#5033)

commit 9688c42e2d4d6191fbf0bd687cf46ebca9cc3370
Author: Bernhard Urban <bernhard.urban@xamarin.com>
Date:   Wed Oct 24 21:24:22 2018 +0200

    Bump mono and enable monotouch-test with interpreter (#5023)

    * Bump Mono 2018-06

    Commit list for mono/mono:

    * mono/mono@c0fe7243790 [aot] Reenable recursion checking when initing shared got entries (#11295)
    * mono/mono@f55f7e53e36 [interp] use unsigned conversion for nuint (#11285)
    * mono/mono@5986920bdbc [2018-06] [arm64] Remove the limitation on the number of nullable arguments for dyncalls (#11266)
    * mono/mono@665a308c397 [WinForms] Propagate the flags from DrawTextInternal to MeasureTextInternal (#11251)
    * mono/mono@5ed4143b4f4 [2018-06] Crash Reporter V2 (#11162)
    * mono/mono@f0db92c2b6d [interp] Implement interpreter entry trampolines on amd64 (#10978) (#11165)
    * mono/mono@c1f1a7bfed9 [ci] Move OSX .pkg build to a separate bot pool
    * mono/mono@d80ced607b4 [aot] Ensure shared got entries are initialized before loading methods (#11225)
    * mono/mono@d07c626a748 [pkg] Add preinstall which removes existing Mono of the same version (#11209)
    * mono/mono@cda3acc57cd [sdks] futimens and futimes symbols are missing on anything earlier than 10.13 (#11174)
    * mono/mono@226e91a0644 Bump xunit-binaries

    Diff: https://github.com/mono/mono/compare/2343f2670679edf97b9480e0e08aad2593eab9f6...c0fe724379084be07e0e0f66a6340167ebab8bcf

    * [tests] enable monotouch-test with --interpreter on Jenkins

commit 545c7bf4ba7a0967be3f0423ab2d502adbd79880
Merge: 63025fe8e76 0ddc3553d3e
Author: Rolf Bjarne Kvinge <rolf@xamarin.com>
Date:   Wed Oct 24 13:49:26 2018 +0200

    Merge remote-tracking branch 'origin/master' into mono-2018-08

commit 0ddc3553d3ef56163734c60b0f3e082a702a08c4
Author: Rolf Bjarne Kvinge <rolf@xamarin.com>
Date:   Wed Oct 24 07:54:50 2018 +0200

    [Foundation] Fix compiler warnings in NSUrlSessionHandler. (#5032)

    Fix these warnings:

        src/Foundation/NSUrlSessionHandler.cs(71,57): warning CS3001: Argument type 'NSUrlSessionConfiguration' is not CLS-compliant
        src/Foundation/NSUrlSessionHandler.cs(89,14): warning CS0618: 'NSUrlSession.FromConfiguration(NSUrlSessionConfiguration, NSUrlSessionDelegate, NSOperationQueue)' is obsolete: 'Use the overload with a 'INSUrlSessionDelegate' parameter.'

commit ad67a39104e2f509b2bacdfccf24b6c179baf133
Author: Rolf Bjarne Kvinge <rolf@xamarin.com>
Date:   Wed Oct 24 07:52:58 2018 +0200

    [runtime] Improve diagnostics/behavior in case of failure to contact the IDE when debugging. (#5029)

    When debugging watchOS apps on device, we wait forever [1] for a connection to
    be established to the IDE (iOS apps wait for only 2 seconds, but that's
    because the app will be killed after a while, which we avoid on watchOS by
    attaching the native debugger).

    Unfortunately our error handling was not quite optimal, which meant that if
    the connection to the IDE failed, we'd wait forever instead of launching the
    app without attaching the debugger.

    So improve this, by printing "Waiting for connection to the IDE..." messages
    while trying to connect, and printing detailed log messages if the
    connection attempt fails (as well as terminating the wait and launching the
    watch app).

    [1] In this case forever technically means "1 hour".

commit 63025fe8e76c90e903129d8d74fca33bcf08e4ea
Author: Martin Baulig <martin.baulig@xamarin.com>
Date:   Wed Oct 24 00:10:10 2018 -0400

    [security]: `NATIVE_APPLE_CERTIFICATE` should now be defined on watchOS as well.

commit d2a9a57bb9dfe76a87d160680bc4204a62cc2b1a
Author: Sebastien Pouliot <sebastien.pouliot@gmail.com>
Date:   Tue Oct 23 14:15:58 2018 -0400

    [mtouch] Display a specific error is a .framework binary is invalid. Fixes #5028 (#5031)

    Instead of a generic `MT0000` caused by an exception reading the magic
    numbers of the binary framework file.

    This was caused be uncompressing an archive, with a symlink, into a
    file system that does not support symlinks (on Windows).

    ref: https://github.com/xamarin/xamarin-macios/issues/5028

commit b403da0d85c83558eabb326cef3621190059bf66
Author: Sebastien Pouliot <sebastien.pouliot@gmail.com>
Date:   Mon Oct 22 21:54:54 2018 -0400

    [uikit] Preserve method associated with `updateSearchResultsForSearchController:`. Fixes #5024 (#5027)

    This method is called back from iOS (or tvOS) so there's no managed
    reference pointing to it. However we know that if it's (private inner)
    type is present it's because the callback (from native) is possible so
    we can preserve the method conditionally (to the type presence).

    https://github.com/xamarin/xamarin-macios/issues/5024

commit 74102bce2d67523df65f007d3a82f9a7baa86709
Author: Rolf Bjarne Kvinge <rolf@xamarin.com>
Date:   Tue Oct 23 01:52:45 2018 +0200

    Use the zlib-helper.o library built by mono, instead of building our own. (#5021)

    This also makes it possible to simplify/remove some of our build logic.

commit 0cbf9609a1d93571aa827d4845872ef8a9cdb9ec
Author: Jeffrey Stedfast <jestedfa@microsoft.com>
Date:   Mon Oct 22 10:22:52 2018 -0400

    Update mtouch-errors.md

commit 502d811c438380a0d62805f9bf5bef2dfd227075
Author: Jeffrey Stedfast <jestedfa@microsoft.com>
Date:   Mon Oct 22 10:20:57 2018 -0400

    Update mtouch-errors.md

commit d899d4fb707738fec5706d7e88351713b744c87a
Author: Rolf Bjarne Kvinge <rolf@xamarin.com>
Date:   Mon Oct 22 16:14:26 2018 +0200

    Remove bitrotted support for a separate mono submodule for watchOS support. (#5022)

    Unce upon a time we used a separate mono submodule for watchOS support, to make
    development of watchOS support easier (we referenced mono/master, to avoid
    backporting fixes for watchOS support through various release branches in
    mono).

    This only worked until our watchOS support became stable, since then we had to
    start using a stable version of mono for watchOS support.

    This means that our build support for using a separate mono clone for watchOS
    support is no longer needed; and in any case it's broken because of build
    changes done later.

commit f87f3b88f8d7e26eb71a87340fd9be674a02e2e5
Author: Vincent Dondain <vidondai@microsoft.com>
Date:   Mon Oct 22 08:42:52 2018 -0400

    [coregraphics] Add 'MatrixOrder' overload for Scale, Rotate and Translate (#5011)

    - Fixes #4698: CGAffineTransform.Scale does not work like Swift's .scaledBy(x:y:)
      (https://github.com/xamarin/xamarin-macios/issues/4698)
    - 'Scale' monotouch-test now covers the new overload for the new multiplication order.
    - Changed the Scale test's values so we have different values for 'x0' (it was always 0 before) and so it matches the test case from the bug report.

    * Same fix for Rotate and Translate

commit c378d6baa5a00d26bf18baee3261b277b046fa9c
Author: Rolf Bjarne Kvinge <rolf@xamarin.com>
Date:   Mon Oct 22 07:57:16 2018 +0200

    Add a UserType flag for registered types, and use it to improve the performance for is_user_type. (#5017)

    * Refactor type map to have a separate flag field for each type instead of magic location in the array.

    Refactor the type map to have a separate flag field for each type instead of a
    magic location in the array. This simplifies some code, but also allows us to
    introduce more flags in the future (which becomes increasingly complex if the
    location in the array is to determine yet another value).

    This has neglible performance impacts.

    * Add a UserType flag for registered types, and use it to improve the performance for is_user_type.

    Reflection in the Objective-C runtime is apparently quite slow, so try to
    avoid it by computing the information we need for determining whether a
    particular Objective-C type represents a user type or not in the static
    registrar.

    We store this information in a flag for the type in question in the type map,
    and use a binary search to search the type map when needed.

    This provides a significant improvement, in particular in the dontlink
    scenario (probably because there are many more Objective-C types in the app,
    which made Objective-C reflection slow). In fact, it somehow made the dontlink
    scenario so fast that it's faster than the linkall scenario (which also
    improved, but not nearly as much). While quite inexplicable, it's a consistent
    result I've seen over multiple test runs.

    Numbers
    =======

    Test case: https://github.com/rolfbjarne/TestApp/commit/004283d7b628a29fcf711d98d8842bfd4ef4393b

    Fix 1 refers to PR #5009.
    Fix 2 refers to PR #5013.
    Fix 3 refers to PR #5016.
    Fix 4 is this fix.

    iPad Air 2
    ----------

    | Configuration       | Before | After fix 1 | After fix 2  | After fix 3  | After fix 4  | Improvement from fix 3 to fix 4 | Cumulative improvement |
    | ------------------- | ------ | ----------: | -----------: | -----------: | -----------: | ------------------------------: | ---------------------: |
    | Release (link all)  | 477 ms |      481 ms |       224 ms |       172 ms |       148 ms |                     24 ms (14%) |           329 ms (69%) |
    | Release (dont link) | 738 ms |      656 ms |       377 ms |       201 ms |       146 ms |                     55 ms (27%) |           592 ms (80%) |

    iPhone X
    --------

    | Configuration       | Before | After fix 1 | After fix 2  | After fix 3  | After fix 4  | Improvement from fix 3 to fix 4 | Cumulative improvement |
    | ------------------- | ------ | ----------: | -----------: | -----------: | -----------: | ------------------------------: | ---------------------: |
    | Release (link all)  |  98 ms |       99 ms |        42 ms |        31 ms |        29 ms |                      2 ms ( 6%) |            69 ms (70%) |
    | Release (dont link) | 197 ms |      153 ms |        91 ms |        43 ms |        28 ms |                     15 ms (35%) |           169 ms (86%) |

    When linking all assemblies, the type map has 24 entries, and when not linking
    at all it has 2993 entries.

    This is part 4 (the last) of multiple fixes for #4936.

    The total speed-up is 69-86% (3-7x faster).

commit 097e3fc9ce44840bb21fd580e794791776ff7ec7
Author: Rolf Bjarne Kvinge <rolf@xamarin.com>
Date:   Fri Oct 19 18:33:45 2018 +0200

    [Class] Cache the IntPtr constructors in a dictionary. (#5016)

    Using reflection to find these constructors is computation-intensitive, so
    cache the results.

    Numbers
    =======

    Test case: https://github.com/rolfbjarne/TestApp/commit/004283d7b628a29fcf711d98d8842bfd4ef4393b

    Fix 1 refers to PR #5009.
    Fix 2 refers to PR #5013.
    Fix 3 is this fix.

    iPad Air 2
    ----------

    | Configuration       | Before | After fix 1 | After fix 2  | After fix 3  | Improvement from fix 2 to fix 3 | Cumulative improvement |
    | ------------------- | ------ | ----------: | -----------: | -----------: | ------------------------------: | ---------------------: |
    | Release (link all)  | 477 ms |      481 ms |       224 ms |       172 ms |                     52 ms (23%) |           305 ms (64%) |
    | Release (dont link) | 738 ms |      656 ms |       377 ms |       201 ms |                    176 ms (47%) |           537 ms (73%) |

    iPhone X
    --------

    | Configuration       | Before | After fix 1 | After fix 2  | After fix 3  | Improvement from fix 2 to fix 3 | Cumulative improvement |
    | ------------------- | ------ | ----------: | -----------: | -----------: | ------------------------------: | ---------------------: |
    | Release (link all)  |  98 ms |       99 ms |        42 ms |        31 ms |                     11 ms (26%) |            67 ms (68%) |
    | Release (dont link) | 197 ms |      153 ms |        91 ms |        43 ms |                     48 ms (53%) |           154 ms (78%) |

    When linking all assemblies, the type map has 24 entries, and when not linking
    at all it has 2993 entries.

    This is part 3 of multiple fixes for #4936.

commit 1279dd1eaa8943afe3fb397f0394bd18cb0b2fec
Author: Rolf Bjarne Kvinge <rolf@xamarin.com>
Date:   Fri Oct 19 16:54:44 2018 +0200

    Get the F# binaries from macios-binaries instead of building them every time. (#5015)

    It's still possible to build from source if desired.

    Also remove the fsharp submodule (it will be cloned manually only if building
    from source).

commit ac8710815233bb3f19f86c8468fc891dbc23ee61
Author: Rolf Bjarne Kvinge <rolf@xamarin.com>
Date:   Fri Oct 19 16:04:36 2018 +0200

    [Class] Make looking up a System.Type given a native Class instance faster (#5013)

    Cache the Class -> System.Type lookup in an array.

    I could also have used a dictionary, but there are a couple of disadvantages
    compared to the array approach:

    * A dictionary would require a lock every time it's read/written to. The array
      is created at launch, and after that we don't have to care about thread
      safety because it's safe to do the slow lookup multiple times.
    * Its memory requirements would be higher with more elements (in particular
      since we'd not only need to store the Type instance, but also a boolean
      determining whether it's a user type or not).
    * It's ~1% slower (probably due to the lock).

    Numbers
    =======

    Test case: https://github.com/rolfbjarne/TestApp/commit/004283d7b628a29fcf711d98d8842bfd4ef4393b

    Fix 1 refers to PR #5009.
    Fix 2 is this fix.

    iPad Air 2
    ----------

    | Configuration       | Before | After fix 1 | After fix 2  | Improvement from fix 1 to fix 2 | Cumulative improvement |
    | ------------------- | ------ | ----------: | -----------: | ------------------------------: | ---------------------: |
    | Release (link all)  | 477 ms |      481 ms |       224 ms |                    257 ms (53%) |           253 ms (53%) |
    | Release (dont link) | 738 ms |      656 ms |       377 ms |                    279 ms (43%) |           459 ms (62%) |

    iPhone X
    --------

    | Configuration       | Before | After fix 1 | After fix 2  | Improvement from fix 1 to fix 2 | Cumulative improvement |
    | ------------------- | ------ | ----------: | -----------: | ------------------------------: | ---------------------: |
    | Release (link all)  |  98 ms |       99 ms |        42 ms |                     57 ms (58%) |            56 ms (57%) |
    | Release (dont link) | 197 ms |      153 ms |        91 ms |                     62 ms (41%) |           106 ms (54%) |

    When linking all assemblies, the type map has 24 entries, and when not linking
    at all it has 2993 entries.

    This is part 2 of multiple fixes for #4936.

commit 900356c2e6effbf800de53b88a00f6175d53145a
Author: Rolf Bjarne Kvinge <rolf@xamarin.com>
Date:   Fri Oct 19 07:33:15 2018 +0200

    [Class] Sort our array of Class -> token references so that we can do binary instead of linear searches in it. (#5009)

    Our type map has two sections: first come all the wrapper types, then all the
    custom types. This means we need to sort these two sections separately, since
    code elsewhere depends on this split in order to determine if a type is a
    custom type or not.

    We also need a minor modification in the array of skipped types, since it
    contained indexes into the type map, which won't be valid after is has been
    sorted. Instead store a type reference for the actual type in the array, and
    use that to search the type map for the corresponding Class. This is a little
    bit slower, but the results are cached in a dictionary, so it'll only happen
    once for each type.

    The performance is slightly slower when the type map has very few entries, but
    that is repaid many times over when the number of entries go up.

    Numbers
    =======

    Test case: https://github.com/rolfbjarne/TestApp/commit/004283d7b628a29fcf711d98d8842bfd4ef4393b

    iPad Air 2
    ----------

    | Configuration       | Before | After  | Improvement   |
    | ------------------- | ------ | ------ | ------------: |
    | Release (link all)  | 477 ms | 481 ms | -4 ms (-0,8%) |
    | Release (dont link) | 738 ms | 656 ms |   82 ms (11%) |

    iPhone X
    --------

    | Configuration       | Before | After  | Improvement |
    | ------------------- | ------ | ------ | ----------: |
    | Release (link all)  |  98 ms |  99 ms | -1 ms (-1%) |
    | Release (dont link) | 197 ms | 153 ms | 44 ms (22%) |

    When linking all assemblies, the type map has 24 entries, and when not linking
    at all it has 2993 entries.

    This is part 1 of multiple fixes for #4936.

commit 1ec90f0fe546e0f7700b92c05e1cbfed9c63831d
Author: monojenkins <jo.shields+jenkins@xamarin.com>
Date:   Thu Oct 18 14:37:30 2018 -0400

    [uikit] Duplicate bindings for 'UIScrollView.ContentOffset' to get correct availability information. Fixes #4893 (#5007)

    `ContentOffset` was moved to `UIFocusItemScrollableContainer` in iOS 12.
    Since it's a new protocol it's decorated as introduced in iOS 12 - but
    the API was actually already available for a long time.

    The _trick_ is to keep the original binding inside `UIScrollView`
    so it overrides the protocol and keeps the correct availability info.
    It requires adding `new` to bindings to avoid compiler warnings.

    reference: https://github.com/xamarin/xamarin-macios/issues/4893

    ---

    from @rolfbjarne

    In iOS 12 this property was moved to a protocol, but that protocol's
    availability attributes limits it to iOS 12, not iOS 2 where this property was
    originally introduced.

    This is problematic, because it means we'll throw a
    PlatformNotSupportedException if someone tries to call it on 32-bit iOS.

    So put the property back on UIScrollView, so that the generated code ends up
    with the right availability attributes (and a correct 32-bit implementation).

    https://github.com/xamarin/xamarin-macios/pull/5004

commit 99641c7fcdecc69877ce4b986f26bb33d695d699
Author: Sebastien Pouliot <sebastien.pouliot@gmail.com>
Date:   Thu Oct 18 14:03:17 2018 -0400

    [msbuild] Avoid possible NullReferenceException in ScnToolTaskBase. Fixes #4039 (#5006)

    `EnvironmentVariables` can be null (not empty) and cause the NRE in the
    attached test case.

    It's not clear that the extra logic is needed if we were using `xcrun`.
    There's an enhancement for this https://github.com/xamarin/xamarin-macios/issues/4634

    reference: https://github.com/xamarin/xamarin-macios/issues/4039

commit 5ad55d603e1b5025428865cf1bdc68c01e3d0c58
Author: Sebastien Pouliot <sebastien.pouliot@gmail.com>
Date:   Thu Oct 18 11:16:24 2018 -0400

    [tests][linkall] Add a check that the Makefile produced version number is 'legit'. Fixes #4859 (#5005)

    History: a marge conflict caused a version string to become "12.3." and
    this was found in the API diff much later.

    reference: https://github.com/xamarin/xamarin-macios/issues/4859

commit dca1f4793fbfb31f9142a714b1907053f1a29575
Author: Miguel de Icaza <miguel@gnome.org>
Date:   Thu Oct 18 06:31:39 2018 -0400

    [UIKit] UIGestureRecognizer, support a way of unsubscribing without creating cycles (#4729)

    * [UIKit] UIGestureRecognizer, support a way of unsubscribing without creating cycles

    This now tracks all the uses of AddTarget with delegates by recording
    the Token/Selector pair and making `Dispose()` release all the linkage
    as well as providing an enumerator that can be used to get all the
    registered Action handlers - this can then be used with .First() and
    then passed to `RemoveTarget`.

    This addresses https://github.com/xamarin/xamarin-macios/issues/4190

    This initial patch is here for discussion of the approach, want to
    review and test this before we merge.

    * Simplify code a little bit.

    * Add test.

    * [tests] Add an NSAutoreleasePool to make GestureRecognizerTest.NoStrongCycles happy on 32-bit.

commit d2bcd4b7755734e849791bd2b190b1ab5fa0574b
Author: Martin Baulig <mabaul@microsoft.com>
Date:   Wed Oct 17 15:12:39 2018 -0400

    Bump Mono.

commit ee1f7dc33d3519276758cb0e5c4d38f89f9936e7
Author: Rolf Bjarne Kvinge <rolf@xamarin.com>
Date:   Wed Oct 17 14:42:29 2018 +0200

    [CoreFoundation] Implement missing dispatch API. Fixes #4606. (#4967)

    * [CoreFoundation] Add DispatchQueue.DispatchBarrierSync.

    * [CoreFoundation] Bind dispatch_queue_[set|get]_specific.

    * [CoreFoundation] Bind dispatch_queue_get_qos_class.

    * [CoreFoundation] Bind dispatch_queue_create_with_target.

    * Add tests.

    * Update xtro.

    * Add missing availability attributes.

    * [tests] Do a version check before testing new API.

    * Remove redundant code.

commit 6751f278417ee3a8d9794ffefd2ec4ae4f6ce599
Author: Sebastien Pouliot <sebastien.pouliot@gmail.com>
Date:   Wed Oct 17 08:25:37 2018 -0400

    [tests][mmp] Move TypeDescriptor (regression) tests to unit tests (#4994)

    Also move some tests to share more (now and in future commits)
    with iOS linker-related tests.

    Part of https://github.com/xamarin/xamarin-macios/issues/4975

commit 6044a74ae26e575b3725c67d86c612127c6c7a1d
Author: Rolf Bjarne Kvinge <rolf@xamarin.com>
Date:   Wed Oct 17 07:13:25 2018 +0200

    Bump maccore to get fix for xamarin/maccore#1090. (#4989)

    * Bump maccore to get fix for xamarin/maccore#1090.

    Diff: https://github.com/xamarin/maccore/compare/46a12247947cdf546e0e07f4e7062ef2f5fcf515...b93ee3155d89e4414c4c228cf19bb89489b03bb1

    * Bump maccore again.

    Commit list for xamarin/maccore:

    * xamarin/maccore@b35c3a8d76 Build mlaunch with msbuild instead of xbuild. (#1091)

    Diff: https://github.com/xamarin/maccore/compare/b93ee3155d89e4414c4c228cf19bb89489b03bb1...b35c3a8d7682c8482c7c749d7c1670b3d4bbed5c

commit c30807113ce87ff48b4a271bfca2af16ea056d0b
Author: Martin Baulig <mabaul@microsoft.com>
Date:   Tue Oct 16 15:18:33 2018 -0400

    Revert "[monotouch-test] Disable X509Certificate(byte[]) tests on watchOS (#4942)"

    This reverts commit d003a9b918cdd340ec1b5ad931306e53a0d9a632.

commit 8e72ea8330f4ad59544fb55a31e882d6bf254e1a
Author: Bernhard Urban <bernhard.urban@xamarin.com>
Date:   Tue Oct 16 20:05:19 2018 +0200

    [tests] improve MonoWeakReferenceTest to avoid false pinning (#4961)

    Fixes an issue when executed with interpreter. Now, the test is closer
    to what we do in the runtime test:

    https://github.com/mono/mono/blob/831e73abcd5b9e10b4aaff7872b8d68e8e0f60fd/mono/tests/weak-fields.cs
    https://github.com/mono/mono/blob/831e73abcd5b9e10b4aaff7872b8d68e8e0f60fd/mono/mini/TestHelpers.cs

commit e05d87da2ac1ec9a879602a694b6a89bde9b281c
Author: Sebastien Pouliot <sebastien.pouliot@gmail.com>
Date:   Tue Oct 16 13:58:08 2018 -0400

    [mediaplayer] Fix NRE in MPNowPlayingInfoCenter wrt null dictionary entries. Fixes #4988 (#4992)

    The custom `TryGetValue` could return `true` and an `out null`. That was
    fine for many items, e.g. converting `null` to `NSString` or `NSDate` is
    fine.

    However this cause an `NullReferenceException` when trying to create
    arrays (thru `NSArray`) or converting `NSNumber` into value types.

    The _normal_ `TryGetValue` behavior fixes this - and avoid extraneous
    (and non-required) conversions of `null` items.

    ref: https://github.com/xamarin/xamarin-macios/issues/4988

commit e73b1a981e6797eda85d082a4a4a962dbcc4dd77
Author: Sebastien Pouliot <sebastien.pouliot@gmail.com>
Date:   Tue Oct 16 13:57:25 2018 -0400

    [mac] Fix logic to include branch name in packages. Fixes #4990 (#4991)

    so it can be reported inside VSM.

    The logic was not updated (for XM) with the simpler one we can use
    on the internal Jenkins bots.

    ref: https://github.com/xamarin/xamarin-macios/issues/4990

commit 60b06b9c982c5c8e9c13f44d43a5d5f21d5b2464
Author: Bernhard Urban <bernhard.urban@xamarin.com>
Date:   Tue Oct 16 17:25:35 2018 +0200

    [tests] make Symbols.FunctionNames aware of interpreter (#4973)

commit 13b264795580085fbeebc65e0cc5362f7891655b
Author: Rolf Bjarne Kvinge <rolf@xamarin.com>
Date:   Tue Oct 16 16:55:11 2018 +0200

    Fix the llvm32 build by using Xcode 9.4. (#4985)

    Since Xcode 10 doesn't support building 32-bit macOS binaries.

commit b2a596d680415bf3bbcff7b10a9624f1045ad841
Author: Sebastien Pouliot <sebastien.pouliot@gmail.com>
Date:   Mon Oct 15 20:00:03 2018 -0400

    Apply XM audit fixes from `xcode10` (#4986)

    Backport of
    https://github.com/xamarin/xamarin-macios/commit/b40230c09d557991b776de918b047442cd41533f

commit 1082ce7a0964719466cbf218a7e8aa4d59c922f2
Author: Chris Hamons <chris.hamons@xamarin.com>
Date:   Mon Oct 15 10:43:17 2018 -0500

    Add xtro test for [Deprecated] attributes and fix up usages (#4966)

    - https://github.com/xamarin/xamarin-macios/issues/4431

commit 8feb75335e112e37060fc1a6675f1c7a9f713a85
Merge: 0249138c449 e8b87b77d76
Author: Sebastien Pouliot <sebastien.pouliot@gmail.com>
Date:   Mon Oct 15 11:23:27 2018 -0400

    Merge branch 'master' into mono-2018-08

commit e8b87b77d762088ec2e79e9c6c6ecfe5c850628e
Author: Sebastien Pouliot <sebastien.pouliot@gmail.com>
Date:   Mon Oct 15 11:15:20 2018 -0400

    [tests][mmp] Convert old mmp calendar regression tests to unit tests (#4983)

commit 250fd976a40af3eba0459c574217eb44093bcdb1
Merge: 904be25c258 5fbfacc2a8b
Author: Rolf Bjarne Kvinge <rolf@xamarin.com>
Date:   Mon Oct 15 16:55:53 2018 +0200

    Merge pull request #4111 from radical/msbuild-port

    [msbuild] Move from xbuild to msbuild

commit 904be25c2580db03d40cb59e50e1563a1228f7e4
Author: Rolf Bjarne Kvinge <rolf@xamarin.com>
Date:   Mon Oct 15 16:51:46 2018 +0200

    [xharness] Generate a system variant of dont link, and run it using the oldest mono version we support in Jenkins. Fixes #4121. (#4968)

    This is an addition to the tests we already run on older macOS bots (and as such will not execute on our PR bots).

    Fixes https://github.com/xamarin/xamarin-macios/issues/4121.

commit 0249138c4492e95615b8bc57d7330d6de152b645
Merge: 25ae88f1482 d29ede71445
Author: Aleksey Kliger <alklig@microsoft.com>
Date:   Mon Oct 15 10:50:38 2018 -0400

    Merge remote-tracking branch 'origin/master' into mono-2018-08

commit d29ede71445e75a5f4599e574250353434699d8c
Author: Chris Hamons <chris.hamons@xamarin.com>
Date:   Mon Oct 15 09:12:56 2018 -0500

    [mmp] Include libmono-system-native.a when embedding mono if it exists (#4980)

commit 855e6827194e365faa47c3b37dc09427344a77e2
Author: Sebastien Pouliot <sebastien.pouliot@gmail.com>
Date:   Mon Oct 15 08:26:49 2018 -0400

    [linker] Set flag when processing ParameterInfo.get_Name from XML files. Fixes #4978 (#4981)

    Commit https://github.com/xamarin/xamarin-macios/commit/996d90614b0a16fc01a943985885bde626ff7b1a fixed the use of XML files. However it did not set the flags so if it's used in both XML and in code then the dictionary is being added twice, which throws an exception like

    ```
    error MT2102: Error processing the method 'System.Boolean SignalGo.Shared.Helpers.ReflectionHelper/d__0::MoveNext()' in the assembly 'SignalGo.Shared.dll': An item with the same key has already been added. Key: System.String System.Reflection.ParameterInfo::get_Name()
    ```

    reference: https://github.com/xamarin/xamarin-macios/issues/4978

commit 5fbfacc2a8b92b30ba69b1af3bb0ce05ff90955d
Author: Rolf Bjarne Kvinge <rolf@xamarin.com>
Date:   Mon Oct 15 10:41:33 2018 +0200

    [tests] Only restore packages.config, not the mtouch test project.

    Restoring the mtouch.csproj makes nuget try to restore Mono.Cecil.csproj as
    well, which doesn't work.

    So just restore what's listed in our packages.config instead.

commit d13f66a497e146d133fa9b7e32439eee67f4b7ea
Author: Sebastien Pouliot <sebastien.pouliot@gmail.com>
Date:   Fri Oct 12 17:09:20 2018 -0400

    [appkit] Add missing `[NullAllowed]` on `NSView.NextKeyView`. Fixes #4558 (#4979)

    Confirmed with headers.

    reference: https://github.com/xamarin/xamarin-macios/issues/4558

commit f4dbb6840ae6d908523ae69f5b5a01c75228fc88
Author: Sebastien Pouliot <sebastien.pouliot@gmail.com>
Date:   Fri Oct 12 11:56:57 2018 -0400

    [foundation] Fix inlined 'NSUserActivity (IntentsAdditions)' to work if nothing else from Intents is used. Fixes #4894 (#4974)

    The selectors `suggestedInvocationPhrase` and `setSuggestedInvocationPhrase`
    needs Intents.framework to be loaded into memory. Otherwise an exception
    occurs:

    ```
    Objective-C exception thrown. Name: NSInvalidArgumentException Reason: -[NSUserActivity setSuggestedInvocationPhrase:]: unrecognized selector sent to instance 0x19cb3f00
    ```

    When the linker is enabled there's no clue (e.g. namespaces from
    preserved types) that `Intents` is required to call the property.

    The fix is to provide an hint that will force the linker to keep a type
    (a small enum available in all platforms in this case) which tells
    `mtouch` (based on the type's namespace) to instruct the native linker
    (Apple's `ld`) to [weak]link the Intents.framework in the application
    executable.

    Note: other selections from the category works fine.

    reference:
    https://github.com/xamarin/xamarin-macios/issues/4894

commit 40288e42702d70c4e839793b035f79a4e0f3d539
Author: Rolf Bjarne Kvinge <rolf@xamarin.com>
Date:   Thu Oct 11 23:08:59 2018 +0200

    Bump mono. (#4971)

    Commit list for mono/mono:

    * mono/mono@2343f267067 [sdks] Add cmake toolchain file for LLVM MXE builds (#11056)
    * mono/mono@46b723d6b01 [2018-06] [sdks] Create archive targets for pre-building on CI (#10936)
    * mono/mono@ab3c897d685 Merge pull request #10997 from lewurm/2018-06-interp-fixes-for-native-type
    * mono/mono@914a62ab2e7 [interp] introduce float R4 stack type
    * mono/mono@62f23a83652 [interp] support ntype.ToString ()
    * mono/mono@2c48c62e66f [interp] support nfloat.*Infinity
    * mono/mono@5c5a48b1449 [interp] support ntype.Equals ()
    * mono/mono@13e412ee52a [interp] support ntype.CompareTo ()
    * mono/mono@a576a799b16 [interp] fix op_implicit/op_explicit conversions for native types
    * mono/mono@1d9378713e6 [sdks/ios] Build libMonoPosixHelper for device architectures, so that zlib-helper.o is created. (#10921) (#10970)
    * mono/mono@6e48ad4f7b1 Merge pull request #10905 from monojenkins/backport-pr-10899-to-2018-06
    * mono/mono@d050e323ed9 [runtime] Fix undefined pthread_main_np (#10930)
    * mono/mono@b549fa7f32a [Reflection] Fix issue with finding types in module using an asterisk as filter criteria
    * mono/mono@0dffbef2690 Bump corefx to disable more tests
    * mono/mono@6c46acfe697 [runtime] Disable stack guard for main thread on osx
    * mono/mono@46e0249d4cd [sdks] One more update to get XA PR builds working on Linux (#10855)
    * mono/mono@910395a05f6 corefx bump
    * mono/mono@2cdfb380a3e [2018-06] [System]: Make sure `HttpWebRequest` observes exceptions on timeout.  #10488. (#10732)
    * mono/mono@aebef84fa2c [merp] Fix return value handling of posix_spawn (#10828)
    * mono/mono@59f2dbf28b0 [sdks] Debian Linux doesn't need to build MXE (#10819)
    * mono/mono@401bce867d3 Bump msbuild to track mono-2018-06
    * mono/mono@65737564b04 Bump corefx
    * mono/mono@40d991c3257 [SDKS] Build host runtime with correct bitness (#10742)
    * mono/mono@1a71d5101f2 [crash] Fix summarize_frame assertion
    * mono/mono@8f36212ad3a [2018-06] Ignore some xunit tests for XA (non compatible with xunit 2.4) (#10721)
    * mono/mono@410792459a8 [corlib] Makes remoting test more robust (and disable it on mobile)
    * mono/mono@7dd65f79a53 [mono-api-html] Render something for fields with marshalling info. (#10698)
    * mono/mono@7c898271e73 [offset-tool] Error out when parsing fails. (#10696)
    * mono/mono@adbb8f72c8b [2018-06] Implement IEnumerable for ConditionalWeakTable (#10657)

    Diff: https://github.com/mono/mono/compare/1b18f39e46eac0c38438bc8cfdaef8a4bc8afc18...2343f2670679edf97b9480e0e08aad2593eab9f6

commit 7c1d23d41173fdaae8802f17087b58e2c389e841
Author: Chris Hamons <chris.hamons@xamarin.com>
Date:   Thu Oct 11 09:14:48 2018 -0500

    Bind 2 high visibility PrintCore APIs (#4933)

    - https://github.com/xamarin/xamarin-macios/issues/4713

commit 4362842b68faa39062246898cf6d9e32dfe8e84a
Author: Rolf Bjarne Kvinge <rolf@xamarin.com>
Date:   Thu Oct 11 12:25:47 2018 +0200

    [mmptests] Update according to MSBuild changes.

commit ffd85c94d0fe864fab76568acef5fc0502aa3088
Author: Rolf Bjarne Kvinge <rolf@xamarin.com>
Date:   Thu Oct 11 08:53:44 2018 +0200

    [generator] Throw PlatformNotSupportException in 32-bit mode for 64-bit-only iOS API. Fixes #4689. (#4954)

    Throw PlatformNotSupportedException for iOS API that was introduced in iOS 11+
    in 32-bit mode, since that API is clearly not available in any 32-bit capable
    iOS version.

    This makes the 32-bit version of Xamarin.iOS.dll smaller (from 15.282.176
    bytes to 14.575.616 bytes, ~700kb smaller - small enough that this makes the
    dontlink test work in 32-bit mode again on device).

    Fixes https://github.com/xamarin/xamarin-macios/issues/4689.

commit 745c18cc7350233c282d3886ad4aa756c4f40094
Merge: 42645d52b0e f96faaa8142
Author: Rolf Bjarne Kvinge <rolf@xamarin.com>
Date:   Thu Oct 11 07:30:35 2018 +0200

    Merge remote-tracking branch 'origin/master' into msbuild-port

commit f96faaa8142a36cfe32a23753c1de55b0f38368e
Author: Rolf Bjarne Kvinge <rolf@xamarin.com>
Date:   Thu Oct 11 07:26:55 2018 +0200

    [CoreFoundation] Refactor Dispatch code to take advantage of recent code improvements. (#4939)

    * [CoreFoundation] Make DispatchObject inherit from NativeObject to share more code.

    * [CoreFoundation] Replace calls to Check () with calls to GetCheckedHandle () to reuse more code.

    * [CoreFoundation] Simplify a bit by reusing code in base constructors.

    * [CoreFoundation] Use Handle instead of handle.

    * [CoreFoundation] Use InitializeHandle instead of setting the 'handle' field.

    * [CoreFoundation] Remove temporary 'handle' field.

    * [CoreFoundation] Remove needless 'unsafe' blocks.

    * Reintroduce DispatchObject.Check, since it's public API.

commit 73fbb5385654fce6ff682fcb1c36e2936b50b786
Author: Ankit Jain <radical@gmail.com>
Date:   Wed Oct 10 17:14:31 2018 -0700

    [msbuild] Enable nuget package conflict resolution (#4945)

    Fixes https://github.com/mono/mono/issues/10602 .

    From the issue:
    ```
    We need to enable this to support the system assemblies conflict
    resolution which we now rely on for any new packages to enhance
    developers experience and get us out of dependency on specific package
    versions.
    ```

commit 42645d52b0ef8c174d9caae6a2fcebf85e0ab214
Author: Rolf Bjarne Kvinge <rolf@xamarin.com>
Date:   Tue Jul 31 11:48:15 2018 +0200

    [tests][msbuild] Seems like we need to copy System.Reflection.Metadata.dll locally, since the MSBuild dlls need it.

commit acad87b7f663615eb7cf2cb34c7ab866d7f0b90e
Author: Rolf Bjarne Kvinge <rolf@xamarin.com>
Date:   Mon Jul 30 16:03:35 2018 +0200

    Bump system mono to 5.16 to see if that gets an MSBuild with the fixes we need for this PR.

commit 2e75028fc00367260b45e545b56b06f5d635a6b8
Author: Rolf Bjarne Kvinge <rolf@xamarin.com>
Date:   Mon Jul 30 16:00:55 2018 +0200

    [tests] Set XamarinMacFrameworkRoot as an environment variable when running MSBuild tests.

    Set XamarinMacFrameworkRoot as an environment variable when running MSBuild
    tests, because we have command-line tools that needs it (bgen), and only
    passing it as a MSBuild parameter doesn't reach the environment (and any
    subprocesses).

commit 06d74108af2529f878bcb036d3aa006d481a4643
Author: Rolf Bjarne Kvinge <rolf@xamarin.com>
Date:   Fri Jul 27 17:40:29 2018 +0200

    Remove debug spew.

commit 50e05547aace7348dcd3c10bfbb379936f026506
Author: Rolf Bjarne Kvinge <rolf@xamarin.com>
Date:   Fri Jul 27 17:40:29 2018 +0200

    [xharness] Process Import elements, but don't add LogicalName to them.

commit afcad3b4baa27df3dc5fba67bca1576ee8285e2f
Author: Rolf Bjarne Kvinge <rolf@xamarin.com>
Date:   Fri Jul 27 11:41:23 2018 +0200

    [xharness] Set the right variable to point msbuild to our locally built xbuild targets.

commit 19d9a64d02c35ab84792b52ef81893f37e4abea4
Author: Rolf Bjarne Kvinge <rolf@xamarin.com>
Date:   Fri Jul 27 11:40:53 2018 +0200

    [xharness] Don't add LogicalName beneath Import elements, it doesn't work with MSBuild.

commit 516aab9143ce63c860bda0db772ca1179858827d
Merge: 16e512af5db 9e31d07ecc0
Author: Rolf Bjarne Kvinge <rolf@xamarin.com>
Date:   Fri Jul 27 09:43:14 2018 +0200

    Merge remote-tracking branch 'origin/master' into msbuild-port

commit 16e512af5dbe4465f4d93cb5bea7d5e22f7a19c1
Author: Ankit <radical@gmail.com>
Date:   Mon May 21 19:42:30 2018 -0400

    Revert "[msbuild] Add forward compatibility with symlinks support (#648)"

    This can be reverted as we have now moved to msbuild assemblies, and
    they already have this property.

    This reverts commit d45f52f1c1101d5821e00797ba30d21bcef8bc32.

commit 526f009e6413f9e3146a8b87941864fc481d0e21
Author: Ankit <radical@gmail.com>
Date:   Mon May 21 16:13:11 2018 -0400

    [tests] Fix Xamarin.iOS.Tasks.TargetTests.GenerateBundleName_ExecutableProject

    msbuild has the path in it's original form (with windows slashes).

    ```
     Test Failure : Xamarin.iOS.Tasks.TargetTests.GenerateBundleName_ExecutableProject
         #3
      String lengths are both 42. Strings differ at index 3.
      Expected: "bin/iPhoneSimulator/Debug/MySingleView.app"
      But was:  "bin\\iPhoneSimulator\\Debug\\MySingleView.app"
      --------------^

    at Xamarin.iOS.Tasks.TargetTests.GenerateBundleName_ExecutableProject () [0x00054] in /Users/ankit/dev/xamarin-macios/msbuild/tests/Xamarin.iOS.Tasks.Tests/TargetTests/TargetTests.cs:394
    ```

commit b578593a15a9e49fe79f6b37d91b68ef5b57e8cf
Author: Ankit <radical@gmail.com>
Date:   Tue May 22 14:17:31 2018 -0400

    [tests] Remove TI.UnifiedTestConfig.DiagnosticMSBuild

    .. as we always build with diagnostic verbosity now. And remove the
    parameter from `TI.BuildProject(..)`.

commit 6278f108cfd1c1cd7b1d74319b55cfdf56801960
Author: Ankit <radical@gmail.com>
Date:   Fri May 18 18:29:10 2018 -0400

    [tests] Remove `bool useMSBuild` arg from ProjectTestHelpers

    .. as we always use msbuild now.

commit 8f0df143a12b84d04a9326e6c8e5770c7de4498d
Author: Ankit <radical@gmail.com>
Date:   Fri May 18 18:23:29 2018 -0400

    [tests] Remove project path at the end of errors/warnings before comparing

    - msbuild adds project path at the end of errors/warnings, which xbuild didn't
    do. This caused two tests to fail:

    	Xamarin.MMP.Tests.MMPTests.MM0132("inline-runtime-arch")
    	Xamarin.MMP.Tests.MMPTests.MM0132("foo")

commit 26abe1badc06a58794c47a83aca2be996940719a
Author: Ankit <radical@gmail.com>
Date:   Thu May 17 17:38:11 2018 -0400

    [tests] Fix tests that depend on tool output

    Lot of tests depend on comparing text in tool output. In xbuild, this
    was logged with `MessageImportance.Normal` but in msbuild the default is
    `MessageImportance.Low`. So, now the tool output doesn't show up in the
    normal verbosity log, causing the build to fail.

    Due to the number of tests depending on this, the default is changed to
    `diagnosticMSBuild = true`.

    A better way would probably (future) be to use a custom logger and get the output
    from the logging events.

commit 6fc89ab660750261bb785185557c3a45e6ee4a76
Author: Ankit <radical@gmail.com>
Date:   Thu May 17 16:12:38 2018 -0400

    [tests] msbuild-mac Fix tests depending on msbuild specific strings

    	Xamarin.MMP.Tests.MMPTests.BuildingSameBindingProject_TwoTimes_ShallNotInvokeMMPTwoTimes
    	Xamarin.MMP.Tests.MMPTests.BuildingSameProject_TwoTimes_ShallNotInvokeMMPTwoTimes

commit 9e53fd5345037c2f25eeb244b603d3a2f1844b49
Author: Ankit <radical@gmail.com>
Date:   Thu May 17 15:23:39 2018 -0400

    [tests] Xamarin.iOS.Tasks.TargetTests.RebuildExecutable_TouchLibraryDll

    msbuild just copies the output assembly from obj to bin. So, the test
    needs to `touch` the file in `obj` to trigger a rebuild.

commit b883c4fe42bb5820b6496f7078a54ef46c416630
Author: Ankit <radical@gmail.com>
Date:   Mon May 21 18:54:57 2018 -0400

    [tests] Don't use WriteLine in TestHelpers.Loggers as msbuild adds that

    .. itself.

commit 2805beaf63ef445d5657ffd50f8342a397b1cf5f
Author: Ankit <radical@gmail.com>
Date:   Mon May 21 18:53:24 2018 -0400

    [tests] Ensure that the correct msbuild.dll.config gets picked up

    .. by setting `MSBUILD_EXE_PATH` to the corresponding `MSBuild.dll`.

commit 18f71688456f7ff9d2d9b2f88d55575e8f385550
Author: Ankit <radical@gmail.com>
Date:   Mon May 21 18:42:37 2018 -0400

    [tests] Fix DetectAppManifest_ExecutableProject_NoPList

    `ProjectInstance.GetPropertyValue` returns empty string if the property
    doesn't exist.

    https://docs.microsoft.com/en-us/dotnet/api/microsoft.build.execution.projectinstance.getpropertyvalue?view=netframework-4.7.2#Microsoft_Build_Execution_ProjectInstance_GetPropertyValue_System_String_

commit a5670f270775459131a9a7099bd921d3457dcf84
Author: Ankit <radical@gmail.com>
Date:   Thu May 17 13:43:11 2018 -0400

    [msbuild] Port the tasks and tests to use new msbuild API

    Mono's msbuild does not have implementation assemblies for the older
    APIs (think `Microsoft.Build.Engine`), and so as part of the port to
    msbuild we switch over to using the newer APIs.

    With this commit, we are buildable again (with lots of test failures!).

commit 256035e11dbb02cd8d149fb142c06db22fd5158b
Author: Ankit <radical@gmail.com>
Date:   Wed May 9 17:50:22 2018 -0400

    [msbuild] Update xbuild assembly references to msbuild ones

    .. and switch from v4.0 to the new .Core assemblies.

commit c7b051436fac0e1df362140ae14d29ca54e3f934
Author: Ankit <radical@gmail.com>
Date:   Wed May 9 17:00:38 2018 -0400

    [msbuild] Replace all invocations of xbuild with msbuild

    - And map xbuild properties to msbuild ones for fallback paths

    `XBUILD_FRAMEWORK_FOLDERS_PATH -> TargetFrameworkFallbackSearchPaths`

    `MSBuildExtensionsPath -> MSBuildExtensionsPathFallbackPathsOverride`

    Note:
    Earlier with xbuild, the order of lookup for (example)
    `MSBuildExtensionsPath` was:

    	1. The value of $(MSBuildExtensionsPath), which we were setting to
    	the in-tree path

    	2. /Library/Frameworks/Mono.framework/External/xbuild on osx

    	3. $prefix/lib/mono/xbuild (default location)

    And with the above changes, it will be:

    	1. The value of $(MSBuildExtensionsPath), which we are no longer
    	setting, so the default path : $prefix/lib/mono/xbuild

    	2. The in-tree path, via $(MSBuildExtensionsPathFallbackPathsOverride)

    	3. /Library/Frameworks/Mono.framework/External/xbuild on osx

    Since, XI/XM targets are used via fallback path
    `/Library/Frameworks/Mono.framework/External/xbuild`, the default
    location doesn't matter. And the order of the remaining two remains the
    same.

    The same thing applies to the target frameworks also.
baulig pushed a commit that referenced this issue Oct 31, 2018
commit 74f9bc241920f490e592db8fadf2e73c5c7f480c
Author: Martin Baulig <martin.baulig@xamarin.com>
Date:   Tue Oct 30 21:20:17 2018 -0400

    X

commit a12313d252c0f7bb4e34f6c4948407b7b7f16fda
Author: Martin Baulig <martin.baulig@xamarin.com>
Date:   Tue Oct 30 04:36:37 2018 -0400

    X

commit 87457eb75869e512b56f9aa9720742311eba1ae5
Author: Martin Baulig <martin.baulig@xamarin.com>
Date:   Tue Oct 30 03:57:20 2018 -0400

    Revert "Y"

    This reverts commit db9d9c21b0e95dbc45734307b3f47f29ffcac87e.

commit 3ef29495e367f1368b9aa454ff56d28f49b1c713
Merge: 09e27e0b 7425218c
Author: Martin Baulig <martin.baulig@xamarin.com>
Date:   Tue Oct 30 02:56:33 2018 -0400

    Merge remote-tracking branch 'origin/mono-2018-08' into work-tests

commit 09e27e0be6abfc78314e4b1caf4699a9c8e83adf
Author: Martin Baulig <martin.baulig@xamarin.com>
Date:   Tue Oct 30 02:51:56 2018 -0400

    X

commit b16c41a683d4127785ae8eaab96df661014907ea
Author: Martin Baulig <martin.baulig@xamarin.com>
Date:   Tue Oct 30 02:48:32 2018 -0400

    X

commit 7425218c7843bb81bd29c832fcfb8fe43e8a21ee
Merge: 82e0c73e c69c74b3
Author: Rolf Bjarne Kvinge <rolf@xamarin.com>
Date:   Tue Oct 30 07:42:02 2018 +0100

    Merge remote-tracking branch 'origin/master' into mono-2018-08

commit aff13c113710fce1dadd6b6be1ace2d454e074f4
Author: Martin Baulig <martin.baulig@xamarin.com>
Date:   Tue Oct 30 02:39:23 2018 -0400

    X

commit bbe4bd250b50723c83e7a76e9319c71efeb731e5
Author: Martin Baulig <martin.baulig@xamarin.com>
Date:   Mon Oct 29 23:20:41 2018 -0400

    X

commit f997e3834e1f376a1bf9164335cda9761b81a5f9
Author: Martin Baulig <martin.baulig@xamarin.com>
Date:   Mon Oct 29 23:14:51 2018 -0400

    X

commit 899986095bd487b04020b022b61494ccf65388c9
Author: Martin Baulig <martin.baulig@xamarin.com>
Date:   Mon Oct 29 23:10:35 2018 -0400

    X

commit fc03b562c37343f71d1b6e98fcd3a7ed3961d40b
Author: Martin Baulig <martin.baulig@xamarin.com>
Date:   Mon Oct 29 23:07:42 2018 -0400

    Y

commit 46e10b36b40493e87dcaa1e30f887b6bda4eb786
Author: Martin Baulig <martin.baulig@xamarin.com>
Date:   Mon Oct 29 14:17:05 2018 -0400

    X

commit aa4c058b0444f30fe71578421cd5369f48477b3e
Author: Martin Baulig <martin.baulig@xamarin.com>
Date:   Mon Oct 29 12:24:01 2018 -0400

    X

commit db9d9c21b0e95dbc45734307b3f47f29ffcac87e
Author: Martin Baulig <martin.baulig@xamarin.com>
Date:   Mon Oct 29 11:13:56 2018 -0400

    Y

commit c69c74b3d337f6c50f3d5ebd4d136c1cddef0091
Author: Rolf Bjarne Kvinge <rolf@xamarin.com>
Date:   Mon Oct 29 16:09:30 2018 +0100

    Clone files if possible whenever it makes sense. (#5049)

    Cloning is faster when supported, and it also saves disk space.

commit 3c8421e3474288ed61bab126695afc07d7815e0d
Author: Martin Baulig <martin.baulig@xamarin.com>
Date:   Mon Oct 29 10:24:31 2018 -0400

    X

commit 922781ac14fd037383aa25cfcedfcd6fd261f048
Author: Martin Baulig <martin.baulig@xamarin.com>
Date:   Mon Oct 29 09:42:46 2018 -0400

    X

commit d8df5f2d4edb7ad9ce2684228a0811eec59423ea
Author: Martin Baulig <martin.baulig@xamarin.com>
Date:   Mon Oct 29 09:24:12 2018 -0400

    X

commit 15849eeff820b4a8a760f9e2b18eeca9754df0f9
Author: Bernhard Urban <bernhard.urban@xamarin.com>
Date:   Mon Oct 29 13:37:13 2018 +0100

    Bump to mono:2018-06 (#5050)

    Commit list for mono/mono:

    * mono/mono@3ae42fc38d5 [2018-06] [aot] add unbox_arbitrary_trampoline for fullaot/interp mixed mode (#11362)
    * mono/mono@c4f7644e976 [tests] lower recursion depth of PerformNoPinAction (#11325)
    * mono/mono@adeaf3e0330 [SDKS, LLVM] Disable detection and use of libxml2 (#11341)
    * mono/mono@32d1539629f [runtime] Don't init classes in ves_icall_RuntimeTypeHandle_is_subclass_of

    Diff: https://github.com/mono/mono/compare/c0fe724379084be07e0e0f66a6340167ebab8bcf...3ae42fc38d5b24c4fa9a58cc84607dedd9c817dc

commit 0e9b55baf5e3821dda544caa11eaeb36a0d5fc58
Author: Martin Baulig <martin.baulig@xamarin.com>
Date:   Mon Oct 29 08:26:08 2018 -0400

    X

commit 5bfa22abab3e5161cbde84ca7c2ddb62fe60ca4a
Author: Martin Baulig <martin.baulig@xamarin.com>
Date:   Mon Oct 29 07:49:25 2018 -0400

    X

commit abc8e1a044965eff894ed9757c913c6fd76172b4
Author: Martin Baulig <martin.baulig@xamarin.com>
Date:   Mon Oct 29 07:44:47 2018 -0400

    X

commit 612c01c9efcdad43e4fa8d233c01f50011d459c5
Author: Martin Baulig <martin.baulig@xamarin.com>
Date:   Sun Oct 28 21:05:49 2018 -0400

    X

commit 4203e9d619cf9910df2dd8ca66322edfa09e40e7
Author: Martin Baulig <martin.baulig@xamarin.com>
Date:   Sun Oct 28 17:57:20 2018 -0400

    X

commit ac927337c73a1702af822bbf261c1cdb83970c73
Author: Martin Baulig <martin.baulig@xamarin.com>
Date:   Sun Oct 28 17:56:01 2018 -0400

    X

commit 2a87084c585a198e6efa70befd71df8b9064d2ff
Author: Martin Baulig <martin.baulig@xamarin.com>
Date:   Sun Oct 28 17:45:13 2018 -0400

    X

commit 28e2110840926a930045da602bb0bb4219a9efab
Author: Martin Baulig <martin.baulig@xamarin.com>
Date:   Sun Oct 28 06:09:44 2018 -0400

    X

commit e594bdca97aafdc342acc55b9a0ffb49318607e8
Author: Martin Baulig <martin.baulig@xamarin.com>
Date:   Sun Oct 28 06:09:09 2018 -0400

    X

commit 73d865f46a3232e86eae890cd1ed73fc48500cdb
Author: Martin Baulig <martin.baulig@xamarin.com>
Date:   Sat Oct 27 23:41:42 2018 -0400

    X

commit f78f4bfe1256f8cdb6ff6a8d835e5cbdd1fa9880
Author: Martin Baulig <martin.baulig@xamarin.com>
Date:   Sat Oct 27 23:36:32 2018 -0400

    X

commit fdc78e6267f6c0968e9acec52e0067f46a17ce2d
Author: Martin Baulig <martin.baulig@xamarin.com>
Date:   Sat Oct 27 23:13:13 2018 -0400

    X

commit 9050a13b5f583960080c3f2d3169bbe991bd3ca8
Author: Martin Baulig <martin.baulig@xamarin.com>
Date:   Sat Oct 27 22:59:07 2018 -0400

    X

commit 34ac13733dd90e4dfb4b61bd56331eab34dde457
Author: Martin Baulig <martin.baulig@xamarin.com>
Date:   Sat Oct 27 22:44:00 2018 -0400

    X

commit 64e84ced55aef8fd0144dc0b50d5f14520e19f4f
Author: Martin Baulig <martin.baulig@xamarin.com>
Date:   Sat Oct 27 22:35:03 2018 -0400

    X

commit baaed6fa8a4e5467246609add6428388f02992f7
Author: Martin Baulig <martin.baulig@xamarin.com>
Date:   Sat Oct 27 22:25:13 2018 -0400

    X

commit c9ce7855a106876aa4d78781260dbe919601d65e
Author: Martin Baulig <martin.baulig@xamarin.com>
Date:   Sat Oct 27 22:21:06 2018 -0400

    X

commit c7c890c68535268ba5b9d0f11667721bac09710d
Author: Martin Baulig <martin.baulig@xamarin.com>
Date:   Sat Oct 27 22:09:43 2018 -0400

    X

commit b39c9935979d3cf360a5d4751c4130de05c15b50
Author: Martin Baulig <martin.baulig@xamarin.com>
Date:   Sat Oct 27 21:31:47 2018 -0400

    X

commit 4f363e0e66c5456eeb47d8a749fcde227becaf40
Author: Martin Baulig <martin.baulig@xamarin.com>
Date:   Sat Oct 27 21:23:47 2018 -0400

    X

commit aa668710f753880901ca9b09a91b4bceba691d3e
Author: Rolf Bjarne Kvinge <rolf@xamarin.com>
Date:   Fri Oct 26 23:22:03 2018 +0200

    [iTunesLibrary] Fix typo & confusion. (#5046)

    I'm not sure why we have an entry in our list of frameworks claiming that
    iTunesLibrary was introduced in macOS 10.9, when we didn't have any bindings
    for the library back then.

    In any case we also have an entry for iTunesLibrary in our list of frameworks
    claiming that iTunesLibrary was introduced in macOS 10.14.

    I looked at some of Apple's documentation for the types in iTunesLibrary, and
    they all claim to be introduced in macOS 10.13 [2].

    And to make matters even more interesting, Apple's documentation for the
    framework itself states the library is in
    /Library/Frameworks/iTunesLibrary.framework, and ships with iTunes 11.0+ [1]
    (which is introduced in 2012).

    Then I looked at a macOS 10.14 machine, and the framework is available at
    /System/Library/Frameworks/iTunesLibrary.framework, and
    /Library/Frameworks/iTunesLibrary.framework is just a symlink there
    (/System/Library/Frameworks/iTunesLibrary.framework does not exist on my macOS
    10.13 machines, while /Library/Frameworks/iTunesLibrary.framework does). From
    this I conclude that the framework was converted into a
    system framework in macOS 10.14, and as such our claim that the framework was
    introduced in 10.14 is at least somewhat right.

    So treat iTunesLibrary as any other framework introduced in macOS 10.14, and
    remove our (duplicated) framework entry for 10.9 (for which we didn't have any
    bindings anyway).

    Also fix the path to the framework, I'm wonder how this got past our tests in
    the first place.

    [1] https://developer.apple.com/documentation/ituneslibrary: "... located at /Library/Frameworks/iTunesLibrary.framework ... The iTunes Library framework is available to users running iTunes v11.0 or above."
    [2] https://developer.apple.com/documentation/ituneslibrary/itlibrary?language=objc

commit 917214828d9ca90771bae2be1d4174bf2e0a1561
Author: Sebastien Pouliot <sebastien.pouliot@gmail.com>
Date:   Fri Oct 26 13:34:08 2018 -0400

    [xharness] Log the environment variables in the execution logs (#5045)

    While trying to debug an msbuild unit tests it was not possible to
    successfully copy/paste the command from the execution log and
    run it in a shell.

    It's not that hard to run xharness and figure it out - but the
    same can happen on bots (which could be harder).

    So that little change prints out the host and xharness changes
    to the environment variables to make copy/pasters life even
    lazier :)

commit eaa6435e89ac146febc0ce5eca58b0696ba18338
Author: Sebastien Pouliot <sebastien.pouliot@gmail.com>
Date:   Fri Oct 26 13:18:05 2018 -0400

    [msbuild] Avoid an NRE in BtouchTask when an invalid extra argument is provided (#5041)

    The task itself should not throw. An invalid argument is an error that
    should (and is) reported by `btouch` itself (and the task picks it up).
    This makes the error reporting much more useful and the way an exception
    is reported, from Windows, is also confusing
    ```
    MessagingRemoteException: An error occured on client Build4110732 while executing a reply for topic xvs/Build/4.11.0.732/execute-task/ClassLibrary1/6e85b94002fBTouch ArgumentNullException: Value cannot be null.
    ```

    Unit tests added.

    Fixes https://devdiv.visualstudio.com/DevDiv/_workitems/edit/656983

commit 82e0c73e0ba8567bd89989d0764727a204c18caa
Author: Rolf Bjarne Kvinge <rolf@xamarin.com>
Date:   Fri Oct 26 17:15:00 2018 +0200

    Bump minimum mono one that has 'mono_dangerous_add_raw_internal_call'.

commit 93e72862f7e71efcc637a86ec9afaf6e4bf19318
Author: Rolf Bjarne Kvinge <rolf@xamarin.com>
Date:   Fri Oct 26 15:23:36 2018 +0200

    [mmptest] Less hardcoding.

commit da852969401e518a3c76b641d0ae0a2d556a005c
Author: Martin Baulig <martin.baulig@xamarin.com>
Date:   Fri Oct 26 05:36:39 2018 -0400

    X

commit 607dcf2b883056618e7c995d928f7a437ee116b6
Author: Martin Baulig <martin.baulig@xamarin.com>
Date:   Fri Oct 26 05:31:33 2018 -0400

    X

commit 3b8c42d35d3841f25c53da9057daa19bf33f8f0d
Author: Martin Baulig <martin.baulig@xamarin.com>
Date:   Fri Oct 26 05:16:06 2018 -0400

    X

commit bd047374ea905f0475b19a495f28028b6f33c7b7
Author: Martin Baulig <martin.baulig@xamarin.com>
Date:   Fri Oct 26 05:09:31 2018 -0400

    X

commit 4bd1a297b2acf5de3a0a2ec667bae4a66d51387f
Author: Martin Baulig <martin.baulig@xamarin.com>
Date:   Fri Oct 26 04:58:10 2018 -0400

    X

commit eaf9856bd32de3374b52bc954570e25d0fc4918a
Author: Martin Baulig <martin.baulig@xamarin.com>
Date:   Fri Oct 26 04:23:18 2018 -0400

    X

commit 1129665f94369048be1f159c57c7cb7f650d3804
Author: Martin Baulig <martin.baulig@xamarin.com>
Date:   Fri Oct 26 04:18:46 2018 -0400

    X

commit 4368b58b2bb80100f7fcc85c2909cb1618b040c8
Author: Martin Baulig <martin.baulig@xamarin.com>
Date:   Fri Oct 26 02:19:45 2018 -0400

    X

commit 7449e51bbadf59857242d6ef800a6ec23c37d63b
Author: Aleksey Kliger (λgeek) <akliger@gmail.com>
Date:   Fri Oct 26 00:46:28 2018 -0500

    [2018-08][watchos] Use mono_dangerous_add_raw_internal_call for watchOS icalls (#5030)

    * Add optional mono_dangerous_add_raw_internal_call to exports.t4

    * Use mono_dangerous_add_raw_internal_call on watchOS for icall registration

    Internal calls added with mono_dangerous_add_raw_internal_call run in GC Unsafe
    mode under cooperative and hybrid suspend, whereas internal calls added with
    mono_add_internal_call run in GC Safe mode since
    mono/mono@5756ba4b46f43d4f1c61c0d7dbbcf27a271f24ab in order for hybrid suspend
    to be a transparent replacement for preemptive suspend (the old default).  The
    icalls in GC Unsafe mode have a responsibility not to block indefinitely
    without manually performing a thread state transition to GC Safe mode, and in
    return they avoid a thread state transition when the icall is invoked from a
    managed method.

commit 3f1119050dcf6f536e9e07f80290fc10e9321a66
Author: Martin Baulig <martin.baulig@xamarin.com>
Date:   Fri Oct 26 01:39:52 2018 -0400

    X

commit 48d4be63ddba1251780e9dc7efdaacad55160827
Author: Martin Baulig <martin.baulig@xamarin.com>
Date:   Fri Oct 26 01:35:19 2018 -0400

    X

commit fb125c66d1208d2f4727cab5123d6bb824b31a22
Author: Martin Baulig <martin.baulig@xamarin.com>
Date:   Fri Oct 26 01:09:52 2018 -0400

    X

commit 377d9288241758de93a10a9c7fbe3a79e203558d
Author: Martin Baulig <martin.baulig@xamarin.com>
Date:   Fri Oct 26 00:38:50 2018 -0400

    X

commit 6d8da866ae1c9076f15b427bb413e4091d55a185
Author: Martin Baulig <martin.baulig@xamarin.com>
Date:   Fri Oct 26 00:30:13 2018 -0400

    X

commit c5c3546b8e2d53ea06b4ff0f2deba6a98353110a
Author: Martin Baulig <martin.baulig@xamarin.com>
Date:   Fri Oct 26 00:21:43 2018 -0400

    X

commit d55f564dacfa743b2624e6180cd4e2d700e3835a
Author: Martin Baulig <martin.baulig@xamarin.com>
Date:   Fri Oct 26 00:20:27 2018 -0400

    Revert "X"

    This reverts commit 9447ec7b2bca367a91893142decf3cfb8e861254.

commit 9447ec7b2bca367a91893142decf3cfb8e861254
Author: Martin Baulig <martin.baulig@xamarin.com>
Date:   Fri Oct 26 00:12:54 2018 -0400

    X

commit 05a6f58f932019d3721849dd2b4c3c19df129706
Author: Martin Baulig <martin.baulig@xamarin.com>
Date:   Fri Oct 26 00:04:13 2018 -0400

    X

commit dd74cc6ac79231162fadfff4e27aae66e2711aac
Author: Martin Baulig <martin.baulig@xamarin.com>
Date:   Thu Oct 25 23:38:58 2018 -0400

    X

commit 3260d6d050ca86c296653781375124edf58627d0
Author: Martin Baulig <martin.baulig@xamarin.com>
Date:   Thu Oct 25 23:22:27 2018 -0400

    X

commit 47409b665c736148b9ff7eef26f64cbb50fd43ac
Author: Martin Baulig <martin.baulig@xamarin.com>
Date:   Thu Oct 25 23:07:22 2018 -0400

    X

commit c24ea7f40c2de80ab220d76280fc101d3a42b3fa
Author: Martin Baulig <martin.baulig@xamarin.com>
Date:   Thu Oct 25 22:53:39 2018 -0400

    X

commit 0c8fae1bb537160d69412fdaaaaa2b15cb370a87
Author: Martin Baulig <martin.baulig@xamarin.com>
Date:   Thu Oct 25 22:24:52 2018 -0400

    X

commit 00d298a49a045662d910e7b9d91036d1cbb597f5
Author: Martin Baulig <martin.baulig@xamarin.com>
Date:   Thu Oct 25 22:15:59 2018 -0400

    X

commit 299f2d1ff42b90d1825a860193ec9f0a541e9d35
Author: Martin Baulig <martin.baulig@xamarin.com>
Date:   Thu Oct 25 22:10:31 2018 -0400

    X

commit c7873b8a3734b6515bfe53196f2d42041cd92c01
Author: Martin Baulig <martin.baulig@xamarin.com>
Date:   Thu Oct 25 22:09:16 2018 -0400

    X

commit 0b27eef7dcd717e2ffe95fb2a38b8e2b0e61108f
Author: Marek Safar <marek.safar@gmail.com>
Date:   Thu Oct 25 20:14:41 2018 +0200

    Bump mono

commit 12262c4cbafc595d27b8521826be5577dbba26f5
Author: Chris Hamons <chris.hamons@xamarin.com>
Date:   Thu Oct 25 11:56:23 2018 -0500

    [macos] Add NSScrollView.AddFloatingSubview (#5040)

    - https://github.com/xamarin/xamarin-macios/issues/5039

commit 35df3a529452a6a1da13647a29f78ea05d274ddf
Author: Rolf Bjarne Kvinge <rolf@xamarin.com>
Date:   Thu Oct 25 17:47:05 2018 +0200

    [introspection] Fix a few issues found on iPad Air 2 with iOS 12. (#5034)

    * [introspection] MPSCnnBinaryKernel's kernelHeight/kernelWidth are missing on iOS too.

    * [introspection] CoreNFC is not even available on all devices.

commit 2b85aaef56f66c7a2b7732f40ad92f21fd59e279
Author: Rolf Bjarne Kvinge <rolf@xamarin.com>
Date:   Thu Oct 25 17:17:03 2018 +0200

    [tests] Only build exactly what's neded for running XM tests on older bots. (#5038)

    Also build what we can in parallel (and manually building shared dependencies first).

commit 36209e55e9818b91559836726e402b5b5891749a
Author: Rolf Bjarne Kvinge <rolf@xamarin.com>
Date:   Thu Oct 25 12:31:26 2018 +0200

    Remove 10.7 & 10.8 availability attributes, since they're redundant now.

commit 2755245b914e611cc26a29f776b43f3765d4270d
Author: Rolf Bjarne Kvinge <rolf@xamarin.com>
Date:   Thu Oct 25 17:04:56 2018 +0200

    [tests] More min macOS version setting to 10.9.

commit 3f5aceb4f6791c1354c889f7af426443208340db
Author: Rolf Bjarne Kvinge <rolf@xamarin.com>
Date:   Thu Oct 25 09:50:21 2018 +0200

    Bump guiunit to get updated min macOS version.

    Commit list for mono/guiunit:

    * mono/guiunit@9f67042 Bump min macOS version to 10.9.
    * mono/guiunit@0c3159a [Harness] Fix exit code of 0 being reported in case of exceptions in the harness
    * mono/guiunit@9b7497c Merge pull request #15 from mono/fix-more-warnings
    * mono/guiunit@a264470 Fix more warnings
    * mono/guiunit@dd094e7 Merge pull request #14 from mono/fix-warnings
    * mono/guiunit@b3afede Fix build warnings

    Diff: https://github.com/mono/guiunit/compare/1306b0d420bd69efcd8f1951c5c68dc7065ce9eb...9f67042498c8a3bc28888c7765a93af9b3475329

commit 04b7c94b17addb15bfb7b9bdea263521b708e61b
Author: Rolf Bjarne Kvinge <rolf@xamarin.com>
Date:   Thu Oct 25 09:13:56 2018 +0200

    Bump min mono version for XM system apps.

    Using a system mono < 5.18 results in a TypeLoadException:

        Could not resolve type with token 01000032 from typeref (expected class 'Mono.ISystemDependencyProvider' in assembly 'mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089')

commit cca50fe5000f9a094da17c89c9382e4a434a60fb
Author: Rolf Bjarne Kvinge <rolf@xamarin.com>
Date:   Thu Oct 25 00:10:28 2018 +0200

    Mono 2018-08 requires macOS 10.9+, so Xamarin.Mac must as well.

commit 0ebc514467805f7baeb19404c85d43ca62c834ed
Merge: 545c7bf4 d836c886
Author: Rolf Bjarne Kvinge <rolf@xamarin.com>
Date:   Thu Oct 25 09:54:07 2018 +0200

    Merge remote-tracking branch 'origin/master' into mono-2018-08

commit d836c8867dc8282d45a1ce50d177e0a16419a2bd
Author: Jeffrey Stedfast <jestedfa@microsoft.com>
Date:   Wed Oct 24 20:11:17 2018 -0400

    [msbuild] Always set IOSDebugOverWiFi to true for WatchOS apps/extensions (#5035)

    Fixes https://devdiv.visualstudio.com/DevDiv/_workitems/edit/712824

commit 51e7a477000cf73137e09e2bbbed76339747e943
Author: Vincent Dondain <vidondai@microsoft.com>
Date:   Wed Oct 24 20:10:55 2018 -0400

    [coregraphics] Make MatrixOrder a normal enum instead of a nested enum (#5036)

    This enum might prove useful to other APIs in the future so move outside of `CGAffineTransform`.

commit 74576fa5ca2095af44d6ebd2563fac98eb052b8f
Author: Rolf Bjarne Kvinge <rolf@xamarin.com>
Date:   Wed Oct 24 23:58:14 2018 +0200

    [Metal/SpriteKit] Fix availability attributes on a few API. (#5033)

commit 9688c42e2d4d6191fbf0bd687cf46ebca9cc3370
Author: Bernhard Urban <bernhard.urban@xamarin.com>
Date:   Wed Oct 24 21:24:22 2018 +0200

    Bump mono and enable monotouch-test with interpreter (#5023)

    * Bump Mono 2018-06

    Commit list for mono/mono:

    * mono/mono@c0fe7243790 [aot] Reenable recursion checking when initing shared got entries (#11295)
    * mono/mono@f55f7e53e36 [interp] use unsigned conversion for nuint (#11285)
    * mono/mono@5986920bdbc [2018-06] [arm64] Remove the limitation on the number of nullable arguments for dyncalls (#11266)
    * mono/mono@665a308c397 [WinForms] Propagate the flags from DrawTextInternal to MeasureTextInternal (#11251)
    * mono/mono@5ed4143b4f4 [2018-06] Crash Reporter V2 (#11162)
    * mono/mono@f0db92c2b6d [interp] Implement interpreter entry trampolines on amd64 (#10978) (#11165)
    * mono/mono@c1f1a7bfed9 [ci] Move OSX .pkg build to a separate bot pool
    * mono/mono@d80ced607b4 [aot] Ensure shared got entries are initialized before loading methods (#11225)
    * mono/mono@d07c626a748 [pkg] Add preinstall which removes existing Mono of the same version (#11209)
    * mono/mono@cda3acc57cd [sdks] futimens and futimes symbols are missing on anything earlier than 10.13 (#11174)
    * mono/mono@226e91a0644 Bump xunit-binaries

    Diff: https://github.com/mono/mono/compare/2343f2670679edf97b9480e0e08aad2593eab9f6...c0fe724379084be07e0e0f66a6340167ebab8bcf

    * [tests] enable monotouch-test with --interpreter on Jenkins

commit 545c7bf4ba7a0967be3f0423ab2d502adbd79880
Merge: 63025fe8 0ddc3553
Author: Rolf Bjarne Kvinge <rolf@xamarin.com>
Date:   Wed Oct 24 13:49:26 2018 +0200

    Merge remote-tracking branch 'origin/master' into mono-2018-08

commit 0ddc3553d3ef56163734c60b0f3e082a702a08c4
Author: Rolf Bjarne Kvinge <rolf@xamarin.com>
Date:   Wed Oct 24 07:54:50 2018 +0200

    [Foundation] Fix compiler warnings in NSUrlSessionHandler. (#5032)

    Fix these warnings:

        src/Foundation/NSUrlSessionHandler.cs(71,57): warning CS3001: Argument type 'NSUrlSessionConfiguration' is not CLS-compliant
        src/Foundation/NSUrlSessionHandler.cs(89,14): warning CS0618: 'NSUrlSession.FromConfiguration(NSUrlSessionConfiguration, NSUrlSessionDelegate, NSOperationQueue)' is obsolete: 'Use the overload with a 'INSUrlSessionDelegate' parameter.'

commit ad67a39104e2f509b2bacdfccf24b6c179baf133
Author: Rolf Bjarne Kvinge <rolf@xamarin.com>
Date:   Wed Oct 24 07:52:58 2018 +0200

    [runtime] Improve diagnostics/behavior in case of failure to contact the IDE when debugging. (#5029)

    When debugging watchOS apps on device, we wait forever [1] for a connection to
    be established to the IDE (iOS apps wait for only 2 seconds, but that's
    because the app will be killed after a while, which we avoid on watchOS by
    attaching the native debugger).

    Unfortunately our error handling was not quite optimal, which meant that if
    the connection to the IDE failed, we'd wait forever instead of launching the
    app without attaching the debugger.

    So improve this, by printing "Waiting for connection to the IDE..." messages
    while trying to connect, and printing detailed log messages if the
    connection attempt fails (as well as terminating the wait and launching the
    watch app).

    [1] In this case forever technically means "1 hour".

commit 63025fe8e76c90e903129d8d74fca33bcf08e4ea
Author: Martin Baulig <martin.baulig@xamarin.com>
Date:   Wed Oct 24 00:10:10 2018 -0400

    [security]: `NATIVE_APPLE_CERTIFICATE` should now be defined on watchOS as well.

commit d2a9a57bb9dfe76a87d160680bc4204a62cc2b1a
Author: Sebastien Pouliot <sebastien.pouliot@gmail.com>
Date:   Tue Oct 23 14:15:58 2018 -0400

    [mtouch] Display a specific error is a .framework binary is invalid. Fixes #5028 (#5031)

    Instead of a generic `MT0000` caused by an exception reading the magic
    numbers of the binary framework file.

    This was caused be uncompressing an archive, with a symlink, into a
    file system that does not support symlinks (on Windows).

    ref: https://github.com/xamarin/xamarin-macios/issues/5028

commit b403da0d85c83558eabb326cef3621190059bf66
Author: Sebastien Pouliot <sebastien.pouliot@gmail.com>
Date:   Mon Oct 22 21:54:54 2018 -0400

    [uikit] Preserve method associated with `updateSearchResultsForSearchController:`. Fixes #5024 (#5027)

    This method is called back from iOS (or tvOS) so there's no managed
    reference pointing to it. However we know that if it's (private inner)
    type is present it's because the callback (from native) is possible so
    we can preserve the method conditionally (to the type presence).

    https://github.com/xamarin/xamarin-macios/issues/5024

commit 74102bce2d67523df65f007d3a82f9a7baa86709
Author: Rolf Bjarne Kvinge <rolf@xamarin.com>
Date:   Tue Oct 23 01:52:45 2018 +0200

    Use the zlib-helper.o library built by mono, instead of building our own. (#5021)

    This also makes it possible to simplify/remove some of our build logic.

commit 0cbf9609a1d93571aa827d4845872ef8a9cdb9ec
Author: Jeffrey Stedfast <jestedfa@microsoft.com>
Date:   Mon Oct 22 10:22:52 2018 -0400

    Update mtouch-errors.md

commit 502d811c438380a0d62805f9bf5bef2dfd227075
Author: Jeffrey Stedfast <jestedfa@microsoft.com>
Date:   Mon Oct 22 10:20:57 2018 -0400

    Update mtouch-errors.md

commit d899d4fb707738fec5706d7e88351713b744c87a
Author: Rolf Bjarne Kvinge <rolf@xamarin.com>
Date:   Mon Oct 22 16:14:26 2018 +0200

    Remove bitrotted support for a separate mono submodule for watchOS support. (#5022)

    Unce upon a time we used a separate mono submodule for watchOS support, to make
    development of watchOS support easier (we referenced mono/master, to avoid
    backporting fixes for watchOS support through various release branches in
    mono).

    This only worked until our watchOS support became stable, since then we had to
    start using a stable version of mono for watchOS support.

    This means that our build support for using a separate mono clone for watchOS
    support is no longer needed; and in any case it's broken because of build
    changes done later.

commit f87f3b88f8d7e26eb71a87340fd9be674a02e2e5
Author: Vincent Dondain <vidondai@microsoft.com>
Date:   Mon Oct 22 08:42:52 2018 -0400

    [coregraphics] Add 'MatrixOrder' overload for Scale, Rotate and Translate (#5011)

    - Fixes #4698: CGAffineTransform.Scale does not work like Swift's .scaledBy(x:y:)
      (https://github.com/xamarin/xamarin-macios/issues/4698)
    - 'Scale' monotouch-test now covers the new overload for the new multiplication order.
    - Changed the Scale test's values so we have different values for 'x0' (it was always 0 before) and so it matches the test case from the bug report.

    * Same fix for Rotate and Translate

commit c378d6baa5a00d26bf18baee3261b277b046fa9c
Author: Rolf Bjarne Kvinge <rolf@xamarin.com>
Date:   Mon Oct 22 07:57:16 2018 +0200

    Add a UserType flag for registered types, and use it to improve the performance for is_user_type. (#5017)

    * Refactor type map to have a separate flag field for each type instead of magic location in the array.

    Refactor the type map to have a separate flag field for each type instead of a
    magic location in the array. This simplifies some code, but also allows us to
    introduce more flags in the future (which becomes increasingly complex if the
    location in the array is to determine yet another value).

    This has neglible performance impacts.

    * Add a UserType flag for registered types, and use it to improve the performance for is_user_type.

    Reflection in the Objective-C runtime is apparently quite slow, so try to
    avoid it by computing the information we need for determining whether a
    particular Objective-C type represents a user type or not in the static
    registrar.

    We store this information in a flag for the type in question in the type map,
    and use a binary search to search the type map when needed.

    This provides a significant improvement, in particular in the dontlink
    scenario (probably because there are many more Objective-C types in the app,
    which made Objective-C reflection slow). In fact, it somehow made the dontlink
    scenario so fast that it's faster than the linkall scenario (which also
    improved, but not nearly as much). While quite inexplicable, it's a consistent
    result I've seen over multiple test runs.

    Numbers
    =======

    Test case: https://github.com/rolfbjarne/TestApp/commit/004283d7b628a29fcf711d98d8842bfd4ef4393b

    Fix 1 refers to PR #5009.
    Fix 2 refers to PR #5013.
    Fix 3 refers to PR #5016.
    Fix 4 is this fix.

    iPad Air 2
    ----------

    | Configuration       | Before | After fix 1 | After fix 2  | After fix 3  | After fix 4  | Improvement from fix 3 to fix 4 | Cumulative improvement |
    | ------------------- | ------ | ----------: | -----------: | -----------: | -----------: | ------------------------------: | ---------------------: |
    | Release (link all)  | 477 ms |      481 ms |       224 ms |       172 ms |       148 ms |                     24 ms (14%) |           329 ms (69%) |
    | Release (dont link) | 738 ms |      656 ms |       377 ms |       201 ms |       146 ms |                     55 ms (27%) |           592 ms (80%) |

    iPhone X
    --------

    | Configuration       | Before | After fix 1 | After fix 2  | After fix 3  | After fix 4  | Improvement from fix 3 to fix 4 | Cumulative improvement |
    | ------------------- | ------ | ----------: | -----------: | -----------: | -----------: | ------------------------------: | ---------------------: |
    | Release (link all)  |  98 ms |       99 ms |        42 ms |        31 ms |        29 ms |                      2 ms ( 6%) |            69 ms (70%) |
    | Release (dont link) | 197 ms |      153 ms |        91 ms |        43 ms |        28 ms |                     15 ms (35%) |           169 ms (86%) |

    When linking all assemblies, the type map has 24 entries, and when not linking
    at all it has 2993 entries.

    This is part 4 (the last) of multiple fixes for #4936.

    The total speed-up is 69-86% (3-7x faster).

commit 097e3fc9ce44840bb21fd580e794791776ff7ec7
Author: Rolf Bjarne Kvinge <rolf@xamarin.com>
Date:   Fri Oct 19 18:33:45 2018 +0200

    [Class] Cache the IntPtr constructors in a dictionary. (#5016)

    Using reflection to find these constructors is computation-intensitive, so
    cache the results.

    Numbers
    =======

    Test case: https://github.com/rolfbjarne/TestApp/commit/004283d7b628a29fcf711d98d8842bfd4ef4393b

    Fix 1 refers to PR #5009.
    Fix 2 refers to PR #5013.
    Fix 3 is this fix.

    iPad Air 2
    ----------

    | Configuration       | Before | After fix 1 | After fix 2  | After fix 3  | Improvement from fix 2 to fix 3 | Cumulative improvement |
    | ------------------- | ------ | ----------: | -----------: | -----------: | ------------------------------: | ---------------------: |
    | Release (link all)  | 477 ms |      481 ms |       224 ms |       172 ms |                     52 ms (23%) |           305 ms (64%) |
    | Release (dont link) | 738 ms |      656 ms |       377 ms |       201 ms |                    176 ms (47%) |           537 ms (73%) |

    iPhone X
    --------

    | Configuration       | Before | After fix 1 | After fix 2  | After fix 3  | Improvement from fix 2 to fix 3 | Cumulative improvement |
    | ------------------- | ------ | ----------: | -----------: | -----------: | ------------------------------: | ---------------------: |
    | Release (link all)  |  98 ms |       99 ms |        42 ms |        31 ms |                     11 ms (26%) |            67 ms (68%) |
    | Release (dont link) | 197 ms |      153 ms |        91 ms |        43 ms |                     48 ms (53%) |           154 ms (78%) |

    When linking all assemblies, the type map has 24 entries, and when not linking
    at all it has 2993 entries.

    This is part 3 of multiple fixes for #4936.

commit 1279dd1eaa8943afe3fb397f0394bd18cb0b2fec
Author: Rolf Bjarne Kvinge <rolf@xamarin.com>
Date:   Fri Oct 19 16:54:44 2018 +0200

    Get the F# binaries from macios-binaries instead of building them every time. (#5015)

    It's still possible to build from source if desired.

    Also remove the fsharp submodule (it will be cloned manually only if building
    from source).

commit ac8710815233bb3f19f86c8468fc891dbc23ee61
Author: Rolf Bjarne Kvinge <rolf@xamarin.com>
Date:   Fri Oct 19 16:04:36 2018 +0200

    [Class] Make looking up a System.Type given a native Class instance faster (#5013)

    Cache the Class -> System.Type lookup in an array.

    I could also have used a dictionary, but there are a couple of disadvantages
    compared to the array approach:

    * A dictionary would require a lock every time it's read/written to. The array
      is created at launch, and after that we don't have to care about thread
      safety because it's safe to do the slow lookup multiple times.
    * Its memory requirements would be higher with more elements (in particular
      since we'd not only need to store the Type instance, but also a boolean
      determining whether it's a user type or not).
    * It's ~1% slower (probably due to the lock).

    Numbers
    =======

    Test case: https://github.com/rolfbjarne/TestApp/commit/004283d7b628a29fcf711d98d8842bfd4ef4393b

    Fix 1 refers to PR #5009.
    Fix 2 is this fix.

    iPad Air 2
    ----------

    | Configuration       | Before | After fix 1 | After fix 2  | Improvement from fix 1 to fix 2 | Cumulative improvement |
    | ------------------- | ------ | ----------: | -----------: | ------------------------------: | ---------------------: |
    | Release (link all)  | 477 ms |      481 ms |       224 ms |                    257 ms (53%) |           253 ms (53%) |
    | Release (dont link) | 738 ms |      656 ms |       377 ms |                    279 ms (43%) |           459 ms (62%) |

    iPhone X
    --------

    | Configuration       | Before | After fix 1 | After fix 2  | Improvement from fix 1 to fix 2 | Cumulative improvement |
    | ------------------- | ------ | ----------: | -----------: | ------------------------------: | ---------------------: |
    | Release (link all)  |  98 ms |       99 ms |        42 ms |                     57 ms (58%) |            56 ms (57%) |
    | Release (dont link) | 197 ms |      153 ms |        91 ms |                     62 ms (41%) |           106 ms (54%) |

    When linking all assemblies, the type map has 24 entries, and when not linking
    at all it has 2993 entries.

    This is part 2 of multiple fixes for #4936.

commit 900356c2e6effbf800de53b88a00f6175d53145a
Author: Rolf Bjarne Kvinge <rolf@xamarin.com>
Date:   Fri Oct 19 07:33:15 2018 +0200

    [Class] Sort our array of Class -> token references so that we can do binary instead of linear searches in it. (#5009)

    Our type map has two sections: first come all the wrapper types, then all the
    custom types. This means we need to sort these two sections separately, since
    code elsewhere depends on this split in order to determine if a type is a
    custom type or not.

    We also need a minor modification in the array of skipped types, since it
    contained indexes into the type map, which won't be valid after is has been
    sorted. Instead store a type reference for the actual type in the array, and
    use that to search the type map for the corresponding Class. This is a little
    bit slower, but the results are cached in a dictionary, so it'll only happen
    once for each type.

    The performance is slightly slower when the type map has very few entries, but
    that is repaid many times over when the number of entries go up.

    Numbers
    =======

    Test case: https://github.com/rolfbjarne/TestApp/commit/004283d7b628a29fcf711d98d8842bfd4ef4393b

    iPad Air 2
    ----------

    | Configuration       | Before | After  | Improvement   |
    | ------------------- | ------ | ------ | ------------: |
    | Release (link all)  | 477 ms | 481 ms | -4 ms (-0,8%) |
    | Release (dont link) | 738 ms | 656 ms |   82 ms (11%) |

    iPhone X
    --------

    | Configuration       | Before | After  | Improvement |
    | ------------------- | ------ | ------ | ----------: |
    | Release (link all)  |  98 ms |  99 ms | -1 ms (-1%) |
    | Release (dont link) | 197 ms | 153 ms | 44 ms (22%) |

    When linking all assemblies, the type map has 24 entries, and when not linking
    at all it has 2993 entries.

    This is part 1 of multiple fixes for #4936.

commit 1ec90f0fe546e0f7700b92c05e1cbfed9c63831d
Author: monojenkins <jo.shields+jenkins@xamarin.com>
Date:   Thu Oct 18 14:37:30 2018 -0400

    [uikit] Duplicate bindings for 'UIScrollView.ContentOffset' to get correct availability information. Fixes #4893 (#5007)

    `ContentOffset` was moved to `UIFocusItemScrollableContainer` in iOS 12.
    Since it's a new protocol it's decorated as introduced in iOS 12 - but
    the API was actually already available for a long time.

    The _trick_ is to keep the original binding inside `UIScrollView`
    so it overrides the protocol and keeps the correct availability info.
    It requires adding `new` to bindings to avoid compiler warnings.

    reference: https://github.com/xamarin/xamarin-macios/issues/4893

    ---

    from @rolfbjarne

    In iOS 12 this property was moved to a protocol, but that protocol's
    availability attributes limits it to iOS 12, not iOS 2 where this property was
    originally introduced.

    This is problematic, because it means we'll throw a
    PlatformNotSupportedException if someone tries to call it on 32-bit iOS.

    So put the property back on UIScrollView, so that the generated code ends up
    with the right availability attributes (and a correct 32-bit implementation).

    https://github.com/xamarin/xamarin-macios/pull/5004

commit 99641c7fcdecc69877ce4b986f26bb33d695d699
Author: Sebastien Pouliot <sebastien.pouliot@gmail.com>
Date:   Thu Oct 18 14:03:17 2018 -0400

    [msbuild] Avoid possible NullReferenceException in ScnToolTaskBase. Fixes #4039 (#5006)

    `EnvironmentVariables` can be null (not empty) and cause the NRE in the
    attached test case.

    It's not clear that the extra logic is needed if we were using `xcrun`.
    There's an enhancement for this https://github.com/xamarin/xamarin-macios/issues/4634

    reference: https://github.com/xamarin/xamarin-macios/issues/4039

commit 5ad55d603e1b5025428865cf1bdc68c01e3d0c58
Author: Sebastien Pouliot <sebastien.pouliot@gmail.com>
Date:   Thu Oct 18 11:16:24 2018 -0400

    [tests][linkall] Add a check that the Makefile produced version number is 'legit'. Fixes #4859 (#5005)

    History: a marge conflict caused a version string to become "12.3." and
    this was found in the API diff much later.

    reference: https://github.com/xamarin/xamarin-macios/issues/4859

commit dca1f4793fbfb31f9142a714b1907053f1a29575
Author: Miguel de Icaza <miguel@gnome.org>
Date:   Thu Oct 18 06:31:39 2018 -0400

    [UIKit] UIGestureRecognizer, support a way of unsubscribing without creating cycles (#4729)

    * [UIKit] UIGestureRecognizer, support a way of unsubscribing without creating cycles

    This now tracks all the uses of AddTarget with delegates by recording
    the Token/Selector pair and making `Dispose()` release all the linkage
    as well as providing an enumerator that can be used to get all the
    registered Action handlers - this can then be used with .First() and
    then passed to `RemoveTarget`.

    This addresses https://github.com/xamarin/xamarin-macios/issues/4190

    This initial patch is here for discussion of the approach, want to
    review and test this before we merge.

    * Simplify code a little bit.

    * Add test.

    * [tests] Add an NSAutoreleasePool to make GestureRecognizerTest.NoStrongCycles happy on 32-bit.

commit d2bcd4b7755734e849791bd2b190b1ab5fa0574b
Author: Martin Baulig <mabaul@microsoft.com>
Date:   Wed Oct 17 15:12:39 2018 -0400

    Bump Mono.

commit ee1f7dc33d3519276758cb0e5c4d38f89f9936e7
Author: Rolf Bjarne Kvinge <rolf@xamarin.com>
Date:   Wed Oct 17 14:42:29 2018 +0200

    [CoreFoundation] Implement missing dispatch API. Fixes #4606. (#4967)

    * [CoreFoundation] Add DispatchQueue.DispatchBarrierSync.

    * [CoreFoundation] Bind dispatch_queue_[set|get]_specific.

    * [CoreFoundation] Bind dispatch_queue_get_qos_class.

    * [CoreFoundation] Bind dispatch_queue_create_with_target.

    * Add tests.

    * Update xtro.

    * Add missing availability attributes.

    * [tests] Do a version check before testing new API.

    * Remove redundant code.

commit 6751f278417ee3a8d9794ffefd2ec4ae4f6ce599
Author: Sebastien Pouliot <sebastien.pouliot@gmail.com>
Date:   Wed Oct 17 08:25:37 2018 -0400

    [tests][mmp] Move TypeDescriptor (regression) tests to unit tests (#4994)

    Also move some tests to share more (now and in future commits)
    with iOS linker-related tests.

    Part of https://github.com/xamarin/xamarin-macios/issues/4975

commit 6044a74ae26e575b3725c67d86c612127c6c7a1d
Author: Rolf Bjarne Kvinge <rolf@xamarin.com>
Date:   Wed Oct 17 07:13:25 2018 +0200

    Bump maccore to get fix for xamarin/maccore#1090. (#4989)

    * Bump maccore to get fix for xamarin/maccore#1090.

    Diff: https://github.com/xamarin/maccore/compare/46a12247947cdf546e0e07f4e7062ef2f5fcf515...b93ee3155d89e4414c4c228cf19bb89489b03bb1

    * Bump maccore again.

    Commit list for xamarin/maccore:

    * xamarin/maccore@b35c3a8d76 Build mlaunch with msbuild instead of xbuild. (#1091)

    Diff: https://github.com/xamarin/maccore/compare/b93ee3155d89e4414c4c228cf19bb89489b03bb1...b35c3a8d7682c8482c7c749d7c1670b3d4bbed5c

commit c30807113ce87ff48b4a271bfca2af16ea056d0b
Author: Martin Baulig <mabaul@microsoft.com>
Date:   Tue Oct 16 15:18:33 2018 -0400

    Revert "[monotouch-test] Disable X509Certificate(byte[]) tests on watchOS (#4942)"

    This reverts commit d003a9b918cdd340ec1b5ad931306e53a0d9a632.

commit 8e72ea8330f4ad59544fb55a31e882d6bf254e1a
Author: Bernhard Urban <bernhard.urban@xamarin.com>
Date:   Tue Oct 16 20:05:19 2018 +0200

    [tests] improve MonoWeakReferenceTest to avoid false pinning (#4961)

    Fixes an issue when executed with interpreter. Now, the test is closer
    to what we do in the runtime test:

    https://github.com/mono/mono/blob/831e73abcd5b9e10b4aaff7872b8d68e8e0f60fd/mono/tests/weak-fields.cs
    https://github.com/mono/mono/blob/831e73abcd5b9e10b4aaff7872b8d68e8e0f60fd/mono/mini/TestHelpers.cs

commit e05d87da2ac1ec9a879602a694b6a89bde9b281c
Author: Sebastien Pouliot <sebastien.pouliot@gmail.com>
Date:   Tue Oct 16 13:58:08 2018 -0400

    [mediaplayer] Fix NRE in MPNowPlayingInfoCenter wrt null dictionary entries. Fixes #4988 (#4992)

    The custom `TryGetValue` could return `true` and an `out null`. That was
    fine for many items, e.g. converting `null` to `NSString` or `NSDate` is
    fine.

    However this cause an `NullReferenceException` when trying to create
    arrays (thru `NSArray`) or converting `NSNumber` into value types.

    The _normal_ `TryGetValue` behavior fixes this - and avoid extraneous
    (and non-required) conversions of `null` items.

    ref: https://github.com/xamarin/xamarin-macios/issues/4988

commit e73b1a981e6797eda85d082a4a4a962dbcc4dd77
Author: Sebastien Pouliot <sebastien.pouliot@gmail.com>
Date:   Tue Oct 16 13:57:25 2018 -0400

    [mac] Fix logic to include branch name in packages. Fixes #4990 (#4991)

    so it can be reported inside VSM.

    The logic was not updated (for XM) with the simpler one we can use
    on the internal Jenkins bots.

    ref: https://github.com/xamarin/xamarin-macios/issues/4990

commit 60b06b9c982c5c8e9c13f44d43a5d5f21d5b2464
Author: Bernhard Urban <bernhard.urban@xamarin.com>
Date:   Tue Oct 16 17:25:35 2018 +0200

    [tests] make Symbols.FunctionNames aware of interpreter (#4973)

commit 13b264795580085fbeebc65e0cc5362f7891655b
Author: Rolf Bjarne Kvinge <rolf@xamarin.com>
Date:   Tue Oct 16 16:55:11 2018 +0200

    Fix the llvm32 build by using Xcode 9.4. (#4985)

    Since Xcode 10 doesn't support building 32-bit macOS binaries.

commit b2a596d680415bf3bbcff7b10a9624f1045ad841
Author: Sebastien Pouliot <sebastien.pouliot@gmail.com>
Date:   Mon Oct 15 20:00:03 2018 -0400

    Apply XM audit fixes from `xcode10` (#4986)

    Backport of
    https://github.com/xamarin/xamarin-macios/commit/b40230c09d557991b776de918b047442cd41533f

commit 1082ce7a0964719466cbf218a7e8aa4d59c922f2
Author: Chris Hamons <chris.hamons@xamarin.com>
Date:   Mon Oct 15 10:43:17 2018 -0500

    Add xtro test for [Deprecated] attributes and fix up usages (#4966)

    - https://github.com/xamarin/xamarin-macios/issues/4431

commit 8feb75335e112e37060fc1a6675f1c7a9f713a85
Merge: 0249138c e8b87b77
Author: Sebastien Pouliot <sebastien.pouliot@gmail.com>
Date:   Mon Oct 15 11:23:27 2018 -0400

    Merge branch 'master' into mono-2018-08

commit e8b87b77d762088ec2e79e9c6c6ecfe5c850628e
Author: Sebastien Pouliot <sebastien.pouliot@gmail.com>
Date:   Mon Oct 15 11:15:20 2018 -0400

    [tests][mmp] Convert old mmp calendar regression tests to unit tests (#4983)

commit 250fd976a40af3eba0459c574217eb44093bcdb1
Merge: 904be25c 5fbfacc2
Author: Rolf Bjarne Kvinge <rolf@xamarin.com>
Date:   Mon Oct 15 16:55:53 2018 +0200

    Merge pull request #4111 from radical/msbuild-port

    [msbuild] Move from xbuild to msbuild

commit 904be25c2580db03d40cb59e50e1563a1228f7e4
Author: Rolf Bjarne Kvinge <rolf@xamarin.com>
Date:   Mon Oct 15 16:51:46 2018 +0200

    [xharness] Generate a system variant of dont link, and run it using the oldest mono version we support in Jenkins. Fixes #4121. (#4968)

    This is an addition to the tests we already run on older macOS bots (and as such will not execute on our PR bots).

    Fixes https://github.com/xamarin/xamarin-macios/issues/4121.

commit 0249138c4492e95615b8bc57d7330d6de152b645
Merge: 25ae88f1 d29ede71
Author: Aleksey Kliger <alklig@microsoft.com>
Date:   Mon Oct 15 10:50:38 2018 -0400

    Merge remote-tracking branch 'origin/master' into mono-2018-08

commit d29ede71445e75a5f4599e574250353434699d8c
Author: Chris Hamons <chris.hamons@xamarin.com>
Date:   Mon Oct 15 09:12:56 2018 -0500

    [mmp] Include libmono-system-native.a when embedding mono if it exists (#4980)

commit 855e6827194e365faa47c3b37dc09427344a77e2
Author: Sebastien Pouliot <sebastien.pouliot@gmail.com>
Date:   Mon Oct 15 08:26:49 2018 -0400

    [linker] Set flag when processing ParameterInfo.get_Name from XML files. Fixes #4978 (#4981)

    Commit https://github.com/xamarin/xamarin-macios/commit/996d90614b0a16fc01a943985885bde626ff7b1a fixed the use of XML files. However it did not set the flags so if it's used in both XML and in code then the dictionary is being added twice, which throws an exception like

    ```
    error MT2102: Error processing the method 'System.Boolean SignalGo.Shared.Helpers.ReflectionHelper/d__0::MoveNext()' in the assembly 'SignalGo.Shared.dll': An item with the same key has already been added. Key: System.String System.Reflection.ParameterInfo::get_Name()
    ```

    reference: https://github.com/xamarin/xamarin-macios/issues/4978

commit 5fbfacc2a8b92b30ba69b1af3bb0ce05ff90955d
Author: Rolf Bjarne Kvinge <rolf@xamarin.com>
Date:   Mon Oct 15 10:41:33 2018 +0200

    [tests] Only restore packages.config, not the mtouch test project.

    Restoring the mtouch.csproj makes nuget try to restore Mono.Cecil.csproj as
    well, which doesn't work.

    So just restore what's listed in our packages.config instead.

commit d13f66a497e146d133fa9b7e32439eee67f4b7ea
Author: Sebastien Pouliot <sebastien.pouliot@gmail.com>
Date:   Fri Oct 12 17:09:20 2018 -0400

    [appkit] Add missing `[NullAllowed]` on `NSView.NextKeyView`. Fixes #4558 (#4979)

    Confirmed with headers.

    reference: https://github.com/xamarin/xamarin-macios/issues/4558

commit f4dbb6840ae6d908523ae69f5b5a01c75228fc88
Author: Sebastien Pouliot <sebastien.pouliot@gmail.com>
Date:   Fri Oct 12 11:56:57 2018 -0400

    [foundation] Fix inlined 'NSUserActivity (IntentsAdditions)' to work if nothing else from Intents is used. Fixes #4894 (#4974)

    The selectors `suggestedInvocationPhrase` and `setSuggestedInvocationPhrase`
    needs Intents.framework to be loaded into memory. Otherwise an exception
    occurs:

    ```
    Objective-C exception thrown. Name: NSInvalidArgumentException Reason: -[NSUserActivity setSuggestedInvocationPhrase:]: unrecognized selector sent to instance 0x19cb3f00
    ```

    When the linker is enabled there's no clue (e.g. namespaces from
    preserved types) that `Intents` is required to call the property.

    The fix is to provide an hint that will force the linker to keep a type
    (a small enum available in all platforms in this case) which tells
    `mtouch` (based on the type's namespace) to instruct the native linker
    (Apple's `ld`) to [weak]link the Intents.framework in the application
    executable.

    Note: other selections from the category works fine.

    reference:
    https://github.com/xamarin/xamarin-macios/issues/4894

commit 40288e42702d70c4e839793b035f79a4e0f3d539
Author: Rolf Bjarne Kvinge <rolf@xamarin.com>
Date:   Thu Oct 11 23:08:59 2018 +0200

    Bump mono. (#4971)

    Commit list for mono/mono:

    * mono/mono@2343f267067 [sdks] Add cmake toolchain file for LLVM MXE builds (#11056)
    * mono/mono@46b723d6b01 [2018-06] [sdks] Create archive targets for pre-building on CI (#10936)
    * mono/mono@ab3c897d685 Merge pull request #10997 from lewurm/2018-06-interp-fixes-for-native-type
    * mono/mono@914a62ab2e7 [interp] introduce float R4 stack type
    * mono/mono@62f23a83652 [interp] support ntype.ToString ()
    * mono/mono@2c48c62e66f [interp] support nfloat.*Infinity
    * mono/mono@5c5a48b1449 [interp] support ntype.Equals ()
    * mono/mono@13e412ee52a [interp] support ntype.CompareTo ()
    * mono/mono@a576a799b16 [interp] fix op_implicit/op_explicit conversions for native types
    * mono/mono@1d9378713e6 [sdks/ios] Build libMonoPosixHelper for device architectures, so that zlib-helper.o is created. (#10921) (#10970)
    * mono/mono@6e48ad4f7b1 Merge pull request #10905 from monojenkins/backport-pr-10899-to-2018-06
    * mono/mono@d050e323ed9 [runtime] Fix undefined pthread_main_np (#10930)
    * mono/mono@b549fa7f32a [Reflection] Fix issue with finding types in module using an asterisk as filter criteria
    * mono/mono@0dffbef2690 Bump corefx to disable more tests
    * mono/mono@6c46acfe697 [runtime] Disable stack guard for main thread on osx
    * mono/mono@46e0249d4cd [sdks] One more update to get XA PR builds working on Linux (#10855)
    * mono/mono@910395a05f6 corefx bump
    * mono/mono@2cdfb380a3e [2018-06] [System]: Make sure `HttpWebRequest` observes exceptions on timeout.  #10488. (#10732)
    * mono/mono@aebef84fa2c [merp] Fix return value handling of posix_spawn (#10828)
    * mono/mono@59f2dbf28b0 [sdks] Debian Linux doesn't need to build MXE (#10819)
    * mono/mono@401bce867d3 Bump msbuild to track mono-2018-06
    * mono/mono@65737564b04 Bump corefx
    * mono/mono@40d991c3257 [SDKS] Build host runtime with correct bitness (#10742)
    * mono/mono@1a71d5101f2 [crash] Fix summarize_frame assertion
    * mono/mono@8f36212ad3a [2018-06] Ignore some xunit tests for XA (non compatible with xunit 2.4) (#10721)
    * mono/mono@410792459a8 [corlib] Makes remoting test more robust (and disable it on mobile)
    * mono/mono@7dd65f79a53 [mono-api-html] Render something for fields with marshalling info. (#10698)
    * mono/mono@7c898271e73 [offset-tool] Error out when parsing fails. (#10696)
    * mono/mono@adbb8f72c8b [2018-06] Implement IEnumerable for ConditionalWeakTable (#10657)

    Diff: https://github.com/mono/mono/compare/1b18f39e46eac0c38438bc8cfdaef8a4bc8afc18...2343f2670679edf97b9480e0e08aad2593eab9f6

commit 7c1d23d41173fdaae8802f17087b58e2c389e841
Author: Chris Hamons <chris.hamons@xamarin.com>
Date:   Thu Oct 11 09:14:48 2018 -0500

    Bind 2 high visibility PrintCore APIs (#4933)

    - https://github.com/xamarin/xamarin-macios/issues/4713

commit 4362842b68faa39062246898cf6d9e32dfe8e84a
Author: Rolf Bjarne Kvinge <rolf@xamarin.com>
Date:   Thu Oct 11 12:25:47 2018 +0200

    [mmptests] Update according to MSBuild changes.

commit ffd85c94d0fe864fab76568acef5fc0502aa3088
Author: Rolf Bjarne Kvinge <rolf@xamarin.com>
Date:   Thu Oct 11 08:53:44 2018 +0200

    [generator] Throw PlatformNotSupportException in 32-bit mode for 64-bit-only iOS API. Fixes #4689. (#4954)

    Throw PlatformNotSupportedException for iOS API that was introduced in iOS 11+
    in 32-bit mode, since that API is clearly not available in any 32-bit capable
    iOS version.

    This makes the 32-bit version of Xamarin.iOS.dll smaller (from 15.282.176
    bytes to 14.575.616 bytes, ~700kb smaller - small enough that this makes the
    dontlink test work in 32-bit mode again on device).

    Fixes https://github.com/xamarin/xamarin-macios/issues/4689.

commit 745c18cc7350233c282d3886ad4aa756c4f40094
Merge: 42645d52 f96faaa8
Author: Rolf Bjarne Kvinge <rolf@xamarin.com>
Date:   Thu Oct 11 07:30:35 2018 +0200

    Merge remote-tracking branch 'origin/master' into msbuild-port

commit f96faaa8142a36cfe32a23753c1de55b0f38368e
Author: Rolf Bjarne Kvinge <rolf@xamarin.com>
Date:   Thu Oct 11 07:26:55 2018 +0200

    [CoreFoundation] Refactor Dispatch code to take advantage of recent code improvements. (#4939)

    * [CoreFoundation] Make DispatchObject inherit from NativeObject to share more code.

    * [CoreFoundation] Replace calls to Check () with calls to GetCheckedHandle () to reuse more code.

    * [CoreFoundation] Simplify a bit by reusing code in base constructors.

    * [CoreFoundation] Use Handle instead of handle.

    * [CoreFoundation] Use InitializeHandle instead of setting the 'handle' field.

    * [CoreFoundation] Remove temporary 'handle' field.

    * [CoreFoundation] Remove needless 'unsafe' blocks.

    * Reintroduce DispatchObject.Check, since it's public API.

commit 73fbb5385654fce6ff682fcb1c36e2936b50b786
Author: Ankit Jain <radical@gmail.com>
Date:   Wed Oct 10 17:14:31 2018 -0700

    [msbuild] Enable nuget package conflict resolution (#4945)

    Fixes https://github.com/mono/mono/issues/10602 .

    From the issue:
    ```
    We need to enable this to support the system assemblies conflict
    resolution which we now rely on for any new packages to enhance
    developers experience and get us out of dependency on specific package
    versions.
    ```

commit 42645d52b0ef8c174d9caae6a2fcebf85e0ab214
Author: Rolf Bjarne Kvinge <rolf@xamarin.com>
Date:   Tue Jul 31 11:48:15 2018 +0200

    [tests][msbuild] Seems like we need to copy System.Reflection.Metadata.dll locally, since the MSBuild dlls need it.

commit acad87b7f663615eb7cf2cb34c7ab866d7f0b90e
Author: Rolf Bjarne Kvinge <rolf@xamarin.com>
Date:   Mon Jul 30 16:03:35 2018 +0200

    Bump system mono to 5.16 to see if that gets an MSBuild with the fixes we need for this PR.

commit 2e75028fc00367260b45e545b56b06f5d635a6b8
Author: Rolf Bjarne Kvinge <rolf@xamarin.com>
Date:   Mon Jul 30 16:00:55 2018 +0200

    [tests] Set XamarinMacFrameworkRoot as an environment variable when running MSBuild tests.

    Set XamarinMacFrameworkRoot as an environment variable when running MSBuild
    tests, because we have command-line tools that needs it (bgen), and only
    passing it as a MSBuild parameter doesn't reach the environment (and any
    subprocesses).

commit 06d74108af2529f878bcb036d3aa006d481a4643
Author: Rolf Bjarne Kvinge <rolf@xamarin.com>
Date:   Fri Jul 27 17:40:29 2018 +0200

    Remove debug spew.

commit 50e05547aace7348dcd3c10bfbb379936f026506
Author: Rolf Bjarne Kvinge <rolf@xamarin.com>
Date:   Fri Jul 27 17:40:29 2018 +0200

    [xharness] Process Import elements, but don't add LogicalName to them.

commit afcad3b4baa27df3dc5fba67bca1576ee8285e2f
Author: Rolf Bjarne Kvinge <rolf@xamarin.com>
Date:   Fri Jul 27 11:41:23 2018 +0200

    [xharness] Set the right variable to point msbuild to our locally built xbuild targets.

commit 19d9a64d02c35ab84792b52ef81893f37e4abea4
Author: Rolf Bjarne Kvinge <rolf@xamarin.com>
Date:   Fri Jul 27 11:40:53 2018 +0200

    [xharness] Don't add LogicalName beneath Import elements, it doesn't work with MSBuild.

commit 516aab9143ce63c860bda0db772ca1179858827d
Merge: 16e512af 9e31d07e
Author: Rolf Bjarne Kvinge <rolf@xamarin.com>
Date:   Fri Jul 27 09:43:14 2018 +0200

    Merge remote-tracking branch 'origin/master' into msbuild-port

commit 16e512af5dbe4465f4d93cb5bea7d5e22f7a19c1
Author: Ankit <radical@gmail.com>
Date:   Mon May 21 19:42:30 2018 -0400

    Revert "[msbuild] Add forward compatibility with symlinks support (#648)"

    This can be reverted as we have now moved to msbuild assemblies, and
    they already have this property.

    This reverts commit d45f52f1c1101d5821e00797ba30d21bcef8bc32.

commit 526f009e6413f9e3146a8b87941864fc481d0e21
Author: Ankit <radical@gmail.com>
Date:   Mon May 21 16:13:11 2018 -0400

    [tests] Fix Xamarin.iOS.Tasks.TargetTests.GenerateBundleName_ExecutableProject

    msbuild has the path in it's original form (with windows slashes).

    ```
     Test Failure : Xamarin.iOS.Tasks.TargetTests.GenerateBundleName_ExecutableProject
         #3
      String lengths are both 42. Strings differ at index 3.
      Expected: "bin/iPhoneSimulator/Debug/MySingleView.app"
      But was:  "bin\\iPhoneSimulator\\Debug\\MySingleView.app"
      --------------^

    at Xamarin.iOS.Tasks.TargetTests.GenerateBundleName_ExecutableProject () [0x00054] in /Users/ankit/dev/xamarin-macios/msbuild/tests/Xamarin.iOS.Tasks.Tests/TargetTests/TargetTests.cs:394
    ```

commit b578593a15a9e49fe79f6b37d91b68ef5b57e8cf
Author: Ankit <radical@gmail.com>
Date:   Tue May 22 14:17:31 2018 -0400

    [tests] Remove TI.UnifiedTestConfig.DiagnosticMSBuild

    .. as we always build with diagnostic verbosity now. And remove the
    parameter from `TI.BuildProject(..)`.

commit 6278f108cfd1c1cd7b1d74319b55cfdf56801960
Author: Ankit <radical@gmail.com>
Date:   Fri May 18 18:29:10 2018 -0400

    [tests] Remove `bool useMSBuild` arg from ProjectTestHelpers

    .. as we always use msbuild now.

commit 8f0df143a12b84d04a9326e6c8e5770c7de4498d
Author: Ankit <radical@gmail.com>
Date:   Fri May 18 18:23:29 2018 -0400

    [tests] Remove project path at the end of errors/warnings before comparing

    - msbuild adds project path at the end of errors/warnings, which xbuild didn't
    do. This caused two tests to fail:

    	Xamarin.MMP.Tests.MMPTests.MM0132("inline-runtime-arch")
    	Xamarin.MMP.Tests.MMPTests.MM0132("foo")

commit 26abe1badc06a58794c47a83aca2be996940719a
Author: Ankit <radical@gmail.com>
Date:   Thu May 17 17:38:11 2018 -0400

    [tests] Fix tests that depend on tool output

    Lot of tests depend on comparing text in tool output. In xbuild, this
    was logged with `MessageImportance.Normal` but in msbuild the default is
    `MessageImportance.Low`. So, now the tool output doesn't show up in the
    normal verbosity log, causing the build to fail.

    Due to the number of tests depending on this, the default is changed to
    `diagnosticMSBuild = true`.

    A better way would probably (future) be to use a custom logger and get the output
    from the logging events.

commit 6fc89ab660750261bb785185557c3a45e6ee4a76
Author: Ankit <radical@gmail.com>
Date:   Thu May 17 16:12:38 2018 -0400

    [tests] msbuild-mac Fix tests depending on msbuild specific strings

    	Xamarin.MMP.Tests.MMPTests.BuildingSameBindingProject_TwoTimes_ShallNotInvokeMMPTwoTimes
    	Xamarin.MMP.Tests.MMPTests.BuildingSameProject_TwoTimes_ShallNotInvokeMMPTwoTimes

commit 9e53fd5345037c2f25eeb244b603d3a2f1844b49
Author: Ankit <radical@gmail.com>
Date:   Thu May 17 15:23:39 2018 -0400

    [tests] Xamarin.iOS.Tasks.TargetTests.RebuildExecutable_TouchLibraryDll

    msbuild just copies the output assembly from obj to bin. So, the test
    needs to `touch` the file in `obj` to trigger a rebuild.

commit b883c4fe42bb5820b6496f7078a54ef46c416630
Author: Ankit <radical@gmail.com>
Date:   Mon May 21 18:54:57 2018 -0400

    [tests] Don't use WriteLine in TestHelpers.Loggers as msbuild adds that

    .. itself.

commit 2805beaf63ef445d5657ffd50f8342a397b1cf5f
Author: Ankit <radical@gmail.com>
Date:   Mon May 21 18:53:24 2018 -0400

    [tests] Ensure that the correct msbuild.dll.config gets picked up

    .. by setting `MSBUILD_EXE_PATH` to the corresponding `MSBuild.dll`.

commit 18f71688456f7ff9d2d9b2f88d55575e8f385550
Author: Ankit <radical@gmail.com>
Date:   Mon May 21 18:42:37 2018 -0400

    [tests] Fix DetectAppManifest_ExecutableProject_NoPList

    `ProjectInstance.GetPropertyValue` returns empty string if the property
    doesn't exist.

    https://docs.microsoft.com/en-us/dotnet/api/microsoft.build.execution.projectinstance.getpropertyvalue?view=netframework-4.7.2#Microsoft_Build_Execution_ProjectInstance_GetPropertyValue_System_String_

commit a5670f270775459131a9a7099bd921d3457dcf84
Author: Ankit <radical@gmail.com>
Date:   Thu May 17 13:43:11 2018 -0400

    [msbuild] Port the tasks and tests to use new msbuild API

    Mono's msbuild does not have implementation assemblies for the older
    APIs (think `Microsoft.Build.Engine`), and so as part of the port to
    msbuild we switch over to using the newer APIs.

    With this commit, we are buildable again (with lots of test failures!).

commit 256035e11dbb02cd8d149fb142c06db22fd5158b
Author: Ankit <radical@gmail.com>
Date:   Wed May 9 17:50:22 2018 -0400

    [msbuild] Update xbuild assembly references to msbuild ones

    .. and switch from v4.0 to the new .Core assemblies.

commit c7b051436fac0e1df362140ae14d29ca54e3f934
Author: Ankit <radical@gmail.com>
Date:   Wed May 9 17:00:38 2018 -0400

    [msbuild] Replace all invocations of xbuild with msbuild

    - And map xbuild properties to msbuild ones for fallback paths

    `XBUILD_FRAMEWORK_FOLDERS_PATH -> TargetFrameworkFallbackSearchPaths`

    `MSBuildExtensionsPath -> MSBuildExtensionsPathFallbackPathsOverride`

    Note:
    Earlier with xbuild, the order of lookup for (example)
    `MSBuildExtensionsPath` was:

    	1. The value of $(MSBuildExtensionsPath), which we were setting to
    	the in-tree path

    	2. /Library/Frameworks/Mono.framework/External/xbuild on osx

    	3. $prefix/lib/mono/xbuild (default location)

    And with the above changes, it will be:

    	1. The value of $(MSBuildExtensionsPath), which we are no longer
    	setting, so the default path : $prefix/lib/mono/xbuild

    	2. The in-tree path, via $(MSBuildExtensionsPathFallbackPathsOverride)

    	3. /Library/Frameworks/Mono.framework/External/xbuild on osx

    Since, XI/XM targets are used via fallback path
    `/Library/Frameworks/Mono.framework/External/xbuild`, the default
    location doesn't matter. And the order of the remaining two remains the
    same.

    The same thing applies to the target frameworks also.
@fatfatson
Copy link

fatfatson commented Jan 28, 2019

but what about if I need the ParameterInfo??

still has problem in xamarin.iOS :

Xamarin.iOS
Version: 12.2.1.13 (Visual Studio Community)
Hash: a4332c9
Branch: d15-9
Build date: 2019-01-11 13:08:09-0500

MTOUCH : error MT2102: Error processing the method 'System.String ILRuntime.Reflection.ILRuntimeParameterInfo::get_Name()' in the assembly 'mb.iOS.exe': An item with the same key has already been added. Key: System.String System.Reflection.ParameterInfo::get_Name()

@xamarin xamarin locked as resolved and limited conversation to collaborators May 4, 2022
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
bug If an issue is a bug or a pull request a bug fix iOS Issues affecting Xamarin.iOS
Projects
None yet
Development

No branches or pull requests

3 participants