diff --git a/CaseConverter.sln b/CaseConverter.sln
index a2a2a6b..3e710a4 100644
--- a/CaseConverter.sln
+++ b/CaseConverter.sln
@@ -1,27 +1,67 @@
Microsoft Visual Studio Solution File, Format Version 12.00
-# Visual Studio 15
-VisualStudioVersion = 15.0.26228.9
+# Visual Studio Version 17
+VisualStudioVersion = 17.0.31912.275
MinimumVisualStudioVersion = 10.0.40219.1
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CaseConverter", "CaseConverter\CaseConverter.csproj", "{664E8280-457A-4177-87E9-96B0DCE7BEC1}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CaseConverter", "src\CaseConverter\CaseConverter.csproj", "{664E8280-457A-4177-87E9-96B0DCE7BEC1}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Test.CaseConverter", "Test.CaseConverter\Test.CaseConverter.csproj", "{D0E1092F-AB1D-4870-8B89-44E6636F3D17}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Test.CaseConverter", "tests\Test.CaseConverter\Test.CaseConverter.csproj", "{D0E1092F-AB1D-4870-8B89-44E6636F3D17}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{D79CEF5B-8E89-42F2-8850-A3FD6D4DC135}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "tests", "tests", "{FCA77A9D-0BAB-4C3D-935D-4590F5DA201A}"
+EndProject
+Project("{D954291E-2A0B-460D-934E-DC6B0785DB48}") = "CaseConverterShared", "src\CaseConverterShared\CaseConverterShared.shproj", "{7A754992-EA1C-4717-A4BB-22104F6B998D}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CaseConverter2022", "src\CaseConverter2022\CaseConverter2022.csproj", "{ED7F75AB-9C37-425B-96F1-4F7E6E9B5C0B}"
EndProject
Global
+ GlobalSection(SharedMSBuildProjectFiles) = preSolution
+ src\CaseConverterShared\CaseConverterShared.projitems*{7a754992-ea1c-4717-a4bb-22104f6b998d}*SharedItemsImports = 13
+ src\CaseConverterShared\CaseConverterShared.projitems*{d0e1092f-ab1d-4870-8b89-44e6636f3d17}*SharedItemsImports = 4
+ src\CaseConverterShared\CaseConverterShared.projitems*{ed7f75ab-9c37-425b-96f1-4f7e6e9b5c0b}*SharedItemsImports = 4
+ EndGlobalSection
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
+ Debug|x86 = Debug|x86
Release|Any CPU = Release|Any CPU
+ Release|x86 = Release|x86
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{664E8280-457A-4177-87E9-96B0DCE7BEC1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{664E8280-457A-4177-87E9-96B0DCE7BEC1}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {664E8280-457A-4177-87E9-96B0DCE7BEC1}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {664E8280-457A-4177-87E9-96B0DCE7BEC1}.Debug|x86.Build.0 = Debug|Any CPU
{664E8280-457A-4177-87E9-96B0DCE7BEC1}.Release|Any CPU.ActiveCfg = Release|Any CPU
{664E8280-457A-4177-87E9-96B0DCE7BEC1}.Release|Any CPU.Build.0 = Release|Any CPU
+ {664E8280-457A-4177-87E9-96B0DCE7BEC1}.Release|x86.ActiveCfg = Release|Any CPU
+ {664E8280-457A-4177-87E9-96B0DCE7BEC1}.Release|x86.Build.0 = Release|Any CPU
{D0E1092F-AB1D-4870-8B89-44E6636F3D17}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{D0E1092F-AB1D-4870-8B89-44E6636F3D17}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {D0E1092F-AB1D-4870-8B89-44E6636F3D17}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {D0E1092F-AB1D-4870-8B89-44E6636F3D17}.Debug|x86.Build.0 = Debug|Any CPU
{D0E1092F-AB1D-4870-8B89-44E6636F3D17}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {D0E1092F-AB1D-4870-8B89-44E6636F3D17}.Release|x86.ActiveCfg = Release|Any CPU
+ {D0E1092F-AB1D-4870-8B89-44E6636F3D17}.Release|x86.Build.0 = Release|Any CPU
+ {ED7F75AB-9C37-425B-96F1-4F7E6E9B5C0B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {ED7F75AB-9C37-425B-96F1-4F7E6E9B5C0B}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {ED7F75AB-9C37-425B-96F1-4F7E6E9B5C0B}.Debug|x86.ActiveCfg = Debug|x86
+ {ED7F75AB-9C37-425B-96F1-4F7E6E9B5C0B}.Debug|x86.Build.0 = Debug|x86
+ {ED7F75AB-9C37-425B-96F1-4F7E6E9B5C0B}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {ED7F75AB-9C37-425B-96F1-4F7E6E9B5C0B}.Release|Any CPU.Build.0 = Release|Any CPU
+ {ED7F75AB-9C37-425B-96F1-4F7E6E9B5C0B}.Release|x86.ActiveCfg = Release|x86
+ {ED7F75AB-9C37-425B-96F1-4F7E6E9B5C0B}.Release|x86.Build.0 = Release|x86
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
+ GlobalSection(NestedProjects) = preSolution
+ {664E8280-457A-4177-87E9-96B0DCE7BEC1} = {D79CEF5B-8E89-42F2-8850-A3FD6D4DC135}
+ {D0E1092F-AB1D-4870-8B89-44E6636F3D17} = {FCA77A9D-0BAB-4C3D-935D-4590F5DA201A}
+ {7A754992-EA1C-4717-A4BB-22104F6B998D} = {D79CEF5B-8E89-42F2-8850-A3FD6D4DC135}
+ {ED7F75AB-9C37-425B-96F1-4F7E6E9B5C0B} = {D79CEF5B-8E89-42F2-8850-A3FD6D4DC135}
+ EndGlobalSection
+ GlobalSection(ExtensibilityGlobals) = postSolution
+ SolutionGuid = {19ED542F-C460-49CE-853B-A640F84FF461}
+ EndGlobalSection
EndGlobal
diff --git a/CaseConverter/CaseConverter.csproj b/CaseConverter/CaseConverter.csproj
deleted file mode 100644
index d13b53f..0000000
--- a/CaseConverter/CaseConverter.csproj
+++ /dev/null
@@ -1,222 +0,0 @@
-
-
-
-
- 15.0
- $(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)
-
-
- true
-
-
- true
-
-
- Key.snk
-
-
-
- Debug
- AnyCPU
- 2.0
- {82b43b9b-a64c-4715-b499-d71e9ca2bd60};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}
- {664E8280-457A-4177-87E9-96B0DCE7BEC1}
- Library
- Properties
- CaseConverter
- CaseConverter
- v4.5.2
- true
- true
- false
- true
- true
- false
-
-
- true
- full
- false
- bin\Debug\
- DEBUG;TRACE
- prompt
- 4
- bin\Debug\CaseConverter.XML
-
-
- pdbonly
- true
- bin\Release\
- TRACE
- prompt
- 4
- False
-
-
-
-
-
-
-
-
-
-
-
- Component
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Designer
-
-
-
-
- Always
- true
-
-
- Menus.ctmenu
-
-
- Always
- true
-
-
- Always
- true
-
-
-
-
-
- False
- ..\packages\VSSDK.DTE.7.0.4\lib\net20\envdte.dll
- True
-
-
- False
-
-
- False
-
-
- False
-
-
-
- False
-
-
- ..\packages\VSSDK.GraphModel.11.0.4\lib\net45\Microsoft.VisualStudio.GraphModel.dll
- False
-
-
- ..\packages\VSSDK.OLE.Interop.7.0.4\lib\net20\Microsoft.VisualStudio.OLE.Interop.dll
- True
- False
-
-
- ..\packages\VSSDK.Shell.11.11.0.4\lib\net45\Microsoft.VisualStudio.Shell.11.0.dll
- False
-
-
- ..\packages\VSSDK.Shell.Immutable.10.10.0.4\lib\net40\Microsoft.VisualStudio.Shell.Immutable.10.0.dll
- True
- False
-
-
- ..\packages\VSSDK.Shell.Immutable.11.11.0.4\lib\net45\Microsoft.VisualStudio.Shell.Immutable.11.0.dll
- True
- False
-
-
- ..\packages\VSSDK.Shell.Interop.7.0.4\lib\net20\Microsoft.VisualStudio.Shell.Interop.dll
- True
- False
-
-
- False
- ..\packages\VSSDK.Shell.Interop.10.10.0.4\lib\net20\Microsoft.VisualStudio.Shell.Interop.10.0.dll
- True
-
-
- False
- ..\packages\VSSDK.Shell.Interop.11.11.0.4\lib\net20\Microsoft.VisualStudio.Shell.Interop.11.0.dll
- True
-
-
- ..\packages\VSSDK.Shell.Interop.8.8.0.4\lib\net20\Microsoft.VisualStudio.Shell.Interop.8.0.dll
- True
- False
-
-
- ..\packages\VSSDK.Shell.Interop.9.9.0.4\lib\net20\Microsoft.VisualStudio.Shell.Interop.9.0.dll
- True
- False
-
-
- ..\packages\VSSDK.TextManager.Interop.7.0.4\lib\net20\Microsoft.VisualStudio.TextManager.Interop.dll
- True
- False
-
-
- ..\packages\VSSDK.TextManager.Interop.8.8.0.4\lib\net20\Microsoft.VisualStudio.TextManager.Interop.8.0.dll
- True
- False
-
-
-
-
- False
- ..\packages\VSSDK.DTE.7.0.4\lib\net20\stdole.dll
- True
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- true
- VSPackage
-
-
-
-
-
-
-
- This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/Test.CaseConverter/Test.CaseConverter.csproj b/Test.CaseConverter/Test.CaseConverter.csproj
deleted file mode 100644
index 29bc14d..0000000
--- a/Test.CaseConverter/Test.CaseConverter.csproj
+++ /dev/null
@@ -1,108 +0,0 @@
-
-
-
- Debug
- AnyCPU
- {D0E1092F-AB1D-4870-8B89-44E6636F3D17}
- Library
- Properties
- Test.CaseConverter
- Test.CaseConverter
- v4.5.2
- 512
- {3AC096D0-A1C2-E12C-1390-A8335801FDAB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}
- 10.0
- $(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)
- $(ProgramFiles)\Common Files\microsoft shared\VSTT\$(VisualStudioVersion)\UITestExtensionPackages
- False
- UnitTest
-
-
- true
- full
- false
- bin\Debug\
- DEBUG;TRACE
- prompt
- 4
-
-
- pdbonly
- true
- bin\Release\
- TRACE
- prompt
- 4
-
-
- true
-
-
- Key.snk
-
-
-
-
-
-
-
-
-
-
-
-
-
- False
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- {664e8280-457a-4177-87e9-96b0dce7bec1}
- CaseConverter
-
-
-
-
-
-
-
-
-
- False
-
-
- False
-
-
- False
-
-
- False
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/src/CaseConverter/CaseConverter.csproj b/src/CaseConverter/CaseConverter.csproj
new file mode 100644
index 0000000..b24f2e2
--- /dev/null
+++ b/src/CaseConverter/CaseConverter.csproj
@@ -0,0 +1,145 @@
+
+
+
+ 15.0
+ $(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)
+
+
+ true
+ {664E8280-457A-4177-87E9-96B0DCE7BEC1}
+
+
+ true
+
+
+ Key.snk
+
+
+
+ Debug
+ AnyCPU
+ 2.0
+ Library
+ Properties
+ CaseConverter
+ CaseConverter
+ v4.5.2
+ true
+ true
+ false
+ true
+ true
+ false
+
+
+ true
+ full
+ false
+ bin\Debug\
+ DEBUG;TRACE
+ prompt
+ 4
+ bin\Debug\CaseConverter.XML
+ AnyCPU
+
+
+ pdbonly
+ true
+ bin\Release\
+ TRACE
+ prompt
+ 4
+ False
+
+
+
+
+
+
+
+ Designer
+
+
+
+
+ Always
+ true
+
+
+ Menus.ctmenu
+
+
+ Always
+ true
+
+
+ Always
+ true
+
+
+
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+
+ False
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+ VSPackage
+
+
+
+
+ 10.0.30319
+
+
+ 11.0.50727
+
+
+ 11.0.61030
+
+
+ 9.0.30729
+
+
+ 15.0.26201
+ runtime; build; native; contentfiles; analyzers; buildtransitive
+ all
+
+
+ 11.0.4
+
+
+
+
+
+
\ No newline at end of file
diff --git a/CaseConverter/CaseConverterPackage.vsct b/src/CaseConverter/CaseConverterPackage.vsct
similarity index 100%
rename from CaseConverter/CaseConverterPackage.vsct
rename to src/CaseConverter/CaseConverterPackage.vsct
diff --git a/CaseConverter/Key.snk b/src/CaseConverter/Key.snk
similarity index 100%
rename from CaseConverter/Key.snk
rename to src/CaseConverter/Key.snk
diff --git a/CaseConverter/LICENSE.txt b/src/CaseConverter/LICENSE.txt
similarity index 100%
rename from CaseConverter/LICENSE.txt
rename to src/CaseConverter/LICENSE.txt
diff --git a/CaseConverter/Properties/AssemblyInfo.cs b/src/CaseConverter/Properties/AssemblyInfo.cs
similarity index 100%
rename from CaseConverter/Properties/AssemblyInfo.cs
rename to src/CaseConverter/Properties/AssemblyInfo.cs
diff --git a/CaseConverter/Resources/ConvertCaseCommand.png b/src/CaseConverter/Resources/ConvertCaseCommand.png
similarity index 100%
rename from CaseConverter/Resources/ConvertCaseCommand.png
rename to src/CaseConverter/Resources/ConvertCaseCommand.png
diff --git a/CaseConverter/Resources/Package.ico b/src/CaseConverter/Resources/Package.ico
similarity index 100%
rename from CaseConverter/Resources/Package.ico
rename to src/CaseConverter/Resources/Package.ico
diff --git a/CaseConverter/Resources/Preview.png b/src/CaseConverter/Resources/Preview.png
similarity index 100%
rename from CaseConverter/Resources/Preview.png
rename to src/CaseConverter/Resources/Preview.png
diff --git a/CaseConverter/VSPackage.resx b/src/CaseConverter/VSPackage.resx
similarity index 100%
rename from CaseConverter/VSPackage.resx
rename to src/CaseConverter/VSPackage.resx
diff --git a/CaseConverter/source.extension.vsixmanifest b/src/CaseConverter/source.extension.vsixmanifest
similarity index 100%
rename from CaseConverter/source.extension.vsixmanifest
rename to src/CaseConverter/source.extension.vsixmanifest
diff --git a/src/CaseConverter2022/CaseConverter2022.csproj b/src/CaseConverter2022/CaseConverter2022.csproj
new file mode 100644
index 0000000..81949b9
--- /dev/null
+++ b/src/CaseConverter2022/CaseConverter2022.csproj
@@ -0,0 +1,102 @@
+
+
+
+ 17.0
+ $(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)
+
+
+
+ Debug
+ AnyCPU
+ 2.0
+ {82b43b9b-a64c-4715-b499-d71e9ca2bd60};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}
+ {ED7F75AB-9C37-425B-96F1-4F7E6E9B5C0B}
+ Library
+ Properties
+ CaseConverter2022
+ CaseConverter2022
+ 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
+
+
+
+
+
+
+ Designer
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Menus.ctmenu
+
+
+
+
+
+
+
+ Always
+
+
+
+ Always
+
+
+ Always
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/CaseConverter2022/CaseConverter2022Package.vsct b/src/CaseConverter2022/CaseConverter2022Package.vsct
new file mode 100644
index 0000000..9485fa9
--- /dev/null
+++ b/src/CaseConverter2022/CaseConverter2022Package.vsct
@@ -0,0 +1,96 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/CaseConverter2022/LICENSE.txt b/src/CaseConverter2022/LICENSE.txt
new file mode 100644
index 0000000..244652b
--- /dev/null
+++ b/src/CaseConverter2022/LICENSE.txt
@@ -0,0 +1,23 @@
+The MIT License
+
+Copyright (c) 2021 Achehre
+Copyright (c) 2017 munyabe
+
+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/src/CaseConverter2022/Properties/AssemblyInfo.cs b/src/CaseConverter2022/Properties/AssemblyInfo.cs
new file mode 100644
index 0000000..e4901b1
--- /dev/null
+++ b/src/CaseConverter2022/Properties/AssemblyInfo.cs
@@ -0,0 +1,33 @@
+using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// General Information about an assembly is controlled through the following
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle("CaseConverter2022")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("CaseConverter2022")]
+[assembly: AssemblyCopyright("")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// Setting ComVisible to false makes the types in this assembly not visible
+// to COM components. If you need to access a type in this assembly from
+// COM, set the ComVisible attribute to true on that type.
+[assembly: ComVisible(false)]
+
+// Version information for an assembly consists of the following four values:
+//
+// Major Version
+// Minor Version
+// Build Number
+// Revision
+//
+// You can specify all the values or you can default the Build and Revision Numbers
+// by using the '*' as shown below:
+// [assembly: AssemblyVersion("1.0.*")]
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]
diff --git a/src/CaseConverter2022/Resources/ConvertCaseCommand.png b/src/CaseConverter2022/Resources/ConvertCaseCommand.png
new file mode 100644
index 0000000..cc0401d
Binary files /dev/null and b/src/CaseConverter2022/Resources/ConvertCaseCommand.png differ
diff --git a/src/CaseConverter2022/Resources/Package.ico b/src/CaseConverter2022/Resources/Package.ico
new file mode 100644
index 0000000..7174a68
Binary files /dev/null and b/src/CaseConverter2022/Resources/Package.ico differ
diff --git a/src/CaseConverter2022/Resources/Preview.png b/src/CaseConverter2022/Resources/Preview.png
new file mode 100644
index 0000000..b2e501c
Binary files /dev/null and b/src/CaseConverter2022/Resources/Preview.png differ
diff --git a/src/CaseConverter2022/VSPackage.resx b/src/CaseConverter2022/VSPackage.resx
new file mode 100644
index 0000000..47467a1
--- /dev/null
+++ b/src/CaseConverter2022/VSPackage.resx
@@ -0,0 +1,130 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ CaseConverter 2022
+
+
+ This is a simple visual studio extension to convert text between snake_case, camelCase and PascalCase.
+
+
+
+ Resources\Package.ico;System.Drawing.Icon, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
\ No newline at end of file
diff --git a/src/CaseConverter2022/source.extension.vsixmanifest b/src/CaseConverter2022/source.extension.vsixmanifest
new file mode 100644
index 0000000..7b4bd92
--- /dev/null
+++ b/src/CaseConverter2022/source.extension.vsixmanifest
@@ -0,0 +1,22 @@
+
+
+
+
+ CaseConverter2022
+ Empty VSIX Project.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/CaseConverter/CaseConverterPackage.cs b/src/CaseConverterShared/CaseConverterPackage.cs
similarity index 100%
rename from CaseConverter/CaseConverterPackage.cs
rename to src/CaseConverterShared/CaseConverterPackage.cs
diff --git a/src/CaseConverterShared/CaseConverterShared.projitems b/src/CaseConverterShared/CaseConverterShared.projitems
new file mode 100644
index 0000000..8a6c05a
--- /dev/null
+++ b/src/CaseConverterShared/CaseConverterShared.projitems
@@ -0,0 +1,33 @@
+
+
+
+ $(MSBuildAllProjects);$(MSBuildThisFileFullPath)
+ true
+ 7a754992-ea1c-4717-a4bb-22104f6b998d
+
+
+ CaseConverterShared
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Component
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/CaseConverterShared/CaseConverterShared.shproj b/src/CaseConverterShared/CaseConverterShared.shproj
new file mode 100644
index 0000000..38bc783
--- /dev/null
+++ b/src/CaseConverterShared/CaseConverterShared.shproj
@@ -0,0 +1,13 @@
+
+
+
+ 7a754992-ea1c-4717-a4bb-22104f6b998d
+ 14.0
+
+
+
+
+
+
+
+
diff --git a/CaseConverter/CommandBase.cs b/src/CaseConverterShared/CommandBase.cs
similarity index 100%
rename from CaseConverter/CommandBase.cs
rename to src/CaseConverterShared/CommandBase.cs
diff --git a/CaseConverter/ConvertCaseCommand.cs b/src/CaseConverterShared/ConvertCaseCommand.cs
similarity index 100%
rename from CaseConverter/ConvertCaseCommand.cs
rename to src/CaseConverterShared/ConvertCaseCommand.cs
diff --git a/CaseConverter/Converters/CamelCaseConverter.cs b/src/CaseConverterShared/Converters/CamelCaseConverter.cs
similarity index 100%
rename from CaseConverter/Converters/CamelCaseConverter.cs
rename to src/CaseConverterShared/Converters/CamelCaseConverter.cs
diff --git a/CaseConverter/Converters/ICaseConverter.cs b/src/CaseConverterShared/Converters/ICaseConverter.cs
similarity index 100%
rename from CaseConverter/Converters/ICaseConverter.cs
rename to src/CaseConverterShared/Converters/ICaseConverter.cs
diff --git a/CaseConverter/Converters/KebabCaseConverter.cs b/src/CaseConverterShared/Converters/KebabCaseConverter.cs
similarity index 100%
rename from CaseConverter/Converters/KebabCaseConverter.cs
rename to src/CaseConverterShared/Converters/KebabCaseConverter.cs
diff --git a/CaseConverter/Converters/PascalCaseConverter.cs b/src/CaseConverterShared/Converters/PascalCaseConverter.cs
similarity index 100%
rename from CaseConverter/Converters/PascalCaseConverter.cs
rename to src/CaseConverterShared/Converters/PascalCaseConverter.cs
diff --git a/CaseConverter/Converters/PascalSnakeCaseConverter.cs b/src/CaseConverterShared/Converters/PascalSnakeCaseConverter.cs
similarity index 100%
rename from CaseConverter/Converters/PascalSnakeCaseConverter.cs
rename to src/CaseConverterShared/Converters/PascalSnakeCaseConverter.cs
diff --git a/CaseConverter/Converters/ScreamingSnakeCaseConverter.cs b/src/CaseConverterShared/Converters/ScreamingSnakeCaseConverter.cs
similarity index 100%
rename from CaseConverter/Converters/ScreamingSnakeCaseConverter.cs
rename to src/CaseConverterShared/Converters/ScreamingSnakeCaseConverter.cs
diff --git a/CaseConverter/Converters/SnakeCaseConverter.cs b/src/CaseConverterShared/Converters/SnakeCaseConverter.cs
similarity index 100%
rename from CaseConverter/Converters/SnakeCaseConverter.cs
rename to src/CaseConverterShared/Converters/SnakeCaseConverter.cs
diff --git a/CaseConverter/Converters/StringCaseConverter.cs b/src/CaseConverterShared/Converters/StringCaseConverter.cs
similarity index 100%
rename from CaseConverter/Converters/StringCaseConverter.cs
rename to src/CaseConverterShared/Converters/StringCaseConverter.cs
diff --git a/CaseConverter/Converters/StringCasePattern.cs b/src/CaseConverterShared/Converters/StringCasePattern.cs
similarity index 100%
rename from CaseConverter/Converters/StringCasePattern.cs
rename to src/CaseConverterShared/Converters/StringCasePattern.cs
diff --git a/CaseConverter/Options/GeneralOption.cs b/src/CaseConverterShared/Options/GeneralOption.cs
similarity index 100%
rename from CaseConverter/Options/GeneralOption.cs
rename to src/CaseConverterShared/Options/GeneralOption.cs
diff --git a/CaseConverter/Options/GeneralOptionPage.cs b/src/CaseConverterShared/Options/GeneralOptionPage.cs
similarity index 100%
rename from CaseConverter/Options/GeneralOptionPage.cs
rename to src/CaseConverterShared/Options/GeneralOptionPage.cs
diff --git a/CaseConverter/Options/PatternOption.cs b/src/CaseConverterShared/Options/PatternOption.cs
similarity index 100%
rename from CaseConverter/Options/PatternOption.cs
rename to src/CaseConverterShared/Options/PatternOption.cs
diff --git a/CaseConverter/Options/PatternOptionsConverter.cs b/src/CaseConverterShared/Options/PatternOptionsConverter.cs
similarity index 100%
rename from CaseConverter/Options/PatternOptionsConverter.cs
rename to src/CaseConverterShared/Options/PatternOptionsConverter.cs
diff --git a/CaseConverter/Options/StringCasePatternConverter.cs b/src/CaseConverterShared/Options/StringCasePatternConverter.cs
similarity index 100%
rename from CaseConverter/Options/StringCasePatternConverter.cs
rename to src/CaseConverterShared/Options/StringCasePatternConverter.cs
diff --git a/CaseConverter/Utils/StringUtil.cs b/src/CaseConverterShared/Utils/StringUtil.cs
similarity index 100%
rename from CaseConverter/Utils/StringUtil.cs
rename to src/CaseConverterShared/Utils/StringUtil.cs
diff --git a/Test.CaseConverter/Converters/CamelCaseConverterTest.cs b/tests/Test.CaseConverter/Converters/CamelCaseConverterTest.cs
similarity index 100%
rename from Test.CaseConverter/Converters/CamelCaseConverterTest.cs
rename to tests/Test.CaseConverter/Converters/CamelCaseConverterTest.cs
diff --git a/Test.CaseConverter/Converters/CaseConverterTestBase.cs b/tests/Test.CaseConverter/Converters/CaseConverterTestBase.cs
similarity index 100%
rename from Test.CaseConverter/Converters/CaseConverterTestBase.cs
rename to tests/Test.CaseConverter/Converters/CaseConverterTestBase.cs
diff --git a/Test.CaseConverter/Converters/KebabCaseConverterTest.cs b/tests/Test.CaseConverter/Converters/KebabCaseConverterTest.cs
similarity index 100%
rename from Test.CaseConverter/Converters/KebabCaseConverterTest.cs
rename to tests/Test.CaseConverter/Converters/KebabCaseConverterTest.cs
diff --git a/Test.CaseConverter/Converters/PascalCaseConverterTest.cs b/tests/Test.CaseConverter/Converters/PascalCaseConverterTest.cs
similarity index 100%
rename from Test.CaseConverter/Converters/PascalCaseConverterTest.cs
rename to tests/Test.CaseConverter/Converters/PascalCaseConverterTest.cs
diff --git a/Test.CaseConverter/Converters/PascalSnakeCaseConverterTest.cs b/tests/Test.CaseConverter/Converters/PascalSnakeCaseConverterTest.cs
similarity index 100%
rename from Test.CaseConverter/Converters/PascalSnakeCaseConverterTest.cs
rename to tests/Test.CaseConverter/Converters/PascalSnakeCaseConverterTest.cs
diff --git a/Test.CaseConverter/Converters/ScreamingSnakeCaseConverterTest.cs b/tests/Test.CaseConverter/Converters/ScreamingSnakeCaseConverterTest.cs
similarity index 100%
rename from Test.CaseConverter/Converters/ScreamingSnakeCaseConverterTest.cs
rename to tests/Test.CaseConverter/Converters/ScreamingSnakeCaseConverterTest.cs
diff --git a/Test.CaseConverter/Converters/SnakeCaseConverterTest.cs b/tests/Test.CaseConverter/Converters/SnakeCaseConverterTest.cs
similarity index 100%
rename from Test.CaseConverter/Converters/SnakeCaseConverterTest.cs
rename to tests/Test.CaseConverter/Converters/SnakeCaseConverterTest.cs
diff --git a/Test.CaseConverter/Converters/StringCaseConverterTest.cs b/tests/Test.CaseConverter/Converters/StringCaseConverterTest.cs
similarity index 100%
rename from Test.CaseConverter/Converters/StringCaseConverterTest.cs
rename to tests/Test.CaseConverter/Converters/StringCaseConverterTest.cs
diff --git a/Test.CaseConverter/Key.snk b/tests/Test.CaseConverter/Key.snk
similarity index 100%
rename from Test.CaseConverter/Key.snk
rename to tests/Test.CaseConverter/Key.snk
diff --git a/Test.CaseConverter/Properties/AssemblyInfo.cs b/tests/Test.CaseConverter/Properties/AssemblyInfo.cs
similarity index 100%
rename from Test.CaseConverter/Properties/AssemblyInfo.cs
rename to tests/Test.CaseConverter/Properties/AssemblyInfo.cs
diff --git a/tests/Test.CaseConverter/Test.CaseConverter.csproj b/tests/Test.CaseConverter/Test.CaseConverter.csproj
new file mode 100644
index 0000000..77bba96
--- /dev/null
+++ b/tests/Test.CaseConverter/Test.CaseConverter.csproj
@@ -0,0 +1,186 @@
+
+
+
+
+ Debug
+ AnyCPU
+ {D0E1092F-AB1D-4870-8B89-44E6636F3D17}
+ Library
+ Properties
+ Test.CaseConverter
+ Test.CaseConverter
+ v4.5.2
+ 512
+ {3AC096D0-A1C2-E12C-1390-A8335801FDAB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}
+ 10.0
+ $(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)
+ $(ProgramFiles)\Common Files\microsoft shared\VSTT\$(VisualStudioVersion)\UITestExtensionPackages
+ False
+ UnitTest
+
+
+
+
+ true
+ full
+ false
+ bin\Debug\
+ DEBUG;TRACE
+ prompt
+ 4
+
+
+ pdbonly
+ true
+ bin\Release\
+ TRACE
+ prompt
+ 4
+
+
+ true
+
+
+ Key.snk
+
+
+
+ ..\..\packages\VSSDK.DTE.7.0.4\lib\net20\envdte.dll
+ False
+ False
+
+
+ ..\..\packages\VSSDK.GraphModel.11.0.4\lib\net45\Microsoft.VisualStudio.GraphModel.dll
+ False
+
+
+ ..\..\packages\VSSDK.OLE.Interop.7.0.4\lib\net20\Microsoft.VisualStudio.OLE.Interop.dll
+ False
+
+
+ ..\..\packages\VSSDK.Shell.11.11.0.4\lib\net45\Microsoft.VisualStudio.Shell.11.0.dll
+ False
+
+
+ ..\..\packages\VSSDK.Shell.Immutable.10.10.0.4\lib\net40\Microsoft.VisualStudio.Shell.Immutable.10.0.dll
+ False
+
+
+ ..\..\packages\VSSDK.Shell.Immutable.11.11.0.4\lib\net45\Microsoft.VisualStudio.Shell.Immutable.11.0.dll
+ False
+
+
+ ..\..\packages\VSSDK.Shell.Interop.7.0.4\lib\net20\Microsoft.VisualStudio.Shell.Interop.dll
+ False
+
+
+ ..\..\packages\VSSDK.Shell.Interop.10.10.0.4\lib\net20\Microsoft.VisualStudio.Shell.Interop.10.0.dll
+ False
+ False
+
+
+ ..\..\packages\VSSDK.Shell.Interop.11.11.0.4\lib\net20\Microsoft.VisualStudio.Shell.Interop.11.0.dll
+ False
+ False
+
+
+ ..\..\packages\VSSDK.Shell.Interop.8.8.0.4\lib\net20\Microsoft.VisualStudio.Shell.Interop.8.0.dll
+ False
+
+
+ ..\..\packages\VSSDK.Shell.Interop.9.9.0.4\lib\net20\Microsoft.VisualStudio.Shell.Interop.9.0.dll
+ False
+
+
+ ..\..\packages\VSSDK.TextManager.Interop.7.0.4\lib\net20\Microsoft.VisualStudio.TextManager.Interop.dll
+ False
+
+
+ ..\..\packages\VSSDK.TextManager.Interop.8.8.0.4\lib\net20\Microsoft.VisualStudio.TextManager.Interop.8.0.dll
+ False
+ False
+
+
+
+
+ ..\..\packages\VSSDK.DTE.7.0.4\lib\net20\stdole.dll
+ False
+ False
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ False
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+
+
+
+
+
+
+
+ This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Test.CaseConverter/Utils/StringUtilTest.cs b/tests/Test.CaseConverter/Utils/StringUtilTest.cs
similarity index 100%
rename from Test.CaseConverter/Utils/StringUtilTest.cs
rename to tests/Test.CaseConverter/Utils/StringUtilTest.cs
diff --git a/CaseConverter/packages.config b/tests/Test.CaseConverter/packages.config
similarity index 96%
rename from CaseConverter/packages.config
rename to tests/Test.CaseConverter/packages.config
index 9dc9523..e19f327 100644
--- a/CaseConverter/packages.config
+++ b/tests/Test.CaseConverter/packages.config
@@ -7,7 +7,6 @@
-