diff --git a/Microsoft.Dotnet.Wpf.sln b/Microsoft.Dotnet.Wpf.sln
index a9bf0453bb5..e05b7d93d65 100644
--- a/Microsoft.Dotnet.Wpf.sln
+++ b/Microsoft.Dotnet.Wpf.sln
@@ -17,6 +17,8 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Microsoft.DotNet.Arcade.Wpf
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.DotNet.Arcade.Wpf.Sdk.ArchNeutral", "packaging\Microsoft.DotNet.Arcade.Wpf.Sdk\Microsoft.DotNet.Arcade.Wpf.Sdk.ArchNeutral.csproj", "{B73BB4AB-68DE-4B91-BBB0-AB4F2D504AC3}"
EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.DotNet.Wpf.ProjectTemplates.ArchNeutral", "packaging\Microsoft.Dotnet.Wpf.ProjectTemplates\Microsoft.DotNet.Wpf.ProjectTemplates.ArchNeutral.csproj", "{BFF6C118-3369-43B5-ACA6-D65ED00EEBE0}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@@ -75,6 +77,18 @@ Global
{B73BB4AB-68DE-4B91-BBB0-AB4F2D504AC3}.Release|x64.Build.0 = Release|x64
{B73BB4AB-68DE-4B91-BBB0-AB4F2D504AC3}.Release|x86.ActiveCfg = Release|Any CPU
{B73BB4AB-68DE-4B91-BBB0-AB4F2D504AC3}.Release|x86.Build.0 = Release|Any CPU
+ {BFF6C118-3369-43B5-ACA6-D65ED00EEBE0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {BFF6C118-3369-43B5-ACA6-D65ED00EEBE0}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {BFF6C118-3369-43B5-ACA6-D65ED00EEBE0}.Debug|x64.ActiveCfg = Debug|x64
+ {BFF6C118-3369-43B5-ACA6-D65ED00EEBE0}.Debug|x64.Build.0 = Debug|x64
+ {BFF6C118-3369-43B5-ACA6-D65ED00EEBE0}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {BFF6C118-3369-43B5-ACA6-D65ED00EEBE0}.Debug|x86.Build.0 = Debug|Any CPU
+ {BFF6C118-3369-43B5-ACA6-D65ED00EEBE0}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {BFF6C118-3369-43B5-ACA6-D65ED00EEBE0}.Release|Any CPU.Build.0 = Release|Any CPU
+ {BFF6C118-3369-43B5-ACA6-D65ED00EEBE0}.Release|x64.ActiveCfg = Release|x64
+ {BFF6C118-3369-43B5-ACA6-D65ED00EEBE0}.Release|x64.Build.0 = Release|x64
+ {BFF6C118-3369-43B5-ACA6-D65ED00EEBE0}.Release|x86.ActiveCfg = Release|Any CPU
+ {BFF6C118-3369-43B5-ACA6-D65ED00EEBE0}.Release|x86.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@@ -85,6 +99,7 @@ Global
{9A7E395B-E859-40E2-809D-EFB72CF3A2EE} = {BF20132A-191F-4D34-9A1B-831772A6DFCF}
{8A2ABE39-2D50-48CA-AC32-078BBA32757A} = {0159B0F1-0626-4BED-8D1B-CBFF4F12C369}
{B73BB4AB-68DE-4B91-BBB0-AB4F2D504AC3} = {8A2ABE39-2D50-48CA-AC32-078BBA32757A}
+ {BFF6C118-3369-43B5-ACA6-D65ED00EEBE0} = {0159B0F1-0626-4BED-8D1B-CBFF4F12C369}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {D4D12991-F531-4FC3-849D-29946BCA818A}
diff --git a/packaging/Microsoft.Dotnet.Wpf.ProjectTemplates/Microsoft.DotNet.Wpf.ProjectTemplates.ArchNeutral.csproj b/packaging/Microsoft.Dotnet.Wpf.ProjectTemplates/Microsoft.DotNet.Wpf.ProjectTemplates.ArchNeutral.csproj
new file mode 100644
index 00000000000..b560eac5d2d
--- /dev/null
+++ b/packaging/Microsoft.Dotnet.Wpf.ProjectTemplates/Microsoft.DotNet.Wpf.ProjectTemplates.ArchNeutral.csproj
@@ -0,0 +1,29 @@
+
+
+ {BFF6C118-3369-43B5-ACA6-D65ED00EEBE0}
+ netcoreapp3.0
+ AnyCPU;x64
+ true
+ 3.0.0
+
+
+
+
+ true
+
+
+
+ $(MSBuildProjectName.Replace('.ArchNeutral',''))
+ $(PackageName)
+ Project templates for .NET Core WPF Projects
+
+
+
+
+
+
+
diff --git a/packaging/Microsoft.Dotnet.Wpf.ProjectTemplates/content/WpfApplication-CSharp/.template.config/dotnetcli.host.json b/packaging/Microsoft.Dotnet.Wpf.ProjectTemplates/content/WpfApplication-CSharp/.template.config/dotnetcli.host.json
new file mode 100644
index 00000000000..22ab4a3929f
--- /dev/null
+++ b/packaging/Microsoft.Dotnet.Wpf.ProjectTemplates/content/WpfApplication-CSharp/.template.config/dotnetcli.host.json
@@ -0,0 +1,24 @@
+{
+ "$schema": "http://json.schemastore.org/dotnetcli.host",
+ "symbolInfo": {
+ "TargetFrameworkOverride": {
+ "isHidden": "true",
+ "longName": "target-framework-override",
+ "shortName": ""
+ },
+ "Framework": {
+ "longName": "framework"
+ },
+ "skipRestore": {
+ "longName": "no-restore",
+ "shortName": ""
+ },
+ "langVersion": {
+ "longName": "langVersion",
+ "shortName": ""
+ }
+ },
+ "usageExamples": [
+ ""
+ ]
+}
diff --git a/packaging/Microsoft.Dotnet.Wpf.ProjectTemplates/content/WpfApplication-CSharp/.template.config/template.json b/packaging/Microsoft.Dotnet.Wpf.ProjectTemplates/content/WpfApplication-CSharp/.template.config/template.json
new file mode 100644
index 00000000000..0a16e0681e6
--- /dev/null
+++ b/packaging/Microsoft.Dotnet.Wpf.ProjectTemplates/content/WpfApplication-CSharp/.template.config/template.json
@@ -0,0 +1,86 @@
+{
+ "$schema": "http://json.schemastore.org/template",
+ "author": "Microsoft",
+ "classifications": ["Common", "WPF"],
+ "name": "WPF Application",
+ "generatorVersions": "[1.0.0.0-*)",
+ "description": "A project for creating a .NET Core WPF Application",
+ "groupIdentity": "Microsoft.Common.WPF",
+ "precedence": "3000",
+ "identity": "Microsoft.Common.WPF",
+ "shortName": "wpf",
+ "tags": {
+ "language": "C#",
+ "type": "project"
+ },
+ "sourceName": "Company.WpfApplication1",
+ "preferNameDirectory": true,
+ "symbols": {
+ "TargetFrameworkOverride": {
+ "type": "parameter",
+ "description": "Overrides the target framework",
+ "replaces": "TargetFrameworkOverride",
+ "datatype": "string",
+ "defaultValue": ""
+ },
+ "Framework": {
+ "type": "parameter",
+ "description": "The target framework for the project.",
+ "datatype": "choice",
+ "choices": [
+ {
+ "choice": "netcoreapp3.0",
+ "description": "Target netcoreapp3.0"
+ }
+ ],
+ "replaces": "netcoreapp3.0",
+ "defaultValue": "netcoreapp3.0"
+ },
+ "langVersion": {
+ "type": "parameter",
+ "datatype": "text",
+ "description": "Sets langVersion in the created project file",
+ "defaultValue": "",
+ "replaces": "$(ProjectLanguageVersion)"
+ },
+ "HostIdentifier": {
+ "type": "bind",
+ "binding": "HostIdentifier"
+ },
+ "skipRestore": {
+ "type": "parameter",
+ "datatype": "bool",
+ "description": "If specified, skips the automatic restore of the project on create.",
+ "defaultValue": "false"
+ }
+ },
+ "primaryOutputs": [
+ { "path": "Company.WpfApplication1.csproj" },
+ {
+ "condition": "(HostIdentifier != \"dotnetcli\" && HostIdentifier != \"dotnetcli-preview\")",
+ "path": "MainWindow.xaml.cs"
+ }
+ ],
+ "defaultName": "WpfApp1",
+ "postActions": [
+ {
+ "condition": "(!skipRestore)",
+ "description": "Restore NuGet packages required by this project.",
+ "manualInstructions": [
+ { "text": "Run 'dotnet restore'" }
+ ],
+ "actionId": "210D431B-A78B-4D2F-B762-4ED3E3EA9025",
+ "continueOnError": true
+ },
+ {
+ "condition": "(HostIdentifier != \"dotnetcli\" && HostIdentifier != \"dotnetcli-preview\")",
+ "description": "Opens MainWindow.xaml.cs in the editor",
+ "manualInstructions": [ ],
+ "actionId": "84C0DA21-51C8-4541-9940-6CA19AF04EE6",
+ "args": {
+ "files": "1"
+ },
+ "continueOnError": true
+ }
+ ]
+}
diff --git a/packaging/Microsoft.Dotnet.Wpf.ProjectTemplates/content/WpfApplication-CSharp/App.xaml b/packaging/Microsoft.Dotnet.Wpf.ProjectTemplates/content/WpfApplication-CSharp/App.xaml
new file mode 100644
index 00000000000..9a9e0f1546e
--- /dev/null
+++ b/packaging/Microsoft.Dotnet.Wpf.ProjectTemplates/content/WpfApplication-CSharp/App.xaml
@@ -0,0 +1,9 @@
+
+
+
+
+
diff --git a/packaging/Microsoft.Dotnet.Wpf.ProjectTemplates/content/WpfApplication-CSharp/App.xaml.cs b/packaging/Microsoft.Dotnet.Wpf.ProjectTemplates/content/WpfApplication-CSharp/App.xaml.cs
new file mode 100644
index 00000000000..ef64b7a43cf
--- /dev/null
+++ b/packaging/Microsoft.Dotnet.Wpf.ProjectTemplates/content/WpfApplication-CSharp/App.xaml.cs
@@ -0,0 +1,17 @@
+using System;
+using System.Collections.Generic;
+using System.Configuration;
+using System.Data;
+using System.Linq;
+using System.Threading.Tasks;
+using System.Windows;
+
+namespace Company.WpfApplication1
+{
+ ///
+ /// Interaction logic for App.xaml
+ ///
+ public partial class App : Application
+ {
+ }
+}
diff --git a/packaging/Microsoft.Dotnet.Wpf.ProjectTemplates/content/WpfApplication-CSharp/Company.WpfApplication1.csproj b/packaging/Microsoft.Dotnet.Wpf.ProjectTemplates/content/WpfApplication-CSharp/Company.WpfApplication1.csproj
new file mode 100644
index 00000000000..605a132abdf
--- /dev/null
+++ b/packaging/Microsoft.Dotnet.Wpf.ProjectTemplates/content/WpfApplication-CSharp/Company.WpfApplication1.csproj
@@ -0,0 +1,12 @@
+
+
+
+ WinExe
+ netcoreapp3.0
+ TargetFrameworkOverride
+ Company.WpfApplication1
+ $(ProjectLanguageVersion)
+ true
+
+
+
\ No newline at end of file
diff --git a/packaging/Microsoft.Dotnet.Wpf.ProjectTemplates/content/WpfApplication-CSharp/MainWindow.xaml b/packaging/Microsoft.Dotnet.Wpf.ProjectTemplates/content/WpfApplication-CSharp/MainWindow.xaml
new file mode 100644
index 00000000000..ec11bd07c78
--- /dev/null
+++ b/packaging/Microsoft.Dotnet.Wpf.ProjectTemplates/content/WpfApplication-CSharp/MainWindow.xaml
@@ -0,0 +1,18 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/packaging/Microsoft.Dotnet.Wpf.ProjectTemplates/content/WpfApplication-CSharp/MainWindow.xaml.cs b/packaging/Microsoft.Dotnet.Wpf.ProjectTemplates/content/WpfApplication-CSharp/MainWindow.xaml.cs
new file mode 100644
index 00000000000..7e536261c2f
--- /dev/null
+++ b/packaging/Microsoft.Dotnet.Wpf.ProjectTemplates/content/WpfApplication-CSharp/MainWindow.xaml.cs
@@ -0,0 +1,33 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows;
+using System.Windows.Controls;
+using System.Windows.Data;
+using System.Windows.Documents;
+using System.Windows.Input;
+using System.Windows.Media;
+using System.Windows.Media.Imaging;
+using System.Windows.Navigation;
+using System.Windows.Shapes;
+
+namespace Company.WpfApplication1
+{
+ ///
+ /// Interaction logic for MainWindow.xaml
+ ///
+ public partial class MainWindow : Window
+ {
+ public MainWindow()
+ {
+ InitializeComponent();
+ }
+
+ private void ButtonExit_Click(object sender, RoutedEventArgs e)
+ {
+ Application.Current.Shutdown();
+ }
+ }
+}
diff --git a/packaging/Microsoft.Dotnet.Wpf.ProjectTemplates/useSharedDesignerContext.txt b/packaging/Microsoft.Dotnet.Wpf.ProjectTemplates/useSharedDesignerContext.txt
new file mode 100644
index 00000000000..e69de29bb2d