diff --git a/msbuild/tests/Issue3199/AppDelegate.cs b/msbuild/tests/Issue3199/AppDelegate.cs
new file mode 100644
index 000000000000..d8f6d44278c5
--- /dev/null
+++ b/msbuild/tests/Issue3199/AppDelegate.cs
@@ -0,0 +1,56 @@
+using Foundation;
+using UIKit;
+
+namespace Issue3199 {
+ // The UIApplicationDelegate for the application. This class is responsible for launching the
+ // User Interface of the application, as well as listening (and optionally responding) to application events from iOS.
+ [Register ("AppDelegate")]
+ public class AppDelegate : UIApplicationDelegate {
+ // class-level declarations
+
+ public override UIWindow Window {
+ get;
+ set;
+ }
+
+ public override bool FinishedLaunching (UIApplication application, NSDictionary launchOptions)
+ {
+ // Override point for customization after application launch.
+ // If not required for your application you can safely delete this method
+
+ return true;
+ }
+
+ public override void OnResignActivation (UIApplication application)
+ {
+ // Invoked when the application is about to move from active to inactive state.
+ // This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message)
+ // or when the user quits the application and it begins the transition to the background state.
+ // Games should use this method to pause the game.
+ }
+
+ public override void DidEnterBackground (UIApplication application)
+ {
+ // Use this method to release shared resources, save user data, invalidate timers and store the application state.
+ // If your application supports background exection this method is called instead of WillTerminate when the user quits.
+ }
+
+ public override void WillEnterForeground (UIApplication application)
+ {
+ // Called as part of the transiton from background to active state.
+ // Here you can undo many of the changes made on entering the background.
+ }
+
+ public override void OnActivated (UIApplication application)
+ {
+ // Restart any tasks that were paused (or not yet started) while the application was inactive.
+ // If the application was previously in the background, optionally refresh the user interface.
+ }
+
+ public override void WillTerminate (UIApplication application)
+ {
+ // Called when the application is about to terminate. Save data, if needed. See also DidEnterBackground.
+ }
+ }
+}
+
diff --git a/msbuild/tests/Issue3199/Assets.xcassets/AppIcon.appiconset/Contents.json b/msbuild/tests/Issue3199/Assets.xcassets/AppIcon.appiconset/Contents.json
new file mode 100644
index 000000000000..64d0e3ddf877
--- /dev/null
+++ b/msbuild/tests/Issue3199/Assets.xcassets/AppIcon.appiconset/Contents.json
@@ -0,0 +1,202 @@
+{
+ "images" : [
+ {
+ "idiom" : "iphone",
+ "size" : "20x20",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "iphone",
+ "size" : "20x20",
+ "scale" : "3x"
+ },
+ {
+ "idiom" : "iphone",
+ "size" : "29x29",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "iphone",
+ "size" : "29x29",
+ "scale" : "3x"
+ },
+ {
+ "idiom" : "iphone",
+ "size" : "40x40",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "iphone",
+ "size" : "40x40",
+ "scale" : "3x"
+ },
+ {
+ "idiom" : "iphone",
+ "size" : "60x60",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "iphone",
+ "size" : "60x60",
+ "scale" : "3x"
+ },
+ {
+ "idiom" : "ipad",
+ "size" : "20x20",
+ "scale" : "1x"
+ },
+ {
+ "idiom" : "ipad",
+ "size" : "20x20",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "ipad",
+ "size" : "29x29",
+ "scale" : "1x"
+ },
+ {
+ "idiom" : "ipad",
+ "size" : "29x29",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "ipad",
+ "size" : "40x40",
+ "scale" : "1x"
+ },
+ {
+ "idiom" : "ipad",
+ "size" : "40x40",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "ipad",
+ "size" : "76x76",
+ "scale" : "1x"
+ },
+ {
+ "idiom" : "ipad",
+ "size" : "76x76",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "ipad",
+ "size" : "83.5x83.5",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "ios-marketing",
+ "size" : "1024x1024",
+ "scale" : "1x"
+ },
+ {
+ "size" : "24x24",
+ "idiom" : "watch",
+ "scale" : "2x",
+ "role" : "notificationCenter",
+ "subtype" : "38mm"
+ },
+ {
+ "size" : "27.5x27.5",
+ "idiom" : "watch",
+ "scale" : "2x",
+ "role" : "notificationCenter",
+ "subtype" : "42mm"
+ },
+ {
+ "size" : "29x29",
+ "idiom" : "watch",
+ "role" : "companionSettings",
+ "scale" : "2x"
+ },
+ {
+ "size" : "29x29",
+ "idiom" : "watch",
+ "role" : "companionSettings",
+ "scale" : "3x"
+ },
+ {
+ "size" : "40x40",
+ "idiom" : "watch",
+ "scale" : "2x",
+ "role" : "appLauncher",
+ "subtype" : "38mm"
+ },
+ {
+ "size" : "44x44",
+ "idiom" : "watch",
+ "scale" : "2x",
+ "role" : "longLook",
+ "subtype" : "42mm"
+ },
+ {
+ "size" : "86x86",
+ "idiom" : "watch",
+ "scale" : "2x",
+ "role" : "quickLook",
+ "subtype" : "38mm"
+ },
+ {
+ "size" : "98x98",
+ "idiom" : "watch",
+ "scale" : "2x",
+ "role" : "quickLook",
+ "subtype" : "42mm"
+ },
+ {
+ "idiom" : "mac",
+ "size" : "16x16",
+ "scale" : "1x"
+ },
+ {
+ "idiom" : "mac",
+ "size" : "16x16",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "mac",
+ "size" : "32x32",
+ "scale" : "1x"
+ },
+ {
+ "idiom" : "mac",
+ "size" : "32x32",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "mac",
+ "size" : "128x128",
+ "scale" : "1x"
+ },
+ {
+ "idiom" : "mac",
+ "size" : "128x128",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "mac",
+ "size" : "256x256",
+ "scale" : "1x"
+ },
+ {
+ "idiom" : "mac",
+ "size" : "256x256",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "mac",
+ "size" : "512x512",
+ "scale" : "1x"
+ },
+ {
+ "idiom" : "mac",
+ "size" : "512x512",
+ "scale" : "2x"
+ }
+ ],
+ "info" : {
+ "version" : 1,
+ "author" : "xcode"
+ }
+}
diff --git a/msbuild/tests/Issue3199/Assets.xcassets/Contents.json b/msbuild/tests/Issue3199/Assets.xcassets/Contents.json
new file mode 100644
index 000000000000..4caf392f92c9
--- /dev/null
+++ b/msbuild/tests/Issue3199/Assets.xcassets/Contents.json
@@ -0,0 +1,6 @@
+{
+ "info" : {
+ "version" : 1,
+ "author" : "xcode"
+ }
+}
\ No newline at end of file
diff --git a/msbuild/tests/Issue3199/Entitlements.plist b/msbuild/tests/Issue3199/Entitlements.plist
new file mode 100644
index 000000000000..9ae599370b42
--- /dev/null
+++ b/msbuild/tests/Issue3199/Entitlements.plist
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/msbuild/tests/Issue3199/Info.plist b/msbuild/tests/Issue3199/Info.plist
new file mode 100644
index 000000000000..4028be8497f9
--- /dev/null
+++ b/msbuild/tests/Issue3199/Info.plist
@@ -0,0 +1,40 @@
+
+
+
+
+ CFBundleName
+ Issue3199
+ CFBundleIdentifier
+ com.xamarin.Issue3199
+ CFBundleShortVersionString
+ 1.0
+ CFBundleVersion
+ 1.0
+ LSRequiresIPhoneOS
+
+ MinimumOSVersion
+ 11.2
+ UIDeviceFamily
+
+ 1
+ 2
+
+ UILaunchStoryboardName
+ LaunchScreen
+ UIMainStoryboardFile
+ Main
+ UIRequiredDeviceCapabilities
+
+ armv7
+
+ UISupportedInterfaceOrientations
+
+ UIInterfaceOrientationPortrait
+ UIInterfaceOrientationPortraitUpsideDown
+ UIInterfaceOrientationLandscapeLeft
+ UIInterfaceOrientationLandscapeRight
+
+ XSAppIconAssets
+ Assets.xcassets/AppIcon.appiconset
+
+
diff --git a/msbuild/tests/Issue3199/Issue3199.csproj b/msbuild/tests/Issue3199/Issue3199.csproj
new file mode 100644
index 000000000000..7b4fa24c4669
--- /dev/null
+++ b/msbuild/tests/Issue3199/Issue3199.csproj
@@ -0,0 +1,116 @@
+
+
+
+ Debug
+ iPhoneSimulator
+ {11DA3036-90DE-41FE-B5CF-0A98AFB54527}
+ {FEACFBD2-3405-455C-9665-78FE426C6842};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}
+ Exe
+ Issue3199
+ Issue3199
+ Resources
+
+
+ true
+ full
+ false
+ bin\iPhoneSimulator\Debug
+ DEBUG;ENABLE_TEST_CLOUD;
+ prompt
+ 4
+ iPhone Developer
+ true
+ true
+ true
+ true
+ 18711
+ None
+ x86_64
+ HttpClientHandler
+ x86
+
+
+ pdbonly
+ true
+ bin\iPhone\Release
+ prompt
+ 4
+ iPhone Developer
+ true
+ Entitlements.plist
+ SdkOnly
+ ARM64
+ HttpClientHandler
+ x86
+
+
+ pdbonly
+ true
+ bin\iPhoneSimulator\Release
+ prompt
+ 4
+ iPhone Developer
+ true
+ None
+ x86_64
+ HttpClientHandler
+ x86
+
+
+ true
+ full
+ false
+ bin\iPhone\Debug
+ DEBUG;ENABLE_TEST_CLOUD;
+ prompt
+ 4
+ iPhone Developer
+ true
+ true
+ true
+ true
+ true
+ true
+ Entitlements.plist
+ 21680
+ SdkOnly
+ ARM64
+ HttpClientHandler
+ x86
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ViewController.cs
+
+
+
+
+ 4.4.0
+
+
+
+
\ No newline at end of file
diff --git a/msbuild/tests/Issue3199/Issue3199.sln b/msbuild/tests/Issue3199/Issue3199.sln
new file mode 100644
index 000000000000..7ab9309ed697
--- /dev/null
+++ b/msbuild/tests/Issue3199/Issue3199.sln
@@ -0,0 +1,23 @@
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio 2012
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Issue3199", "Issue3199.csproj", "{11DA3036-90DE-41FE-B5CF-0A98AFB54527}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|iPhoneSimulator = Debug|iPhoneSimulator
+ Release|iPhone = Release|iPhone
+ Release|iPhoneSimulator = Release|iPhoneSimulator
+ Debug|iPhone = Debug|iPhone
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {11DA3036-90DE-41FE-B5CF-0A98AFB54527}.Debug|iPhoneSimulator.ActiveCfg = Debug|iPhoneSimulator
+ {11DA3036-90DE-41FE-B5CF-0A98AFB54527}.Debug|iPhoneSimulator.Build.0 = Debug|iPhoneSimulator
+ {11DA3036-90DE-41FE-B5CF-0A98AFB54527}.Release|iPhone.ActiveCfg = Release|iPhone
+ {11DA3036-90DE-41FE-B5CF-0A98AFB54527}.Release|iPhone.Build.0 = Release|iPhone
+ {11DA3036-90DE-41FE-B5CF-0A98AFB54527}.Release|iPhoneSimulator.ActiveCfg = Release|iPhoneSimulator
+ {11DA3036-90DE-41FE-B5CF-0A98AFB54527}.Release|iPhoneSimulator.Build.0 = Release|iPhoneSimulator
+ {11DA3036-90DE-41FE-B5CF-0A98AFB54527}.Debug|iPhone.ActiveCfg = Debug|iPhone
+ {11DA3036-90DE-41FE-B5CF-0A98AFB54527}.Debug|iPhone.Build.0 = Debug|iPhone
+ EndGlobalSection
+EndGlobal
diff --git a/msbuild/tests/Issue3199/LaunchScreen.storyboard b/msbuild/tests/Issue3199/LaunchScreen.storyboard
new file mode 100644
index 000000000000..7981a14b773c
--- /dev/null
+++ b/msbuild/tests/Issue3199/LaunchScreen.storyboard
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/msbuild/tests/Issue3199/Main.cs b/msbuild/tests/Issue3199/Main.cs
new file mode 100644
index 000000000000..428bdb9c3f3d
--- /dev/null
+++ b/msbuild/tests/Issue3199/Main.cs
@@ -0,0 +1,13 @@
+using UIKit;
+
+namespace Issue3199 {
+ public class Application {
+ // This is the main entry point of the application.
+ static void Main (string [] args)
+ {
+ // if you want to use a different Application Delegate class from "AppDelegate"
+ // you can specify it here.
+ UIApplication.Main (args, null, "AppDelegate");
+ }
+ }
+}
diff --git a/msbuild/tests/Issue3199/Main.storyboard b/msbuild/tests/Issue3199/Main.storyboard
new file mode 100644
index 000000000000..34c4bcf3d2f7
--- /dev/null
+++ b/msbuild/tests/Issue3199/Main.storyboard
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/msbuild/tests/Issue3199/ViewController.cs b/msbuild/tests/Issue3199/ViewController.cs
new file mode 100644
index 000000000000..d5015dcfe041
--- /dev/null
+++ b/msbuild/tests/Issue3199/ViewController.cs
@@ -0,0 +1,29 @@
+using System;
+
+using UIKit;
+using System.Runtime.CompilerServices;
+using System.Collections.Generic;
+
+namespace Issue3199 {
+ public partial class ViewController : UIViewController {
+ protected ViewController (IntPtr handle) : base (handle)
+ {
+ // Note: this .ctor should not contain any initialization logic.
+ }
+
+ public override void ViewDidLoad ()
+ {
+ base.ViewDidLoad ();
+ // Perform any additional setup after loading the view, typically from a nib.
+
+ var dt = new KeyValuePair [2];
+ ref byte asRefByte = ref Unsafe.As, byte> (ref dt [0]);
+ }
+
+ public override void DidReceiveMemoryWarning ()
+ {
+ base.DidReceiveMemoryWarning ();
+ // Release any cached data, images, etc that aren't in use.
+ }
+ }
+}
diff --git a/msbuild/tests/Issue3199/ViewController.designer.cs b/msbuild/tests/Issue3199/ViewController.designer.cs
new file mode 100644
index 000000000000..19ae38f5692c
--- /dev/null
+++ b/msbuild/tests/Issue3199/ViewController.designer.cs
@@ -0,0 +1,15 @@
+//
+// This file has been generated automatically by MonoDevelop to store outlets and
+// actions made in the Xcode designer. If it is removed, they will be lost.
+// Manual changes to this file may not be handled correctly.
+//
+using Foundation;
+
+namespace Issue3199 {
+ [Register ("ViewController")]
+ partial class ViewController {
+ void ReleaseDesignerOutlets ()
+ {
+ }
+ }
+}
diff --git a/msbuild/tests/Xamarin.iOS.Tasks.Tests/ProjectsTests/Issue3199.cs b/msbuild/tests/Xamarin.iOS.Tasks.Tests/ProjectsTests/Issue3199.cs
new file mode 100644
index 000000000000..51812e57c73d
--- /dev/null
+++ b/msbuild/tests/Xamarin.iOS.Tasks.Tests/ProjectsTests/Issue3199.cs
@@ -0,0 +1,25 @@
+using System;
+using System.IO;
+using System.Linq;
+using System.Collections;
+
+using Microsoft.Build.Evaluation;
+
+using NUnit.Framework;
+
+namespace Xamarin.iOS.Tasks
+{
+ [TestFixture]
+ public class Issue3199 : ProjectTest
+ {
+ public Issue3199 () : base ("iPhone")
+ {
+ }
+
+ [Test]
+ public void BuildTest ()
+ {
+ BuildProject ("Issue3199", "iPhone", "Debug");
+ }
+ }
+}
diff --git a/msbuild/tests/Xamarin.iOS.Tasks.Tests/Xamarin.iOS.Tasks.Tests.csproj b/msbuild/tests/Xamarin.iOS.Tasks.Tests/Xamarin.iOS.Tasks.Tests.csproj
index f2868ba73480..89a210c2229b 100644
--- a/msbuild/tests/Xamarin.iOS.Tasks.Tests/Xamarin.iOS.Tasks.Tests.csproj
+++ b/msbuild/tests/Xamarin.iOS.Tasks.Tests/Xamarin.iOS.Tasks.Tests.csproj
@@ -110,6 +110,7 @@
+
diff --git a/tests/common/mac/TestProjects/Issue3199/AppDelegate.cs b/tests/common/mac/TestProjects/Issue3199/AppDelegate.cs
new file mode 100644
index 000000000000..326ab34fda4d
--- /dev/null
+++ b/tests/common/mac/TestProjects/Issue3199/AppDelegate.cs
@@ -0,0 +1,21 @@
+using AppKit;
+using Foundation;
+
+namespace MacIssue3199 {
+ [Register ("AppDelegate")]
+ public class AppDelegate : NSApplicationDelegate {
+ public AppDelegate ()
+ {
+ }
+
+ public override void DidFinishLaunching (NSNotification notification)
+ {
+ // Insert code here to initialize your application
+ }
+
+ public override void WillTerminate (NSNotification notification)
+ {
+ // Insert code here to tear down your application
+ }
+ }
+}
diff --git a/tests/common/mac/TestProjects/Issue3199/Assets.xcassets/AppIcon.appiconset/AppIcon-128.png b/tests/common/mac/TestProjects/Issue3199/Assets.xcassets/AppIcon.appiconset/AppIcon-128.png
new file mode 100644
index 000000000000..d0b5a8098ec9
Binary files /dev/null and b/tests/common/mac/TestProjects/Issue3199/Assets.xcassets/AppIcon.appiconset/AppIcon-128.png differ
diff --git a/tests/common/mac/TestProjects/Issue3199/Assets.xcassets/AppIcon.appiconset/AppIcon-128@2x.png b/tests/common/mac/TestProjects/Issue3199/Assets.xcassets/AppIcon.appiconset/AppIcon-128@2x.png
new file mode 100644
index 000000000000..f4c8d29047b8
Binary files /dev/null and b/tests/common/mac/TestProjects/Issue3199/Assets.xcassets/AppIcon.appiconset/AppIcon-128@2x.png differ
diff --git a/tests/common/mac/TestProjects/Issue3199/Assets.xcassets/AppIcon.appiconset/AppIcon-16.png b/tests/common/mac/TestProjects/Issue3199/Assets.xcassets/AppIcon.appiconset/AppIcon-16.png
new file mode 100644
index 000000000000..ebb5a0fe4e7e
Binary files /dev/null and b/tests/common/mac/TestProjects/Issue3199/Assets.xcassets/AppIcon.appiconset/AppIcon-16.png differ
diff --git a/tests/common/mac/TestProjects/Issue3199/Assets.xcassets/AppIcon.appiconset/AppIcon-16@2x.png b/tests/common/mac/TestProjects/Issue3199/Assets.xcassets/AppIcon.appiconset/AppIcon-16@2x.png
new file mode 100644
index 000000000000..0986d31bebb1
Binary files /dev/null and b/tests/common/mac/TestProjects/Issue3199/Assets.xcassets/AppIcon.appiconset/AppIcon-16@2x.png differ
diff --git a/tests/common/mac/TestProjects/Issue3199/Assets.xcassets/AppIcon.appiconset/AppIcon-256.png b/tests/common/mac/TestProjects/Issue3199/Assets.xcassets/AppIcon.appiconset/AppIcon-256.png
new file mode 100644
index 000000000000..f4c8d29047b8
Binary files /dev/null and b/tests/common/mac/TestProjects/Issue3199/Assets.xcassets/AppIcon.appiconset/AppIcon-256.png differ
diff --git a/tests/common/mac/TestProjects/Issue3199/Assets.xcassets/AppIcon.appiconset/AppIcon-256@2x.png b/tests/common/mac/TestProjects/Issue3199/Assets.xcassets/AppIcon.appiconset/AppIcon-256@2x.png
new file mode 100644
index 000000000000..a142c83fb1c3
Binary files /dev/null and b/tests/common/mac/TestProjects/Issue3199/Assets.xcassets/AppIcon.appiconset/AppIcon-256@2x.png differ
diff --git a/tests/common/mac/TestProjects/Issue3199/Assets.xcassets/AppIcon.appiconset/AppIcon-32.png b/tests/common/mac/TestProjects/Issue3199/Assets.xcassets/AppIcon.appiconset/AppIcon-32.png
new file mode 100644
index 000000000000..0986d31bebb1
Binary files /dev/null and b/tests/common/mac/TestProjects/Issue3199/Assets.xcassets/AppIcon.appiconset/AppIcon-32.png differ
diff --git a/tests/common/mac/TestProjects/Issue3199/Assets.xcassets/AppIcon.appiconset/AppIcon-32@2x.png b/tests/common/mac/TestProjects/Issue3199/Assets.xcassets/AppIcon.appiconset/AppIcon-32@2x.png
new file mode 100644
index 000000000000..412d6ca9b42c
Binary files /dev/null and b/tests/common/mac/TestProjects/Issue3199/Assets.xcassets/AppIcon.appiconset/AppIcon-32@2x.png differ
diff --git a/tests/common/mac/TestProjects/Issue3199/Assets.xcassets/AppIcon.appiconset/AppIcon-512.png b/tests/common/mac/TestProjects/Issue3199/Assets.xcassets/AppIcon.appiconset/AppIcon-512.png
new file mode 100644
index 000000000000..a142c83fb1c3
Binary files /dev/null and b/tests/common/mac/TestProjects/Issue3199/Assets.xcassets/AppIcon.appiconset/AppIcon-512.png differ
diff --git a/tests/common/mac/TestProjects/Issue3199/Assets.xcassets/AppIcon.appiconset/AppIcon-512@2x.png b/tests/common/mac/TestProjects/Issue3199/Assets.xcassets/AppIcon.appiconset/AppIcon-512@2x.png
new file mode 100644
index 000000000000..e99022ae84d0
Binary files /dev/null and b/tests/common/mac/TestProjects/Issue3199/Assets.xcassets/AppIcon.appiconset/AppIcon-512@2x.png differ
diff --git a/tests/common/mac/TestProjects/Issue3199/Assets.xcassets/AppIcon.appiconset/Contents.json b/tests/common/mac/TestProjects/Issue3199/Assets.xcassets/AppIcon.appiconset/Contents.json
new file mode 100644
index 000000000000..6b28545295b1
--- /dev/null
+++ b/tests/common/mac/TestProjects/Issue3199/Assets.xcassets/AppIcon.appiconset/Contents.json
@@ -0,0 +1,68 @@
+{
+ "images": [
+ {
+ "filename": "AppIcon-16.png",
+ "size": "16x16",
+ "scale": "1x",
+ "idiom": "mac"
+ },
+ {
+ "filename": "AppIcon-16@2x.png",
+ "size": "16x16",
+ "scale": "2x",
+ "idiom": "mac"
+ },
+ {
+ "filename": "AppIcon-32.png",
+ "size": "32x32",
+ "scale": "1x",
+ "idiom": "mac"
+ },
+ {
+ "filename": "AppIcon-32@2x.png",
+ "size": "32x32",
+ "scale": "2x",
+ "idiom": "mac"
+ },
+ {
+ "filename": "AppIcon-128.png",
+ "size": "128x128",
+ "scale": "1x",
+ "idiom": "mac"
+ },
+ {
+ "filename": "AppIcon-128@2x.png",
+ "size": "128x128",
+ "scale": "2x",
+ "idiom": "mac"
+ },
+ {
+ "filename": "AppIcon-256.png",
+ "size": "256x256",
+ "scale": "1x",
+ "idiom": "mac"
+ },
+ {
+ "filename": "AppIcon-256@2x.png",
+ "size": "256x256",
+ "scale": "2x",
+ "idiom": "mac"
+ },
+ {
+ "filename": "AppIcon-512.png",
+ "size": "512x512",
+ "scale": "1x",
+ "idiom": "mac"
+ },
+ {
+ "filename": "AppIcon-512@2x.png",
+ "size": "512x512",
+ "scale": "2x",
+ "idiom": "mac"
+ }
+ ],
+ "info": {
+ "version": 1,
+ "author": "xcode"
+ }
+}
\ No newline at end of file
diff --git a/tests/common/mac/TestProjects/Issue3199/Assets.xcassets/Contents.json b/tests/common/mac/TestProjects/Issue3199/Assets.xcassets/Contents.json
new file mode 100644
index 000000000000..4caf392f92c9
--- /dev/null
+++ b/tests/common/mac/TestProjects/Issue3199/Assets.xcassets/Contents.json
@@ -0,0 +1,6 @@
+{
+ "info" : {
+ "version" : 1,
+ "author" : "xcode"
+ }
+}
\ No newline at end of file
diff --git a/tests/common/mac/TestProjects/Issue3199/Entitlements.plist b/tests/common/mac/TestProjects/Issue3199/Entitlements.plist
new file mode 100644
index 000000000000..9ae599370b42
--- /dev/null
+++ b/tests/common/mac/TestProjects/Issue3199/Entitlements.plist
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/tests/common/mac/TestProjects/Issue3199/Info.plist b/tests/common/mac/TestProjects/Issue3199/Info.plist
new file mode 100644
index 000000000000..c4e0cc18ec7b
--- /dev/null
+++ b/tests/common/mac/TestProjects/Issue3199/Info.plist
@@ -0,0 +1,33 @@
+
+
+
+
+ CFBundleName
+ MacIssue3199
+ CFBundleIdentifier
+ com.xamarin.MacIssue3199
+ CFBundleShortVersionString
+ 1.0
+ CFBundleVersion
+ 1
+ LSMinimumSystemVersion
+ 10.13
+ CFBundleDevelopmentRegion
+ en
+ CFBundleInfoDictionaryVersion
+ 6.0
+ CFBundlePackageType
+ APPL
+ CFBundleSignature
+ ????
+ NSHumanReadableCopyright
+ Microsoft
+ NSPrincipalClass
+ NSApplication
+ NSMainStoryboardFile
+ Main
+ XSAppIconAssets
+ Assets.xcassets/AppIcon.appiconset
+
+
+
diff --git a/tests/common/mac/TestProjects/Issue3199/Issue3199.csproj b/tests/common/mac/TestProjects/Issue3199/Issue3199.csproj
new file mode 100644
index 000000000000..1bd27c66a461
--- /dev/null
+++ b/tests/common/mac/TestProjects/Issue3199/Issue3199.csproj
@@ -0,0 +1,98 @@
+
+
+
+ Debug
+ iPhone
+ {6C015A27-FFA1-400A-9C5F-68A9FFB761BA}
+ {A3F8F2AB-B479-4A4A-A458-A89E7DC349F1};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}
+ Exe
+ Issue3199
+ Issue3199
+ v2.0
+ Xamarin.Mac
+ Resources
+
+
+ true
+ full
+ false
+ bin\Debug
+ DEBUG;
+ prompt
+ 4
+ false
+ Mac Developer
+ false
+ false
+ false
+ true
+ true
+ true
+
+
+
+ None
+ --aot:all
+
+
+ pdbonly
+ true
+ bin\Release
+
+ prompt
+ 4
+ false
+ true
+ false
+ true
+ true
+ true
+ SdkOnly
+
+
+ None
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ViewController.cs
+
+
+
+
+
+
+
+ 4.4.0
+
+
+
+
\ No newline at end of file
diff --git a/tests/common/mac/TestProjects/Issue3199/Issue3199.sln b/tests/common/mac/TestProjects/Issue3199/Issue3199.sln
new file mode 100644
index 000000000000..728f48e24d8a
--- /dev/null
+++ b/tests/common/mac/TestProjects/Issue3199/Issue3199.sln
@@ -0,0 +1,31 @@
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio 2012
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Issue3199", "Issue3199.csproj", "{6C015A27-FFA1-400A-9C5F-68A9FFB761BA}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|iPhoneSimulator = Debug|iPhoneSimulator
+ Release|iPhone = Release|iPhone
+ Release|iPhoneSimulator = Release|iPhoneSimulator
+ Debug|iPhone = Debug|iPhone
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {11DA3036-90DE-41FE-B5CF-0A98AFB54527}.Debug|iPhoneSimulator.ActiveCfg = Debug|iPhoneSimulator
+ {11DA3036-90DE-41FE-B5CF-0A98AFB54527}.Debug|iPhoneSimulator.Build.0 = Debug|iPhoneSimulator
+ {11DA3036-90DE-41FE-B5CF-0A98AFB54527}.Release|iPhone.ActiveCfg = Release|iPhone
+ {11DA3036-90DE-41FE-B5CF-0A98AFB54527}.Release|iPhone.Build.0 = Release|iPhone
+ {11DA3036-90DE-41FE-B5CF-0A98AFB54527}.Release|iPhoneSimulator.ActiveCfg = Release|iPhoneSimulator
+ {11DA3036-90DE-41FE-B5CF-0A98AFB54527}.Release|iPhoneSimulator.Build.0 = Release|iPhoneSimulator
+ {11DA3036-90DE-41FE-B5CF-0A98AFB54527}.Debug|iPhone.ActiveCfg = Debug|iPhone
+ {11DA3036-90DE-41FE-B5CF-0A98AFB54527}.Debug|iPhone.Build.0 = Debug|iPhone
+ {6C015A27-FFA1-400A-9C5F-68A9FFB761BA}.Debug|iPhoneSimulator.ActiveCfg = Debug|iPhone
+ {6C015A27-FFA1-400A-9C5F-68A9FFB761BA}.Debug|iPhoneSimulator.Build.0 = Debug|iPhone
+ {6C015A27-FFA1-400A-9C5F-68A9FFB761BA}.Release|iPhone.ActiveCfg = Release|iPhone
+ {6C015A27-FFA1-400A-9C5F-68A9FFB761BA}.Release|iPhone.Build.0 = Release|iPhone
+ {6C015A27-FFA1-400A-9C5F-68A9FFB761BA}.Release|iPhoneSimulator.ActiveCfg = Release|iPhone
+ {6C015A27-FFA1-400A-9C5F-68A9FFB761BA}.Release|iPhoneSimulator.Build.0 = Release|iPhone
+ {6C015A27-FFA1-400A-9C5F-68A9FFB761BA}.Debug|iPhone.ActiveCfg = Debug|iPhone
+ {6C015A27-FFA1-400A-9C5F-68A9FFB761BA}.Debug|iPhone.Build.0 = Debug|iPhone
+ EndGlobalSection
+EndGlobal
diff --git a/tests/common/mac/TestProjects/Issue3199/Main.cs b/tests/common/mac/TestProjects/Issue3199/Main.cs
new file mode 100644
index 000000000000..c70dfb2ee92f
--- /dev/null
+++ b/tests/common/mac/TestProjects/Issue3199/Main.cs
@@ -0,0 +1,11 @@
+using AppKit;
+
+namespace MacIssue3199 {
+ static class MainClass {
+ static void Main (string [] args)
+ {
+ NSApplication.Init ();
+ NSApplication.Main (args);
+ }
+ }
+}
diff --git a/tests/common/mac/TestProjects/Issue3199/Main.storyboard b/tests/common/mac/TestProjects/Issue3199/Main.storyboard
new file mode 100644
index 000000000000..9ab3aa7aa59d
--- /dev/null
+++ b/tests/common/mac/TestProjects/Issue3199/Main.storyboard
@@ -0,0 +1,681 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tests/common/mac/TestProjects/Issue3199/ViewController.cs b/tests/common/mac/TestProjects/Issue3199/ViewController.cs
new file mode 100644
index 000000000000..978a889c3a8d
--- /dev/null
+++ b/tests/common/mac/TestProjects/Issue3199/ViewController.cs
@@ -0,0 +1,31 @@
+using System;
+using System.Runtime.CompilerServices;
+using System.Collections.Generic;
+using AppKit;
+using Foundation;
+
+namespace MacIssue3199 {
+ public partial class ViewController : NSViewController {
+ public ViewController (IntPtr handle) : base (handle)
+ {
+ }
+
+ public override void ViewDidLoad ()
+ {
+ base.ViewDidLoad ();
+
+ var dt = new KeyValuePair [2];
+ ref byte asRefByte = ref Unsafe.As, byte> (ref dt [0]);
+ }
+
+ public override NSObject RepresentedObject {
+ get {
+ return base.RepresentedObject;
+ }
+ set {
+ base.RepresentedObject = value;
+ // Update the view, if already loaded.
+ }
+ }
+ }
+}
diff --git a/tests/common/mac/TestProjects/Issue3199/ViewController.designer.cs b/tests/common/mac/TestProjects/Issue3199/ViewController.designer.cs
new file mode 100644
index 000000000000..e57baa2fb3cc
--- /dev/null
+++ b/tests/common/mac/TestProjects/Issue3199/ViewController.designer.cs
@@ -0,0 +1,16 @@
+// WARNING
+//
+// This file has been generated automatically by Xamarin Studio to store outlets and
+// actions made in the UI designer. If it is removed, they will be lost.
+// Manual changes to this file may not be handled correctly.
+//
+using Foundation;
+
+namespace MacIssue3199 {
+ [Register ("ViewController")]
+ partial class ViewController {
+ void ReleaseDesignerOutlets ()
+ {
+ }
+ }
+}
diff --git a/tests/msbuild-mac/msbuild-mac.csproj b/tests/msbuild-mac/msbuild-mac.csproj
index 371921e92e68..b76494a2f5ea 100644
--- a/tests/msbuild-mac/msbuild-mac.csproj
+++ b/tests/msbuild-mac/msbuild-mac.csproj
@@ -65,6 +65,7 @@
Profile.cs
+
diff --git a/tests/msbuild-mac/src/Issue3199.cs b/tests/msbuild-mac/src/Issue3199.cs
new file mode 100644
index 000000000000..05b98aa61fbc
--- /dev/null
+++ b/tests/msbuild-mac/src/Issue3199.cs
@@ -0,0 +1,24 @@
+using System;
+using System.IO;
+using System.Text;
+
+using NUnit.Framework;
+
+namespace Xamarin.MMP.Tests
+{
+ [TestFixture]
+ public class Issue3199
+ {
+ public string TestProjectRoot => Path.Combine (TI.FindSourceDirectory (), "TestProjects");
+
+ [Test]
+ public void BuildTest ()
+ {
+ var projectName = "Issue3199";
+ var projectPath = Path.Combine (TestProjectRoot, projectName, $"{projectName}.csproj");
+
+ TI.CleanUnifiedProject (projectPath);
+ TI.BuildProject (projectPath, true);
+ }
+ }
+}