diff --git a/dotnet/Microsoft.MacCatalyst.Templates/maccatalyst/Main.cs b/dotnet/Microsoft.MacCatalyst.Templates/maccatalyst/Main.cs
deleted file mode 100644
index a623672341..0000000000
--- a/dotnet/Microsoft.MacCatalyst.Templates/maccatalyst/Main.cs
+++ /dev/null
@@ -1,13 +0,0 @@
-using UIKit;
-
-namespace MacCatalystApp1 {
- 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/dotnet/Microsoft.iOS.Templates/ios/Main.cs b/dotnet/Microsoft.iOS.Templates/ios/Main.cs
deleted file mode 100644
index aebf95d55d..0000000000
--- a/dotnet/Microsoft.iOS.Templates/ios/Main.cs
+++ /dev/null
@@ -1,13 +0,0 @@
-using UIKit;
-
-namespace iOSApp1 {
- 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/dotnet/Microsoft.macOS.Templates/macos/Main.cs b/dotnet/Microsoft.macOS.Templates/macos/Main.cs
deleted file mode 100644
index 9ab3adddce..0000000000
--- a/dotnet/Microsoft.macOS.Templates/macos/Main.cs
+++ /dev/null
@@ -1,11 +0,0 @@
-using AppKit;
-
-namespace macOSApp1 {
- static class Application {
- static void Main (string [] args)
- {
- NSApplication.Init ();
- NSApplication.Main (args);
- }
- }
-}
diff --git a/dotnet/Microsoft.tvOS.Templates/tvos/Main.cs b/dotnet/Microsoft.tvOS.Templates/tvos/Main.cs
deleted file mode 100644
index 1edc3a5a26..0000000000
--- a/dotnet/Microsoft.tvOS.Templates/tvos/Main.cs
+++ /dev/null
@@ -1,13 +0,0 @@
-using UIKit;
-
-namespace tvOSApp1 {
- 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/dotnet/Microsoft.MacCatalyst.Templates/maccatalyst/.template.config/template.json b/dotnet/Templates/Microsoft.MacCatalyst.Templates/maccatalyst/.template.config/template.json
similarity index 100%
rename from dotnet/Microsoft.MacCatalyst.Templates/maccatalyst/.template.config/template.json
rename to dotnet/Templates/Microsoft.MacCatalyst.Templates/maccatalyst/.template.config/template.json
diff --git a/dotnet/Microsoft.MacCatalyst.Templates/maccatalyst/AppDelegate.cs b/dotnet/Templates/Microsoft.MacCatalyst.Templates/maccatalyst/AppDelegate.cs
similarity index 100%
rename from dotnet/Microsoft.MacCatalyst.Templates/maccatalyst/AppDelegate.cs
rename to dotnet/Templates/Microsoft.MacCatalyst.Templates/maccatalyst/AppDelegate.cs
diff --git a/dotnet/Microsoft.MacCatalyst.Templates/maccatalyst/Assets.xcassets/AppIcon.appiconset/Contents.json b/dotnet/Templates/Microsoft.MacCatalyst.Templates/maccatalyst/Assets.xcassets/AppIcon.appiconset/Contents.json
similarity index 100%
rename from dotnet/Microsoft.MacCatalyst.Templates/maccatalyst/Assets.xcassets/AppIcon.appiconset/Contents.json
rename to dotnet/Templates/Microsoft.MacCatalyst.Templates/maccatalyst/Assets.xcassets/AppIcon.appiconset/Contents.json
diff --git a/dotnet/Microsoft.MacCatalyst.Templates/maccatalyst/Assets.xcassets/AppIcon.appiconset/Icon1024.png b/dotnet/Templates/Microsoft.MacCatalyst.Templates/maccatalyst/Assets.xcassets/AppIcon.appiconset/Icon1024.png
similarity index 100%
rename from dotnet/Microsoft.MacCatalyst.Templates/maccatalyst/Assets.xcassets/AppIcon.appiconset/Icon1024.png
rename to dotnet/Templates/Microsoft.MacCatalyst.Templates/maccatalyst/Assets.xcassets/AppIcon.appiconset/Icon1024.png
diff --git a/dotnet/Microsoft.MacCatalyst.Templates/maccatalyst/Assets.xcassets/AppIcon.appiconset/Icon128.png b/dotnet/Templates/Microsoft.MacCatalyst.Templates/maccatalyst/Assets.xcassets/AppIcon.appiconset/Icon128.png
similarity index 100%
rename from dotnet/Microsoft.MacCatalyst.Templates/maccatalyst/Assets.xcassets/AppIcon.appiconset/Icon128.png
rename to dotnet/Templates/Microsoft.MacCatalyst.Templates/maccatalyst/Assets.xcassets/AppIcon.appiconset/Icon128.png
diff --git a/dotnet/Microsoft.MacCatalyst.Templates/maccatalyst/Assets.xcassets/AppIcon.appiconset/Icon16.png b/dotnet/Templates/Microsoft.MacCatalyst.Templates/maccatalyst/Assets.xcassets/AppIcon.appiconset/Icon16.png
similarity index 100%
rename from dotnet/Microsoft.MacCatalyst.Templates/maccatalyst/Assets.xcassets/AppIcon.appiconset/Icon16.png
rename to dotnet/Templates/Microsoft.MacCatalyst.Templates/maccatalyst/Assets.xcassets/AppIcon.appiconset/Icon16.png
diff --git a/dotnet/Microsoft.MacCatalyst.Templates/maccatalyst/Assets.xcassets/AppIcon.appiconset/Icon256.png b/dotnet/Templates/Microsoft.MacCatalyst.Templates/maccatalyst/Assets.xcassets/AppIcon.appiconset/Icon256.png
similarity index 100%
rename from dotnet/Microsoft.MacCatalyst.Templates/maccatalyst/Assets.xcassets/AppIcon.appiconset/Icon256.png
rename to dotnet/Templates/Microsoft.MacCatalyst.Templates/maccatalyst/Assets.xcassets/AppIcon.appiconset/Icon256.png
diff --git a/dotnet/Microsoft.MacCatalyst.Templates/maccatalyst/Assets.xcassets/AppIcon.appiconset/Icon32.png b/dotnet/Templates/Microsoft.MacCatalyst.Templates/maccatalyst/Assets.xcassets/AppIcon.appiconset/Icon32.png
similarity index 100%
rename from dotnet/Microsoft.MacCatalyst.Templates/maccatalyst/Assets.xcassets/AppIcon.appiconset/Icon32.png
rename to dotnet/Templates/Microsoft.MacCatalyst.Templates/maccatalyst/Assets.xcassets/AppIcon.appiconset/Icon32.png
diff --git a/dotnet/Microsoft.MacCatalyst.Templates/maccatalyst/Assets.xcassets/AppIcon.appiconset/Icon512.png b/dotnet/Templates/Microsoft.MacCatalyst.Templates/maccatalyst/Assets.xcassets/AppIcon.appiconset/Icon512.png
similarity index 100%
rename from dotnet/Microsoft.MacCatalyst.Templates/maccatalyst/Assets.xcassets/AppIcon.appiconset/Icon512.png
rename to dotnet/Templates/Microsoft.MacCatalyst.Templates/maccatalyst/Assets.xcassets/AppIcon.appiconset/Icon512.png
diff --git a/dotnet/Microsoft.MacCatalyst.Templates/maccatalyst/Assets.xcassets/AppIcon.appiconset/Icon64.png b/dotnet/Templates/Microsoft.MacCatalyst.Templates/maccatalyst/Assets.xcassets/AppIcon.appiconset/Icon64.png
similarity index 100%
rename from dotnet/Microsoft.MacCatalyst.Templates/maccatalyst/Assets.xcassets/AppIcon.appiconset/Icon64.png
rename to dotnet/Templates/Microsoft.MacCatalyst.Templates/maccatalyst/Assets.xcassets/AppIcon.appiconset/Icon64.png
diff --git a/dotnet/Microsoft.MacCatalyst.Templates/maccatalyst/Entitlements.plist b/dotnet/Templates/Microsoft.MacCatalyst.Templates/maccatalyst/Entitlements.plist
similarity index 100%
rename from dotnet/Microsoft.MacCatalyst.Templates/maccatalyst/Entitlements.plist
rename to dotnet/Templates/Microsoft.MacCatalyst.Templates/maccatalyst/Entitlements.plist
diff --git a/dotnet/Microsoft.MacCatalyst.Templates/maccatalyst/Info.plist b/dotnet/Templates/Microsoft.MacCatalyst.Templates/maccatalyst/Info.plist
similarity index 100%
rename from dotnet/Microsoft.MacCatalyst.Templates/maccatalyst/Info.plist
rename to dotnet/Templates/Microsoft.MacCatalyst.Templates/maccatalyst/Info.plist
diff --git a/dotnet/Microsoft.MacCatalyst.Templates/maccatalyst/MacCatalystApp1.csproj b/dotnet/Templates/Microsoft.MacCatalyst.Templates/maccatalyst/MacCatalystApp1.csproj
similarity index 100%
rename from dotnet/Microsoft.MacCatalyst.Templates/maccatalyst/MacCatalystApp1.csproj
rename to dotnet/Templates/Microsoft.MacCatalyst.Templates/maccatalyst/MacCatalystApp1.csproj
diff --git a/dotnet/Templates/Microsoft.MacCatalyst.Templates/maccatalyst/Main.cs b/dotnet/Templates/Microsoft.MacCatalyst.Templates/maccatalyst/Main.cs
new file mode 100644
index 0000000000..ed89dc0b2e
--- /dev/null
+++ b/dotnet/Templates/Microsoft.MacCatalyst.Templates/maccatalyst/Main.cs
@@ -0,0 +1,8 @@
+using UIKit;
+
+using MacCatalystApp1;
+
+// This is the main entry point of the application.
+// If you want to use a different Application Delegate class from "AppDelegate"
+// you can specify it here.
+UIApplication.Main (args, null, typeof (AppDelegate));
diff --git a/dotnet/Microsoft.MacCatalyst.Templates/maccatalyst/Resources/LaunchScreen.xib b/dotnet/Templates/Microsoft.MacCatalyst.Templates/maccatalyst/Resources/LaunchScreen.xib
similarity index 100%
rename from dotnet/Microsoft.MacCatalyst.Templates/maccatalyst/Resources/LaunchScreen.xib
rename to dotnet/Templates/Microsoft.MacCatalyst.Templates/maccatalyst/Resources/LaunchScreen.xib
diff --git a/dotnet/Microsoft.MacCatalyst.Templates/maccatalyst/SceneDelegate.cs b/dotnet/Templates/Microsoft.MacCatalyst.Templates/maccatalyst/SceneDelegate.cs
similarity index 99%
rename from dotnet/Microsoft.MacCatalyst.Templates/maccatalyst/SceneDelegate.cs
rename to dotnet/Templates/Microsoft.MacCatalyst.Templates/maccatalyst/SceneDelegate.cs
index 281ebac9e2..272997590c 100644
--- a/dotnet/Microsoft.MacCatalyst.Templates/maccatalyst/SceneDelegate.cs
+++ b/dotnet/Templates/Microsoft.MacCatalyst.Templates/maccatalyst/SceneDelegate.cs
@@ -1,4 +1,3 @@
-using System;
using Foundation;
using UIKit;
diff --git a/dotnet/Microsoft.iOS.Templates/ios-controller/.template.config/template.json b/dotnet/Templates/Microsoft.iOS.Templates/ios-controller/.template.config/template.json
similarity index 100%
rename from dotnet/Microsoft.iOS.Templates/ios-controller/.template.config/template.json
rename to dotnet/Templates/Microsoft.iOS.Templates/ios-controller/.template.config/template.json
diff --git a/dotnet/Microsoft.iOS.Templates/ios-controller/Controller1.cs b/dotnet/Templates/Microsoft.iOS.Templates/ios-controller/Controller1.cs
similarity index 93%
rename from dotnet/Microsoft.iOS.Templates/ios-controller/Controller1.cs
rename to dotnet/Templates/Microsoft.iOS.Templates/ios-controller/Controller1.cs
index 290174e75f..e657b09752 100644
--- a/dotnet/Microsoft.iOS.Templates/ios-controller/Controller1.cs
+++ b/dotnet/Templates/Microsoft.iOS.Templates/ios-controller/Controller1.cs
@@ -1,4 +1,3 @@
-using CoreFoundation;
using Foundation;
using UIKit;
diff --git a/dotnet/Microsoft.iOS.Templates/ios/.template.config/template.json b/dotnet/Templates/Microsoft.iOS.Templates/ios/.template.config/template.json
similarity index 100%
rename from dotnet/Microsoft.iOS.Templates/ios/.template.config/template.json
rename to dotnet/Templates/Microsoft.iOS.Templates/ios/.template.config/template.json
diff --git a/dotnet/Microsoft.iOS.Templates/ios/AppDelegate.cs b/dotnet/Templates/Microsoft.iOS.Templates/ios/AppDelegate.cs
similarity index 100%
rename from dotnet/Microsoft.iOS.Templates/ios/AppDelegate.cs
rename to dotnet/Templates/Microsoft.iOS.Templates/ios/AppDelegate.cs
diff --git a/dotnet/Microsoft.iOS.Templates/ios/Assets.xcassets/AppIcon.appiconset/Contents.json b/dotnet/Templates/Microsoft.iOS.Templates/ios/Assets.xcassets/AppIcon.appiconset/Contents.json
similarity index 100%
rename from dotnet/Microsoft.iOS.Templates/ios/Assets.xcassets/AppIcon.appiconset/Contents.json
rename to dotnet/Templates/Microsoft.iOS.Templates/ios/Assets.xcassets/AppIcon.appiconset/Contents.json
diff --git a/dotnet/Microsoft.iOS.Templates/ios/Assets.xcassets/AppIcon.appiconset/Icon1024.png b/dotnet/Templates/Microsoft.iOS.Templates/ios/Assets.xcassets/AppIcon.appiconset/Icon1024.png
similarity index 100%
rename from dotnet/Microsoft.iOS.Templates/ios/Assets.xcassets/AppIcon.appiconset/Icon1024.png
rename to dotnet/Templates/Microsoft.iOS.Templates/ios/Assets.xcassets/AppIcon.appiconset/Icon1024.png
diff --git a/dotnet/Microsoft.iOS.Templates/ios/Assets.xcassets/AppIcon.appiconset/Icon120.png b/dotnet/Templates/Microsoft.iOS.Templates/ios/Assets.xcassets/AppIcon.appiconset/Icon120.png
similarity index 100%
rename from dotnet/Microsoft.iOS.Templates/ios/Assets.xcassets/AppIcon.appiconset/Icon120.png
rename to dotnet/Templates/Microsoft.iOS.Templates/ios/Assets.xcassets/AppIcon.appiconset/Icon120.png
diff --git a/dotnet/Microsoft.iOS.Templates/ios/Assets.xcassets/AppIcon.appiconset/Icon152.png b/dotnet/Templates/Microsoft.iOS.Templates/ios/Assets.xcassets/AppIcon.appiconset/Icon152.png
similarity index 100%
rename from dotnet/Microsoft.iOS.Templates/ios/Assets.xcassets/AppIcon.appiconset/Icon152.png
rename to dotnet/Templates/Microsoft.iOS.Templates/ios/Assets.xcassets/AppIcon.appiconset/Icon152.png
diff --git a/dotnet/Microsoft.iOS.Templates/ios/Assets.xcassets/AppIcon.appiconset/Icon167.png b/dotnet/Templates/Microsoft.iOS.Templates/ios/Assets.xcassets/AppIcon.appiconset/Icon167.png
similarity index 100%
rename from dotnet/Microsoft.iOS.Templates/ios/Assets.xcassets/AppIcon.appiconset/Icon167.png
rename to dotnet/Templates/Microsoft.iOS.Templates/ios/Assets.xcassets/AppIcon.appiconset/Icon167.png
diff --git a/dotnet/Microsoft.iOS.Templates/ios/Assets.xcassets/AppIcon.appiconset/Icon180.png b/dotnet/Templates/Microsoft.iOS.Templates/ios/Assets.xcassets/AppIcon.appiconset/Icon180.png
similarity index 100%
rename from dotnet/Microsoft.iOS.Templates/ios/Assets.xcassets/AppIcon.appiconset/Icon180.png
rename to dotnet/Templates/Microsoft.iOS.Templates/ios/Assets.xcassets/AppIcon.appiconset/Icon180.png
diff --git a/dotnet/Microsoft.iOS.Templates/ios/Assets.xcassets/AppIcon.appiconset/Icon20.png b/dotnet/Templates/Microsoft.iOS.Templates/ios/Assets.xcassets/AppIcon.appiconset/Icon20.png
similarity index 100%
rename from dotnet/Microsoft.iOS.Templates/ios/Assets.xcassets/AppIcon.appiconset/Icon20.png
rename to dotnet/Templates/Microsoft.iOS.Templates/ios/Assets.xcassets/AppIcon.appiconset/Icon20.png
diff --git a/dotnet/Microsoft.iOS.Templates/ios/Assets.xcassets/AppIcon.appiconset/Icon29.png b/dotnet/Templates/Microsoft.iOS.Templates/ios/Assets.xcassets/AppIcon.appiconset/Icon29.png
similarity index 100%
rename from dotnet/Microsoft.iOS.Templates/ios/Assets.xcassets/AppIcon.appiconset/Icon29.png
rename to dotnet/Templates/Microsoft.iOS.Templates/ios/Assets.xcassets/AppIcon.appiconset/Icon29.png
diff --git a/dotnet/Microsoft.iOS.Templates/ios/Assets.xcassets/AppIcon.appiconset/Icon40.png b/dotnet/Templates/Microsoft.iOS.Templates/ios/Assets.xcassets/AppIcon.appiconset/Icon40.png
similarity index 100%
rename from dotnet/Microsoft.iOS.Templates/ios/Assets.xcassets/AppIcon.appiconset/Icon40.png
rename to dotnet/Templates/Microsoft.iOS.Templates/ios/Assets.xcassets/AppIcon.appiconset/Icon40.png
diff --git a/dotnet/Microsoft.iOS.Templates/ios/Assets.xcassets/AppIcon.appiconset/Icon58.png b/dotnet/Templates/Microsoft.iOS.Templates/ios/Assets.xcassets/AppIcon.appiconset/Icon58.png
similarity index 100%
rename from dotnet/Microsoft.iOS.Templates/ios/Assets.xcassets/AppIcon.appiconset/Icon58.png
rename to dotnet/Templates/Microsoft.iOS.Templates/ios/Assets.xcassets/AppIcon.appiconset/Icon58.png
diff --git a/dotnet/Microsoft.iOS.Templates/ios/Assets.xcassets/AppIcon.appiconset/Icon60.png b/dotnet/Templates/Microsoft.iOS.Templates/ios/Assets.xcassets/AppIcon.appiconset/Icon60.png
similarity index 100%
rename from dotnet/Microsoft.iOS.Templates/ios/Assets.xcassets/AppIcon.appiconset/Icon60.png
rename to dotnet/Templates/Microsoft.iOS.Templates/ios/Assets.xcassets/AppIcon.appiconset/Icon60.png
diff --git a/dotnet/Microsoft.iOS.Templates/ios/Assets.xcassets/AppIcon.appiconset/Icon76.png b/dotnet/Templates/Microsoft.iOS.Templates/ios/Assets.xcassets/AppIcon.appiconset/Icon76.png
similarity index 100%
rename from dotnet/Microsoft.iOS.Templates/ios/Assets.xcassets/AppIcon.appiconset/Icon76.png
rename to dotnet/Templates/Microsoft.iOS.Templates/ios/Assets.xcassets/AppIcon.appiconset/Icon76.png
diff --git a/dotnet/Microsoft.iOS.Templates/ios/Assets.xcassets/AppIcon.appiconset/Icon80.png b/dotnet/Templates/Microsoft.iOS.Templates/ios/Assets.xcassets/AppIcon.appiconset/Icon80.png
similarity index 100%
rename from dotnet/Microsoft.iOS.Templates/ios/Assets.xcassets/AppIcon.appiconset/Icon80.png
rename to dotnet/Templates/Microsoft.iOS.Templates/ios/Assets.xcassets/AppIcon.appiconset/Icon80.png
diff --git a/dotnet/Microsoft.iOS.Templates/ios/Assets.xcassets/AppIcon.appiconset/Icon87.png b/dotnet/Templates/Microsoft.iOS.Templates/ios/Assets.xcassets/AppIcon.appiconset/Icon87.png
similarity index 100%
rename from dotnet/Microsoft.iOS.Templates/ios/Assets.xcassets/AppIcon.appiconset/Icon87.png
rename to dotnet/Templates/Microsoft.iOS.Templates/ios/Assets.xcassets/AppIcon.appiconset/Icon87.png
diff --git a/dotnet/Microsoft.iOS.Templates/ios/Entitlements.plist b/dotnet/Templates/Microsoft.iOS.Templates/ios/Entitlements.plist
similarity index 100%
rename from dotnet/Microsoft.iOS.Templates/ios/Entitlements.plist
rename to dotnet/Templates/Microsoft.iOS.Templates/ios/Entitlements.plist
diff --git a/dotnet/Microsoft.iOS.Templates/ios/Info.plist b/dotnet/Templates/Microsoft.iOS.Templates/ios/Info.plist
similarity index 100%
rename from dotnet/Microsoft.iOS.Templates/ios/Info.plist
rename to dotnet/Templates/Microsoft.iOS.Templates/ios/Info.plist
diff --git a/dotnet/Microsoft.iOS.Templates/ios/LaunchScreen.storyboard b/dotnet/Templates/Microsoft.iOS.Templates/ios/LaunchScreen.storyboard
similarity index 100%
rename from dotnet/Microsoft.iOS.Templates/ios/LaunchScreen.storyboard
rename to dotnet/Templates/Microsoft.iOS.Templates/ios/LaunchScreen.storyboard
diff --git a/dotnet/Templates/Microsoft.iOS.Templates/ios/Main.cs b/dotnet/Templates/Microsoft.iOS.Templates/ios/Main.cs
new file mode 100644
index 0000000000..4df98e8dbe
--- /dev/null
+++ b/dotnet/Templates/Microsoft.iOS.Templates/ios/Main.cs
@@ -0,0 +1,8 @@
+using UIKit;
+
+using iOSApp1;
+
+// This is the main entry point of the application.
+// If you want to use a different Application Delegate class from "AppDelegate"
+// you can specify it here.
+UIApplication.Main (args, null, typeof (AppDelegate));
diff --git a/dotnet/Microsoft.iOS.Templates/ios/Resources/LaunchScreen.xib b/dotnet/Templates/Microsoft.iOS.Templates/ios/Resources/LaunchScreen.xib
similarity index 100%
rename from dotnet/Microsoft.iOS.Templates/ios/Resources/LaunchScreen.xib
rename to dotnet/Templates/Microsoft.iOS.Templates/ios/Resources/LaunchScreen.xib
diff --git a/dotnet/Microsoft.iOS.Templates/ios/SceneDelegate.cs b/dotnet/Templates/Microsoft.iOS.Templates/ios/SceneDelegate.cs
similarity index 99%
rename from dotnet/Microsoft.iOS.Templates/ios/SceneDelegate.cs
rename to dotnet/Templates/Microsoft.iOS.Templates/ios/SceneDelegate.cs
index 9d4cb61802..ea40473088 100644
--- a/dotnet/Microsoft.iOS.Templates/ios/SceneDelegate.cs
+++ b/dotnet/Templates/Microsoft.iOS.Templates/ios/SceneDelegate.cs
@@ -1,4 +1,3 @@
-using System;
using Foundation;
using UIKit;
diff --git a/dotnet/Microsoft.iOS.Templates/ios/iOSApp1.csproj b/dotnet/Templates/Microsoft.iOS.Templates/ios/iOSApp1.csproj
similarity index 100%
rename from dotnet/Microsoft.iOS.Templates/ios/iOSApp1.csproj
rename to dotnet/Templates/Microsoft.iOS.Templates/ios/iOSApp1.csproj
diff --git a/dotnet/Microsoft.iOS.Templates/ioslib/.template.config/template.json b/dotnet/Templates/Microsoft.iOS.Templates/ioslib/.template.config/template.json
similarity index 100%
rename from dotnet/Microsoft.iOS.Templates/ioslib/.template.config/template.json
rename to dotnet/Templates/Microsoft.iOS.Templates/ioslib/.template.config/template.json
diff --git a/dotnet/Microsoft.iOS.Templates/ioslib/Class1.cs b/dotnet/Templates/Microsoft.iOS.Templates/ioslib/Class1.cs
similarity index 72%
rename from dotnet/Microsoft.iOS.Templates/ioslib/Class1.cs
rename to dotnet/Templates/Microsoft.iOS.Templates/ioslib/Class1.cs
index 28d215cc11..d9a52afb96 100644
--- a/dotnet/Microsoft.iOS.Templates/ioslib/Class1.cs
+++ b/dotnet/Templates/Microsoft.iOS.Templates/ioslib/Class1.cs
@@ -1,5 +1,3 @@
-using System;
-
namespace iOSLib1 {
public class Class1 {
}
diff --git a/dotnet/Microsoft.iOS.Templates/ioslib/iOSLib1.csproj b/dotnet/Templates/Microsoft.iOS.Templates/ioslib/iOSLib1.csproj
similarity index 100%
rename from dotnet/Microsoft.iOS.Templates/ioslib/iOSLib1.csproj
rename to dotnet/Templates/Microsoft.iOS.Templates/ioslib/iOSLib1.csproj
diff --git a/dotnet/Microsoft.macOS.Templates/macos/.template.config/template.json b/dotnet/Templates/Microsoft.macOS.Templates/macos/.template.config/template.json
similarity index 100%
rename from dotnet/Microsoft.macOS.Templates/macos/.template.config/template.json
rename to dotnet/Templates/Microsoft.macOS.Templates/macos/.template.config/template.json
diff --git a/dotnet/Microsoft.macOS.Templates/macos/AppDelegate.cs b/dotnet/Templates/Microsoft.macOS.Templates/macos/AppDelegate.cs
similarity index 100%
rename from dotnet/Microsoft.macOS.Templates/macos/AppDelegate.cs
rename to dotnet/Templates/Microsoft.macOS.Templates/macos/AppDelegate.cs
diff --git a/dotnet/Microsoft.macOS.Templates/macos/Assets.xcassets/AppIcon.appiconset/AppIcon-128.png b/dotnet/Templates/Microsoft.macOS.Templates/macos/Assets.xcassets/AppIcon.appiconset/AppIcon-128.png
similarity index 100%
rename from dotnet/Microsoft.macOS.Templates/macos/Assets.xcassets/AppIcon.appiconset/AppIcon-128.png
rename to dotnet/Templates/Microsoft.macOS.Templates/macos/Assets.xcassets/AppIcon.appiconset/AppIcon-128.png
diff --git a/dotnet/Microsoft.macOS.Templates/macos/Assets.xcassets/AppIcon.appiconset/AppIcon-128@2x.png b/dotnet/Templates/Microsoft.macOS.Templates/macos/Assets.xcassets/AppIcon.appiconset/AppIcon-128@2x.png
similarity index 100%
rename from dotnet/Microsoft.macOS.Templates/macos/Assets.xcassets/AppIcon.appiconset/AppIcon-128@2x.png
rename to dotnet/Templates/Microsoft.macOS.Templates/macos/Assets.xcassets/AppIcon.appiconset/AppIcon-128@2x.png
diff --git a/dotnet/Microsoft.macOS.Templates/macos/Assets.xcassets/AppIcon.appiconset/AppIcon-16.png b/dotnet/Templates/Microsoft.macOS.Templates/macos/Assets.xcassets/AppIcon.appiconset/AppIcon-16.png
similarity index 100%
rename from dotnet/Microsoft.macOS.Templates/macos/Assets.xcassets/AppIcon.appiconset/AppIcon-16.png
rename to dotnet/Templates/Microsoft.macOS.Templates/macos/Assets.xcassets/AppIcon.appiconset/AppIcon-16.png
diff --git a/dotnet/Microsoft.macOS.Templates/macos/Assets.xcassets/AppIcon.appiconset/AppIcon-16@2x.png b/dotnet/Templates/Microsoft.macOS.Templates/macos/Assets.xcassets/AppIcon.appiconset/AppIcon-16@2x.png
similarity index 100%
rename from dotnet/Microsoft.macOS.Templates/macos/Assets.xcassets/AppIcon.appiconset/AppIcon-16@2x.png
rename to dotnet/Templates/Microsoft.macOS.Templates/macos/Assets.xcassets/AppIcon.appiconset/AppIcon-16@2x.png
diff --git a/dotnet/Microsoft.macOS.Templates/macos/Assets.xcassets/AppIcon.appiconset/AppIcon-256.png b/dotnet/Templates/Microsoft.macOS.Templates/macos/Assets.xcassets/AppIcon.appiconset/AppIcon-256.png
similarity index 100%
rename from dotnet/Microsoft.macOS.Templates/macos/Assets.xcassets/AppIcon.appiconset/AppIcon-256.png
rename to dotnet/Templates/Microsoft.macOS.Templates/macos/Assets.xcassets/AppIcon.appiconset/AppIcon-256.png
diff --git a/dotnet/Microsoft.macOS.Templates/macos/Assets.xcassets/AppIcon.appiconset/AppIcon-256@2x.png b/dotnet/Templates/Microsoft.macOS.Templates/macos/Assets.xcassets/AppIcon.appiconset/AppIcon-256@2x.png
similarity index 100%
rename from dotnet/Microsoft.macOS.Templates/macos/Assets.xcassets/AppIcon.appiconset/AppIcon-256@2x.png
rename to dotnet/Templates/Microsoft.macOS.Templates/macos/Assets.xcassets/AppIcon.appiconset/AppIcon-256@2x.png
diff --git a/dotnet/Microsoft.macOS.Templates/macos/Assets.xcassets/AppIcon.appiconset/AppIcon-32.png b/dotnet/Templates/Microsoft.macOS.Templates/macos/Assets.xcassets/AppIcon.appiconset/AppIcon-32.png
similarity index 100%
rename from dotnet/Microsoft.macOS.Templates/macos/Assets.xcassets/AppIcon.appiconset/AppIcon-32.png
rename to dotnet/Templates/Microsoft.macOS.Templates/macos/Assets.xcassets/AppIcon.appiconset/AppIcon-32.png
diff --git a/dotnet/Microsoft.macOS.Templates/macos/Assets.xcassets/AppIcon.appiconset/AppIcon-32@2x.png b/dotnet/Templates/Microsoft.macOS.Templates/macos/Assets.xcassets/AppIcon.appiconset/AppIcon-32@2x.png
similarity index 100%
rename from dotnet/Microsoft.macOS.Templates/macos/Assets.xcassets/AppIcon.appiconset/AppIcon-32@2x.png
rename to dotnet/Templates/Microsoft.macOS.Templates/macos/Assets.xcassets/AppIcon.appiconset/AppIcon-32@2x.png
diff --git a/dotnet/Microsoft.macOS.Templates/macos/Assets.xcassets/AppIcon.appiconset/AppIcon-512.png b/dotnet/Templates/Microsoft.macOS.Templates/macos/Assets.xcassets/AppIcon.appiconset/AppIcon-512.png
similarity index 100%
rename from dotnet/Microsoft.macOS.Templates/macos/Assets.xcassets/AppIcon.appiconset/AppIcon-512.png
rename to dotnet/Templates/Microsoft.macOS.Templates/macos/Assets.xcassets/AppIcon.appiconset/AppIcon-512.png
diff --git a/dotnet/Microsoft.macOS.Templates/macos/Assets.xcassets/AppIcon.appiconset/AppIcon-512@2x.png b/dotnet/Templates/Microsoft.macOS.Templates/macos/Assets.xcassets/AppIcon.appiconset/AppIcon-512@2x.png
similarity index 100%
rename from dotnet/Microsoft.macOS.Templates/macos/Assets.xcassets/AppIcon.appiconset/AppIcon-512@2x.png
rename to dotnet/Templates/Microsoft.macOS.Templates/macos/Assets.xcassets/AppIcon.appiconset/AppIcon-512@2x.png
diff --git a/dotnet/Microsoft.macOS.Templates/macos/Assets.xcassets/AppIcon.appiconset/Contents.json b/dotnet/Templates/Microsoft.macOS.Templates/macos/Assets.xcassets/AppIcon.appiconset/Contents.json
similarity index 100%
rename from dotnet/Microsoft.macOS.Templates/macos/Assets.xcassets/AppIcon.appiconset/Contents.json
rename to dotnet/Templates/Microsoft.macOS.Templates/macos/Assets.xcassets/AppIcon.appiconset/Contents.json
diff --git a/dotnet/Microsoft.macOS.Templates/macos/Assets.xcassets/Contents.json b/dotnet/Templates/Microsoft.macOS.Templates/macos/Assets.xcassets/Contents.json
similarity index 100%
rename from dotnet/Microsoft.macOS.Templates/macos/Assets.xcassets/Contents.json
rename to dotnet/Templates/Microsoft.macOS.Templates/macos/Assets.xcassets/Contents.json
diff --git a/dotnet/Microsoft.macOS.Templates/macos/Entitlements.plist b/dotnet/Templates/Microsoft.macOS.Templates/macos/Entitlements.plist
similarity index 100%
rename from dotnet/Microsoft.macOS.Templates/macos/Entitlements.plist
rename to dotnet/Templates/Microsoft.macOS.Templates/macos/Entitlements.plist
diff --git a/dotnet/Microsoft.macOS.Templates/macos/Info.plist b/dotnet/Templates/Microsoft.macOS.Templates/macos/Info.plist
similarity index 100%
rename from dotnet/Microsoft.macOS.Templates/macos/Info.plist
rename to dotnet/Templates/Microsoft.macOS.Templates/macos/Info.plist
diff --git a/dotnet/Templates/Microsoft.macOS.Templates/macos/Main.cs b/dotnet/Templates/Microsoft.macOS.Templates/macos/Main.cs
new file mode 100644
index 0000000000..5b6e2a8a14
--- /dev/null
+++ b/dotnet/Templates/Microsoft.macOS.Templates/macos/Main.cs
@@ -0,0 +1,7 @@
+using AppKit;
+
+using macOSApp1;
+
+// This is the main entry point of the application.
+NSApplication.Init ();
+NSApplication.Main (args);
diff --git a/dotnet/Microsoft.macOS.Templates/macos/Main.storyboard b/dotnet/Templates/Microsoft.macOS.Templates/macos/Main.storyboard
similarity index 100%
rename from dotnet/Microsoft.macOS.Templates/macos/Main.storyboard
rename to dotnet/Templates/Microsoft.macOS.Templates/macos/Main.storyboard
diff --git a/dotnet/Microsoft.macOS.Templates/macos/ViewController.cs b/dotnet/Templates/Microsoft.macOS.Templates/macos/ViewController.cs
similarity index 100%
rename from dotnet/Microsoft.macOS.Templates/macos/ViewController.cs
rename to dotnet/Templates/Microsoft.macOS.Templates/macos/ViewController.cs
diff --git a/dotnet/Microsoft.macOS.Templates/macos/ViewController.designer.cs b/dotnet/Templates/Microsoft.macOS.Templates/macos/ViewController.designer.cs
similarity index 100%
rename from dotnet/Microsoft.macOS.Templates/macos/ViewController.designer.cs
rename to dotnet/Templates/Microsoft.macOS.Templates/macos/ViewController.designer.cs
diff --git a/dotnet/Microsoft.macOS.Templates/macos/macOSApp1.csproj b/dotnet/Templates/Microsoft.macOS.Templates/macos/macOSApp1.csproj
similarity index 100%
rename from dotnet/Microsoft.macOS.Templates/macos/macOSApp1.csproj
rename to dotnet/Templates/Microsoft.macOS.Templates/macos/macOSApp1.csproj
diff --git a/dotnet/Microsoft.tvOS.Templates/tvos/.template.config/template.json b/dotnet/Templates/Microsoft.tvOS.Templates/tvos/.template.config/template.json
similarity index 100%
rename from dotnet/Microsoft.tvOS.Templates/tvos/.template.config/template.json
rename to dotnet/Templates/Microsoft.tvOS.Templates/tvos/.template.config/template.json
diff --git a/dotnet/Microsoft.tvOS.Templates/tvos/AppDelegate.cs b/dotnet/Templates/Microsoft.tvOS.Templates/tvos/AppDelegate.cs
similarity index 100%
rename from dotnet/Microsoft.tvOS.Templates/tvos/AppDelegate.cs
rename to dotnet/Templates/Microsoft.tvOS.Templates/tvos/AppDelegate.cs
diff --git a/dotnet/Microsoft.tvOS.Templates/tvos/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Large.imagestack/Back.imagestacklayer/Content.imageset/Contents.json b/dotnet/Templates/Microsoft.tvOS.Templates/tvos/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Large.imagestack/Back.imagestacklayer/Content.imageset/Contents.json
similarity index 100%
rename from dotnet/Microsoft.tvOS.Templates/tvos/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Large.imagestack/Back.imagestacklayer/Content.imageset/Contents.json
rename to dotnet/Templates/Microsoft.tvOS.Templates/tvos/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Large.imagestack/Back.imagestacklayer/Content.imageset/Contents.json
diff --git a/dotnet/Microsoft.tvOS.Templates/tvos/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Large.imagestack/Back.imagestacklayer/Contents.json b/dotnet/Templates/Microsoft.tvOS.Templates/tvos/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Large.imagestack/Back.imagestacklayer/Contents.json
similarity index 100%
rename from dotnet/Microsoft.tvOS.Templates/tvos/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Large.imagestack/Back.imagestacklayer/Contents.json
rename to dotnet/Templates/Microsoft.tvOS.Templates/tvos/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Large.imagestack/Back.imagestacklayer/Contents.json
diff --git a/dotnet/Microsoft.tvOS.Templates/tvos/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Large.imagestack/Contents.json b/dotnet/Templates/Microsoft.tvOS.Templates/tvos/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Large.imagestack/Contents.json
similarity index 100%
rename from dotnet/Microsoft.tvOS.Templates/tvos/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Large.imagestack/Contents.json
rename to dotnet/Templates/Microsoft.tvOS.Templates/tvos/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Large.imagestack/Contents.json
diff --git a/dotnet/Microsoft.tvOS.Templates/tvos/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Large.imagestack/Front.imagestacklayer/Content.imageset/Contents.json b/dotnet/Templates/Microsoft.tvOS.Templates/tvos/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Large.imagestack/Front.imagestacklayer/Content.imageset/Contents.json
similarity index 100%
rename from dotnet/Microsoft.tvOS.Templates/tvos/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Large.imagestack/Front.imagestacklayer/Content.imageset/Contents.json
rename to dotnet/Templates/Microsoft.tvOS.Templates/tvos/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Large.imagestack/Front.imagestacklayer/Content.imageset/Contents.json
diff --git a/dotnet/Microsoft.tvOS.Templates/tvos/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Large.imagestack/Front.imagestacklayer/Contents.json b/dotnet/Templates/Microsoft.tvOS.Templates/tvos/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Large.imagestack/Front.imagestacklayer/Contents.json
similarity index 100%
rename from dotnet/Microsoft.tvOS.Templates/tvos/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Large.imagestack/Front.imagestacklayer/Contents.json
rename to dotnet/Templates/Microsoft.tvOS.Templates/tvos/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Large.imagestack/Front.imagestacklayer/Contents.json
diff --git a/dotnet/Microsoft.tvOS.Templates/tvos/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Large.imagestack/Middle.imagestacklayer/Content.imageset/Contents.json b/dotnet/Templates/Microsoft.tvOS.Templates/tvos/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Large.imagestack/Middle.imagestacklayer/Content.imageset/Contents.json
similarity index 100%
rename from dotnet/Microsoft.tvOS.Templates/tvos/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Large.imagestack/Middle.imagestacklayer/Content.imageset/Contents.json
rename to dotnet/Templates/Microsoft.tvOS.Templates/tvos/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Large.imagestack/Middle.imagestacklayer/Content.imageset/Contents.json
diff --git a/dotnet/Microsoft.tvOS.Templates/tvos/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Large.imagestack/Middle.imagestacklayer/Contents.json b/dotnet/Templates/Microsoft.tvOS.Templates/tvos/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Large.imagestack/Middle.imagestacklayer/Contents.json
similarity index 100%
rename from dotnet/Microsoft.tvOS.Templates/tvos/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Large.imagestack/Middle.imagestacklayer/Contents.json
rename to dotnet/Templates/Microsoft.tvOS.Templates/tvos/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Large.imagestack/Middle.imagestacklayer/Contents.json
diff --git a/dotnet/Microsoft.tvOS.Templates/tvos/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Small.imagestack/Back.imagestacklayer/Content.imageset/Contents.json b/dotnet/Templates/Microsoft.tvOS.Templates/tvos/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Small.imagestack/Back.imagestacklayer/Content.imageset/Contents.json
similarity index 100%
rename from dotnet/Microsoft.tvOS.Templates/tvos/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Small.imagestack/Back.imagestacklayer/Content.imageset/Contents.json
rename to dotnet/Templates/Microsoft.tvOS.Templates/tvos/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Small.imagestack/Back.imagestacklayer/Content.imageset/Contents.json
diff --git a/dotnet/Microsoft.tvOS.Templates/tvos/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Small.imagestack/Back.imagestacklayer/Contents.json b/dotnet/Templates/Microsoft.tvOS.Templates/tvos/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Small.imagestack/Back.imagestacklayer/Contents.json
similarity index 100%
rename from dotnet/Microsoft.tvOS.Templates/tvos/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Small.imagestack/Back.imagestacklayer/Contents.json
rename to dotnet/Templates/Microsoft.tvOS.Templates/tvos/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Small.imagestack/Back.imagestacklayer/Contents.json
diff --git a/dotnet/Microsoft.tvOS.Templates/tvos/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Small.imagestack/Contents.json b/dotnet/Templates/Microsoft.tvOS.Templates/tvos/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Small.imagestack/Contents.json
similarity index 100%
rename from dotnet/Microsoft.tvOS.Templates/tvos/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Small.imagestack/Contents.json
rename to dotnet/Templates/Microsoft.tvOS.Templates/tvos/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Small.imagestack/Contents.json
diff --git a/dotnet/Microsoft.tvOS.Templates/tvos/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Small.imagestack/Front.imagestacklayer/Content.imageset/Contents.json b/dotnet/Templates/Microsoft.tvOS.Templates/tvos/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Small.imagestack/Front.imagestacklayer/Content.imageset/Contents.json
similarity index 100%
rename from dotnet/Microsoft.tvOS.Templates/tvos/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Small.imagestack/Front.imagestacklayer/Content.imageset/Contents.json
rename to dotnet/Templates/Microsoft.tvOS.Templates/tvos/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Small.imagestack/Front.imagestacklayer/Content.imageset/Contents.json
diff --git a/dotnet/Microsoft.tvOS.Templates/tvos/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Small.imagestack/Front.imagestacklayer/Contents.json b/dotnet/Templates/Microsoft.tvOS.Templates/tvos/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Small.imagestack/Front.imagestacklayer/Contents.json
similarity index 100%
rename from dotnet/Microsoft.tvOS.Templates/tvos/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Small.imagestack/Front.imagestacklayer/Contents.json
rename to dotnet/Templates/Microsoft.tvOS.Templates/tvos/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Small.imagestack/Front.imagestacklayer/Contents.json
diff --git a/dotnet/Microsoft.tvOS.Templates/tvos/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Small.imagestack/Middle.imagestacklayer/Content.imageset/Contents.json b/dotnet/Templates/Microsoft.tvOS.Templates/tvos/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Small.imagestack/Middle.imagestacklayer/Content.imageset/Contents.json
similarity index 100%
rename from dotnet/Microsoft.tvOS.Templates/tvos/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Small.imagestack/Middle.imagestacklayer/Content.imageset/Contents.json
rename to dotnet/Templates/Microsoft.tvOS.Templates/tvos/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Small.imagestack/Middle.imagestacklayer/Content.imageset/Contents.json
diff --git a/dotnet/Microsoft.tvOS.Templates/tvos/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Small.imagestack/Middle.imagestacklayer/Contents.json b/dotnet/Templates/Microsoft.tvOS.Templates/tvos/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Small.imagestack/Middle.imagestacklayer/Contents.json
similarity index 100%
rename from dotnet/Microsoft.tvOS.Templates/tvos/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Small.imagestack/Middle.imagestacklayer/Contents.json
rename to dotnet/Templates/Microsoft.tvOS.Templates/tvos/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Small.imagestack/Middle.imagestacklayer/Contents.json
diff --git a/dotnet/Microsoft.tvOS.Templates/tvos/Assets.xcassets/App Icon & Top Shelf Image.brandassets/Contents.json b/dotnet/Templates/Microsoft.tvOS.Templates/tvos/Assets.xcassets/App Icon & Top Shelf Image.brandassets/Contents.json
similarity index 100%
rename from dotnet/Microsoft.tvOS.Templates/tvos/Assets.xcassets/App Icon & Top Shelf Image.brandassets/Contents.json
rename to dotnet/Templates/Microsoft.tvOS.Templates/tvos/Assets.xcassets/App Icon & Top Shelf Image.brandassets/Contents.json
diff --git a/dotnet/Microsoft.tvOS.Templates/tvos/Assets.xcassets/App Icon & Top Shelf Image.brandassets/Top Shelf Image Wide.imageset/Contents.json b/dotnet/Templates/Microsoft.tvOS.Templates/tvos/Assets.xcassets/App Icon & Top Shelf Image.brandassets/Top Shelf Image Wide.imageset/Contents.json
similarity index 100%
rename from dotnet/Microsoft.tvOS.Templates/tvos/Assets.xcassets/App Icon & Top Shelf Image.brandassets/Top Shelf Image Wide.imageset/Contents.json
rename to dotnet/Templates/Microsoft.tvOS.Templates/tvos/Assets.xcassets/App Icon & Top Shelf Image.brandassets/Top Shelf Image Wide.imageset/Contents.json
diff --git a/dotnet/Microsoft.tvOS.Templates/tvos/Assets.xcassets/App Icon & Top Shelf Image.brandassets/Top Shelf Image.imageset/Contents.json b/dotnet/Templates/Microsoft.tvOS.Templates/tvos/Assets.xcassets/App Icon & Top Shelf Image.brandassets/Top Shelf Image.imageset/Contents.json
similarity index 100%
rename from dotnet/Microsoft.tvOS.Templates/tvos/Assets.xcassets/App Icon & Top Shelf Image.brandassets/Top Shelf Image.imageset/Contents.json
rename to dotnet/Templates/Microsoft.tvOS.Templates/tvos/Assets.xcassets/App Icon & Top Shelf Image.brandassets/Top Shelf Image.imageset/Contents.json
diff --git a/dotnet/Microsoft.tvOS.Templates/tvos/Assets.xcassets/Contents.json b/dotnet/Templates/Microsoft.tvOS.Templates/tvos/Assets.xcassets/Contents.json
similarity index 100%
rename from dotnet/Microsoft.tvOS.Templates/tvos/Assets.xcassets/Contents.json
rename to dotnet/Templates/Microsoft.tvOS.Templates/tvos/Assets.xcassets/Contents.json
diff --git a/dotnet/Microsoft.tvOS.Templates/tvos/Entitlements.plist b/dotnet/Templates/Microsoft.tvOS.Templates/tvos/Entitlements.plist
similarity index 100%
rename from dotnet/Microsoft.tvOS.Templates/tvos/Entitlements.plist
rename to dotnet/Templates/Microsoft.tvOS.Templates/tvos/Entitlements.plist
diff --git a/dotnet/Microsoft.tvOS.Templates/tvos/Info.plist b/dotnet/Templates/Microsoft.tvOS.Templates/tvos/Info.plist
similarity index 100%
rename from dotnet/Microsoft.tvOS.Templates/tvos/Info.plist
rename to dotnet/Templates/Microsoft.tvOS.Templates/tvos/Info.plist
diff --git a/dotnet/Templates/Microsoft.tvOS.Templates/tvos/Main.cs b/dotnet/Templates/Microsoft.tvOS.Templates/tvos/Main.cs
new file mode 100644
index 0000000000..05041bf328
--- /dev/null
+++ b/dotnet/Templates/Microsoft.tvOS.Templates/tvos/Main.cs
@@ -0,0 +1,8 @@
+using UIKit;
+
+using tvOSApp1;
+
+// This is the main entry point of the application.
+// If you want to use a different Application Delegate class from "AppDelegate"
+// you can specify it here.
+UIApplication.Main (args, null, typeof (AppDelegate));
diff --git a/dotnet/Microsoft.tvOS.Templates/tvos/Main.storyboard b/dotnet/Templates/Microsoft.tvOS.Templates/tvos/Main.storyboard
similarity index 100%
rename from dotnet/Microsoft.tvOS.Templates/tvos/Main.storyboard
rename to dotnet/Templates/Microsoft.tvOS.Templates/tvos/Main.storyboard
diff --git a/dotnet/Microsoft.tvOS.Templates/tvos/ViewController.cs b/dotnet/Templates/Microsoft.tvOS.Templates/tvos/ViewController.cs
similarity index 90%
rename from dotnet/Microsoft.tvOS.Templates/tvos/ViewController.cs
rename to dotnet/Templates/Microsoft.tvOS.Templates/tvos/ViewController.cs
index b86d0868e4..fee0a4606c 100644
--- a/dotnet/Microsoft.tvOS.Templates/tvos/ViewController.cs
+++ b/dotnet/Templates/Microsoft.tvOS.Templates/tvos/ViewController.cs
@@ -1,5 +1,4 @@
using System;
-using Foundation;
using UIKit;
namespace tvOSApp1 {
diff --git a/dotnet/Microsoft.tvOS.Templates/tvos/ViewController.designer.cs b/dotnet/Templates/Microsoft.tvOS.Templates/tvos/ViewController.designer.cs
similarity index 100%
rename from dotnet/Microsoft.tvOS.Templates/tvos/ViewController.designer.cs
rename to dotnet/Templates/Microsoft.tvOS.Templates/tvos/ViewController.designer.cs
diff --git a/dotnet/Microsoft.tvOS.Templates/tvos/tvOSApp1.csproj b/dotnet/Templates/Microsoft.tvOS.Templates/tvos/tvOSApp1.csproj
similarity index 100%
rename from dotnet/Microsoft.tvOS.Templates/tvos/tvOSApp1.csproj
rename to dotnet/Templates/Microsoft.tvOS.Templates/tvos/tvOSApp1.csproj
diff --git a/dotnet/package/microsoft.templates.csproj b/dotnet/package/microsoft.templates.csproj
index d6e4efc95e..43f698db4b 100644
--- a/dotnet/package/microsoft.templates.csproj
+++ b/dotnet/package/microsoft.templates.csproj
@@ -3,7 +3,7 @@
Microsoft.$(_PlatformName).Templates
Template
Templates for $(_PlatformName) platforms
- <_packagePath>$(MSBuildThisFileDirectory)..\Microsoft.$(_PlatformName).Templates\
+ <_packagePath>$(MSBuildThisFileDirectory)..\Templates\Microsoft.$(_PlatformName).Templates\
diff --git a/tests/common/BinLog.cs b/tests/common/BinLog.cs
index 81cd4c2c72..7b7e8521b4 100644
--- a/tests/common/BinLog.cs
+++ b/tests/common/BinLog.cs
@@ -97,6 +97,11 @@ namespace Xamarin.Tests
}
}
+ public static IEnumerable GetBuildLogWarnings (string path)
+ {
+ return GetBuildMessages (path).Where (v => v.Type == BuildLogEventType.Warning);
+ }
+
public static IEnumerable GetBuildMessages (string path)
{
var reader = new BinLogReader ();
diff --git a/tests/common/DotNet.cs b/tests/common/DotNet.cs
index 1aa13135c4..41447ea84a 100644
--- a/tests/common/DotNet.cs
+++ b/tests/common/DotNet.cs
@@ -36,6 +36,31 @@ namespace Xamarin.Tests {
return rv;
}
+ public static ExecutionResult AssertNew (string outputDirectory, string template)
+ {
+ Directory.CreateDirectory (outputDirectory);
+
+ var args = new List ();
+ args.Add ("new");
+ args.Add (template);
+
+ var env = new Dictionary ();
+ env ["MSBuildSDKsPath"] = null;
+ env ["MSBUILD_EXE_PATH"] = null;
+ var output = new StringBuilder ();
+ var rv = Execution.RunWithStringBuildersAsync (Executable, args, env, output, output, Console.Out, workingDirectory: outputDirectory, timeout: TimeSpan.FromMinutes (10)).Result;
+ if (rv.ExitCode != 0) {
+ Console.WriteLine ($"'{Executable} {StringUtils.FormatArguments (args)}' failed with exit code {rv.ExitCode}.");
+ Console.WriteLine (output);
+ Assert.AreEqual (0, rv.ExitCode, $"Exit code: {Executable} {StringUtils.FormatArguments (args)}");
+ }
+ return new ExecutionResult {
+ StandardOutput = output,
+ StandardError = output,
+ ExitCode = rv.ExitCode,
+ };
+ }
+
public static ExecutionResult Execute (string verb, string project, Dictionary properties, bool assert_success = true)
{
if (!File.Exists (project))
diff --git a/tests/dotnet/UnitTests/DotNetUnitTests.csproj b/tests/dotnet/UnitTests/DotNetUnitTests.csproj
index 7543ebf63b..6e6f5e665f 100644
--- a/tests/dotnet/UnitTests/DotNetUnitTests.csproj
+++ b/tests/dotnet/UnitTests/DotNetUnitTests.csproj
@@ -11,6 +11,7 @@
+
@@ -51,4 +52,7 @@
+
+
+
diff --git a/tests/dotnet/UnitTests/TemplateTest.cs b/tests/dotnet/UnitTests/TemplateTest.cs
new file mode 100644
index 0000000000..73d8d9c36e
--- /dev/null
+++ b/tests/dotnet/UnitTests/TemplateTest.cs
@@ -0,0 +1,82 @@
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+using System.Text.Json;
+using System.Text.Json.Serialization;
+
+using NUnit.Framework;
+
+using Xamarin.Utils;
+
+namespace Xamarin.Tests {
+ [TestFixture]
+ public class TemplateTest {
+
+ public static string [][] Templates = {
+ // { platform, template_name }
+ new [] { "iOS", "ios" },
+ new [] { "iOS", "ioslib" },
+ new [] { "tvOS", "tvos" },
+ new [] { "MacCatalyst", "maccatalyst" },
+ new [] { "macOS", "macos" },
+ };
+
+ public class TemplateConfig {
+ public string Name;
+ public string ShortName;
+ public TemplateConfigTag Tags;
+ }
+
+ public class TemplateConfigTag {
+ public string Language;
+ public string Type;
+ }
+
+ [Test]
+ public void AreAllTemplatesListed ()
+ {
+ var allListedTemplates = Templates.Select (v => v [1]).ToArray ();
+ var allTemplates = new List ();
+ foreach (var platform in Enum.GetValues ()) {
+ var dir = Path.Combine (Configuration.SourceRoot, "dotnet", "Templates", $"Microsoft.{platform.AsString ()}.Templates");
+ if (!Directory.Exists (dir))
+ continue;
+
+ var templateDirectories = Directory.GetDirectories (dir);
+ var options = new JsonSerializerOptions {
+ PropertyNameCaseInsensitive = true,
+ IncludeFields = true,
+ };
+
+ // read the template's configuration to figure out if it's a project template, and if not, skip it
+ foreach (var templateDir in templateDirectories) {
+ var jsonPath = Path.Combine (templateDir, ".template.config", "template.json");
+ if (!File.Exists (jsonPath))
+ continue;
+ var json = JsonSerializer.Deserialize (File.ReadAllText (jsonPath), options);
+ if (json.Tags.Type != "project")
+ continue;
+
+ allTemplates.Add (json.ShortName);
+ }
+ }
+ Assert.That (allListedTemplates, Is.EquivalentTo (allTemplates), "The listed templates here and the templates on disk don't match");
+ }
+
+ [Test]
+ [TestCaseSource (nameof (Templates))]
+ public void CreateAndBuildTemplate (string platform, string template)
+ {
+ Configuration.IgnoreIfIgnoredPlatform (platform);
+ var tmpDir = Cache.CreateTemporaryDirectory ();
+ Configuration.CopyDotNetSupportingFiles (tmpDir);
+ var outputDir = Path.Combine (tmpDir, template);
+ DotNet.AssertNew (outputDir, template);
+ var csproj = Path.Combine (outputDir, template + ".csproj");
+ var rv = DotNet.AssertBuild (csproj);
+ var warnings = BinLog.GetBuildLogWarnings (rv.BinLogPath).Select (v => v.Message);
+ Assert.That (warnings, Is.Empty, $"Build warnings:\n\t{string.Join ("\n\t", warnings)}");
+ }
+ }
+}