diff --git a/.gitignore b/.gitignore
index fdab9690..d51beecc 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,21 +1,5 @@
-DockBoxResearch/bin
-DockBoxResearch/obj
-src/.vs
-src/Core_30/HandyControl_Core_30/bin
-src/Core_30/HandyControl_Core_30/obj
-src/Core_30/HandyControlDemo_Core_30/bin
-src/Core_30/HandyControlDemo_Core_30/obj
-src/Net_35/HandyControl_Net_35/bin
-src/Net_35/HandyControl_Net_35/obj
-src/Net_35/HandyControlDemo_Net_35/bin
-src/Net_35/HandyControlDemo_Net_35/obj
-src/Net_40/HandyControl_Net_40/bin
-src/Net_40/HandyControl_Net_40/obj
-src/Net_40/HandyControlDemo_Net_40/bin
-src/Net_40/HandyControlDemo_Net_40/obj
-src/Net_GE45/HandyControl_Net_GE45/bin
-src/Net_GE45/HandyControl_Net_GE45/obj
-src/Net_GE45/HandyControlDemo_Net_GE45/bin
-src/Net_GE45/HandyControlDemo_Net_GE45/obj
+.vs
*.user
-*.xml
\ No newline at end of file
+*.xml
+[Bb]in/
+[Oo]bj/
\ No newline at end of file
diff --git a/Installers/VS2019/HandyControl_VS2019.sln b/Installers/VS2019/HandyControl_VS2019.sln
new file mode 100644
index 00000000..5554fd02
--- /dev/null
+++ b/Installers/VS2019/HandyControl_VS2019.sln
@@ -0,0 +1,31 @@
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio Version 16
+VisualStudioVersion = 16.0.28803.352
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HandyControl_Template", "HandyControl_Template\HandyControl_Template.csproj", "{A9911E14-0CDF-4C25-B458-F16816D55E60}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HandyControl_VS2019", "HandyControl_VS2019\HandyControl_VS2019.csproj", "{3F0F7B9E-C150-4FAA-9274-4F6F0A96B8CA}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|Any CPU = Debug|Any CPU
+ Release|Any CPU = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {A9911E14-0CDF-4C25-B458-F16816D55E60}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {A9911E14-0CDF-4C25-B458-F16816D55E60}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {A9911E14-0CDF-4C25-B458-F16816D55E60}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {A9911E14-0CDF-4C25-B458-F16816D55E60}.Release|Any CPU.Build.0 = Release|Any CPU
+ {3F0F7B9E-C150-4FAA-9274-4F6F0A96B8CA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {3F0F7B9E-C150-4FAA-9274-4F6F0A96B8CA}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {3F0F7B9E-C150-4FAA-9274-4F6F0A96B8CA}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {3F0F7B9E-C150-4FAA-9274-4F6F0A96B8CA}.Release|Any CPU.Build.0 = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+ GlobalSection(ExtensibilityGlobals) = postSolution
+ SolutionGuid = {A7F567D2-5FA3-4E17-A8A8-CDAFC217BFF5}
+ EndGlobalSection
+EndGlobal
diff --git a/Installers/VS2019/HandyControl_VS2019/HandyControl_VS2019.csproj b/Installers/VS2019/HandyControl_VS2019/HandyControl_VS2019.csproj
new file mode 100644
index 00000000..364099da
--- /dev/null
+++ b/Installers/VS2019/HandyControl_VS2019/HandyControl_VS2019.csproj
@@ -0,0 +1,100 @@
+
+
+
+ 16.0
+ $(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)
+
+
+
+ Debug
+ AnyCPU
+ 2.0
+ {82b43b9b-a64c-4715-b499-d71e9ca2bd60};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}
+ {3F0F7B9E-C150-4FAA-9274-4F6F0A96B8CA}
+ Library
+ Properties
+ HandyControl_VS2019
+ HandyControl_VS2019
+ v4.7.2
+ true
+ true
+ true
+ false
+ false
+ true
+ true
+ Program
+ $(DevEnvDir)devenv.exe
+ /rootsuffix Exp
+
+
+ true
+ full
+ false
+ bin\Debug\
+ DEBUG;TRACE
+ prompt
+ 4
+
+
+ pdbonly
+ true
+ bin\Release\
+ TRACE
+ prompt
+ 4
+
+
+
+
+
+
+
+ Always
+ true
+
+
+ Designer
+
+
+
+
+
+
+
+
+
+
+
+ true
+ Always
+
+
+ true
+ Always
+
+
+ true
+ Always
+
+
+
+
+ {A9911E14-0CDF-4C25-B458-F16816D55E60}
+ HandyControl_Template
+ ProjectTemplates
+ false
+ TemplateProjectOutputGroup%3b
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Installers/VS2019/HandyControl_VS2019/HandyControl_VS2019Package.cs b/Installers/VS2019/HandyControl_VS2019/HandyControl_VS2019Package.cs
new file mode 100644
index 00000000..10e0ebb6
--- /dev/null
+++ b/Installers/VS2019/HandyControl_VS2019/HandyControl_VS2019Package.cs
@@ -0,0 +1,53 @@
+using System;
+using System.Runtime.InteropServices;
+using System.Threading;
+using Microsoft.VisualStudio.Shell;
+using Task = System.Threading.Tasks.Task;
+
+namespace HandyControl_VS2019
+{
+ ///
+ /// This is the class that implements the package exposed by this assembly.
+ ///
+ ///
+ ///
+ /// The minimum requirement for a class to be considered a valid package for Visual Studio
+ /// is to implement the IVsPackage interface and register itself with the shell.
+ /// This package uses the helper classes defined inside the Managed Package Framework (MPF)
+ /// to do it: it derives from the Package class that provides the implementation of the
+ /// IVsPackage interface and uses the registration attributes defined in the framework to
+ /// register itself and its components with the shell. These attributes tell the pkgdef creation
+ /// utility what data to put into .pkgdef file.
+ ///
+ ///
+ /// To get loaded into VS, the package must be referred by <Asset Type="Microsoft.VisualStudio.VsPackage" ...> in .vsixmanifest file.
+ ///
+ ///
+ [PackageRegistration(UseManagedResourcesOnly = true, AllowsBackgroundLoading = true)]
+ [Guid(PackageGuidString)]
+ public sealed class HandyControl_VS2019Package : AsyncPackage
+ {
+ ///
+ /// HandyControl_VS2019Package GUID string.
+ ///
+ public const string PackageGuidString = "157ef242-83b5-47d0-8f2f-e21dc8308151";
+
+ #region Package Members
+
+ ///
+ /// Initialization of the package; this method is called right after the package is sited, so this is the place
+ /// where you can put all the initialization code that rely on services provided by VisualStudio.
+ ///
+ /// A cancellation token to monitor for initialization cancellation, which can occur when VS is shutting down.
+ /// A provider for progress updates.
+ /// A task representing the async work of package initialization, or an already completed task if there is none. Do not return null from this method.
+ protected override async Task InitializeAsync(CancellationToken cancellationToken, IProgress progress)
+ {
+ // When initialized asynchronously, the current thread may be a background thread at this point.
+ // Do any initialization that requires the UI thread after switching to the UI thread.
+ await this.JoinableTaskFactory.SwitchToMainThreadAsync(cancellationToken);
+ }
+
+ #endregion
+ }
+}
diff --git a/Installers/VS2019/HandyControl_VS2019/License.txt b/Installers/VS2019/HandyControl_VS2019/License.txt
new file mode 100644
index 00000000..cfef606b
--- /dev/null
+++ b/Installers/VS2019/HandyControl_VS2019/License.txt
@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) 2018-2019 HandyOrg
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
\ No newline at end of file
diff --git a/Installers/VS2019/HandyControl_VS2019/ProjectTemplates/WpfApp1.zip b/Installers/VS2019/HandyControl_VS2019/ProjectTemplates/WpfApp1.zip
new file mode 100644
index 00000000..656ee624
Binary files /dev/null and b/Installers/VS2019/HandyControl_VS2019/ProjectTemplates/WpfApp1.zip differ
diff --git a/Installers/VS2019/HandyControl_VS2019/Properties/AssemblyInfo.cs b/Installers/VS2019/HandyControl_VS2019/Properties/AssemblyInfo.cs
new file mode 100644
index 00000000..f4ff8fdc
--- /dev/null
+++ b/Installers/VS2019/HandyControl_VS2019/Properties/AssemblyInfo.cs
@@ -0,0 +1,14 @@
+using System.Reflection;
+using System.Runtime.InteropServices;
+
+[assembly: AssemblyTitle("HandyControl_VS2019")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("HandyControl_VS2019")]
+[assembly: AssemblyCopyright("")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+[assembly: ComVisible(false)]
+[assembly: AssemblyVersion("1.5.5.0")]
+[assembly: AssemblyFileVersion("1.5.5.0")]
\ No newline at end of file
diff --git a/Installers/VS2019/HandyControl_VS2019/icon_100_100.png b/Installers/VS2019/HandyControl_VS2019/icon_100_100.png
new file mode 100644
index 00000000..df0bb782
Binary files /dev/null and b/Installers/VS2019/HandyControl_VS2019/icon_100_100.png differ
diff --git a/Installers/VS2019/HandyControl_VS2019/icon_300_300.png b/Installers/VS2019/HandyControl_VS2019/icon_300_300.png
new file mode 100644
index 00000000..cb318d98
Binary files /dev/null and b/Installers/VS2019/HandyControl_VS2019/icon_300_300.png differ
diff --git a/Installers/VS2019/HandyControl_VS2019/source.extension.vsixmanifest b/Installers/VS2019/HandyControl_VS2019/source.extension.vsixmanifest
new file mode 100644
index 00000000..80b69255
--- /dev/null
+++ b/Installers/VS2019/HandyControl_VS2019/source.extension.vsixmanifest
@@ -0,0 +1,30 @@
+
+
+
+
+ HandyControl for VS2019
+ This VSIX Project will help people initialize a HandyControl project.
+ https://handyorg.github.io/handycontrol
+ License.txt
+ https://handyorg.github.io/handycontrol/quick_start
+ https://github.com/HandyOrg/HandyControl/releases
+ icon_100_100.png
+ icon_300_300.png
+ WPF C# Control
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/LICENSE b/LICENSE
index 1ba53fed..f9f0dead 100644
--- a/LICENSE
+++ b/LICENSE
@@ -1,6 +1,6 @@
MIT License
-Copyright (c) 2018 HandyOrg
+Copyright (c) 2018-2019 HandyOrg
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal