diff --git a/Templates/dotnetTemplates/Create a template package for dotnet new - .NET - Microsoft Learn.url b/Templates/dotnetTemplates/Create a template package for dotnet new - .NET - Microsoft Learn.url
new file mode 100644
index 00000000000..fd3dbc9de95
--- /dev/null
+++ b/Templates/dotnetTemplates/Create a template package for dotnet new - .NET - Microsoft Learn.url
@@ -0,0 +1,2 @@
+[InternetShortcut]
+URL=https://learn.microsoft.com/en-us/dotnet/core/tutorials/cli-templates-create-template-package?pivots=dotnet-8-0
diff --git a/Templates/dotnetTemplates/Install.bat b/Templates/dotnetTemplates/Install.bat
new file mode 100644
index 00000000000..c2f04a3bbb6
--- /dev/null
+++ b/Templates/dotnetTemplates/Install.bat
@@ -0,0 +1 @@
+dotnet new install .\
diff --git a/Templates/dotnetTemplates/README.md b/Templates/dotnetTemplates/README.md
new file mode 100644
index 00000000000..3725c22261a
--- /dev/null
+++ b/Templates/dotnetTemplates/README.md
@@ -0,0 +1,4 @@
+
+
+
diff --git a/Templates/dotnetTemplates/Uninstall.bat b/Templates/dotnetTemplates/Uninstall.bat
new file mode 100644
index 00000000000..6393b2d125c
--- /dev/null
+++ b/Templates/dotnetTemplates/Uninstall.bat
@@ -0,0 +1 @@
+dotnet new uninstall .\
diff --git a/Templates/dotnetTemplates/UpdateVSCache.bat b/Templates/dotnetTemplates/UpdateVSCache.bat
new file mode 100644
index 00000000000..b8366a46249
--- /dev/null
+++ b/Templates/dotnetTemplates/UpdateVSCache.bat
@@ -0,0 +1 @@
+"C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\IDE\devenv.exe" /updateconfiguration
\ No newline at end of file
diff --git a/Templates/dotnetTemplates/content/ContentPipelineExtension.NetStandard.CSharp/.template.config/TemplateIcon.png b/Templates/dotnetTemplates/content/ContentPipelineExtension.NetStandard.CSharp/.template.config/TemplateIcon.png
new file mode 100644
index 00000000000..b5f3544abbb
Binary files /dev/null and b/Templates/dotnetTemplates/content/ContentPipelineExtension.NetStandard.CSharp/.template.config/TemplateIcon.png differ
diff --git a/Templates/dotnetTemplates/content/ContentPipelineExtension.NetStandard.CSharp/.template.config/ide.host.json b/Templates/dotnetTemplates/content/ContentPipelineExtension.NetStandard.CSharp/.template.config/ide.host.json
new file mode 100644
index 00000000000..b6582ae1806
--- /dev/null
+++ b/Templates/dotnetTemplates/content/ContentPipelineExtension.NetStandard.CSharp/.template.config/ide.host.json
@@ -0,0 +1,4 @@
+{
+ "$schema": " https://json.schemastore.org/ide.host",
+ "icon": "TemplateIcon.png",
+}
\ No newline at end of file
diff --git a/Templates/dotnetTemplates/content/ContentPipelineExtension.NetStandard.CSharp/.template.config/template.json b/Templates/dotnetTemplates/content/ContentPipelineExtension.NetStandard.CSharp/.template.config/template.json
new file mode 100644
index 00000000000..2c3acae7e07
--- /dev/null
+++ b/Templates/dotnetTemplates/content/ContentPipelineExtension.NetStandard.CSharp/.template.config/template.json
@@ -0,0 +1,14 @@
+{
+ "$schema": "http://json.schemastore.org/template",
+ "author": "KNI Engine",
+ "classifications": [ "Common", "Console" ],
+ "identity": "nkast.Kni.ContentPipelineExtension.CSharp",
+ "name": "KNI Content Pipeline Extension Project (.NetStandard)",
+ "shortName": "KniContentPipelineExtensionNetStandard",
+ "sourceName": "KniContentPipelineExtension",
+ "tags": {
+ "language": "C#",
+ "type": "project"
+ },
+ "icon": "TemplateIcon.png"
+}
\ No newline at end of file
diff --git a/Templates/dotnetTemplates/content/ContentPipelineExtension.NetStandard.CSharp/ContentImporter1.cs b/Templates/dotnetTemplates/content/ContentPipelineExtension.NetStandard.CSharp/ContentImporter1.cs
new file mode 100644
index 00000000000..e4587d79d89
--- /dev/null
+++ b/Templates/dotnetTemplates/content/ContentPipelineExtension.NetStandard.CSharp/ContentImporter1.cs
@@ -0,0 +1,34 @@
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Text;
+using Microsoft.Xna.Framework.Content.Pipeline;
+
+using TInput = System.String;
+using TOutput = System.String;
+
+namespace KniContentPipelineExtension
+{
+ ///
+ /// This class will be instantiated by the XNA Framework Content Pipeline
+ /// to import a file from disk into the specified type, TImport.
+ ///
+ /// This should be part of a Content Pipeline Extension Library project.
+ ///
+ /// TODO: change the ContentImporter attribute to specify the correct file
+ /// extension, display name, and default processor for this importer.
+ ///
+
+ [ContentImporter(".xyz", DisplayName = "XYZ Importer", DefaultProcessor = "ContentProcessor1")]
+ public class ContentImporter1 : ContentImporter
+ {
+
+ public override TInput Import(string filename, ContentImporterContext context)
+ {
+ // TODO: process the input object, and return the modified data.
+ throw new NotImplementedException();
+ }
+
+ }
+
+}
diff --git a/Templates/dotnetTemplates/content/ContentPipelineExtension.NetStandard.CSharp/ContentPipelineExtension.csproj b/Templates/dotnetTemplates/content/ContentPipelineExtension.NetStandard.CSharp/ContentPipelineExtension.csproj
new file mode 100644
index 00000000000..0c9a830c13b
--- /dev/null
+++ b/Templates/dotnetTemplates/content/ContentPipelineExtension.NetStandard.CSharp/ContentPipelineExtension.csproj
@@ -0,0 +1,36 @@
+
+
+
+ false
+ netstandard2.0
+ {$guid1$}
+ Library
+ Properties
+ KniContentPipelineExtension
+ KniContentPipelineExtension
+ bin\$(Platform)\$(Configuration)\
+ $(DefineConstants);
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Templates/dotnetTemplates/content/ContentPipelineExtension.NetStandard.CSharp/ContentProcessor1.cs b/Templates/dotnetTemplates/content/ContentPipelineExtension.NetStandard.CSharp/ContentProcessor1.cs
new file mode 100644
index 00000000000..2978fb2eb17
--- /dev/null
+++ b/Templates/dotnetTemplates/content/ContentPipelineExtension.NetStandard.CSharp/ContentProcessor1.cs
@@ -0,0 +1,29 @@
+using System;
+using Microsoft.Xna.Framework.Content.Pipeline;
+// TODO: replace these with the processor input and output types.
+using TInput = System.String;
+using TOutput = System.String;
+
+namespace KniContentPipelineExtension
+{
+ ///
+ /// This class will be instantiated by the XNA Framework Content Pipeline
+ /// to apply custom processing to content data, converting an object of
+ /// type TInput to TOutput. The input and output types may be the same if
+ /// the processor wishes to alter data without changing its type.
+ ///
+ /// This should be part of a Content Pipeline Extension Library project.
+ ///
+ /// TODO: change the ContentProcessor attribute to specify the correct
+ /// display name for this processor.
+ ///
+ [ContentProcessor(DisplayName = "KniContentPipelineExtension.ContentProcessor1")]
+ public class ContentProcessor1 : ContentProcessor
+ {
+ public override TOutput Process(TInput input, ContentProcessorContext context)
+ {
+ // TODO: process the input object, and return the modified data.
+ throw new NotImplementedException();
+ }
+ }
+}
\ No newline at end of file
diff --git a/Templates/dotnetTemplates/content/ContentPipelineExtension.NetStandard.CSharp/Directory.Build.props b/Templates/dotnetTemplates/content/ContentPipelineExtension.NetStandard.CSharp/Directory.Build.props
new file mode 100644
index 00000000000..4d9b5eb6808
--- /dev/null
+++ b/Templates/dotnetTemplates/content/ContentPipelineExtension.NetStandard.CSharp/Directory.Build.props
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/Templates/dotnetTemplates/content/GameComponent.CSharp/.template.config/TemplateIcon.png b/Templates/dotnetTemplates/content/GameComponent.CSharp/.template.config/TemplateIcon.png
new file mode 100644
index 00000000000..0b1e9edea48
Binary files /dev/null and b/Templates/dotnetTemplates/content/GameComponent.CSharp/.template.config/TemplateIcon.png differ
diff --git a/Templates/dotnetTemplates/content/GameComponent.CSharp/.template.config/ide.host.json b/Templates/dotnetTemplates/content/GameComponent.CSharp/.template.config/ide.host.json
new file mode 100644
index 00000000000..21f59af3fc8
--- /dev/null
+++ b/Templates/dotnetTemplates/content/GameComponent.CSharp/.template.config/ide.host.json
@@ -0,0 +1,7 @@
+{
+ "$schema": " https://json.schemastore.org/ide.host",
+ "icon": "TemplateIcon.png",
+
+ "defaultItemExtension": "cs",
+ "itemHierarchyPaths": [ "Code" ]
+}
\ No newline at end of file
diff --git a/Templates/dotnetTemplates/content/GameComponent.CSharp/.template.config/template.json b/Templates/dotnetTemplates/content/GameComponent.CSharp/.template.config/template.json
new file mode 100644
index 00000000000..1b8a040153f
--- /dev/null
+++ b/Templates/dotnetTemplates/content/GameComponent.CSharp/.template.config/template.json
@@ -0,0 +1,23 @@
+{
+ "$schema": "http://json.schemastore.org/template",
+ "author": "KNI Engine",
+ "classifications": [ "Common", "Code" ],
+ "identity": "nkast.Kni.GameComponent.CSharp",
+ "name": "KNI GameComponent Item",
+ "shortName": "KniGameComponent",
+ "tags": {
+ "language": "C#",
+ "type": "item"
+ },
+ "symbols": {
+ "ClassName":{
+ "type": "parameter",
+ "description": "The name of the code file and class.",
+ "datatype": "text",
+ "replaces": "GameComponent1",
+ "fileRename": "GameComponent1",
+ "defaultValue": "GameComponent1"
+ }
+ },
+ "icon": "TemplateIcon.png"
+}
diff --git a/Templates/dotnetTemplates/content/GameComponent.CSharp/GameComponent1.cs b/Templates/dotnetTemplates/content/GameComponent.CSharp/GameComponent1.cs
new file mode 100644
index 00000000000..783248db54a
--- /dev/null
+++ b/Templates/dotnetTemplates/content/GameComponent.CSharp/GameComponent1.cs
@@ -0,0 +1,29 @@
+using System;
+using System.Collections.Generic;
+using Microsoft.Xna.Framework;
+using Microsoft.Xna.Framework.Audio;
+using Microsoft.Xna.Framework.Graphics;
+using Microsoft.Xna.Framework.Input;
+
+namespace KniGameComponent
+{
+ internal class GameComponent1 : GameComponent
+ {
+ public GameComponent1(Game game) : base(game)
+ {
+ }
+
+ /// Initializes the component. Used to load non-graphical resources.
+ public override void Initialize()
+ {
+ base.Initialize();
+ }
+
+ /// Update the component.
+ /// GameTime of the Game.
+ public override void Update(GameTime gameTime)
+ {
+ }
+
+ }
+}
diff --git a/Templates/dotnetTemplates/installPackage.bat b/Templates/dotnetTemplates/installPackage.bat
new file mode 100644
index 00000000000..c6f088f4f4f
--- /dev/null
+++ b/Templates/dotnetTemplates/installPackage.bat
@@ -0,0 +1 @@
+dotnet new install .\bin\Release\nkast.Kni.Templates.3.13.9001.nupkg
diff --git a/Templates/dotnetTemplates/nkast.Kni.Templates.csproj b/Templates/dotnetTemplates/nkast.Kni.Templates.csproj
new file mode 100644
index 00000000000..3ba98eb51e7
--- /dev/null
+++ b/Templates/dotnetTemplates/nkast.Kni.Templates.csproj
@@ -0,0 +1,42 @@
+
+
+
+
+
+ nkast.Kni.Templates
+ 3.13.9001
+ TODO: fill the package name here
+ KNI Engine
+ TODO: fill the package description here
+ TODO: fill the tags here
+ https://github.com/kniEngine/kni/
+
+
+ Template
+ net8.0
+ true
+ false
+ content
+ $(NoWarn);NU5128
+ true
+ README.md
+
+
+
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Templates/dotnetTemplates/pack.bat b/Templates/dotnetTemplates/pack.bat
new file mode 100644
index 00000000000..6b5f6965db1
--- /dev/null
+++ b/Templates/dotnetTemplates/pack.bat
@@ -0,0 +1 @@
+dotnet pack
diff --git "a/Templates/dotnetTemplates/templating-dotnet-template-samples-content at main \302\267 dotnet-templating.url" "b/Templates/dotnetTemplates/templating-dotnet-template-samples-content at main \302\267 dotnet-templating.url"
new file mode 100644
index 00000000000..7875e7b6a44
--- /dev/null
+++ "b/Templates/dotnetTemplates/templating-dotnet-template-samples-content at main \302\267 dotnet-templating.url"
@@ -0,0 +1,2 @@
+[InternetShortcut]
+URL=https://github.com/dotnet/templating/tree/main/dotnet-template-samples/content
diff --git a/Templates/dotnetTemplates/uninstallPackage.bat b/Templates/dotnetTemplates/uninstallPackage.bat
new file mode 100644
index 00000000000..3e71acd4aa5
--- /dev/null
+++ b/Templates/dotnetTemplates/uninstallPackage.bat
@@ -0,0 +1 @@
+dotnet new uninstall nkast.Kni.Templates
\ No newline at end of file