diff --git a/Directory.Build.props b/Directory.Build.props
index 2b5c0561dcb..17e5afcf1b5 100644
--- a/Directory.Build.props
+++ b/Directory.Build.props
@@ -25,8 +25,7 @@
$(RepoRoot)tools\
$(RepoRoot).tools\
$(RepoRoot)localize\
- $(ArtifactsDir)templates\
- $(ArtifactsDir)templates-notimestamp\
+ $(RepoRoot)template_feed\
$(RepoRoot)src\
$(RepoRoot)test\
MicrosoftAspNetCore
diff --git a/Microsoft.TemplateEngine.sln b/Microsoft.TemplateEngine.sln
index 0d5387cca56..a14ebf9f5a0 100644
--- a/Microsoft.TemplateEngine.sln
+++ b/Microsoft.TemplateEngine.sln
@@ -102,6 +102,12 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Microsoft.TemplateEngine.Co
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.TemplateEngine.Authoring.TemplateApiVerifier", "tools\Microsoft.TemplateEngine.Authoring.TemplateApiVerifier\Microsoft.TemplateEngine.Authoring.TemplateApiVerifier.csproj", "{449B9DDA-F18C-411E-9A74-3930652BB78A}"
EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "template-feed", "template-feed", "{FF433F83-22C2-46E0-99B3-4FFCA5190A94}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.TemplateEngine.Authoring.Templates", "template_feed\Microsoft.TemplateEngine.Authoring.Templates\Microsoft.TemplateEngine.Authoring.Templates.csproj", "{1F74F8F5-99E4-47AE-8608-6D470325E81C}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.TemplateEngine.Authoring.Templates.IntegrationTests", "test\Microsoft.TemplateEngine.Authoring.Templates.IntegrationTests\Microsoft.TemplateEngine.Authoring.Templates.IntegrationTests.csproj", "{8651DEEB-0291-4E49-92AA-3B097DAF9D37}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@@ -484,6 +490,30 @@ Global
{449B9DDA-F18C-411E-9A74-3930652BB78A}.Release|x64.Build.0 = Release|Any CPU
{449B9DDA-F18C-411E-9A74-3930652BB78A}.Release|x86.ActiveCfg = Release|Any CPU
{449B9DDA-F18C-411E-9A74-3930652BB78A}.Release|x86.Build.0 = Release|Any CPU
+ {1F74F8F5-99E4-47AE-8608-6D470325E81C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {1F74F8F5-99E4-47AE-8608-6D470325E81C}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {1F74F8F5-99E4-47AE-8608-6D470325E81C}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {1F74F8F5-99E4-47AE-8608-6D470325E81C}.Debug|x64.Build.0 = Debug|Any CPU
+ {1F74F8F5-99E4-47AE-8608-6D470325E81C}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {1F74F8F5-99E4-47AE-8608-6D470325E81C}.Debug|x86.Build.0 = Debug|Any CPU
+ {1F74F8F5-99E4-47AE-8608-6D470325E81C}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {1F74F8F5-99E4-47AE-8608-6D470325E81C}.Release|Any CPU.Build.0 = Release|Any CPU
+ {1F74F8F5-99E4-47AE-8608-6D470325E81C}.Release|x64.ActiveCfg = Release|Any CPU
+ {1F74F8F5-99E4-47AE-8608-6D470325E81C}.Release|x64.Build.0 = Release|Any CPU
+ {1F74F8F5-99E4-47AE-8608-6D470325E81C}.Release|x86.ActiveCfg = Release|Any CPU
+ {1F74F8F5-99E4-47AE-8608-6D470325E81C}.Release|x86.Build.0 = Release|Any CPU
+ {8651DEEB-0291-4E49-92AA-3B097DAF9D37}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {8651DEEB-0291-4E49-92AA-3B097DAF9D37}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {8651DEEB-0291-4E49-92AA-3B097DAF9D37}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {8651DEEB-0291-4E49-92AA-3B097DAF9D37}.Debug|x64.Build.0 = Debug|Any CPU
+ {8651DEEB-0291-4E49-92AA-3B097DAF9D37}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {8651DEEB-0291-4E49-92AA-3B097DAF9D37}.Debug|x86.Build.0 = Debug|Any CPU
+ {8651DEEB-0291-4E49-92AA-3B097DAF9D37}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {8651DEEB-0291-4E49-92AA-3B097DAF9D37}.Release|Any CPU.Build.0 = Release|Any CPU
+ {8651DEEB-0291-4E49-92AA-3B097DAF9D37}.Release|x64.ActiveCfg = Release|Any CPU
+ {8651DEEB-0291-4E49-92AA-3B097DAF9D37}.Release|x64.Build.0 = Release|Any CPU
+ {8651DEEB-0291-4E49-92AA-3B097DAF9D37}.Release|x86.ActiveCfg = Release|Any CPU
+ {8651DEEB-0291-4E49-92AA-3B097DAF9D37}.Release|x86.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@@ -523,6 +553,8 @@ Global
{43053BC4-32B4-4404-B62D-410F367CE0CE} = {B794BF86-4185-4DCE-AC86-C27D5D966B9B}
{EE8CD472-D8C4-4CD0-BC84-6C305F5971AE} = {43053BC4-32B4-4404-B62D-410F367CE0CE}
{449B9DDA-F18C-411E-9A74-3930652BB78A} = {B794BF86-4185-4DCE-AC86-C27D5D966B9B}
+ {1F74F8F5-99E4-47AE-8608-6D470325E81C} = {FF433F83-22C2-46E0-99B3-4FFCA5190A94}
+ {8651DEEB-0291-4E49-92AA-3B097DAF9D37} = {8B498D0C-F488-4B38-8A7D-B20BF9DB6F60}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {6EA1A508-6033-4538-BF98-7F71B4E297AD}
diff --git a/template_feed/Microsoft.TemplateEngine.Authoring.Templates/Microsoft.TemplateEngine.Authoring.Templates.csproj b/template_feed/Microsoft.TemplateEngine.Authoring.Templates/Microsoft.TemplateEngine.Authoring.Templates.csproj
new file mode 100644
index 00000000000..0a7184dcc0d
--- /dev/null
+++ b/template_feed/Microsoft.TemplateEngine.Authoring.Templates/Microsoft.TemplateEngine.Authoring.Templates.csproj
@@ -0,0 +1,30 @@
+
+
+ $(NETCoreTargetFramework)
+ False
+ False
+ False
+ $(ArtifactsTmpDir)
+ False
+ true
+ true
+ true
+ true
+ 2008;NU5105
+ true
+ Microsoft.TemplateEngine.Authoring.Templates
+ Microsoft
+ The templates for useful items and projects for template authoring.
+ en-US
+ https://github.com/dotnet/templating
+ Template
+ True
+ true
+
+
+
+
+ content
+
+
+
diff --git a/template_feed/Microsoft.TemplateEngine.Authoring.Templates/README.md b/template_feed/Microsoft.TemplateEngine.Authoring.Templates/README.md
new file mode 100644
index 00000000000..c67306cee7a
--- /dev/null
+++ b/template_feed/Microsoft.TemplateEngine.Authoring.Templates/README.md
@@ -0,0 +1,10 @@
+## The templates for template authoring
+
+The package contains the templates useful for the template authoring:
+| Template name | Short name | Description|
+|---|---|---|
+|`template.json` configuration file|`template.json`|A template for template.json configuration file for .NET template.|
+|Template Package|`template-package`|A project for creating template package containing .NET templates.|
+
+The package is available for download from nuget.org.
+Please feel to contribute or provide the feedback in discussions or via opening the issue in dotnet/templating repo.
diff --git a/template_feed/Microsoft.TemplateEngine.Authoring.Templates/content/TemplateJson/.template.config/dotnetcli.host.json b/template_feed/Microsoft.TemplateEngine.Authoring.Templates/content/TemplateJson/.template.config/dotnetcli.host.json
new file mode 100644
index 00000000000..adb957225fa
--- /dev/null
+++ b/template_feed/Microsoft.TemplateEngine.Authoring.Templates/content/TemplateJson/.template.config/dotnetcli.host.json
@@ -0,0 +1,21 @@
+{
+ "$schema": "http://json.schemastore.org/dotnetcli.host",
+ "symbolInfo": {
+ "CreateTemplateConfigFolder": {
+ "longName": "create-template-config-folder",
+ "shortName": ""
+ },
+ "TemplateName": {
+ "longName": "template-name",
+ "shortName": "tn"
+ },
+ "TemplateShortName": {
+ "longName": "short-name",
+ "shortName": "sn"
+ },
+ "TemplateIdentity": {
+ "longName": "template-identity",
+ "shortName": "ti"
+ }
+ }
+}
diff --git a/template_feed/Microsoft.TemplateEngine.Authoring.Templates/content/TemplateJson/.template.config/localize/templatestrings.cs.json b/template_feed/Microsoft.TemplateEngine.Authoring.Templates/content/TemplateJson/.template.config/localize/templatestrings.cs.json
new file mode 100644
index 00000000000..27c1db4a374
--- /dev/null
+++ b/template_feed/Microsoft.TemplateEngine.Authoring.Templates/content/TemplateJson/.template.config/localize/templatestrings.cs.json
@@ -0,0 +1,15 @@
+{
+ "author": "Microsoft",
+ "name": "template.json configuration file",
+ "description": "A template for template.json configuration file for .NET template. See https://aka.ms/template-json-reference for complete configuration description.",
+ "symbols/CreateTemplateConfigFolder/description": "True when template.json should be created in .template.config folder.",
+ "symbols/CreateTemplateConfigFolder/displayName": "Create .template.config folder",
+ "symbols/TemplateName/description": "The template name.",
+ "symbols/TemplateName/displayName": "Template name",
+ "symbols/TemplateShortName/description": "The template short name.",
+ "symbols/TemplateShortName/displayName": "Template short name",
+ "symbols/TemplateIdentity/description": "The template identity (should be unique).",
+ "symbols/TemplateIdentity/displayName": "Template identity",
+ "postActions/instructions/description": "Manual actions required",
+ "postActions/instructions/manualInstructions/default/text": "Open template.json in the editor and complete the configuration."
+}
\ No newline at end of file
diff --git a/template_feed/Microsoft.TemplateEngine.Authoring.Templates/content/TemplateJson/.template.config/localize/templatestrings.de.json b/template_feed/Microsoft.TemplateEngine.Authoring.Templates/content/TemplateJson/.template.config/localize/templatestrings.de.json
new file mode 100644
index 00000000000..27c1db4a374
--- /dev/null
+++ b/template_feed/Microsoft.TemplateEngine.Authoring.Templates/content/TemplateJson/.template.config/localize/templatestrings.de.json
@@ -0,0 +1,15 @@
+{
+ "author": "Microsoft",
+ "name": "template.json configuration file",
+ "description": "A template for template.json configuration file for .NET template. See https://aka.ms/template-json-reference for complete configuration description.",
+ "symbols/CreateTemplateConfigFolder/description": "True when template.json should be created in .template.config folder.",
+ "symbols/CreateTemplateConfigFolder/displayName": "Create .template.config folder",
+ "symbols/TemplateName/description": "The template name.",
+ "symbols/TemplateName/displayName": "Template name",
+ "symbols/TemplateShortName/description": "The template short name.",
+ "symbols/TemplateShortName/displayName": "Template short name",
+ "symbols/TemplateIdentity/description": "The template identity (should be unique).",
+ "symbols/TemplateIdentity/displayName": "Template identity",
+ "postActions/instructions/description": "Manual actions required",
+ "postActions/instructions/manualInstructions/default/text": "Open template.json in the editor and complete the configuration."
+}
\ No newline at end of file
diff --git a/template_feed/Microsoft.TemplateEngine.Authoring.Templates/content/TemplateJson/.template.config/localize/templatestrings.en.json b/template_feed/Microsoft.TemplateEngine.Authoring.Templates/content/TemplateJson/.template.config/localize/templatestrings.en.json
new file mode 100644
index 00000000000..27c1db4a374
--- /dev/null
+++ b/template_feed/Microsoft.TemplateEngine.Authoring.Templates/content/TemplateJson/.template.config/localize/templatestrings.en.json
@@ -0,0 +1,15 @@
+{
+ "author": "Microsoft",
+ "name": "template.json configuration file",
+ "description": "A template for template.json configuration file for .NET template. See https://aka.ms/template-json-reference for complete configuration description.",
+ "symbols/CreateTemplateConfigFolder/description": "True when template.json should be created in .template.config folder.",
+ "symbols/CreateTemplateConfigFolder/displayName": "Create .template.config folder",
+ "symbols/TemplateName/description": "The template name.",
+ "symbols/TemplateName/displayName": "Template name",
+ "symbols/TemplateShortName/description": "The template short name.",
+ "symbols/TemplateShortName/displayName": "Template short name",
+ "symbols/TemplateIdentity/description": "The template identity (should be unique).",
+ "symbols/TemplateIdentity/displayName": "Template identity",
+ "postActions/instructions/description": "Manual actions required",
+ "postActions/instructions/manualInstructions/default/text": "Open template.json in the editor and complete the configuration."
+}
\ No newline at end of file
diff --git a/template_feed/Microsoft.TemplateEngine.Authoring.Templates/content/TemplateJson/.template.config/localize/templatestrings.es.json b/template_feed/Microsoft.TemplateEngine.Authoring.Templates/content/TemplateJson/.template.config/localize/templatestrings.es.json
new file mode 100644
index 00000000000..27c1db4a374
--- /dev/null
+++ b/template_feed/Microsoft.TemplateEngine.Authoring.Templates/content/TemplateJson/.template.config/localize/templatestrings.es.json
@@ -0,0 +1,15 @@
+{
+ "author": "Microsoft",
+ "name": "template.json configuration file",
+ "description": "A template for template.json configuration file for .NET template. See https://aka.ms/template-json-reference for complete configuration description.",
+ "symbols/CreateTemplateConfigFolder/description": "True when template.json should be created in .template.config folder.",
+ "symbols/CreateTemplateConfigFolder/displayName": "Create .template.config folder",
+ "symbols/TemplateName/description": "The template name.",
+ "symbols/TemplateName/displayName": "Template name",
+ "symbols/TemplateShortName/description": "The template short name.",
+ "symbols/TemplateShortName/displayName": "Template short name",
+ "symbols/TemplateIdentity/description": "The template identity (should be unique).",
+ "symbols/TemplateIdentity/displayName": "Template identity",
+ "postActions/instructions/description": "Manual actions required",
+ "postActions/instructions/manualInstructions/default/text": "Open template.json in the editor and complete the configuration."
+}
\ No newline at end of file
diff --git a/template_feed/Microsoft.TemplateEngine.Authoring.Templates/content/TemplateJson/.template.config/localize/templatestrings.fr.json b/template_feed/Microsoft.TemplateEngine.Authoring.Templates/content/TemplateJson/.template.config/localize/templatestrings.fr.json
new file mode 100644
index 00000000000..27c1db4a374
--- /dev/null
+++ b/template_feed/Microsoft.TemplateEngine.Authoring.Templates/content/TemplateJson/.template.config/localize/templatestrings.fr.json
@@ -0,0 +1,15 @@
+{
+ "author": "Microsoft",
+ "name": "template.json configuration file",
+ "description": "A template for template.json configuration file for .NET template. See https://aka.ms/template-json-reference for complete configuration description.",
+ "symbols/CreateTemplateConfigFolder/description": "True when template.json should be created in .template.config folder.",
+ "symbols/CreateTemplateConfigFolder/displayName": "Create .template.config folder",
+ "symbols/TemplateName/description": "The template name.",
+ "symbols/TemplateName/displayName": "Template name",
+ "symbols/TemplateShortName/description": "The template short name.",
+ "symbols/TemplateShortName/displayName": "Template short name",
+ "symbols/TemplateIdentity/description": "The template identity (should be unique).",
+ "symbols/TemplateIdentity/displayName": "Template identity",
+ "postActions/instructions/description": "Manual actions required",
+ "postActions/instructions/manualInstructions/default/text": "Open template.json in the editor and complete the configuration."
+}
\ No newline at end of file
diff --git a/template_feed/Microsoft.TemplateEngine.Authoring.Templates/content/TemplateJson/.template.config/localize/templatestrings.it.json b/template_feed/Microsoft.TemplateEngine.Authoring.Templates/content/TemplateJson/.template.config/localize/templatestrings.it.json
new file mode 100644
index 00000000000..27c1db4a374
--- /dev/null
+++ b/template_feed/Microsoft.TemplateEngine.Authoring.Templates/content/TemplateJson/.template.config/localize/templatestrings.it.json
@@ -0,0 +1,15 @@
+{
+ "author": "Microsoft",
+ "name": "template.json configuration file",
+ "description": "A template for template.json configuration file for .NET template. See https://aka.ms/template-json-reference for complete configuration description.",
+ "symbols/CreateTemplateConfigFolder/description": "True when template.json should be created in .template.config folder.",
+ "symbols/CreateTemplateConfigFolder/displayName": "Create .template.config folder",
+ "symbols/TemplateName/description": "The template name.",
+ "symbols/TemplateName/displayName": "Template name",
+ "symbols/TemplateShortName/description": "The template short name.",
+ "symbols/TemplateShortName/displayName": "Template short name",
+ "symbols/TemplateIdentity/description": "The template identity (should be unique).",
+ "symbols/TemplateIdentity/displayName": "Template identity",
+ "postActions/instructions/description": "Manual actions required",
+ "postActions/instructions/manualInstructions/default/text": "Open template.json in the editor and complete the configuration."
+}
\ No newline at end of file
diff --git a/template_feed/Microsoft.TemplateEngine.Authoring.Templates/content/TemplateJson/.template.config/localize/templatestrings.ja.json b/template_feed/Microsoft.TemplateEngine.Authoring.Templates/content/TemplateJson/.template.config/localize/templatestrings.ja.json
new file mode 100644
index 00000000000..27c1db4a374
--- /dev/null
+++ b/template_feed/Microsoft.TemplateEngine.Authoring.Templates/content/TemplateJson/.template.config/localize/templatestrings.ja.json
@@ -0,0 +1,15 @@
+{
+ "author": "Microsoft",
+ "name": "template.json configuration file",
+ "description": "A template for template.json configuration file for .NET template. See https://aka.ms/template-json-reference for complete configuration description.",
+ "symbols/CreateTemplateConfigFolder/description": "True when template.json should be created in .template.config folder.",
+ "symbols/CreateTemplateConfigFolder/displayName": "Create .template.config folder",
+ "symbols/TemplateName/description": "The template name.",
+ "symbols/TemplateName/displayName": "Template name",
+ "symbols/TemplateShortName/description": "The template short name.",
+ "symbols/TemplateShortName/displayName": "Template short name",
+ "symbols/TemplateIdentity/description": "The template identity (should be unique).",
+ "symbols/TemplateIdentity/displayName": "Template identity",
+ "postActions/instructions/description": "Manual actions required",
+ "postActions/instructions/manualInstructions/default/text": "Open template.json in the editor and complete the configuration."
+}
\ No newline at end of file
diff --git a/template_feed/Microsoft.TemplateEngine.Authoring.Templates/content/TemplateJson/.template.config/localize/templatestrings.ko.json b/template_feed/Microsoft.TemplateEngine.Authoring.Templates/content/TemplateJson/.template.config/localize/templatestrings.ko.json
new file mode 100644
index 00000000000..27c1db4a374
--- /dev/null
+++ b/template_feed/Microsoft.TemplateEngine.Authoring.Templates/content/TemplateJson/.template.config/localize/templatestrings.ko.json
@@ -0,0 +1,15 @@
+{
+ "author": "Microsoft",
+ "name": "template.json configuration file",
+ "description": "A template for template.json configuration file for .NET template. See https://aka.ms/template-json-reference for complete configuration description.",
+ "symbols/CreateTemplateConfigFolder/description": "True when template.json should be created in .template.config folder.",
+ "symbols/CreateTemplateConfigFolder/displayName": "Create .template.config folder",
+ "symbols/TemplateName/description": "The template name.",
+ "symbols/TemplateName/displayName": "Template name",
+ "symbols/TemplateShortName/description": "The template short name.",
+ "symbols/TemplateShortName/displayName": "Template short name",
+ "symbols/TemplateIdentity/description": "The template identity (should be unique).",
+ "symbols/TemplateIdentity/displayName": "Template identity",
+ "postActions/instructions/description": "Manual actions required",
+ "postActions/instructions/manualInstructions/default/text": "Open template.json in the editor and complete the configuration."
+}
\ No newline at end of file
diff --git a/template_feed/Microsoft.TemplateEngine.Authoring.Templates/content/TemplateJson/.template.config/localize/templatestrings.pl.json b/template_feed/Microsoft.TemplateEngine.Authoring.Templates/content/TemplateJson/.template.config/localize/templatestrings.pl.json
new file mode 100644
index 00000000000..27c1db4a374
--- /dev/null
+++ b/template_feed/Microsoft.TemplateEngine.Authoring.Templates/content/TemplateJson/.template.config/localize/templatestrings.pl.json
@@ -0,0 +1,15 @@
+{
+ "author": "Microsoft",
+ "name": "template.json configuration file",
+ "description": "A template for template.json configuration file for .NET template. See https://aka.ms/template-json-reference for complete configuration description.",
+ "symbols/CreateTemplateConfigFolder/description": "True when template.json should be created in .template.config folder.",
+ "symbols/CreateTemplateConfigFolder/displayName": "Create .template.config folder",
+ "symbols/TemplateName/description": "The template name.",
+ "symbols/TemplateName/displayName": "Template name",
+ "symbols/TemplateShortName/description": "The template short name.",
+ "symbols/TemplateShortName/displayName": "Template short name",
+ "symbols/TemplateIdentity/description": "The template identity (should be unique).",
+ "symbols/TemplateIdentity/displayName": "Template identity",
+ "postActions/instructions/description": "Manual actions required",
+ "postActions/instructions/manualInstructions/default/text": "Open template.json in the editor and complete the configuration."
+}
\ No newline at end of file
diff --git a/template_feed/Microsoft.TemplateEngine.Authoring.Templates/content/TemplateJson/.template.config/localize/templatestrings.pt-BR.json b/template_feed/Microsoft.TemplateEngine.Authoring.Templates/content/TemplateJson/.template.config/localize/templatestrings.pt-BR.json
new file mode 100644
index 00000000000..27c1db4a374
--- /dev/null
+++ b/template_feed/Microsoft.TemplateEngine.Authoring.Templates/content/TemplateJson/.template.config/localize/templatestrings.pt-BR.json
@@ -0,0 +1,15 @@
+{
+ "author": "Microsoft",
+ "name": "template.json configuration file",
+ "description": "A template for template.json configuration file for .NET template. See https://aka.ms/template-json-reference for complete configuration description.",
+ "symbols/CreateTemplateConfigFolder/description": "True when template.json should be created in .template.config folder.",
+ "symbols/CreateTemplateConfigFolder/displayName": "Create .template.config folder",
+ "symbols/TemplateName/description": "The template name.",
+ "symbols/TemplateName/displayName": "Template name",
+ "symbols/TemplateShortName/description": "The template short name.",
+ "symbols/TemplateShortName/displayName": "Template short name",
+ "symbols/TemplateIdentity/description": "The template identity (should be unique).",
+ "symbols/TemplateIdentity/displayName": "Template identity",
+ "postActions/instructions/description": "Manual actions required",
+ "postActions/instructions/manualInstructions/default/text": "Open template.json in the editor and complete the configuration."
+}
\ No newline at end of file
diff --git a/template_feed/Microsoft.TemplateEngine.Authoring.Templates/content/TemplateJson/.template.config/localize/templatestrings.ru.json b/template_feed/Microsoft.TemplateEngine.Authoring.Templates/content/TemplateJson/.template.config/localize/templatestrings.ru.json
new file mode 100644
index 00000000000..27c1db4a374
--- /dev/null
+++ b/template_feed/Microsoft.TemplateEngine.Authoring.Templates/content/TemplateJson/.template.config/localize/templatestrings.ru.json
@@ -0,0 +1,15 @@
+{
+ "author": "Microsoft",
+ "name": "template.json configuration file",
+ "description": "A template for template.json configuration file for .NET template. See https://aka.ms/template-json-reference for complete configuration description.",
+ "symbols/CreateTemplateConfigFolder/description": "True when template.json should be created in .template.config folder.",
+ "symbols/CreateTemplateConfigFolder/displayName": "Create .template.config folder",
+ "symbols/TemplateName/description": "The template name.",
+ "symbols/TemplateName/displayName": "Template name",
+ "symbols/TemplateShortName/description": "The template short name.",
+ "symbols/TemplateShortName/displayName": "Template short name",
+ "symbols/TemplateIdentity/description": "The template identity (should be unique).",
+ "symbols/TemplateIdentity/displayName": "Template identity",
+ "postActions/instructions/description": "Manual actions required",
+ "postActions/instructions/manualInstructions/default/text": "Open template.json in the editor and complete the configuration."
+}
\ No newline at end of file
diff --git a/template_feed/Microsoft.TemplateEngine.Authoring.Templates/content/TemplateJson/.template.config/localize/templatestrings.tr.json b/template_feed/Microsoft.TemplateEngine.Authoring.Templates/content/TemplateJson/.template.config/localize/templatestrings.tr.json
new file mode 100644
index 00000000000..27c1db4a374
--- /dev/null
+++ b/template_feed/Microsoft.TemplateEngine.Authoring.Templates/content/TemplateJson/.template.config/localize/templatestrings.tr.json
@@ -0,0 +1,15 @@
+{
+ "author": "Microsoft",
+ "name": "template.json configuration file",
+ "description": "A template for template.json configuration file for .NET template. See https://aka.ms/template-json-reference for complete configuration description.",
+ "symbols/CreateTemplateConfigFolder/description": "True when template.json should be created in .template.config folder.",
+ "symbols/CreateTemplateConfigFolder/displayName": "Create .template.config folder",
+ "symbols/TemplateName/description": "The template name.",
+ "symbols/TemplateName/displayName": "Template name",
+ "symbols/TemplateShortName/description": "The template short name.",
+ "symbols/TemplateShortName/displayName": "Template short name",
+ "symbols/TemplateIdentity/description": "The template identity (should be unique).",
+ "symbols/TemplateIdentity/displayName": "Template identity",
+ "postActions/instructions/description": "Manual actions required",
+ "postActions/instructions/manualInstructions/default/text": "Open template.json in the editor and complete the configuration."
+}
\ No newline at end of file
diff --git a/template_feed/Microsoft.TemplateEngine.Authoring.Templates/content/TemplateJson/.template.config/localize/templatestrings.zh-Hans.json b/template_feed/Microsoft.TemplateEngine.Authoring.Templates/content/TemplateJson/.template.config/localize/templatestrings.zh-Hans.json
new file mode 100644
index 00000000000..27c1db4a374
--- /dev/null
+++ b/template_feed/Microsoft.TemplateEngine.Authoring.Templates/content/TemplateJson/.template.config/localize/templatestrings.zh-Hans.json
@@ -0,0 +1,15 @@
+{
+ "author": "Microsoft",
+ "name": "template.json configuration file",
+ "description": "A template for template.json configuration file for .NET template. See https://aka.ms/template-json-reference for complete configuration description.",
+ "symbols/CreateTemplateConfigFolder/description": "True when template.json should be created in .template.config folder.",
+ "symbols/CreateTemplateConfigFolder/displayName": "Create .template.config folder",
+ "symbols/TemplateName/description": "The template name.",
+ "symbols/TemplateName/displayName": "Template name",
+ "symbols/TemplateShortName/description": "The template short name.",
+ "symbols/TemplateShortName/displayName": "Template short name",
+ "symbols/TemplateIdentity/description": "The template identity (should be unique).",
+ "symbols/TemplateIdentity/displayName": "Template identity",
+ "postActions/instructions/description": "Manual actions required",
+ "postActions/instructions/manualInstructions/default/text": "Open template.json in the editor and complete the configuration."
+}
\ No newline at end of file
diff --git a/template_feed/Microsoft.TemplateEngine.Authoring.Templates/content/TemplateJson/.template.config/localize/templatestrings.zh-Hant.json b/template_feed/Microsoft.TemplateEngine.Authoring.Templates/content/TemplateJson/.template.config/localize/templatestrings.zh-Hant.json
new file mode 100644
index 00000000000..27c1db4a374
--- /dev/null
+++ b/template_feed/Microsoft.TemplateEngine.Authoring.Templates/content/TemplateJson/.template.config/localize/templatestrings.zh-Hant.json
@@ -0,0 +1,15 @@
+{
+ "author": "Microsoft",
+ "name": "template.json configuration file",
+ "description": "A template for template.json configuration file for .NET template. See https://aka.ms/template-json-reference for complete configuration description.",
+ "symbols/CreateTemplateConfigFolder/description": "True when template.json should be created in .template.config folder.",
+ "symbols/CreateTemplateConfigFolder/displayName": "Create .template.config folder",
+ "symbols/TemplateName/description": "The template name.",
+ "symbols/TemplateName/displayName": "Template name",
+ "symbols/TemplateShortName/description": "The template short name.",
+ "symbols/TemplateShortName/displayName": "Template short name",
+ "symbols/TemplateIdentity/description": "The template identity (should be unique).",
+ "symbols/TemplateIdentity/displayName": "Template identity",
+ "postActions/instructions/description": "Manual actions required",
+ "postActions/instructions/manualInstructions/default/text": "Open template.json in the editor and complete the configuration."
+}
\ No newline at end of file
diff --git a/template_feed/Microsoft.TemplateEngine.Authoring.Templates/content/TemplateJson/.template.config/template.json b/template_feed/Microsoft.TemplateEngine.Authoring.Templates/content/TemplateJson/.template.config/template.json
new file mode 100644
index 00000000000..c26d918de8e
--- /dev/null
+++ b/template_feed/Microsoft.TemplateEngine.Authoring.Templates/content/TemplateJson/.template.config/template.json
@@ -0,0 +1,90 @@
+{
+ "$schema": "http://json.schemastore.org/template",
+ "author": "Microsoft",
+ "classifications": [
+ "Template Authoring"
+ ],
+ "name": "template.json configuration file",
+ "generatorVersions": "[1.0.0.0-*)",
+ "description": "A template for template.json configuration file for .NET template. See https://aka.ms/template-json-reference for complete configuration description.",
+ "groupIdentity": "Microsoft.TemplateEngine.Authoring.TemplateJson",
+ "precedence": "0",
+ "identity": "Microsoft.TemplateEngine.Authoring.TemplateJson.1.0",
+ "shortName": "template.json",
+ "tags": {
+ "language": "JSON",
+ "type": "item"
+ },
+ "symbols": {
+ "CreateTemplateConfigFolder": {
+ "type": "parameter",
+ "datatype": "bool",
+ "description": "True when template.json should be created in .template.config folder.",
+ "defaultValue": "true",
+ "displayName": "Create .template.config folder"
+ },
+ "TemplateName": {
+ "type": "parameter",
+ "datatype": "string",
+ "description": "The template name.",
+ "defaultValue": "New Template",
+ "replaces": "New Template",
+ "displayName": "Template name"
+ },
+ "TemplateShortName": {
+ "type": "parameter",
+ "datatype": "string",
+ "description": "The template short name.",
+ "defaultValue": "new-template",
+ "replaces": "new-template",
+ "displayName": "Template short name"
+ },
+ "TemplateIdentity": {
+ "type": "parameter",
+ "datatype": "string",
+ "description": "The template identity (should be unique).",
+ "defaultValue": "New.Template.Identity",
+ "replaces": "New.Template.Identity",
+ "displayName": "Template identity"
+ }
+ },
+ "sources": [
+ {
+ "condition": "CreateTemplateConfigFolder == true",
+ "target": ".template.config/",
+ "rename": {
+ "_template.json": "template.json"
+ }
+ },
+ {
+ "condition": "CreateTemplateConfigFolder == false",
+ "target": "./",
+ "rename": {
+ "_template.json": "template.json"
+ }
+ }
+ ],
+ "primaryOutputs": [
+ {
+ "condition": "CreateTemplateConfigFolder == true",
+ "path": ".template.config/template.json"
+ },
+ {
+ "condition": "CreateTemplateConfigFolder != true",
+ "path": "template.json"
+ }
+ ],
+ "postActions": [
+ {
+ "id": "instructions",
+ "description": "Manual actions required",
+ "manualInstructions": [
+ {
+ "text": "Open template.json in the editor and complete the configuration."
+ }
+ ],
+ "actionId": "AC1156F7-BB77-4DB8-B28F-24EEBCCA1E5C",
+ "continueOnError": true
+ }
+ ]
+}
diff --git a/template_feed/Microsoft.TemplateEngine.Authoring.Templates/content/TemplateJson/_template.json b/template_feed/Microsoft.TemplateEngine.Authoring.Templates/content/TemplateJson/_template.json
new file mode 100644
index 00000000000..eb638e57305
--- /dev/null
+++ b/template_feed/Microsoft.TemplateEngine.Authoring.Templates/content/TemplateJson/_template.json
@@ -0,0 +1,69 @@
+{
+ "$schema": "http://json.schemastore.org/template",
+ "$comment": "See https://aka.ms/template-json-reference for complete configuration description. Complete TODOs below and remove the $comment properties. It is recommended to use the JSON editor that supports schema hints to get more information about defined JSON properties and their description.",
+ "author": "TODO: fill author name here.",
+ "classifications": [
+ "TODO: fill classification here. Common classifications are: Library, Test, Web etc. Each classification should be a separate element of the array. For more details, see https://aka.ms/template-json-reference#classifications."
+ ],
+ "name": "New Template",
+ "description": "TODO: fill the template description here.",
+ "precedence": "0",
+ "identity": "New.Template.Identity",
+ "shortName": "new-template",
+ "tags": {
+ "$comment": "TODO: fill the language and type below. Common types are: project, item, solution.",
+ "language": "C#",
+ "type": "project"
+ },
+ "$comment_sourceName": "TODO: Source name should follow these rules: https://aka.ms/template-json-source-name. Source name may be removed if replacement for name is not required.",
+ "sourceName": "New.Template.1",
+ "preferNameDirectory": true,
+ "symbols": {
+ "ExampleParameter": {
+ "$comment": "TODO: The symbols section defines variables and their values. For more details, see https://aka.ms/template-json-reference#symbols.",
+ "type": "parameter",
+ "datatype": "string",
+ "defaultValue": "example",
+ "replaces": "valueToReplace",
+ "isEnabled": false
+ }
+ },
+ "sources": [
+ {
+ "$comment": "TODO: Sources control the paths for source and target content. For more details see https://aka.ms/template-json-reference#symbols#source-definition. If source definition is not required, remove the property.",
+ "condition": "false",
+ "source": "./source-files",
+ "target": "./target"
+ }
+ ],
+ "constraints": {
+ "SampleConstraint": {
+ "$comment": "TODO: The template may define the constraints all of which must be met in order for the template to be used. For more details see https://aka.ms/template-json-reference#symbols#template-constraints. If constraints are not required, remove the property.",
+ "type": "os",
+ "args": [ "Linux", "OSX", "Windows" ]
+ }
+ },
+ "primaryOutputs": [
+ {
+ "$comment": "TODO: Primary outputs define the list of template files for further processing, usually post actions. If primary outputs are not required, remove the property.",
+ "path": "New.Template.1.cs",
+ "condition": "false"
+ }
+ ],
+ "postActions": [
+ {
+ "$comment": "TODO: Enables actions to be performed after the project is created. For more details see https://aka.ms/template-json-post-actions. If post actions are not required, remove the property.",
+ "actionId": "84C0DA21-51C8-4541-9940-6CA19AF04EE6",
+ "condition": "false",
+ "id": "sample-post-action",
+ "manualInstructions": [
+ {
+ "text": "Open file in New.Template.1.cs in the editor."
+ }
+ ],
+ "args": {
+ "files": "0"
+ }
+ }
+ ]
+}
diff --git a/template_feed/Microsoft.TemplateEngine.Authoring.Templates/content/TemplatePackage/.template.config/dotnetcli.host.json b/template_feed/Microsoft.TemplateEngine.Authoring.Templates/content/TemplatePackage/.template.config/dotnetcli.host.json
new file mode 100644
index 00000000000..f42c76ecb7d
--- /dev/null
+++ b/template_feed/Microsoft.TemplateEngine.Authoring.Templates/content/TemplatePackage/.template.config/dotnetcli.host.json
@@ -0,0 +1,9 @@
+{
+ "$schema": "http://json.schemastore.org/dotnetcli.host",
+ "symbolInfo": {
+ "EnableMSBuildTasks": {
+ "longName": "enable-msbuild-tasks",
+ "shortName": ""
+ }
+ }
+}
diff --git a/template_feed/Microsoft.TemplateEngine.Authoring.Templates/content/TemplatePackage/.template.config/localize/templatestrings.cs.json b/template_feed/Microsoft.TemplateEngine.Authoring.Templates/content/TemplatePackage/.template.config/localize/templatestrings.cs.json
new file mode 100644
index 00000000000..dfc74ac6792
--- /dev/null
+++ b/template_feed/Microsoft.TemplateEngine.Authoring.Templates/content/TemplatePackage/.template.config/localize/templatestrings.cs.json
@@ -0,0 +1,7 @@
+{
+ "author": "Microsoft",
+ "name": "Template Package",
+ "description": "A project for a template package containing .NET templates.",
+ "postActions/instructions/description": "Manual actions required",
+ "postActions/instructions/manualInstructions/default/text": "Open *.csproj in the editor and complete the package metadata configuration. Copy the templates to 'content' folder. Fill in README.md."
+}
\ No newline at end of file
diff --git a/template_feed/Microsoft.TemplateEngine.Authoring.Templates/content/TemplatePackage/.template.config/localize/templatestrings.de.json b/template_feed/Microsoft.TemplateEngine.Authoring.Templates/content/TemplatePackage/.template.config/localize/templatestrings.de.json
new file mode 100644
index 00000000000..dfc74ac6792
--- /dev/null
+++ b/template_feed/Microsoft.TemplateEngine.Authoring.Templates/content/TemplatePackage/.template.config/localize/templatestrings.de.json
@@ -0,0 +1,7 @@
+{
+ "author": "Microsoft",
+ "name": "Template Package",
+ "description": "A project for a template package containing .NET templates.",
+ "postActions/instructions/description": "Manual actions required",
+ "postActions/instructions/manualInstructions/default/text": "Open *.csproj in the editor and complete the package metadata configuration. Copy the templates to 'content' folder. Fill in README.md."
+}
\ No newline at end of file
diff --git a/template_feed/Microsoft.TemplateEngine.Authoring.Templates/content/TemplatePackage/.template.config/localize/templatestrings.en.json b/template_feed/Microsoft.TemplateEngine.Authoring.Templates/content/TemplatePackage/.template.config/localize/templatestrings.en.json
new file mode 100644
index 00000000000..dfc74ac6792
--- /dev/null
+++ b/template_feed/Microsoft.TemplateEngine.Authoring.Templates/content/TemplatePackage/.template.config/localize/templatestrings.en.json
@@ -0,0 +1,7 @@
+{
+ "author": "Microsoft",
+ "name": "Template Package",
+ "description": "A project for a template package containing .NET templates.",
+ "postActions/instructions/description": "Manual actions required",
+ "postActions/instructions/manualInstructions/default/text": "Open *.csproj in the editor and complete the package metadata configuration. Copy the templates to 'content' folder. Fill in README.md."
+}
\ No newline at end of file
diff --git a/template_feed/Microsoft.TemplateEngine.Authoring.Templates/content/TemplatePackage/.template.config/localize/templatestrings.es.json b/template_feed/Microsoft.TemplateEngine.Authoring.Templates/content/TemplatePackage/.template.config/localize/templatestrings.es.json
new file mode 100644
index 00000000000..dfc74ac6792
--- /dev/null
+++ b/template_feed/Microsoft.TemplateEngine.Authoring.Templates/content/TemplatePackage/.template.config/localize/templatestrings.es.json
@@ -0,0 +1,7 @@
+{
+ "author": "Microsoft",
+ "name": "Template Package",
+ "description": "A project for a template package containing .NET templates.",
+ "postActions/instructions/description": "Manual actions required",
+ "postActions/instructions/manualInstructions/default/text": "Open *.csproj in the editor and complete the package metadata configuration. Copy the templates to 'content' folder. Fill in README.md."
+}
\ No newline at end of file
diff --git a/template_feed/Microsoft.TemplateEngine.Authoring.Templates/content/TemplatePackage/.template.config/localize/templatestrings.fr.json b/template_feed/Microsoft.TemplateEngine.Authoring.Templates/content/TemplatePackage/.template.config/localize/templatestrings.fr.json
new file mode 100644
index 00000000000..dfc74ac6792
--- /dev/null
+++ b/template_feed/Microsoft.TemplateEngine.Authoring.Templates/content/TemplatePackage/.template.config/localize/templatestrings.fr.json
@@ -0,0 +1,7 @@
+{
+ "author": "Microsoft",
+ "name": "Template Package",
+ "description": "A project for a template package containing .NET templates.",
+ "postActions/instructions/description": "Manual actions required",
+ "postActions/instructions/manualInstructions/default/text": "Open *.csproj in the editor and complete the package metadata configuration. Copy the templates to 'content' folder. Fill in README.md."
+}
\ No newline at end of file
diff --git a/template_feed/Microsoft.TemplateEngine.Authoring.Templates/content/TemplatePackage/.template.config/localize/templatestrings.it.json b/template_feed/Microsoft.TemplateEngine.Authoring.Templates/content/TemplatePackage/.template.config/localize/templatestrings.it.json
new file mode 100644
index 00000000000..dfc74ac6792
--- /dev/null
+++ b/template_feed/Microsoft.TemplateEngine.Authoring.Templates/content/TemplatePackage/.template.config/localize/templatestrings.it.json
@@ -0,0 +1,7 @@
+{
+ "author": "Microsoft",
+ "name": "Template Package",
+ "description": "A project for a template package containing .NET templates.",
+ "postActions/instructions/description": "Manual actions required",
+ "postActions/instructions/manualInstructions/default/text": "Open *.csproj in the editor and complete the package metadata configuration. Copy the templates to 'content' folder. Fill in README.md."
+}
\ No newline at end of file
diff --git a/template_feed/Microsoft.TemplateEngine.Authoring.Templates/content/TemplatePackage/.template.config/localize/templatestrings.ja.json b/template_feed/Microsoft.TemplateEngine.Authoring.Templates/content/TemplatePackage/.template.config/localize/templatestrings.ja.json
new file mode 100644
index 00000000000..dfc74ac6792
--- /dev/null
+++ b/template_feed/Microsoft.TemplateEngine.Authoring.Templates/content/TemplatePackage/.template.config/localize/templatestrings.ja.json
@@ -0,0 +1,7 @@
+{
+ "author": "Microsoft",
+ "name": "Template Package",
+ "description": "A project for a template package containing .NET templates.",
+ "postActions/instructions/description": "Manual actions required",
+ "postActions/instructions/manualInstructions/default/text": "Open *.csproj in the editor and complete the package metadata configuration. Copy the templates to 'content' folder. Fill in README.md."
+}
\ No newline at end of file
diff --git a/template_feed/Microsoft.TemplateEngine.Authoring.Templates/content/TemplatePackage/.template.config/localize/templatestrings.ko.json b/template_feed/Microsoft.TemplateEngine.Authoring.Templates/content/TemplatePackage/.template.config/localize/templatestrings.ko.json
new file mode 100644
index 00000000000..dfc74ac6792
--- /dev/null
+++ b/template_feed/Microsoft.TemplateEngine.Authoring.Templates/content/TemplatePackage/.template.config/localize/templatestrings.ko.json
@@ -0,0 +1,7 @@
+{
+ "author": "Microsoft",
+ "name": "Template Package",
+ "description": "A project for a template package containing .NET templates.",
+ "postActions/instructions/description": "Manual actions required",
+ "postActions/instructions/manualInstructions/default/text": "Open *.csproj in the editor and complete the package metadata configuration. Copy the templates to 'content' folder. Fill in README.md."
+}
\ No newline at end of file
diff --git a/template_feed/Microsoft.TemplateEngine.Authoring.Templates/content/TemplatePackage/.template.config/localize/templatestrings.pl.json b/template_feed/Microsoft.TemplateEngine.Authoring.Templates/content/TemplatePackage/.template.config/localize/templatestrings.pl.json
new file mode 100644
index 00000000000..dfc74ac6792
--- /dev/null
+++ b/template_feed/Microsoft.TemplateEngine.Authoring.Templates/content/TemplatePackage/.template.config/localize/templatestrings.pl.json
@@ -0,0 +1,7 @@
+{
+ "author": "Microsoft",
+ "name": "Template Package",
+ "description": "A project for a template package containing .NET templates.",
+ "postActions/instructions/description": "Manual actions required",
+ "postActions/instructions/manualInstructions/default/text": "Open *.csproj in the editor and complete the package metadata configuration. Copy the templates to 'content' folder. Fill in README.md."
+}
\ No newline at end of file
diff --git a/template_feed/Microsoft.TemplateEngine.Authoring.Templates/content/TemplatePackage/.template.config/localize/templatestrings.pt-BR.json b/template_feed/Microsoft.TemplateEngine.Authoring.Templates/content/TemplatePackage/.template.config/localize/templatestrings.pt-BR.json
new file mode 100644
index 00000000000..dfc74ac6792
--- /dev/null
+++ b/template_feed/Microsoft.TemplateEngine.Authoring.Templates/content/TemplatePackage/.template.config/localize/templatestrings.pt-BR.json
@@ -0,0 +1,7 @@
+{
+ "author": "Microsoft",
+ "name": "Template Package",
+ "description": "A project for a template package containing .NET templates.",
+ "postActions/instructions/description": "Manual actions required",
+ "postActions/instructions/manualInstructions/default/text": "Open *.csproj in the editor and complete the package metadata configuration. Copy the templates to 'content' folder. Fill in README.md."
+}
\ No newline at end of file
diff --git a/template_feed/Microsoft.TemplateEngine.Authoring.Templates/content/TemplatePackage/.template.config/localize/templatestrings.ru.json b/template_feed/Microsoft.TemplateEngine.Authoring.Templates/content/TemplatePackage/.template.config/localize/templatestrings.ru.json
new file mode 100644
index 00000000000..dfc74ac6792
--- /dev/null
+++ b/template_feed/Microsoft.TemplateEngine.Authoring.Templates/content/TemplatePackage/.template.config/localize/templatestrings.ru.json
@@ -0,0 +1,7 @@
+{
+ "author": "Microsoft",
+ "name": "Template Package",
+ "description": "A project for a template package containing .NET templates.",
+ "postActions/instructions/description": "Manual actions required",
+ "postActions/instructions/manualInstructions/default/text": "Open *.csproj in the editor and complete the package metadata configuration. Copy the templates to 'content' folder. Fill in README.md."
+}
\ No newline at end of file
diff --git a/template_feed/Microsoft.TemplateEngine.Authoring.Templates/content/TemplatePackage/.template.config/localize/templatestrings.tr.json b/template_feed/Microsoft.TemplateEngine.Authoring.Templates/content/TemplatePackage/.template.config/localize/templatestrings.tr.json
new file mode 100644
index 00000000000..dfc74ac6792
--- /dev/null
+++ b/template_feed/Microsoft.TemplateEngine.Authoring.Templates/content/TemplatePackage/.template.config/localize/templatestrings.tr.json
@@ -0,0 +1,7 @@
+{
+ "author": "Microsoft",
+ "name": "Template Package",
+ "description": "A project for a template package containing .NET templates.",
+ "postActions/instructions/description": "Manual actions required",
+ "postActions/instructions/manualInstructions/default/text": "Open *.csproj in the editor and complete the package metadata configuration. Copy the templates to 'content' folder. Fill in README.md."
+}
\ No newline at end of file
diff --git a/template_feed/Microsoft.TemplateEngine.Authoring.Templates/content/TemplatePackage/.template.config/localize/templatestrings.zh-Hans.json b/template_feed/Microsoft.TemplateEngine.Authoring.Templates/content/TemplatePackage/.template.config/localize/templatestrings.zh-Hans.json
new file mode 100644
index 00000000000..dfc74ac6792
--- /dev/null
+++ b/template_feed/Microsoft.TemplateEngine.Authoring.Templates/content/TemplatePackage/.template.config/localize/templatestrings.zh-Hans.json
@@ -0,0 +1,7 @@
+{
+ "author": "Microsoft",
+ "name": "Template Package",
+ "description": "A project for a template package containing .NET templates.",
+ "postActions/instructions/description": "Manual actions required",
+ "postActions/instructions/manualInstructions/default/text": "Open *.csproj in the editor and complete the package metadata configuration. Copy the templates to 'content' folder. Fill in README.md."
+}
\ No newline at end of file
diff --git a/template_feed/Microsoft.TemplateEngine.Authoring.Templates/content/TemplatePackage/.template.config/localize/templatestrings.zh-Hant.json b/template_feed/Microsoft.TemplateEngine.Authoring.Templates/content/TemplatePackage/.template.config/localize/templatestrings.zh-Hant.json
new file mode 100644
index 00000000000..dfc74ac6792
--- /dev/null
+++ b/template_feed/Microsoft.TemplateEngine.Authoring.Templates/content/TemplatePackage/.template.config/localize/templatestrings.zh-Hant.json
@@ -0,0 +1,7 @@
+{
+ "author": "Microsoft",
+ "name": "Template Package",
+ "description": "A project for a template package containing .NET templates.",
+ "postActions/instructions/description": "Manual actions required",
+ "postActions/instructions/manualInstructions/default/text": "Open *.csproj in the editor and complete the package metadata configuration. Copy the templates to 'content' folder. Fill in README.md."
+}
\ No newline at end of file
diff --git a/template_feed/Microsoft.TemplateEngine.Authoring.Templates/content/TemplatePackage/.template.config/template.json b/template_feed/Microsoft.TemplateEngine.Authoring.Templates/content/TemplatePackage/.template.config/template.json
new file mode 100644
index 00000000000..d4c10ba06fb
--- /dev/null
+++ b/template_feed/Microsoft.TemplateEngine.Authoring.Templates/content/TemplatePackage/.template.config/template.json
@@ -0,0 +1,43 @@
+{
+ "$schema": "http://json.schemastore.org/template",
+ "author": "Microsoft",
+ "classifications": [
+ "Template Authoring"
+ ],
+ "name": "Template Package",
+ "generatorVersions": "[1.0.0.0-*)",
+ "description": "A project for a template package containing .NET templates.",
+ "groupIdentity": "Microsoft.TemplateEngine.Authoring.TemplatePackage",
+ "precedence": "0",
+ "identity": "Microsoft.TemplateEngine.Authoring.TemplatePackage.1.0",
+ "shortName": "templatepack",
+ "tags": {
+ "type": "project"
+ },
+ "sourceName": "New.Template.Package",
+ "symbols": {
+ "EnableMSBuildTasks": {
+ "type": "parameter",
+ "datatype": "bool",
+ "defaultValue": "true"
+ }
+ },
+ "primaryOutputs": [
+ {
+ "path": "New.Template.Package.csproj"
+ }
+ ],
+ "postActions": [
+ {
+ "id": "instructions",
+ "description": "Manual actions required",
+ "manualInstructions": [
+ {
+ "text": "Open *.csproj in the editor and complete the package metadata configuration. Copy the templates to 'content' folder. Fill in README.md."
+ }
+ ],
+ "actionId": "AC1156F7-BB77-4DB8-B28F-24EEBCCA1E5C",
+ "continueOnError": true
+ }
+ ]
+}
diff --git a/template_feed/Microsoft.TemplateEngine.Authoring.Templates/content/TemplatePackage/New.Template.Package.csproj b/template_feed/Microsoft.TemplateEngine.Authoring.Templates/content/TemplatePackage/New.Template.Package.csproj
new file mode 100644
index 00000000000..33ab83a17a4
--- /dev/null
+++ b/template_feed/Microsoft.TemplateEngine.Authoring.Templates/content/TemplatePackage/New.Template.Package.csproj
@@ -0,0 +1,39 @@
+
+
+
+
+
+ New.Template.Package
+ 1.0
+ TODO: fill the package name here
+ TODO: fill the author name or organization here
+ TODO: fill the package description here
+ TODO: fill the tags here
+ TODO: include a link to an associated project, repository, or company website
+
+
+ Template
+ net7.0
+ true
+ false
+ content
+ $(NoWarn);NU5128
+ true
+
+
+
+
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/template_feed/Microsoft.TemplateEngine.Authoring.Templates/content/TemplatePackage/README.md b/template_feed/Microsoft.TemplateEngine.Authoring.Templates/content/TemplatePackage/README.md
new file mode 100644
index 00000000000..93d46c8c99b
--- /dev/null
+++ b/template_feed/Microsoft.TemplateEngine.Authoring.Templates/content/TemplatePackage/README.md
@@ -0,0 +1,2 @@
+
diff --git a/template_feed/Microsoft.TemplateEngine.Authoring.Templates/content/TemplatePackage/content/SampleTemplate/placeholder.txt b/template_feed/Microsoft.TemplateEngine.Authoring.Templates/content/TemplatePackage/content/SampleTemplate/placeholder.txt
new file mode 100644
index 00000000000..6f0c602d38e
--- /dev/null
+++ b/template_feed/Microsoft.TemplateEngine.Authoring.Templates/content/TemplatePackage/content/SampleTemplate/placeholder.txt
@@ -0,0 +1 @@
+Place your templates to this folder.
diff --git a/template_feed/README.md b/template_feed/README.md
index 18e8a7cf1a9..0e58ff97cd0 100644
--- a/template_feed/README.md
+++ b/template_feed/README.md
@@ -1 +1 @@
-The source code is moved to [dotnet/sdk](https://github.com/dotnet/sdk/tree/main/template_feed).
\ No newline at end of file
+The source code for common item and common project templates is moved to [dotnet/sdk](https://github.com/dotnet/sdk/tree/main/template_feed).
\ No newline at end of file
diff --git a/test/Microsoft.TemplateEngine.Authoring.Templates.IntegrationTests/AuthoringTemplatesTests.cs b/test/Microsoft.TemplateEngine.Authoring.Templates.IntegrationTests/AuthoringTemplatesTests.cs
new file mode 100644
index 00000000000..f87a2946758
--- /dev/null
+++ b/test/Microsoft.TemplateEngine.Authoring.Templates.IntegrationTests/AuthoringTemplatesTests.cs
@@ -0,0 +1,224 @@
+// Licensed to the .NET Foundation under one or more agreements.
+// The .NET Foundation licenses this file to you under the MIT license.
+
+using Microsoft.Extensions.Logging;
+using Microsoft.TemplateEngine.Authoring.TemplateApiVerifier;
+using Microsoft.TemplateEngine.Authoring.TemplateVerifier;
+using Microsoft.TemplateEngine.TestHelper;
+using Microsoft.TemplateEngine.Tests;
+using Xunit.Abstractions;
+
+namespace Microsoft.TemplateEngine.Authoring.Templates.Tests
+{
+ public class AuthoringTemplatesTests : TestBase
+ {
+ private readonly ILogger _log;
+
+ public AuthoringTemplatesTests(ITestOutputHelper log)
+ {
+ _log = new XunitLoggerProvider(log).CreateLogger("TestRun");
+ }
+
+ [Fact]
+ public async Task TemplateJsonTest()
+ {
+ string workingDir = TestUtils.CreateTemporaryFolder();
+ string templateShortName = "template.json";
+
+ //get the template location
+ string templateLocation = Path.Combine(TemplateFeedLocation, "Microsoft.TemplateEngine.Authoring.Templates");
+
+ TemplateVerifierOptions options = new TemplateVerifierOptions(templateName: templateShortName)
+ {
+ TemplatePath = templateLocation,
+ SnapshotsDirectory = "Snapshots",
+ OutputDirectory = workingDir,
+ DoNotPrependCallerMethodNameToScenarioName = true,
+ ScenarioName = "Basic",
+ }
+ .WithInstantiationThroughTemplateCreatorApi(new Dictionary());
+ VerificationEngine engine = new VerificationEngine(_log);
+ await engine.Execute(options);
+ }
+
+ [Fact]
+ public async Task TemplateJsonTest_WithParameters()
+ {
+ string workingDir = TestUtils.CreateTemporaryFolder();
+ string templateShortName = "template.json";
+
+ //get the template location
+ string templateLocation = Path.Combine(TemplateFeedLocation, "Microsoft.TemplateEngine.Authoring.Templates");
+
+ var templateParams = new Dictionary()
+ {
+ { "TemplateName", "MyTemplate" },
+ { "TemplateShortName", "mytemplate" },
+ { "TemplateIdentity", "My.Template.Identity" },
+ };
+
+ TemplateVerifierOptions options = new TemplateVerifierOptions(templateName: templateShortName)
+ {
+ TemplatePath = templateLocation,
+ SnapshotsDirectory = "Snapshots",
+ OutputDirectory = workingDir,
+ DoNotPrependCallerMethodNameToScenarioName = true,
+ ScenarioName = "WithParams",
+ }
+ .WithInstantiationThroughTemplateCreatorApi(templateParams);
+
+ VerificationEngine engine = new VerificationEngine(_log);
+ await engine.Execute(options);
+ }
+
+ [Fact]
+ public async Task TemplateJsonTest_NoConfigFolder()
+ {
+ string workingDir = TestUtils.CreateTemporaryFolder();
+ string templateShortName = "template.json";
+
+ //get the template location
+ string templateLocation = Path.Combine(TemplateFeedLocation, "Microsoft.TemplateEngine.Authoring.Templates");
+
+ var templateParams = new Dictionary()
+ {
+ { "CreateTemplateConfigFolder", "false" }
+ };
+
+ TemplateVerifierOptions options = new TemplateVerifierOptions(templateName: templateShortName)
+ {
+ TemplatePath = templateLocation,
+ SnapshotsDirectory = "Snapshots",
+ OutputDirectory = workingDir,
+ DoNotPrependCallerMethodNameToScenarioName = true,
+ ScenarioName = "NoConfigFolder",
+ }
+ .WithInstantiationThroughTemplateCreatorApi(templateParams);
+
+ VerificationEngine engine = new VerificationEngine(_log);
+ await engine.Execute(options);
+ }
+
+ [Fact]
+ public async Task TemplatePackageTest()
+ {
+ string workingDir = TestUtils.CreateTemporaryFolder();
+ string templateShortName = "templatepack";
+
+ //get the template location
+ string templateLocation = Path.Combine(TemplateFeedLocation, "Microsoft.TemplateEngine.Authoring.Templates");
+
+ TemplateVerifierOptions options = new TemplateVerifierOptions(templateName: templateShortName)
+ {
+ TemplatePath = templateLocation,
+ SnapshotsDirectory = "Snapshots",
+ OutputDirectory = workingDir,
+ DoNotPrependCallerMethodNameToScenarioName = true,
+ ScenarioName = "Basic",
+ }
+ .WithInstantiationThroughTemplateCreatorApi(new Dictionary());
+ VerificationEngine engine = new VerificationEngine(_log);
+ await engine.Execute(options);
+ }
+
+ [Fact]
+ public async Task TemplatePackageTest_WithName()
+ {
+ string workingDir = TestUtils.CreateTemporaryFolder();
+ string templateShortName = "templatepack";
+
+ //get the template location
+ string templateLocation = Path.Combine(TemplateFeedLocation, "Microsoft.TemplateEngine.Authoring.Templates");
+
+ var templateParams = new Dictionary()
+ {
+ { "name", "MyTemplatePackage" },
+ };
+
+ TemplateVerifierOptions options = new TemplateVerifierOptions(templateName: templateShortName)
+ {
+ TemplatePath = templateLocation,
+ SnapshotsDirectory = "Snapshots",
+ OutputDirectory = workingDir,
+ DoNotPrependCallerMethodNameToScenarioName = true,
+ ScenarioName = "WithName",
+ }
+ .WithInstantiationThroughTemplateCreatorApi(templateParams);
+
+ VerificationEngine engine = new VerificationEngine(_log);
+ await engine.Execute(options);
+ }
+
+ [Fact]
+ public async Task TemplatePackageTest_NoMSBuildTasks()
+ {
+ string workingDir = TestUtils.CreateTemporaryFolder();
+ string templateShortName = "templatepack";
+
+ //get the template location
+ string templateLocation = Path.Combine(TemplateFeedLocation, "Microsoft.TemplateEngine.Authoring.Templates");
+
+ var templateParams = new Dictionary()
+ {
+ { "EnableMSBuildTasks", "false" },
+ };
+
+ TemplateVerifierOptions options = new TemplateVerifierOptions(templateName: templateShortName)
+ {
+ TemplatePath = templateLocation,
+ SnapshotsDirectory = "Snapshots",
+ OutputDirectory = workingDir,
+ DoNotPrependCallerMethodNameToScenarioName = true,
+ ScenarioName = "NoMSBuildTasks",
+ }
+ .WithInstantiationThroughTemplateCreatorApi(templateParams);
+
+ VerificationEngine engine = new VerificationEngine(_log);
+ await engine.Execute(options);
+ }
+
+ [Fact]
+ public async Task TemplateJsonTest_CLI()
+ {
+ string workingDir = TestUtils.CreateTemporaryFolder();
+ string templateShortName = "template.json";
+
+ //get the template location
+ string templateLocation = Path.Combine(TemplateFeedLocation, "Microsoft.TemplateEngine.Authoring.Templates");
+
+ TemplateVerifierOptions options = new TemplateVerifierOptions(templateName: templateShortName)
+ {
+ TemplatePath = templateLocation,
+ SnapshotsDirectory = "Snapshots",
+ OutputDirectory = workingDir,
+ DoNotPrependCallerMethodNameToScenarioName = true,
+ VerifyCommandOutput = true,
+ ScenarioName = "CLI",
+ };
+ VerificationEngine engine = new VerificationEngine(_log);
+ await engine.Execute(options);
+ }
+
+ [Fact]
+ public async Task TemplatePackageTest_CLI()
+ {
+ string workingDir = TestUtils.CreateTemporaryFolder();
+ string templateShortName = "templatepack";
+
+ //get the template location
+ string templateLocation = Path.Combine(TemplateFeedLocation, "Microsoft.TemplateEngine.Authoring.Templates");
+
+ TemplateVerifierOptions options = new TemplateVerifierOptions(templateName: templateShortName)
+ {
+ TemplatePath = templateLocation,
+ SnapshotsDirectory = "Snapshots",
+ OutputDirectory = workingDir,
+ DoNotPrependCallerMethodNameToScenarioName = true,
+ VerifyCommandOutput = true,
+ ScenarioName = "CLI",
+ };
+ VerificationEngine engine = new VerificationEngine(_log);
+ await engine.Execute(options);
+ }
+ }
+}
diff --git a/test/Microsoft.TemplateEngine.Authoring.Templates.IntegrationTests/Microsoft.TemplateEngine.Authoring.Templates.IntegrationTests.csproj b/test/Microsoft.TemplateEngine.Authoring.Templates.IntegrationTests/Microsoft.TemplateEngine.Authoring.Templates.IntegrationTests.csproj
new file mode 100644
index 00000000000..7d85d6d3c45
--- /dev/null
+++ b/test/Microsoft.TemplateEngine.Authoring.Templates.IntegrationTests/Microsoft.TemplateEngine.Authoring.Templates.IntegrationTests.csproj
@@ -0,0 +1,30 @@
+
+
+
+ $(NETCoreTargetFramework)
+ enable
+ enable
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/test/Microsoft.TemplateEngine.Authoring.Templates.IntegrationTests/Snapshots/template.json.Basic.verified/template.json/.template.config/template.json b/test/Microsoft.TemplateEngine.Authoring.Templates.IntegrationTests/Snapshots/template.json.Basic.verified/template.json/.template.config/template.json
new file mode 100644
index 00000000000..3759f9bbeb1
--- /dev/null
+++ b/test/Microsoft.TemplateEngine.Authoring.Templates.IntegrationTests/Snapshots/template.json.Basic.verified/template.json/.template.config/template.json
@@ -0,0 +1,69 @@
+{
+ "$schema": "http://json.schemastore.org/template",
+ "$comment": "See https://aka.ms/template-json-reference for complete configuration description. Complete TODOs below and remove the $comment properties. It is recommended to use the JSON editor that supports schema hints to get more information about defined JSON properties and their description.",
+ "author": "TODO: fill author name here.",
+ "classifications": [
+ "TODO: fill classification here. Common classifications are: Library, Test, Web etc. Each classification should be a separate element of the array. For more details, see https://aka.ms/template-json-reference#classifications."
+ ],
+ "name": "New Template",
+ "description": "TODO: fill the template description here.",
+ "precedence": "0",
+ "identity": "New.Template.Identity",
+ "shortName": "new-template",
+ "tags": {
+ "$comment": "TODO: fill the language and type below. Common types are: project, item, solution.",
+ "language": "C#",
+ "type": "project"
+ },
+ "$comment_sourceName": "TODO: Source name should follow these rules: https://aka.ms/template-json-source-name. Source name may be removed if replacement for name is not required.",
+ "sourceName": "New.Template.1",
+ "preferNameDirectory": true,
+ "symbols": {
+ "ExampleParameter": {
+ "$comment": "TODO: The symbols section defines variables and their values. For more details, see https://aka.ms/template-json-reference#symbols.",
+ "type": "parameter",
+ "datatype": "string",
+ "defaultValue": "example",
+ "replaces": "valueToReplace",
+ "isEnabled": false
+ }
+ },
+ "sources": [
+ {
+ "$comment": "TODO: Sources control the paths for source and target content. For more details see https://aka.ms/template-json-reference#symbols#source-definition. If source definition is not required, remove the property.",
+ "condition": "false",
+ "source": "./source-files",
+ "target": "./target"
+ }
+ ],
+ "constraints": {
+ "SampleConstraint": {
+ "$comment": "TODO: The template may define the constraints all of which must be met in order for the template to be used. For more details see https://aka.ms/template-json-reference#symbols#template-constraints. If constraints are not required, remove the property.",
+ "type": "os",
+ "args": [ "Linux", "OSX", "Windows" ]
+ }
+ },
+ "primaryOutputs": [
+ {
+ "$comment": "TODO: Primary outputs define the list of template files for further processing, usually post actions. If primary outputs are not required, remove the property.",
+ "path": "New.Template.1.cs",
+ "condition": "false"
+ }
+ ],
+ "postActions": [
+ {
+ "$comment": "TODO: Enables actions to be performed after the project is created. For more details see https://aka.ms/template-json-post-actions. If post actions are not required, remove the property.",
+ "actionId": "84C0DA21-51C8-4541-9940-6CA19AF04EE6",
+ "condition": "false",
+ "id": "sample-post-action",
+ "manualInstructions": [
+ {
+ "text": "Open file in New.Template.1.cs in the editor."
+ }
+ ],
+ "args": {
+ "files": "0"
+ }
+ }
+ ]
+}
diff --git a/test/Microsoft.TemplateEngine.Authoring.Templates.IntegrationTests/Snapshots/template.json.CLI.verified/std-streams/stderr.txt b/test/Microsoft.TemplateEngine.Authoring.Templates.IntegrationTests/Snapshots/template.json.CLI.verified/std-streams/stderr.txt
new file mode 100644
index 00000000000..5f282702bb0
--- /dev/null
+++ b/test/Microsoft.TemplateEngine.Authoring.Templates.IntegrationTests/Snapshots/template.json.CLI.verified/std-streams/stderr.txt
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/test/Microsoft.TemplateEngine.Authoring.Templates.IntegrationTests/Snapshots/template.json.CLI.verified/std-streams/stdout.txt b/test/Microsoft.TemplateEngine.Authoring.Templates.IntegrationTests/Snapshots/template.json.CLI.verified/std-streams/stdout.txt
new file mode 100644
index 00000000000..ef0b9b51e7b
--- /dev/null
+++ b/test/Microsoft.TemplateEngine.Authoring.Templates.IntegrationTests/Snapshots/template.json.CLI.verified/std-streams/stdout.txt
@@ -0,0 +1,5 @@
+The template "template.json configuration file" was created successfully.
+
+Processing post-creation actions...
+Description: Manual actions required
+Manual instructions: Open template.json in the editor and complete the configuration.
\ No newline at end of file
diff --git a/test/Microsoft.TemplateEngine.Authoring.Templates.IntegrationTests/Snapshots/template.json.CLI.verified/template.json/.template.config/template.json b/test/Microsoft.TemplateEngine.Authoring.Templates.IntegrationTests/Snapshots/template.json.CLI.verified/template.json/.template.config/template.json
new file mode 100644
index 00000000000..3759f9bbeb1
--- /dev/null
+++ b/test/Microsoft.TemplateEngine.Authoring.Templates.IntegrationTests/Snapshots/template.json.CLI.verified/template.json/.template.config/template.json
@@ -0,0 +1,69 @@
+{
+ "$schema": "http://json.schemastore.org/template",
+ "$comment": "See https://aka.ms/template-json-reference for complete configuration description. Complete TODOs below and remove the $comment properties. It is recommended to use the JSON editor that supports schema hints to get more information about defined JSON properties and their description.",
+ "author": "TODO: fill author name here.",
+ "classifications": [
+ "TODO: fill classification here. Common classifications are: Library, Test, Web etc. Each classification should be a separate element of the array. For more details, see https://aka.ms/template-json-reference#classifications."
+ ],
+ "name": "New Template",
+ "description": "TODO: fill the template description here.",
+ "precedence": "0",
+ "identity": "New.Template.Identity",
+ "shortName": "new-template",
+ "tags": {
+ "$comment": "TODO: fill the language and type below. Common types are: project, item, solution.",
+ "language": "C#",
+ "type": "project"
+ },
+ "$comment_sourceName": "TODO: Source name should follow these rules: https://aka.ms/template-json-source-name. Source name may be removed if replacement for name is not required.",
+ "sourceName": "New.Template.1",
+ "preferNameDirectory": true,
+ "symbols": {
+ "ExampleParameter": {
+ "$comment": "TODO: The symbols section defines variables and their values. For more details, see https://aka.ms/template-json-reference#symbols.",
+ "type": "parameter",
+ "datatype": "string",
+ "defaultValue": "example",
+ "replaces": "valueToReplace",
+ "isEnabled": false
+ }
+ },
+ "sources": [
+ {
+ "$comment": "TODO: Sources control the paths for source and target content. For more details see https://aka.ms/template-json-reference#symbols#source-definition. If source definition is not required, remove the property.",
+ "condition": "false",
+ "source": "./source-files",
+ "target": "./target"
+ }
+ ],
+ "constraints": {
+ "SampleConstraint": {
+ "$comment": "TODO: The template may define the constraints all of which must be met in order for the template to be used. For more details see https://aka.ms/template-json-reference#symbols#template-constraints. If constraints are not required, remove the property.",
+ "type": "os",
+ "args": [ "Linux", "OSX", "Windows" ]
+ }
+ },
+ "primaryOutputs": [
+ {
+ "$comment": "TODO: Primary outputs define the list of template files for further processing, usually post actions. If primary outputs are not required, remove the property.",
+ "path": "New.Template.1.cs",
+ "condition": "false"
+ }
+ ],
+ "postActions": [
+ {
+ "$comment": "TODO: Enables actions to be performed after the project is created. For more details see https://aka.ms/template-json-post-actions. If post actions are not required, remove the property.",
+ "actionId": "84C0DA21-51C8-4541-9940-6CA19AF04EE6",
+ "condition": "false",
+ "id": "sample-post-action",
+ "manualInstructions": [
+ {
+ "text": "Open file in New.Template.1.cs in the editor."
+ }
+ ],
+ "args": {
+ "files": "0"
+ }
+ }
+ ]
+}
diff --git a/test/Microsoft.TemplateEngine.Authoring.Templates.IntegrationTests/Snapshots/template.json.NoConfigFolder.verified/template.json/template.json b/test/Microsoft.TemplateEngine.Authoring.Templates.IntegrationTests/Snapshots/template.json.NoConfigFolder.verified/template.json/template.json
new file mode 100644
index 00000000000..3759f9bbeb1
--- /dev/null
+++ b/test/Microsoft.TemplateEngine.Authoring.Templates.IntegrationTests/Snapshots/template.json.NoConfigFolder.verified/template.json/template.json
@@ -0,0 +1,69 @@
+{
+ "$schema": "http://json.schemastore.org/template",
+ "$comment": "See https://aka.ms/template-json-reference for complete configuration description. Complete TODOs below and remove the $comment properties. It is recommended to use the JSON editor that supports schema hints to get more information about defined JSON properties and their description.",
+ "author": "TODO: fill author name here.",
+ "classifications": [
+ "TODO: fill classification here. Common classifications are: Library, Test, Web etc. Each classification should be a separate element of the array. For more details, see https://aka.ms/template-json-reference#classifications."
+ ],
+ "name": "New Template",
+ "description": "TODO: fill the template description here.",
+ "precedence": "0",
+ "identity": "New.Template.Identity",
+ "shortName": "new-template",
+ "tags": {
+ "$comment": "TODO: fill the language and type below. Common types are: project, item, solution.",
+ "language": "C#",
+ "type": "project"
+ },
+ "$comment_sourceName": "TODO: Source name should follow these rules: https://aka.ms/template-json-source-name. Source name may be removed if replacement for name is not required.",
+ "sourceName": "New.Template.1",
+ "preferNameDirectory": true,
+ "symbols": {
+ "ExampleParameter": {
+ "$comment": "TODO: The symbols section defines variables and their values. For more details, see https://aka.ms/template-json-reference#symbols.",
+ "type": "parameter",
+ "datatype": "string",
+ "defaultValue": "example",
+ "replaces": "valueToReplace",
+ "isEnabled": false
+ }
+ },
+ "sources": [
+ {
+ "$comment": "TODO: Sources control the paths for source and target content. For more details see https://aka.ms/template-json-reference#symbols#source-definition. If source definition is not required, remove the property.",
+ "condition": "false",
+ "source": "./source-files",
+ "target": "./target"
+ }
+ ],
+ "constraints": {
+ "SampleConstraint": {
+ "$comment": "TODO: The template may define the constraints all of which must be met in order for the template to be used. For more details see https://aka.ms/template-json-reference#symbols#template-constraints. If constraints are not required, remove the property.",
+ "type": "os",
+ "args": [ "Linux", "OSX", "Windows" ]
+ }
+ },
+ "primaryOutputs": [
+ {
+ "$comment": "TODO: Primary outputs define the list of template files for further processing, usually post actions. If primary outputs are not required, remove the property.",
+ "path": "New.Template.1.cs",
+ "condition": "false"
+ }
+ ],
+ "postActions": [
+ {
+ "$comment": "TODO: Enables actions to be performed after the project is created. For more details see https://aka.ms/template-json-post-actions. If post actions are not required, remove the property.",
+ "actionId": "84C0DA21-51C8-4541-9940-6CA19AF04EE6",
+ "condition": "false",
+ "id": "sample-post-action",
+ "manualInstructions": [
+ {
+ "text": "Open file in New.Template.1.cs in the editor."
+ }
+ ],
+ "args": {
+ "files": "0"
+ }
+ }
+ ]
+}
diff --git a/test/Microsoft.TemplateEngine.Authoring.Templates.IntegrationTests/Snapshots/template.json.WithParams.verified/template.json/.template.config/template.json b/test/Microsoft.TemplateEngine.Authoring.Templates.IntegrationTests/Snapshots/template.json.WithParams.verified/template.json/.template.config/template.json
new file mode 100644
index 00000000000..d4d55a312a4
--- /dev/null
+++ b/test/Microsoft.TemplateEngine.Authoring.Templates.IntegrationTests/Snapshots/template.json.WithParams.verified/template.json/.template.config/template.json
@@ -0,0 +1,69 @@
+{
+ "$schema": "http://json.schemastore.org/template",
+ "$comment": "See https://aka.ms/template-json-reference for complete configuration description. Complete TODOs below and remove the $comment properties. It is recommended to use the JSON editor that supports schema hints to get more information about defined JSON properties and their description.",
+ "author": "TODO: fill author name here.",
+ "classifications": [
+ "TODO: fill classification here. Common classifications are: Library, Test, Web etc. Each classification should be a separate element of the array. For more details, see https://aka.ms/template-json-reference#classifications."
+ ],
+ "name": "MyTemplate",
+ "description": "TODO: fill the template description here.",
+ "precedence": "0",
+ "identity": "My.Template.Identity",
+ "shortName": "mytemplate",
+ "tags": {
+ "$comment": "TODO: fill the language and type below. Common types are: project, item, solution.",
+ "language": "C#",
+ "type": "project"
+ },
+ "$comment_sourceName": "TODO: Source name should follow these rules: https://aka.ms/template-json-source-name. Source name may be removed if replacement for name is not required.",
+ "sourceName": "New.Template.1",
+ "preferNameDirectory": true,
+ "symbols": {
+ "ExampleParameter": {
+ "$comment": "TODO: The symbols section defines variables and their values. For more details, see https://aka.ms/template-json-reference#symbols.",
+ "type": "parameter",
+ "datatype": "string",
+ "defaultValue": "example",
+ "replaces": "valueToReplace",
+ "isEnabled": false
+ }
+ },
+ "sources": [
+ {
+ "$comment": "TODO: Sources control the paths for source and target content. For more details see https://aka.ms/template-json-reference#symbols#source-definition. If source definition is not required, remove the property.",
+ "condition": "false",
+ "source": "./source-files",
+ "target": "./target"
+ }
+ ],
+ "constraints": {
+ "SampleConstraint": {
+ "$comment": "TODO: The template may define the constraints all of which must be met in order for the template to be used. For more details see https://aka.ms/template-json-reference#symbols#template-constraints. If constraints are not required, remove the property.",
+ "type": "os",
+ "args": [ "Linux", "OSX", "Windows" ]
+ }
+ },
+ "primaryOutputs": [
+ {
+ "$comment": "TODO: Primary outputs define the list of template files for further processing, usually post actions. If primary outputs are not required, remove the property.",
+ "path": "New.Template.1.cs",
+ "condition": "false"
+ }
+ ],
+ "postActions": [
+ {
+ "$comment": "TODO: Enables actions to be performed after the project is created. For more details see https://aka.ms/template-json-post-actions. If post actions are not required, remove the property.",
+ "actionId": "84C0DA21-51C8-4541-9940-6CA19AF04EE6",
+ "condition": "false",
+ "id": "sample-post-action",
+ "manualInstructions": [
+ {
+ "text": "Open file in New.Template.1.cs in the editor."
+ }
+ ],
+ "args": {
+ "files": "0"
+ }
+ }
+ ]
+}
diff --git a/test/Microsoft.TemplateEngine.Authoring.Templates.IntegrationTests/Snapshots/templatepack.Basic.verified/templatepack/README.md b/test/Microsoft.TemplateEngine.Authoring.Templates.IntegrationTests/Snapshots/templatepack.Basic.verified/templatepack/README.md
new file mode 100644
index 00000000000..e9c4c2fb059
--- /dev/null
+++ b/test/Microsoft.TemplateEngine.Authoring.Templates.IntegrationTests/Snapshots/templatepack.Basic.verified/templatepack/README.md
@@ -0,0 +1,2 @@
+
diff --git a/test/Microsoft.TemplateEngine.Authoring.Templates.IntegrationTests/Snapshots/templatepack.Basic.verified/templatepack/content/SampleTemplate/placeholder.txt b/test/Microsoft.TemplateEngine.Authoring.Templates.IntegrationTests/Snapshots/templatepack.Basic.verified/templatepack/content/SampleTemplate/placeholder.txt
new file mode 100644
index 00000000000..5c9d9e9116a
--- /dev/null
+++ b/test/Microsoft.TemplateEngine.Authoring.Templates.IntegrationTests/Snapshots/templatepack.Basic.verified/templatepack/content/SampleTemplate/placeholder.txt
@@ -0,0 +1 @@
+Place your templates to this folder.
diff --git a/test/Microsoft.TemplateEngine.Authoring.Templates.IntegrationTests/Snapshots/templatepack.Basic.verified/templatepack/templatepack.csproj b/test/Microsoft.TemplateEngine.Authoring.Templates.IntegrationTests/Snapshots/templatepack.Basic.verified/templatepack/templatepack.csproj
new file mode 100644
index 00000000000..86710706682
--- /dev/null
+++ b/test/Microsoft.TemplateEngine.Authoring.Templates.IntegrationTests/Snapshots/templatepack.Basic.verified/templatepack/templatepack.csproj
@@ -0,0 +1,37 @@
+
+
+
+
+
+ templatepack
+ 1.0
+ TODO: fill the package name here
+ TODO: fill the author name or organization here
+ TODO: fill the package description here
+ TODO: fill the tags here
+ TODO: include a link to an associated project, repository, or company website
+
+
+ Template
+ net7.0
+ true
+ false
+ content
+ $(NoWarn);NU5128
+ true
+
+
+
+ false
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/test/Microsoft.TemplateEngine.Authoring.Templates.IntegrationTests/Snapshots/templatepack.CLI.verified/std-streams/stderr.txt b/test/Microsoft.TemplateEngine.Authoring.Templates.IntegrationTests/Snapshots/templatepack.CLI.verified/std-streams/stderr.txt
new file mode 100644
index 00000000000..5f282702bb0
--- /dev/null
+++ b/test/Microsoft.TemplateEngine.Authoring.Templates.IntegrationTests/Snapshots/templatepack.CLI.verified/std-streams/stderr.txt
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/test/Microsoft.TemplateEngine.Authoring.Templates.IntegrationTests/Snapshots/templatepack.CLI.verified/std-streams/stdout.txt b/test/Microsoft.TemplateEngine.Authoring.Templates.IntegrationTests/Snapshots/templatepack.CLI.verified/std-streams/stdout.txt
new file mode 100644
index 00000000000..f4cbee2a6ed
--- /dev/null
+++ b/test/Microsoft.TemplateEngine.Authoring.Templates.IntegrationTests/Snapshots/templatepack.CLI.verified/std-streams/stdout.txt
@@ -0,0 +1,5 @@
+The template "Template Package" was created successfully.
+
+Processing post-creation actions...
+Description: Manual actions required
+Manual instructions: Open *.csproj in the editor and complete the package metadata configuration. Copy the templates to 'content' folder. Fill in README.md.
\ No newline at end of file
diff --git a/test/Microsoft.TemplateEngine.Authoring.Templates.IntegrationTests/Snapshots/templatepack.CLI.verified/templatepack/README.md b/test/Microsoft.TemplateEngine.Authoring.Templates.IntegrationTests/Snapshots/templatepack.CLI.verified/templatepack/README.md
new file mode 100644
index 00000000000..e9c4c2fb059
--- /dev/null
+++ b/test/Microsoft.TemplateEngine.Authoring.Templates.IntegrationTests/Snapshots/templatepack.CLI.verified/templatepack/README.md
@@ -0,0 +1,2 @@
+
diff --git a/test/Microsoft.TemplateEngine.Authoring.Templates.IntegrationTests/Snapshots/templatepack.CLI.verified/templatepack/content/SampleTemplate/placeholder.txt b/test/Microsoft.TemplateEngine.Authoring.Templates.IntegrationTests/Snapshots/templatepack.CLI.verified/templatepack/content/SampleTemplate/placeholder.txt
new file mode 100644
index 00000000000..5c9d9e9116a
--- /dev/null
+++ b/test/Microsoft.TemplateEngine.Authoring.Templates.IntegrationTests/Snapshots/templatepack.CLI.verified/templatepack/content/SampleTemplate/placeholder.txt
@@ -0,0 +1 @@
+Place your templates to this folder.
diff --git a/test/Microsoft.TemplateEngine.Authoring.Templates.IntegrationTests/Snapshots/templatepack.CLI.verified/templatepack/templatepack.csproj b/test/Microsoft.TemplateEngine.Authoring.Templates.IntegrationTests/Snapshots/templatepack.CLI.verified/templatepack/templatepack.csproj
new file mode 100644
index 00000000000..86710706682
--- /dev/null
+++ b/test/Microsoft.TemplateEngine.Authoring.Templates.IntegrationTests/Snapshots/templatepack.CLI.verified/templatepack/templatepack.csproj
@@ -0,0 +1,37 @@
+
+
+
+
+
+ templatepack
+ 1.0
+ TODO: fill the package name here
+ TODO: fill the author name or organization here
+ TODO: fill the package description here
+ TODO: fill the tags here
+ TODO: include a link to an associated project, repository, or company website
+
+
+ Template
+ net7.0
+ true
+ false
+ content
+ $(NoWarn);NU5128
+ true
+
+
+
+ false
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/test/Microsoft.TemplateEngine.Authoring.Templates.IntegrationTests/Snapshots/templatepack.NoMSBuildTasks.verified/templatepack/README.md b/test/Microsoft.TemplateEngine.Authoring.Templates.IntegrationTests/Snapshots/templatepack.NoMSBuildTasks.verified/templatepack/README.md
new file mode 100644
index 00000000000..e9c4c2fb059
--- /dev/null
+++ b/test/Microsoft.TemplateEngine.Authoring.Templates.IntegrationTests/Snapshots/templatepack.NoMSBuildTasks.verified/templatepack/README.md
@@ -0,0 +1,2 @@
+
diff --git a/test/Microsoft.TemplateEngine.Authoring.Templates.IntegrationTests/Snapshots/templatepack.NoMSBuildTasks.verified/templatepack/content/SampleTemplate/placeholder.txt b/test/Microsoft.TemplateEngine.Authoring.Templates.IntegrationTests/Snapshots/templatepack.NoMSBuildTasks.verified/templatepack/content/SampleTemplate/placeholder.txt
new file mode 100644
index 00000000000..5c9d9e9116a
--- /dev/null
+++ b/test/Microsoft.TemplateEngine.Authoring.Templates.IntegrationTests/Snapshots/templatepack.NoMSBuildTasks.verified/templatepack/content/SampleTemplate/placeholder.txt
@@ -0,0 +1 @@
+Place your templates to this folder.
diff --git a/test/Microsoft.TemplateEngine.Authoring.Templates.IntegrationTests/Snapshots/templatepack.NoMSBuildTasks.verified/templatepack/templatepack.csproj b/test/Microsoft.TemplateEngine.Authoring.Templates.IntegrationTests/Snapshots/templatepack.NoMSBuildTasks.verified/templatepack/templatepack.csproj
new file mode 100644
index 00000000000..2ed1e737a3d
--- /dev/null
+++ b/test/Microsoft.TemplateEngine.Authoring.Templates.IntegrationTests/Snapshots/templatepack.NoMSBuildTasks.verified/templatepack/templatepack.csproj
@@ -0,0 +1,29 @@
+
+
+
+
+
+ templatepack
+ 1.0
+ TODO: fill the package name here
+ TODO: fill the author name or organization here
+ TODO: fill the package description here
+ TODO: fill the tags here
+ TODO: include a link to an associated project, repository, or company website
+
+
+ Template
+ net7.0
+ true
+ false
+ content
+ $(NoWarn);NU5128
+ true
+
+
+
+
+
+
+
+
diff --git a/test/Microsoft.TemplateEngine.Authoring.Templates.IntegrationTests/Snapshots/templatepack.WithName.verified/templatepack/MyTemplatePackage.csproj b/test/Microsoft.TemplateEngine.Authoring.Templates.IntegrationTests/Snapshots/templatepack.WithName.verified/templatepack/MyTemplatePackage.csproj
new file mode 100644
index 00000000000..1fc1cd7c821
--- /dev/null
+++ b/test/Microsoft.TemplateEngine.Authoring.Templates.IntegrationTests/Snapshots/templatepack.WithName.verified/templatepack/MyTemplatePackage.csproj
@@ -0,0 +1,37 @@
+
+
+
+
+
+ MyTemplatePackage
+ 1.0
+ TODO: fill the package name here
+ TODO: fill the author name or organization here
+ TODO: fill the package description here
+ TODO: fill the tags here
+ TODO: include a link to an associated project, repository, or company website
+
+
+ Template
+ net7.0
+ true
+ false
+ content
+ $(NoWarn);NU5128
+ true
+
+
+
+ false
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/test/Microsoft.TemplateEngine.Authoring.Templates.IntegrationTests/Snapshots/templatepack.WithName.verified/templatepack/README.md b/test/Microsoft.TemplateEngine.Authoring.Templates.IntegrationTests/Snapshots/templatepack.WithName.verified/templatepack/README.md
new file mode 100644
index 00000000000..e9c4c2fb059
--- /dev/null
+++ b/test/Microsoft.TemplateEngine.Authoring.Templates.IntegrationTests/Snapshots/templatepack.WithName.verified/templatepack/README.md
@@ -0,0 +1,2 @@
+
diff --git a/test/Microsoft.TemplateEngine.Authoring.Templates.IntegrationTests/Snapshots/templatepack.WithName.verified/templatepack/content/SampleTemplate/placeholder.txt b/test/Microsoft.TemplateEngine.Authoring.Templates.IntegrationTests/Snapshots/templatepack.WithName.verified/templatepack/content/SampleTemplate/placeholder.txt
new file mode 100644
index 00000000000..5c9d9e9116a
--- /dev/null
+++ b/test/Microsoft.TemplateEngine.Authoring.Templates.IntegrationTests/Snapshots/templatepack.WithName.verified/templatepack/content/SampleTemplate/placeholder.txt
@@ -0,0 +1 @@
+Place your templates to this folder.
diff --git a/test/Shared/TestBase.cs b/test/Shared/TestBase.cs
index 065a23b66b7..165bfb9d63e 100644
--- a/test/Shared/TestBase.cs
+++ b/test/Shared/TestBase.cs
@@ -38,6 +38,8 @@ internal static string ShippingPackagesLocation
}
}
+ internal static string TemplateFeedLocation { get; } = Path.Combine(CodeBaseRoot, "template_feed");
+
internal static string TestTemplatesLocation { get; } = Path.Combine(CodeBaseRoot, "test", "Microsoft.TemplateEngine.TestTemplates", "test_templates");
internal static string TestTemplatePackagesLocation { get; } = Path.Combine(CodeBaseRoot, "test", "Microsoft.TemplateEngine.TestTemplates", "nupkg_templates");