diff --git a/PowerToys.sln b/PowerToys.sln
index 9c0d0dfee8..70785dc186 100644
--- a/PowerToys.sln
+++ b/PowerToys.sln
@@ -79,7 +79,7 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "PowerRenameUnitTests", "src
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "examples", "examples", "{BEEAB7F2-FFF6-45AB-9CDB-B04CC0734B88}"
EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ModuleTemplate", "tools\project_template\ModuleTemplate\ModuleTemplate.vcxproj", "{64A80062-4D8B-4229-8A38-DFA1D7497749}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ModuleTemplateCompileTest", "tools\project_template\ModuleTemplate\ModuleTemplateCompileTest.vcxproj", "{64A80062-4D8B-4229-8A38-DFA1D7497749}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "PowerRenameUWPUI", "src\modules\powerrename\UWPui\PowerRenameUWPUI.vcxproj", "{0485F45C-EA7A-4BB5-804B-3E8D14699387}"
ProjectSection(ProjectDependencies) = postProject
diff --git a/tools/project_template/ModuleTemplate.zip b/tools/project_template/ModuleTemplate.zip
index 086a2e31ea..84f75ada9e 100644
Binary files a/tools/project_template/ModuleTemplate.zip and b/tools/project_template/ModuleTemplate.zip differ
diff --git a/tools/project_template/ModuleTemplate/$projectname$.rc b/tools/project_template/ModuleTemplate/$projectname$.rc
index e69de29bb2..af288a92d3 100644
--- a/tools/project_template/ModuleTemplate/$projectname$.rc
+++ b/tools/project_template/ModuleTemplate/$projectname$.rc
@@ -0,0 +1,32 @@
+1 VERSIONINFO
+ FILEVERSION 0,1,0,0
+ PRODUCTVERSION 0,1,0,0
+ FILEFLAGSMASK 0x3fL
+#ifdef _DEBUG
+ FILEFLAGS 0x1L
+#else
+ FILEFLAGS 0x0L
+#endif
+ FILEOS 0x40004L
+ FILETYPE 0x2L
+ FILESUBTYPE 0x0L
+BEGIN
+ BLOCK "StringFileInfo"
+ BEGIN
+ BLOCK "040904b0"
+ BEGIN
+ VALUE "CompanyName", "Company Name"
+ VALUE "FileDescription", "$projectname$ Module"
+ VALUE "FileVersion", "0.1.0.0"
+ VALUE "InternalName", "$projectname$"
+ VALUE "LegalCopyright", "Copyright (C) 2019 Company Name"
+ VALUE "OriginalFilename", "$projectname$.dll"
+ VALUE "ProductName", "$projectname$"
+ VALUE "ProductVersion", "0.1.0.0"
+ END
+ END
+ BLOCK "VarFileInfo"
+ BEGIN
+ VALUE "Translation", 0x409, 1200
+ END
+END
\ No newline at end of file
diff --git a/tools/project_template/ModuleTemplate/ModuleTemplate.rc b/tools/project_template/ModuleTemplate/ModuleTemplate.rc
deleted file mode 100644
index c6e65c4e07..0000000000
Binary files a/tools/project_template/ModuleTemplate/ModuleTemplate.rc and /dev/null differ
diff --git a/tools/project_template/ModuleTemplate/ModuleTemplate.vcxproj b/tools/project_template/ModuleTemplate/ModuleTemplate.vcxproj
index 6405bb3a58..e08bc7247d 100644
--- a/tools/project_template/ModuleTemplate/ModuleTemplate.vcxproj
+++ b/tools/project_template/ModuleTemplate/ModuleTemplate.vcxproj
@@ -14,7 +14,7 @@
15.0
{64A80062-4D8B-4229-8A38-DFA1D7497749}
Win32Proj
- templatenamespace
+ $safeprojectname$
10.0
ModuleTemplate
diff --git a/tools/project_template/ModuleTemplate/ModuleTemplateCompileTest.vcxproj b/tools/project_template/ModuleTemplate/ModuleTemplateCompileTest.vcxproj
new file mode 100644
index 0000000000..b923692645
--- /dev/null
+++ b/tools/project_template/ModuleTemplate/ModuleTemplateCompileTest.vcxproj
@@ -0,0 +1,126 @@
+
+
+
+
+ Debug
+ x64
+
+
+ Release
+ x64
+
+
+
+ 15.0
+ {64A80062-4D8B-4229-8A38-DFA1D7497749}
+ Win32Proj
+ templatenamespace
+ 10.0
+ ModuleTemplateCompileTest
+
+
+
+ DynamicLibrary
+ true
+ v142
+ Unicode
+
+
+ DynamicLibrary
+ false
+ v142
+ true
+ Unicode
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+ $(SolutionDir)$(Platform)\$(Configuration)\modules\
+
+
+ false
+ $(SolutionDir)$(Platform)\$(Configuration)\modules\
+
+
+
+ Use
+ Level3
+ Disabled
+ true
+ _DEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)
+ true
+ pch.h
+ MultiThreadedDebug
+ stdcpplatest
+
+
+ Windows
+ true
+ $(OutDir)$(TargetName)$(TargetExt)
+
+
+
+
+ Use
+ Level3
+ MaxSpeed
+ true
+ true
+ true
+ NDEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)
+ true
+ pch.h
+ MultiThreaded
+ stdcpplatest
+
+
+ Windows
+ true
+ true
+ true
+ $(OutDir)$(TargetName)$(TargetExt)
+
+
+
+
+ $(SolutionDir)src\;$(SolutionDir)src\modules;$(SolutionDir)src\common\Telemetry;%(AdditionalIncludeDirectories)
+
+
+
+
+
+
+
+
+
+
+ Create
+ Create
+ pch.h
+ pch.h
+
+
+
+
+
+ {74485049-c722-400f-abe5-86ac52d929b3}
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/tools/project_template/ModuleTemplate/ModuleTemplate.vcxproj.filters b/tools/project_template/ModuleTemplate/ModuleTemplateCompileTest.vcxproj.filters
similarity index 100%
rename from tools/project_template/ModuleTemplate/ModuleTemplate.vcxproj.filters
rename to tools/project_template/ModuleTemplate/ModuleTemplateCompileTest.vcxproj.filters
diff --git a/PowerToyTemplate.sln b/tools/project_template/PowerToyTemplate.sln
similarity index 89%
rename from PowerToyTemplate.sln
rename to tools/project_template/PowerToyTemplate.sln
index 300d5065d3..b89dba4345 100644
--- a/PowerToyTemplate.sln
+++ b/tools/project_template/PowerToyTemplate.sln
@@ -3,7 +3,7 @@ Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 16
VisualStudioVersion = 16.0.29609.76
MinimumVisualStudioVersion = 10.0.40219.1
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ModuleTemplate", "tools\project_template\ModuleTemplate\ModuleTemplate.vcxproj", "{64A80062-4D8B-4229-8A38-DFA1D7497749}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ModuleTemplate", "ModuleTemplate\ModuleTemplate.vcxproj", "{64A80062-4D8B-4229-8A38-DFA1D7497749}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
diff --git a/tools/project_template/README.md b/tools/project_template/README.md
index 25746c288d..d146ae7125 100644
--- a/tools/project_template/README.md
+++ b/tools/project_template/README.md
@@ -5,6 +5,9 @@
- Put the `ModuleTemplate.zip` file inside the `%USERPROFILE%\Documents\Visual Studio 2019\Templates\ProjectTemplates\` folder, which is the default *User project templates location*. You can change that location via `Tools > Options > Projects and Solutions`.
- The template will be available in Visual Studio, when adding a new project, under the `Visual C++` tab.
+## Contributing
+If you'd like to work on a PowerToy template, make required modifications to `\tools\project_template\ModuleTemplate.vcxproj` and then use the dedicated solution `PowerToyTemplate.sln` to export it as a template. Note that `ModuleTemplate.vcxproj` is actually a project template, therefore uncompilable, so we also have a dedicated `ModuleTemplateCompileTest.vcxproj` project referenced from the `PowerToys.sln` to help keeping the template sources up to date and verify it compiles correctly.
+
## Create a new PowerToy Module
- Add the new PowerToy project to the `src\modules\` folder for all the relative paths to work.