From 599462e78541a08f9aa4b61e213ca619dcf84c27 Mon Sep 17 00:00:00 2001
From: Kevin Hahn <hahn.kev@gmail.com>
Date: Fri, 23 Feb 2024 14:35:36 +0700
Subject: [PATCH 01/29] move WeSay.sln into repo root

---
 src/WeSay.sln => WeSay.sln                    |  50 +++----
 .../Addin.Backup.Tests.csproj                 |  56 ++++----
 src/Addin.Backup/Addin.Backup.csproj          |  30 ++--
 .../Addin.Synchronize.csproj                  |   2 +-
 .../Addin.Transform.Tests.csproj              |  70 +++++-----
 src/Addin.Transform/Addin.Transform.csproj    |  68 ++++-----
 .../CommonTools.Tests.csproj                  |   2 +-
 src/CommonTools/CommonTools.csproj            |   6 +-
 src/Language/Language.csproj                  |   2 +-
 .../LexicalModel.Tests.csproj                 |  62 ++++----
 src/LexicalModel/LexicalModel.csproj          |  76 +++++-----
 .../LexicalTools.Tests.csproj                 | 100 ++++++-------
 src/LexicalTools/LexicalTools.csproj          |  54 +++----
 src/Lift2WeSay/SampleDataProcessor.csproj     |  56 ++++----
 .../LiftWordList2Json.csproj                  |  66 ++++-----
 .../TreeViewIList.Tests.csproj                |   2 +-
 .../WeSay.AddinLib.Tests.csproj               |   4 +-
 src/WeSay.AddinLib/WeSay.AddinLib.csproj      |  10 +-
 src/WeSay.App.Tests/WeSay.App.Tests.csproj    |  74 +++++-----
 src/WeSay.App/WeSay.App.csproj                |  56 ++++----
 .../WeSay.ConfigTool.Tests.csproj             |  50 +++----
 src/WeSay.ConfigTool/WeSay.ConfigTool.csproj  | 132 +++++++++---------
 src/WeSay.Data.Tests/WeSay.Data.Tests.csproj  |  42 +++---
 src/WeSay.Data/WeSay.Data.csproj              |   6 +-
 .../WeSay.Foundation.Tests.csproj             |  14 +-
 .../WeSay.Project.Tests.csproj                |  98 ++++++-------
 src/WeSay.Project/WeSay.Project.csproj        |  92 ++++++------
 .../WeSay.TestUtilities.csproj                |  66 ++++-----
 src/WeSay.UI.Tests/WeSay.UI.Tests.csproj      |  20 +--
 src/WeSay.UI/WeSay.UI.csproj                  |  56 ++++----
 30 files changed, 711 insertions(+), 711 deletions(-)
 rename src/WeSay.sln => WeSay.sln (91%)

diff --git a/src/WeSay.sln b/WeSay.sln
similarity index 91%
rename from src/WeSay.sln
rename to WeSay.sln
index c6b28458d..684af9c52 100644
--- a/src/WeSay.sln
+++ b/WeSay.sln
@@ -1,67 +1,67 @@
 
 Microsoft Visual Studio Solution File, Format Version 11.00
 # Visual Studio 2010
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WeSay.ConfigTool", "WeSay.ConfigTool\WeSay.ConfigTool.csproj", "{54C943DB-7725-4F52-BCE4-86C3D3D5A66E}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WeSay.ConfigTool", "src\WeSay.ConfigTool\WeSay.ConfigTool.csproj", "{54C943DB-7725-4F52-BCE4-86C3D3D5A66E}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WeSay.Foundation", "WeSay.Foundation\WeSay.Foundation.csproj", "{F12EB680-0990-4900-B77E-0FBF2E28A815}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WeSay.Foundation", "src\WeSay.Foundation\WeSay.Foundation.csproj", "{F12EB680-0990-4900-B77E-0FBF2E28A815}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Addin.Backup", "Addin.Backup\Addin.Backup.csproj", "{42FB4CC3-F2D1-4509-87DD-6BBD430CD4AB}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Addin.Backup", "src\Addin.Backup\Addin.Backup.csproj", "{42FB4CC3-F2D1-4509-87DD-6BBD430CD4AB}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WeSay.Project", "WeSay.Project\WeSay.Project.csproj", "{5CFD0BB3-5B2A-4911-B220-9C2286151BF0}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WeSay.Project", "src\WeSay.Project\WeSay.Project.csproj", "{5CFD0BB3-5B2A-4911-B220-9C2286151BF0}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WeSay.UI.Tests", "WeSay.UI.Tests\WeSay.UI.Tests.csproj", "{6AED6785-CC6F-4A6A-BDB1-1895C6DA1090}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WeSay.UI.Tests", "src\WeSay.UI.Tests\WeSay.UI.Tests.csproj", "{6AED6785-CC6F-4A6A-BDB1-1895C6DA1090}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LexicalTools", "LexicalTools\LexicalTools.csproj", "{87AF0B02-2983-486D-857F-D1859535C234}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LexicalTools", "src\LexicalTools\LexicalTools.csproj", "{87AF0B02-2983-486D-857F-D1859535C234}"
 	ProjectSection(ProjectDependencies) = postProject
 		{600D0FD4-D189-41A0-9BC5-FC79AD2CF1CD} = {600D0FD4-D189-41A0-9BC5-FC79AD2CF1CD}
 	EndProjectSection
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WeSay.AddinLib", "WeSay.AddinLib\WeSay.AddinLib.csproj", "{E651E83C-94DD-4D6D-ABA2-C9FDA34FBA55}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WeSay.AddinLib", "src\WeSay.AddinLib\WeSay.AddinLib.csproj", "{E651E83C-94DD-4D6D-ABA2-C9FDA34FBA55}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WeSay.UI", "WeSay.UI\WeSay.UI.csproj", "{AC8F284C-7B34-4AC9-A7DE-FAF765456DFF}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WeSay.UI", "src\WeSay.UI\WeSay.UI.csproj", "{AC8F284C-7B34-4AC9-A7DE-FAF765456DFF}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WeSay.Data", "WeSay.Data\WeSay.Data.csproj", "{600D0FD4-D189-41A0-9BC5-FC79AD2CF1CD}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WeSay.Data", "src\WeSay.Data\WeSay.Data.csproj", "{600D0FD4-D189-41A0-9BC5-FC79AD2CF1CD}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WeSay.App", "WeSay.App\WeSay.App.csproj", "{EFB9D66D-AF0F-4E45-A1AC-DB32981711D2}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WeSay.App", "src\WeSay.App\WeSay.App.csproj", "{EFB9D66D-AF0F-4E45-A1AC-DB32981711D2}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Addin.Transform.Tests", "Addin.Transform.Tests\Addin.Transform.Tests.csproj", "{19310CA3-6653-45E0-9EC8-F824629E2AD8}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Addin.Transform.Tests", "src\Addin.Transform.Tests\Addin.Transform.Tests.csproj", "{19310CA3-6653-45E0-9EC8-F824629E2AD8}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LexicalModel", "LexicalModel\LexicalModel.csproj", "{5F61C809-B6C0-4567-9603-B2198E1AD038}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LexicalModel", "src\LexicalModel\LexicalModel.csproj", "{5F61C809-B6C0-4567-9603-B2198E1AD038}"
 	ProjectSection(ProjectDependencies) = postProject
 		{600D0FD4-D189-41A0-9BC5-FC79AD2CF1CD} = {600D0FD4-D189-41A0-9BC5-FC79AD2CF1CD}
 	EndProjectSection
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WeSay.AddinLib.Tests", "WeSay.AddinLib.Tests\WeSay.AddinLib.Tests.csproj", "{74DF4C01-660C-4CF4-9343-9330337BCBEA}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WeSay.AddinLib.Tests", "src\WeSay.AddinLib.Tests\WeSay.AddinLib.Tests.csproj", "{74DF4C01-660C-4CF4-9343-9330337BCBEA}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LexicalModel.Tests", "LexicalModel.Tests\LexicalModel.Tests.csproj", "{123D695C-0D5D-46E5-893F-39EC4E0B01B8}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LexicalModel.Tests", "src\LexicalModel.Tests\LexicalModel.Tests.csproj", "{123D695C-0D5D-46E5-893F-39EC4E0B01B8}"
 	ProjectSection(ProjectDependencies) = postProject
 		{600D0FD4-D189-41A0-9BC5-FC79AD2CF1CD} = {600D0FD4-D189-41A0-9BC5-FC79AD2CF1CD}
 	EndProjectSection
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Addin.Backup.Tests", "Addin.Backup.Tests\Addin.Backup.Tests.csproj", "{EF37C48F-EABC-478B-B7C1-2BDB33968A21}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Addin.Backup.Tests", "src\Addin.Backup.Tests\Addin.Backup.Tests.csproj", "{EF37C48F-EABC-478B-B7C1-2BDB33968A21}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Addin.Transform", "Addin.Transform\Addin.Transform.csproj", "{9D196637-2D50-4604-A310-378083CEA809}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Addin.Transform", "src\Addin.Transform\Addin.Transform.csproj", "{9D196637-2D50-4604-A310-378083CEA809}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WeSay.ConfigTool.Tests", "WeSay.ConfigTool.Tests\WeSay.ConfigTool.Tests.csproj", "{FB7CFBB8-D7D0-4E9D-96CF-7D3D0D947EB5}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WeSay.ConfigTool.Tests", "src\WeSay.ConfigTool.Tests\WeSay.ConfigTool.Tests.csproj", "{FB7CFBB8-D7D0-4E9D-96CF-7D3D0D947EB5}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WeSay.Project.Tests", "WeSay.Project.Tests\WeSay.Project.Tests.csproj", "{F644C902-A952-4797-9E2D-19D6051DD032}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WeSay.Project.Tests", "src\WeSay.Project.Tests\WeSay.Project.Tests.csproj", "{F644C902-A952-4797-9E2D-19D6051DD032}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WeSay.Data.Tests", "WeSay.Data.Tests\WeSay.Data.Tests.csproj", "{8491FEEE-C311-4B64-BB30-A1F1C1802F45}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WeSay.Data.Tests", "src\WeSay.Data.Tests\WeSay.Data.Tests.csproj", "{8491FEEE-C311-4B64-BB30-A1F1C1802F45}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SampleDataProcessor", "Lift2WeSay\SampleDataProcessor.csproj", "{4408C857-0371-42BF-A635-E23C8A99A803}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SampleDataProcessor", "src\Lift2WeSay\SampleDataProcessor.csproj", "{4408C857-0371-42BF-A635-E23C8A99A803}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WeSay.App.Tests", "WeSay.App.Tests\WeSay.App.Tests.csproj", "{7DA57D98-255B-46DE-BF94-D163695A0568}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WeSay.App.Tests", "src\WeSay.App.Tests\WeSay.App.Tests.csproj", "{7DA57D98-255B-46DE-BF94-D163695A0568}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LexicalTools.Tests", "LexicalTools.Tests\LexicalTools.Tests.csproj", "{9936180C-90A7-467C-B761-EC184EFE1F9F}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LexicalTools.Tests", "src\LexicalTools.Tests\LexicalTools.Tests.csproj", "{9936180C-90A7-467C-B761-EC184EFE1F9F}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WeSay.TestUtilities", "WeSay.TestUtilities\WeSay.TestUtilities.csproj", "{FEC3014D-0067-4D59-A838-3B046EC3C352}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WeSay.TestUtilities", "src\WeSay.TestUtilities\WeSay.TestUtilities.csproj", "{FEC3014D-0067-4D59-A838-3B046EC3C352}"
 EndProject
 Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{DEFF1312-21E7-47EA-8EBF-0B3705FDD564}"
 	ProjectSection(SolutionItems) = preProject
-		.nuget\packages.config = .nuget\packages.config
+		src\.nuget\packages.config = src\.nuget\packages.config
 	EndProjectSection
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LiftWordList2Json", "LiftWordList2Json\LiftWordList2Json.csproj", "{4498EAF7-1736-40C3-AD20-6B2CD8D935DB}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LiftWordList2Json", "src\LiftWordList2Json\LiftWordList2Json.csproj", "{4498EAF7-1736-40C3-AD20-6B2CD8D935DB}"
 EndProject
 Global
 	GlobalSection(SolutionConfigurationPlatforms) = preSolution
diff --git a/src/Addin.Backup.Tests/Addin.Backup.Tests.csproj b/src/Addin.Backup.Tests/Addin.Backup.Tests.csproj
index 826d8a86c..7717256e6 100755
--- a/src/Addin.Backup.Tests/Addin.Backup.Tests.csproj
+++ b/src/Addin.Backup.Tests/Addin.Backup.Tests.csproj
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <Import Project="..\packages\NUnit.3.13.1\build\NUnit.props" Condition="Exists('..\packages\NUnit.3.13.1\build\NUnit.props')" />
+  <Import Project="..\..\packages\NUnit.3.13.1\build\NUnit.props" Condition="Exists('..\..\packages\NUnit.3.13.1\build\NUnit.props')" />
   <PropertyGroup>
     <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
@@ -77,83 +77,83 @@
   </PropertyGroup>
   <ItemGroup>
     <Reference Include="Autofac, Version=4.1.1.0, Culture=neutral, PublicKeyToken=17863af14b0044da, processorArchitecture=MSIL">
-      <HintPath>..\packages\Autofac.4.1.1\lib\net45\Autofac.dll</HintPath>
+      <HintPath>..\..\packages\Autofac.4.1.1\lib\net45\Autofac.dll</HintPath>
     </Reference>
     <Reference Include="ICSharpCode.SharpZipLib, Version=0.86.0.518, Culture=neutral, PublicKeyToken=1b03e6acf1164f73, processorArchitecture=MSIL">
-      <HintPath>..\packages\SharpZipLib.0.86.0\lib\20\ICSharpCode.SharpZipLib.dll</HintPath>
+      <HintPath>..\..\packages\SharpZipLib.0.86.0\lib\20\ICSharpCode.SharpZipLib.dll</HintPath>
     </Reference>
     <Reference Include="icu.net, Version=2.7.0.0, Culture=neutral, PublicKeyToken=416fdd914afa6b66, processorArchitecture=MSIL">
-      <HintPath>..\packages\icu.net.2.7.1\lib\net451\icu.net.dll</HintPath>
+      <HintPath>..\..\packages\icu.net.2.7.1\lib\net451\icu.net.dll</HintPath>
     </Reference>
     <Reference Include="Microsoft.Bcl.AsyncInterfaces, Version=5.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
-      <HintPath>..\packages\Microsoft.Bcl.AsyncInterfaces.5.0.0\lib\net461\Microsoft.Bcl.AsyncInterfaces.dll</HintPath>
+      <HintPath>..\..\packages\Microsoft.Bcl.AsyncInterfaces.5.0.0\lib\net461\Microsoft.Bcl.AsyncInterfaces.dll</HintPath>
     </Reference>
     <Reference Include="Microsoft.DotNet.PlatformAbstractions, Version=2.0.4.0, Culture=neutral, PublicKeyToken=adb9793829ddae60, processorArchitecture=MSIL">
-      <HintPath>..\packages\Microsoft.DotNet.PlatformAbstractions.2.0.4\lib\net45\Microsoft.DotNet.PlatformAbstractions.dll</HintPath>
+      <HintPath>..\..\packages\Microsoft.DotNet.PlatformAbstractions.2.0.4\lib\net45\Microsoft.DotNet.PlatformAbstractions.dll</HintPath>
     </Reference>
     <Reference Include="Microsoft.Extensions.DependencyModel, Version=2.0.4.0, Culture=neutral, PublicKeyToken=adb9793829ddae60, processorArchitecture=MSIL">
-      <HintPath>..\packages\Microsoft.Extensions.DependencyModel.2.0.4\lib\net451\Microsoft.Extensions.DependencyModel.dll</HintPath>
+      <HintPath>..\..\packages\Microsoft.Extensions.DependencyModel.2.0.4\lib\net451\Microsoft.Extensions.DependencyModel.dll</HintPath>
     </Reference>
     <Reference Include="Mono.Posix, Version=7.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
-      <HintPath>..\packages\Mono.Posix.7.0.0-alpha2.21278.1\lib\net45\Mono.Posix.dll</HintPath>
+      <HintPath>..\..\packages\Mono.Posix.7.0.0-alpha2.21278.1\lib\net45\Mono.Posix.dll</HintPath>
     </Reference>
     <Reference Include="Mono.Unix, Version=7.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
-      <HintPath>..\packages\Mono.Unix.7.0.0-alpha2.21278.1\lib\net45\Mono.Unix.dll</HintPath>
+      <HintPath>..\..\packages\Mono.Unix.7.0.0-alpha2.21278.1\lib\net45\Mono.Unix.dll</HintPath>
     </Reference>
     <Reference Include="nunit.framework, Version=3.13.1.0, Culture=neutral, PublicKeyToken=2638cd05610744eb, processorArchitecture=MSIL">
-      <HintPath>..\packages\NUnit.3.13.1\lib\net45\nunit.framework.dll</HintPath>
+      <HintPath>..\..\packages\NUnit.3.13.1\lib\net45\nunit.framework.dll</HintPath>
     </Reference>
     <Reference Include="SIL.Core, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
-      <HintPath>..\packages\SIL.Core.9.0.0-beta0154\lib\net461\SIL.Core.dll</HintPath>
+      <HintPath>..\..\packages\SIL.Core.9.0.0-beta0154\lib\net461\SIL.Core.dll</HintPath>
     </Reference>
     <Reference Include="SIL.Core.Desktop, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
       <SpecificVersion>False</SpecificVersion>
-      <HintPath>..\packages\SIL.Core.Desktop.9.0.0-beta0154\lib\net461\SIL.Core.Desktop.dll</HintPath>
+      <HintPath>..\..\packages\SIL.Core.Desktop.9.0.0-beta0154\lib\net461\SIL.Core.Desktop.dll</HintPath>
     </Reference>
     <Reference Include="SIL.TestUtilities, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
-      <HintPath>..\packages\SIL.TestUtilities.9.0.0-beta0154\lib\net461\SIL.TestUtilities.dll</HintPath>
+      <HintPath>..\..\packages\SIL.TestUtilities.9.0.0-beta0154\lib\net461\SIL.TestUtilities.dll</HintPath>
     </Reference>
     <Reference Include="SIL.WritingSystems, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
-      <HintPath>..\packages\SIL.WritingSystems.9.0.0-beta0154\lib\net461\SIL.WritingSystems.dll</HintPath>
+      <HintPath>..\..\packages\SIL.WritingSystems.9.0.0-beta0154\lib\net461\SIL.WritingSystems.dll</HintPath>
     </Reference>
     <Reference Include="Spart, Version=1.0.0.0, Culture=neutral, PublicKeyToken=14d24e064e474331, processorArchitecture=MSIL">
-      <HintPath>..\packages\Spart.1.0.0\lib\net461\Spart.dll</HintPath>
+      <HintPath>..\..\packages\Spart.1.0.0\lib\net461\Spart.dll</HintPath>
     </Reference>
     <Reference Include="System" />
     <Reference Include="System.Buffers, Version=4.0.3.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
-      <HintPath>..\packages\System.Buffers.4.5.1\lib\net461\System.Buffers.dll</HintPath>
+      <HintPath>..\..\packages\System.Buffers.4.5.1\lib\net461\System.Buffers.dll</HintPath>
     </Reference>
     <Reference Include="System.ComponentModel.Composition" />
     <Reference Include="System.Core">
       <RequiredTargetFramework>3.5</RequiredTargetFramework>
     </Reference>
     <Reference Include="System.Diagnostics.DiagnosticSource, Version=4.0.5.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
-      <HintPath>..\packages\System.Diagnostics.DiagnosticSource.4.7.1\lib\net46\System.Diagnostics.DiagnosticSource.dll</HintPath>
+      <HintPath>..\..\packages\System.Diagnostics.DiagnosticSource.4.7.1\lib\net46\System.Diagnostics.DiagnosticSource.dll</HintPath>
     </Reference>
     <Reference Include="System.IO.FileSystem.AccessControl, Version=4.0.5.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
-      <HintPath>..\packages\System.IO.FileSystem.AccessControl.4.7.0\lib\net461\System.IO.FileSystem.AccessControl.dll</HintPath>
+      <HintPath>..\..\packages\System.IO.FileSystem.AccessControl.4.7.0\lib\net461\System.IO.FileSystem.AccessControl.dll</HintPath>
     </Reference>
     <Reference Include="System.Memory, Version=4.0.1.1, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
-      <HintPath>..\packages\System.Memory.4.5.4\lib\net461\System.Memory.dll</HintPath>
+      <HintPath>..\..\packages\System.Memory.4.5.4\lib\net461\System.Memory.dll</HintPath>
     </Reference>
     <Reference Include="System.Numerics" />
     <Reference Include="System.Numerics.Vectors, Version=4.1.4.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
-      <HintPath>..\packages\System.Numerics.Vectors.4.5.0\lib\net46\System.Numerics.Vectors.dll</HintPath>
+      <HintPath>..\..\packages\System.Numerics.Vectors.4.5.0\lib\net46\System.Numerics.Vectors.dll</HintPath>
     </Reference>
     <Reference Include="System.Runtime.CompilerServices.Unsafe, Version=4.0.4.1, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
-      <HintPath>..\packages\System.Runtime.CompilerServices.Unsafe.4.5.3\lib\net461\System.Runtime.CompilerServices.Unsafe.dll</HintPath>
+      <HintPath>..\..\packages\System.Runtime.CompilerServices.Unsafe.4.5.3\lib\net461\System.Runtime.CompilerServices.Unsafe.dll</HintPath>
     </Reference>
     <Reference Include="System.Security.AccessControl, Version=4.1.3.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
-      <HintPath>..\packages\System.Security.AccessControl.4.7.0\lib\net461\System.Security.AccessControl.dll</HintPath>
+      <HintPath>..\..\packages\System.Security.AccessControl.4.7.0\lib\net461\System.Security.AccessControl.dll</HintPath>
     </Reference>
     <Reference Include="System.Security.Principal.Windows, Version=4.1.3.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
-      <HintPath>..\packages\System.Security.Principal.Windows.4.7.0\lib\net461\System.Security.Principal.Windows.dll</HintPath>
+      <HintPath>..\..\packages\System.Security.Principal.Windows.4.7.0\lib\net461\System.Security.Principal.Windows.dll</HintPath>
     </Reference>
     <Reference Include="System.Threading.Tasks.Extensions, Version=4.2.0.1, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
-      <HintPath>..\packages\System.Threading.Tasks.Extensions.4.5.4\lib\net461\System.Threading.Tasks.Extensions.dll</HintPath>
+      <HintPath>..\..\packages\System.Threading.Tasks.Extensions.4.5.4\lib\net461\System.Threading.Tasks.Extensions.dll</HintPath>
     </Reference>
     <Reference Include="System.ValueTuple, Version=4.0.3.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
-      <HintPath>..\packages\System.ValueTuple.4.5.0\lib\net461\System.ValueTuple.dll</HintPath>
+      <HintPath>..\..\packages\System.ValueTuple.4.5.0\lib\net461\System.ValueTuple.dll</HintPath>
     </Reference>
     <Reference Include="System.Web" />
     <Reference Include="System.Xml.Linq">
@@ -214,10 +214,10 @@
     <PropertyGroup>
       <ErrorText>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}.</ErrorText>
     </PropertyGroup>
-    <Error Condition="!Exists('..\packages\NUnit.3.13.1\build\NUnit.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\NUnit.3.13.1\build\NUnit.props'))" />
-    <Error Condition="!Exists('..\packages\Mono.Unix.7.0.0-alpha2.21278.1\build\Mono.Unix.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Mono.Unix.7.0.0-alpha2.21278.1\build\Mono.Unix.targets'))" />
+    <Error Condition="!Exists('..\..\packages\NUnit.3.13.1\build\NUnit.props')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\NUnit.3.13.1\build\NUnit.props'))" />
+    <Error Condition="!Exists('..\..\packages\Mono.Unix.7.0.0-alpha2.21278.1\build\Mono.Unix.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\Mono.Unix.7.0.0-alpha2.21278.1\build\Mono.Unix.targets'))" />
   </Target>
-  <Import Project="..\packages\Mono.Unix.7.0.0-alpha2.21278.1\build\Mono.Unix.targets" Condition="Exists('..\packages\Mono.Unix.7.0.0-alpha2.21278.1\build\Mono.Unix.targets')" />
+  <Import Project="..\..\packages\Mono.Unix.7.0.0-alpha2.21278.1\build\Mono.Unix.targets" Condition="Exists('..\..\packages\Mono.Unix.7.0.0-alpha2.21278.1\build\Mono.Unix.targets')" />
   <!-- To modify your build process, add your task inside one of the targets below and uncomment it.
 	   Other similar extension points exist, see Microsoft.Common.targets.
   <Target Name="BeforeBuild">
diff --git a/src/Addin.Backup/Addin.Backup.csproj b/src/Addin.Backup/Addin.Backup.csproj
index e879aa3ee..5e5caca47 100755
--- a/src/Addin.Backup/Addin.Backup.csproj
+++ b/src/Addin.Backup/Addin.Backup.csproj
@@ -73,40 +73,40 @@
   </PropertyGroup>
   <ItemGroup>
     <Reference Include="Enchant.Net">
-      <HintPath>..\packages\Enchant.Net.1.4.2\lib\net461\Enchant.Net.dll</HintPath>
+      <HintPath>..\..\packages\Enchant.Net.1.4.2\lib\net461\Enchant.Net.dll</HintPath>
     </Reference>
     <Reference Include="ICSharpCode.SharpZipLib, Version=0.86.0.518 Culture=neutral, PublicKeyToken=1b03e6acf1164f73, processorArchitecture=MSIL">
-      <HintPath>..\packages\SharpZipLib.0.86.0\lib\20\ICSharpCode.SharpZipLib.dll</HintPath>
+      <HintPath>..\..\packages\SharpZipLib.0.86.0\lib\20\ICSharpCode.SharpZipLib.dll</HintPath>
     </Reference>
     <Reference Include="JetBrains.Annotations, Version=2021.2.0.0, Culture=neutral, PublicKeyToken=1010a0d8d6380325, processorArchitecture=MSIL">
-      <HintPath>..\packages\JetBrains.Annotations.2021.2.0\lib\net20\JetBrains.Annotations.dll</HintPath>
+      <HintPath>..\..\packages\JetBrains.Annotations.2021.2.0\lib\net20\JetBrains.Annotations.dll</HintPath>
     </Reference>
     <Reference Include="L10NSharp, Version=5.0.0.0, Culture=neutral, PublicKeyToken=fd0b3e309a5b7c28, processorArchitecture=MSIL">
-      <HintPath>..\packages\L10NSharp.5.0.0-beta0086\lib\net461\L10NSharp.dll</HintPath>
+      <HintPath>..\..\packages\L10NSharp.5.0.0-beta0086\lib\net461\L10NSharp.dll</HintPath>
     </Reference>
     <Reference Include="LibChorus, Version=5.0.0.0, Culture=neutral, PublicKeyToken=f1447bae1e63f485, processorArchitecture=MSIL">
-      <HintPath>..\packages\SIL.Chorus.LibChorus.5.0.0-beta0017\lib\net461\LibChorus.dll</HintPath>
+      <HintPath>..\..\packages\SIL.Chorus.LibChorus.5.0.0-beta0017\lib\net461\LibChorus.dll</HintPath>
     </Reference>
     <Reference Include="Mono.Addins, Version=1.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756, processorArchitecture=MSIL">
-      <HintPath>..\packages\Mono.Addins.1.3.8\lib\net45\Mono.Addins.dll</HintPath>
+      <HintPath>..\..\packages\Mono.Addins.1.3.8\lib\net45\Mono.Addins.dll</HintPath>
     </Reference>
     <None Include="..\..\lib\common\Enchant.Net.dll.config">
       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
     </None>
     <Reference Include="SIL.Core, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
-      <HintPath>..\packages\SIL.Core.9.0.0-beta0154\lib\net461\SIL.Core.dll</HintPath>
+      <HintPath>..\..\packages\SIL.Core.9.0.0-beta0154\lib\net461\SIL.Core.dll</HintPath>
     </Reference>
     <Reference Include="SIL.Core.Desktop, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
-      <HintPath>..\packages\SIL.Core.Desktop.9.0.0-beta0154\lib\net461\SIL.Core.Desktop.dll</HintPath>
+      <HintPath>..\..\packages\SIL.Core.Desktop.9.0.0-beta0154\lib\net461\SIL.Core.Desktop.dll</HintPath>
     </Reference>
     <Reference Include="SIL.Lift, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
-      <HintPath>..\packages\SIL.Lift.9.0.0-beta0154\lib\net461\SIL.Lift.dll</HintPath>
+      <HintPath>..\..\packages\SIL.Lift.9.0.0-beta0154\lib\net461\SIL.Lift.dll</HintPath>
     </Reference>
     <Reference Include="SIL.Windows.Forms, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
-      <HintPath>..\packages\SIL.Windows.Forms.9.0.0-beta0154\lib\net461\SIL.Windows.Forms.dll</HintPath>
+      <HintPath>..\..\packages\SIL.Windows.Forms.9.0.0-beta0154\lib\net461\SIL.Windows.Forms.dll</HintPath>
     </Reference>
     <Reference Include="SIL.WritingSystems, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
-      <HintPath>..\packages\SIL.WritingSystems.9.0.0-beta0154\lib\net461\SIL.WritingSystems.dll</HintPath>
+      <HintPath>..\..\packages\SIL.WritingSystems.9.0.0-beta0154\lib\net461\SIL.WritingSystems.dll</HintPath>
     </Reference>
     <Reference Include="System" />
     <Reference Include="System.ComponentModel.Composition" />
@@ -196,15 +196,15 @@
     <None Include="Resources\greenUsbKey.png" />
   </ItemGroup>
   <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
-  <Import Project="..\packages\SIL.Chorus.Mercurial.3.0.3\build\SIL.Chorus.Mercurial.targets" Condition="Exists('..\packages\SIL.Chorus.Mercurial.3.0.3\build\SIL.Chorus.Mercurial.targets')" />
+  <Import Project="..\..\packages\SIL.Chorus.Mercurial.3.0.3\build\SIL.Chorus.Mercurial.targets" Condition="Exists('..\..\packages\SIL.Chorus.Mercurial.3.0.3\build\SIL.Chorus.Mercurial.targets')" />
   <Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
     <PropertyGroup>
       <ErrorText>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}.</ErrorText>
     </PropertyGroup>
-    <Error Condition="!Exists('..\packages\SIL.Chorus.Mercurial.3.0.3\build\SIL.Chorus.Mercurial.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\SIL.Chorus.Mercurial.3.0.3\build\SIL.Chorus.Mercurial.targets'))" />
-    <Error Condition="!Exists('..\packages\SIL.Windows.Forms.9.0.0-beta0154\build\SIL.Windows.Forms.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\SIL.Windows.Forms.9.0.0-beta0154\build\SIL.Windows.Forms.targets'))" />
+    <Error Condition="!Exists('..\..\packages\SIL.Chorus.Mercurial.3.0.3\build\SIL.Chorus.Mercurial.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\SIL.Chorus.Mercurial.3.0.3\build\SIL.Chorus.Mercurial.targets'))" />
+    <Error Condition="!Exists('..\..\packages\SIL.Windows.Forms.9.0.0-beta0154\build\SIL.Windows.Forms.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\SIL.Windows.Forms.9.0.0-beta0154\build\SIL.Windows.Forms.targets'))" />
   </Target>
-  <Import Project="..\packages\SIL.Windows.Forms.9.0.0-beta0154\build\SIL.Windows.Forms.targets" Condition="Exists('..\packages\SIL.Windows.Forms.9.0.0-beta0154\build\SIL.Windows.Forms.targets')" />
+  <Import Project="..\..\packages\SIL.Windows.Forms.9.0.0-beta0154\build\SIL.Windows.Forms.targets" Condition="Exists('..\..\packages\SIL.Windows.Forms.9.0.0-beta0154\build\SIL.Windows.Forms.targets')" />
   <!-- To modify your build process, add your task inside one of the targets below and uncomment it.
 	   Other similar extension points exist, see Microsoft.Common.targets.
   <Target Name="BeforeBuild">
diff --git a/src/Addin.Synchronize/Addin.Synchronize.csproj b/src/Addin.Synchronize/Addin.Synchronize.csproj
index 2eda84d64..ca8ff286f 100644
--- a/src/Addin.Synchronize/Addin.Synchronize.csproj
+++ b/src/Addin.Synchronize/Addin.Synchronize.csproj
@@ -29,7 +29,7 @@
   </PropertyGroup>
   <ItemGroup>
 	<Reference Include="Mono.Addins, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
-	  <HintPath>..\packages\Mono.Addins.1.2\lib\net40\Mono.Addins.dll</HintPath>
+	  <HintPath>..\..\packages\Mono.Addins.1.2\lib\net40\Mono.Addins.dll</HintPath>
 	</Reference>
 	<Reference Include="System" />
 	<Reference Include="System.Data" />
diff --git a/src/Addin.Transform.Tests/Addin.Transform.Tests.csproj b/src/Addin.Transform.Tests/Addin.Transform.Tests.csproj
index d26a46fbb..437ea755b 100644
--- a/src/Addin.Transform.Tests/Addin.Transform.Tests.csproj
+++ b/src/Addin.Transform.Tests/Addin.Transform.Tests.csproj
@@ -76,72 +76,72 @@
   </PropertyGroup>
   <ItemGroup>
     <Reference Include="Autofac, Version=4.1.1.0, Culture=neutral, PublicKeyToken=17863af14b0044da, processorArchitecture=MSIL">
-      <HintPath>..\packages\Autofac.4.1.1\lib\net45\Autofac.dll</HintPath>
+      <HintPath>..\..\packages\Autofac.4.1.1\lib\net45\Autofac.dll</HintPath>
     </Reference>
     <Reference Include="Commons.Xml.Relaxng, Version=4.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756, processorArchitecture=MSIL">
-      <HintPath>..\packages\RelaxNG.3.2.3\lib\net40\Commons.Xml.Relaxng.dll</HintPath>
+      <HintPath>..\..\packages\RelaxNG.3.2.3\lib\net40\Commons.Xml.Relaxng.dll</HintPath>
     </Reference>
     <Reference Include="DialogAdapters, Version=0.1.9.0, Culture=neutral, PublicKeyToken=7dc842182b0626dc, processorArchitecture=MSIL">
-      <HintPath>..\packages\DialogAdapters.Gtk2.0.1.9\lib\net461\DialogAdapters.dll</HintPath>
+      <HintPath>..\..\packages\DialogAdapters.Gtk2.0.1.9\lib\net461\DialogAdapters.dll</HintPath>
     </Reference>
     <Reference Include="Enchant.Net, Version=1.4.0.0, Culture=neutral, PublicKeyToken=ae135aeb3d479ab9, processorArchitecture=MSIL">
-      <HintPath>..\packages\Enchant.Net.1.4.2\lib\net461\Enchant.Net.dll</HintPath>
+      <HintPath>..\..\packages\Enchant.Net.1.4.2\lib\net461\Enchant.Net.dll</HintPath>
     </Reference>
     <Reference Include="ICSharpCode.SharpZipLib, Version=0.86.0.518, Culture=neutral, PublicKeyToken=1b03e6acf1164f73, processorArchitecture=MSIL">
-      <HintPath>..\packages\SharpZipLib.0.86.0\lib\20\ICSharpCode.SharpZipLib.dll</HintPath>
+      <HintPath>..\..\packages\SharpZipLib.0.86.0\lib\20\ICSharpCode.SharpZipLib.dll</HintPath>
     </Reference>
     <Reference Include="icu.net, Version=2.7.0.0, Culture=neutral, PublicKeyToken=416fdd914afa6b66, processorArchitecture=MSIL">
-      <HintPath>..\packages\icu.net.2.7.1\lib\net451\icu.net.dll</HintPath>
+      <HintPath>..\..\packages\icu.net.2.7.1\lib\net451\icu.net.dll</HintPath>
     </Reference>
     <Reference Include="JetBrains.Annotations, Version=2021.2.0.0, Culture=neutral, PublicKeyToken=1010a0d8d6380325, processorArchitecture=MSIL">
-      <HintPath>..\packages\JetBrains.Annotations.2021.2.0\lib\net20\JetBrains.Annotations.dll</HintPath>
+      <HintPath>..\..\packages\JetBrains.Annotations.2021.2.0\lib\net20\JetBrains.Annotations.dll</HintPath>
     </Reference>
     <Reference Include="L10NSharp, Version=5.0.0.0, Culture=neutral, PublicKeyToken=fd0b3e309a5b7c28, processorArchitecture=MSIL">
-      <HintPath>..\packages\L10NSharp.5.0.0-beta0086\lib\net461\L10NSharp.dll</HintPath>
+      <HintPath>..\..\packages\L10NSharp.5.0.0-beta0086\lib\net461\L10NSharp.dll</HintPath>
     </Reference>
     <Reference Include="Markdig.Signed, Version=0.22.0.0, Culture=neutral, PublicKeyToken=870da25a133885f8, processorArchitecture=MSIL">
-      <HintPath>..\packages\Markdig.Signed.0.22.0\lib\net452\Markdig.Signed.dll</HintPath>
+      <HintPath>..\..\packages\Markdig.Signed.0.22.0\lib\net452\Markdig.Signed.dll</HintPath>
     </Reference>
     <Reference Include="Microsoft.DotNet.PlatformAbstractions, Version=2.0.4.0, Culture=neutral, PublicKeyToken=adb9793829ddae60, processorArchitecture=MSIL">
-      <HintPath>..\packages\Microsoft.DotNet.PlatformAbstractions.2.0.4\lib\net45\Microsoft.DotNet.PlatformAbstractions.dll</HintPath>
+      <HintPath>..\..\packages\Microsoft.DotNet.PlatformAbstractions.2.0.4\lib\net45\Microsoft.DotNet.PlatformAbstractions.dll</HintPath>
     </Reference>
     <Reference Include="Microsoft.Extensions.DependencyModel, Version=2.0.4.0, Culture=neutral, PublicKeyToken=adb9793829ddae60, processorArchitecture=MSIL">
-      <HintPath>..\packages\Microsoft.Extensions.DependencyModel.2.0.4\lib\net451\Microsoft.Extensions.DependencyModel.dll</HintPath>
+      <HintPath>..\..\packages\Microsoft.Extensions.DependencyModel.2.0.4\lib\net451\Microsoft.Extensions.DependencyModel.dll</HintPath>
     </Reference>
     <Reference Include="NDesk.DBus, Version=1.0.0.0, Culture=neutral, PublicKeyToken=f6716e4f9b2ed099, processorArchitecture=MSIL">
-      <HintPath>..\packages\NDesk.DBus.0.15.0\lib\NDesk.DBus.dll</HintPath>
+      <HintPath>..\..\packages\NDesk.DBus.0.15.0\lib\NDesk.DBus.dll</HintPath>
     </Reference>
     <Reference Include="Newtonsoft.Json, Version=12.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
-      <HintPath>..\packages\Newtonsoft.Json.12.0.3\lib\net45\Newtonsoft.Json.dll</HintPath>
+      <HintPath>..\..\packages\Newtonsoft.Json.12.0.3\lib\net45\Newtonsoft.Json.dll</HintPath>
     </Reference>
     <Reference Include="SIL.Core, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
-      <HintPath>..\packages\SIL.Core.9.0.0-beta0154\lib\net461\SIL.Core.dll</HintPath>
+      <HintPath>..\..\packages\SIL.Core.9.0.0-beta0154\lib\net461\SIL.Core.dll</HintPath>
     </Reference>
     <Reference Include="SIL.Core.Desktop, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
-      <HintPath>..\packages\SIL.Core.Desktop.9.0.0-beta0154\lib\net461\SIL.Core.Desktop.dll</HintPath>
+      <HintPath>..\..\packages\SIL.Core.Desktop.9.0.0-beta0154\lib\net461\SIL.Core.Desktop.dll</HintPath>
     </Reference>
     <Reference Include="SIL.DictionaryServices, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
-      <HintPath>..\packages\SIL.DictionaryServices.9.0.0-beta0154\lib\net461\SIL.DictionaryServices.dll</HintPath>
+      <HintPath>..\..\packages\SIL.DictionaryServices.9.0.0-beta0154\lib\net461\SIL.DictionaryServices.dll</HintPath>
     </Reference>
     <Reference Include="SIL.Lift, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
-      <HintPath>..\packages\SIL.Lift.9.0.0-beta0154\lib\net461\SIL.Lift.dll</HintPath>
+      <HintPath>..\..\packages\SIL.Lift.9.0.0-beta0154\lib\net461\SIL.Lift.dll</HintPath>
     </Reference>
     <Reference Include="SIL.TestUtilities, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
       <SpecificVersion>False</SpecificVersion>
-      <HintPath>..\packages\SIL.TestUtilities.9.0.0-beta0154\lib\net461\SIL.TestUtilities.dll</HintPath>
+      <HintPath>..\..\packages\SIL.TestUtilities.9.0.0-beta0154\lib\net461\SIL.TestUtilities.dll</HintPath>
     </Reference>
     <Reference Include="SIL.Windows.Forms, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
-      <HintPath>..\packages\SIL.Windows.Forms.9.0.0-beta0154\lib\net461\SIL.Windows.Forms.dll</HintPath>
+      <HintPath>..\..\packages\SIL.Windows.Forms.9.0.0-beta0154\lib\net461\SIL.Windows.Forms.dll</HintPath>
     </Reference>
     <Reference Include="SIL.WritingSystems, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
-      <HintPath>..\packages\SIL.WritingSystems.9.0.0-beta0154\lib\net461\SIL.WritingSystems.dll</HintPath>
+      <HintPath>..\..\packages\SIL.WritingSystems.9.0.0-beta0154\lib\net461\SIL.WritingSystems.dll</HintPath>
     </Reference>
     <Reference Include="Spart, Version=1.0.0.0, Culture=neutral, PublicKeyToken=14d24e064e474331, processorArchitecture=MSIL">
-      <HintPath>..\packages\Spart.1.0.0\lib\net461\Spart.dll</HintPath>
+      <HintPath>..\..\packages\Spart.1.0.0\lib\net461\Spart.dll</HintPath>
     </Reference>
     <Reference Include="System" />
     <Reference Include="System.Buffers, Version=4.0.3.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
-      <HintPath>..\packages\System.Buffers.4.5.1\lib\net461\System.Buffers.dll</HintPath>
+      <HintPath>..\..\packages\System.Buffers.4.5.1\lib\net461\System.Buffers.dll</HintPath>
     </Reference>
     <Reference Include="System.Configuration" />
     <Reference Include="System.Core">
@@ -151,38 +151,38 @@
     <Reference Include="System.Deployment" />
     <Reference Include="System.Drawing" />
     <Reference Include="System.IO.FileSystem.AccessControl, Version=4.0.5.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
-      <HintPath>..\packages\System.IO.FileSystem.AccessControl.4.7.0\lib\net461\System.IO.FileSystem.AccessControl.dll</HintPath>
+      <HintPath>..\..\packages\System.IO.FileSystem.AccessControl.4.7.0\lib\net461\System.IO.FileSystem.AccessControl.dll</HintPath>
     </Reference>
     <Reference Include="System.Management" />
     <Reference Include="System.Memory, Version=4.0.1.1, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
-      <HintPath>..\packages\System.Memory.4.5.4\lib\net461\System.Memory.dll</HintPath>
+      <HintPath>..\..\packages\System.Memory.4.5.4\lib\net461\System.Memory.dll</HintPath>
     </Reference>
     <Reference Include="System.Numerics" />
     <Reference Include="System.Numerics.Vectors, Version=4.1.4.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
-      <HintPath>..\packages\System.Numerics.Vectors.4.5.0\lib\net46\System.Numerics.Vectors.dll</HintPath>
+      <HintPath>..\..\packages\System.Numerics.Vectors.4.5.0\lib\net46\System.Numerics.Vectors.dll</HintPath>
     </Reference>
     <Reference Include="System.Runtime.CompilerServices.Unsafe, Version=4.0.4.1, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
-      <HintPath>..\packages\System.Runtime.CompilerServices.Unsafe.4.5.3\lib\net461\System.Runtime.CompilerServices.Unsafe.dll</HintPath>
+      <HintPath>..\..\packages\System.Runtime.CompilerServices.Unsafe.4.5.3\lib\net461\System.Runtime.CompilerServices.Unsafe.dll</HintPath>
     </Reference>
     <Reference Include="System.Security" />
     <Reference Include="System.Security.AccessControl, Version=4.1.3.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
-      <HintPath>..\packages\System.Security.AccessControl.4.7.0\lib\net461\System.Security.AccessControl.dll</HintPath>
+      <HintPath>..\..\packages\System.Security.AccessControl.4.7.0\lib\net461\System.Security.AccessControl.dll</HintPath>
     </Reference>
     <Reference Include="System.Security.Principal.Windows, Version=4.1.3.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
-      <HintPath>..\packages\System.Security.Principal.Windows.4.7.0\lib\net461\System.Security.Principal.Windows.dll</HintPath>
+      <HintPath>..\..\packages\System.Security.Principal.Windows.4.7.0\lib\net461\System.Security.Principal.Windows.dll</HintPath>
     </Reference>
     <Reference Include="System.ServiceModel" />
     <Reference Include="System.ValueTuple, Version=4.0.3.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
-      <HintPath>..\packages\System.ValueTuple.4.5.0\lib\net461\System.ValueTuple.dll</HintPath>
+      <HintPath>..\..\packages\System.ValueTuple.4.5.0\lib\net461\System.ValueTuple.dll</HintPath>
     </Reference>
     <Reference Include="System.Web" />
     <Reference Include="System.Windows.Forms" />
     <Reference Include="System.Xml" />
     <Reference Include="nunit.framework">
-      <HintPath>..\packages\NUnit.3.13.1\lib\net45\nunit.framework.dll</HintPath>
+      <HintPath>..\..\packages\NUnit.3.13.1\lib\net45\nunit.framework.dll</HintPath>
     </Reference>
     <Reference Include="TagLibSharp, Version=2.2.0.0, Culture=neutral, PublicKeyToken=db62eba44689b5b0, processorArchitecture=MSIL">
-      <HintPath>..\packages\TagLibSharp.2.2.0\lib\net45\TagLibSharp.dll</HintPath>
+      <HintPath>..\..\packages\TagLibSharp.2.2.0\lib\net45\TagLibSharp.dll</HintPath>
     </Reference>
   </ItemGroup>
   <ItemGroup>
@@ -248,13 +248,13 @@
   <ItemGroup>
     <Service Include="{82A7F48D-3B50-4B1E-B82E-3ADA8210C358}" />
   </ItemGroup>
-  <Import Project="..\packages\NDesk.DBus.0.15.0\build\NDesk.DBus.targets" Condition="Exists('..\packages\NDesk.DBus.0.15.0\build\NDesk.DBus.targets')" />
+  <Import Project="..\..\packages\NDesk.DBus.0.15.0\build\NDesk.DBus.targets" Condition="Exists('..\..\packages\NDesk.DBus.0.15.0\build\NDesk.DBus.targets')" />
   <Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
     <PropertyGroup>
       <ErrorText>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}.</ErrorText>
     </PropertyGroup>
-    <Error Condition="!Exists('..\packages\NDesk.DBus.0.15.0\build\NDesk.DBus.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\NDesk.DBus.0.15.0\build\NDesk.DBus.targets'))" />
-    <Error Condition="!Exists('..\packages\SIL.Windows.Forms.9.0.0-beta0154\build\SIL.Windows.Forms.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\SIL.Windows.Forms.9.0.0-beta0154\build\SIL.Windows.Forms.targets'))" />
+    <Error Condition="!Exists('..\..\packages\NDesk.DBus.0.15.0\build\NDesk.DBus.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\NDesk.DBus.0.15.0\build\NDesk.DBus.targets'))" />
+    <Error Condition="!Exists('..\..\packages\SIL.Windows.Forms.9.0.0-beta0154\build\SIL.Windows.Forms.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\SIL.Windows.Forms.9.0.0-beta0154\build\SIL.Windows.Forms.targets'))" />
   </Target>
-  <Import Project="..\packages\SIL.Windows.Forms.9.0.0-beta0154\build\SIL.Windows.Forms.targets" Condition="Exists('..\packages\SIL.Windows.Forms.9.0.0-beta0154\build\SIL.Windows.Forms.targets')" />
+  <Import Project="..\..\packages\SIL.Windows.Forms.9.0.0-beta0154\build\SIL.Windows.Forms.targets" Condition="Exists('..\..\packages\SIL.Windows.Forms.9.0.0-beta0154\build\SIL.Windows.Forms.targets')" />
 </Project>
\ No newline at end of file
diff --git a/src/Addin.Transform/Addin.Transform.csproj b/src/Addin.Transform/Addin.Transform.csproj
index 6c700a3c9..1df6cf3c4 100755
--- a/src/Addin.Transform/Addin.Transform.csproj
+++ b/src/Addin.Transform/Addin.Transform.csproj
@@ -86,72 +86,72 @@
   </PropertyGroup>
   <ItemGroup>
     <Reference Include="Commons.Xml.Relaxng, Version=4.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756, processorArchitecture=MSIL">
-      <HintPath>..\packages\RelaxNG.3.2.3\lib\net40\Commons.Xml.Relaxng.dll</HintPath>
+      <HintPath>..\..\packages\RelaxNG.3.2.3\lib\net40\Commons.Xml.Relaxng.dll</HintPath>
     </Reference>
     <Reference Include="DialogAdapters, Version=0.1.9.0, Culture=neutral, PublicKeyToken=7dc842182b0626dc, processorArchitecture=MSIL">
-      <HintPath>..\packages\DialogAdapters.Gtk2.0.1.9\lib\net461\DialogAdapters.dll</HintPath>
+      <HintPath>..\..\packages\DialogAdapters.Gtk2.0.1.9\lib\net461\DialogAdapters.dll</HintPath>
     </Reference>
     <Reference Include="Enchant.Net, Version=1.4.0.0, Culture=neutral, PublicKeyToken=ae135aeb3d479ab9, processorArchitecture=MSIL">
-      <HintPath>..\packages\Enchant.Net.1.4.2\lib\net461\Enchant.Net.dll</HintPath>
+      <HintPath>..\..\packages\Enchant.Net.1.4.2\lib\net461\Enchant.Net.dll</HintPath>
     </Reference>
     <Reference Include="icu.net, Version=2.7.0.0, Culture=neutral, PublicKeyToken=416fdd914afa6b66, processorArchitecture=MSIL">
-      <HintPath>..\packages\icu.net.2.7.1\lib\net451\icu.net.dll</HintPath>
+      <HintPath>..\..\packages\icu.net.2.7.1\lib\net451\icu.net.dll</HintPath>
     </Reference>
     <Reference Include="JetBrains.Annotations, Version=2021.2.0.0, Culture=neutral, PublicKeyToken=1010a0d8d6380325, processorArchitecture=MSIL">
-      <HintPath>..\packages\JetBrains.Annotations.2021.2.0\lib\net20\JetBrains.Annotations.dll</HintPath>
+      <HintPath>..\..\packages\JetBrains.Annotations.2021.2.0\lib\net20\JetBrains.Annotations.dll</HintPath>
     </Reference>
     <Reference Include="L10NSharp, Version=5.0.0.0, Culture=neutral, PublicKeyToken=fd0b3e309a5b7c28, processorArchitecture=MSIL">
-      <HintPath>..\packages\L10NSharp.5.0.0-beta0086\lib\net461\L10NSharp.dll</HintPath>
+      <HintPath>..\..\packages\L10NSharp.5.0.0-beta0086\lib\net461\L10NSharp.dll</HintPath>
     </Reference>
     <Reference Include="Markdig.Signed, Version=0.22.0.0, Culture=neutral, PublicKeyToken=870da25a133885f8, processorArchitecture=MSIL">
-      <HintPath>..\packages\Markdig.Signed.0.22.0\lib\net452\Markdig.Signed.dll</HintPath>
+      <HintPath>..\..\packages\Markdig.Signed.0.22.0\lib\net452\Markdig.Signed.dll</HintPath>
     </Reference>
     <Reference Include="Microsoft.DotNet.PlatformAbstractions, Version=2.0.4.0, Culture=neutral, PublicKeyToken=adb9793829ddae60, processorArchitecture=MSIL">
-      <HintPath>..\packages\Microsoft.DotNet.PlatformAbstractions.2.0.4\lib\net45\Microsoft.DotNet.PlatformAbstractions.dll</HintPath>
+      <HintPath>..\..\packages\Microsoft.DotNet.PlatformAbstractions.2.0.4\lib\net45\Microsoft.DotNet.PlatformAbstractions.dll</HintPath>
     </Reference>
     <Reference Include="Microsoft.Extensions.DependencyModel, Version=2.0.4.0, Culture=neutral, PublicKeyToken=adb9793829ddae60, processorArchitecture=MSIL">
-      <HintPath>..\packages\Microsoft.Extensions.DependencyModel.2.0.4\lib\net451\Microsoft.Extensions.DependencyModel.dll</HintPath>
+      <HintPath>..\..\packages\Microsoft.Extensions.DependencyModel.2.0.4\lib\net451\Microsoft.Extensions.DependencyModel.dll</HintPath>
     </Reference>
     <None Include="..\..\lib\common\Enchant.Net.dll.config">
       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
     </None>
     <Reference Include="Mono.Addins, Version=1.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756, processorArchitecture=MSIL">
-      <HintPath>..\packages\Mono.Addins.1.3.8\lib\net45\Mono.Addins.dll</HintPath>
+      <HintPath>..\..\packages\Mono.Addins.1.3.8\lib\net45\Mono.Addins.dll</HintPath>
     </Reference>
     <Reference Include="NDesk.DBus, Version=1.0.0.0, Culture=neutral, PublicKeyToken=f6716e4f9b2ed099, processorArchitecture=MSIL">
-      <HintPath>..\packages\NDesk.DBus.0.15.0\lib\NDesk.DBus.dll</HintPath>
+      <HintPath>..\..\packages\NDesk.DBus.0.15.0\lib\NDesk.DBus.dll</HintPath>
     </Reference>
     <Reference Include="Newtonsoft.Json, Version=12.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
       <SpecificVersion>False</SpecificVersion>
-      <HintPath>..\packages\Newtonsoft.Json.12.0.3\lib\net45\Newtonsoft.Json.dll</HintPath>
+      <HintPath>..\..\packages\Newtonsoft.Json.12.0.3\lib\net45\Newtonsoft.Json.dll</HintPath>
     </Reference>
     <Reference Include="SIL.Core, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
-      <HintPath>..\packages\SIL.Core.9.0.0-beta0154\lib\net461\SIL.Core.dll</HintPath>
+      <HintPath>..\..\packages\SIL.Core.9.0.0-beta0154\lib\net461\SIL.Core.dll</HintPath>
     </Reference>
     <Reference Include="SIL.Core.Desktop, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
-      <HintPath>..\packages\SIL.Core.Desktop.9.0.0-beta0154\lib\net461\SIL.Core.Desktop.dll</HintPath>
+      <HintPath>..\..\packages\SIL.Core.Desktop.9.0.0-beta0154\lib\net461\SIL.Core.Desktop.dll</HintPath>
     </Reference>
     <Reference Include="SIL.DictionaryServices, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
-      <HintPath>..\packages\SIL.DictionaryServices.9.0.0-beta0154\lib\net461\SIL.DictionaryServices.dll</HintPath>
+      <HintPath>..\..\packages\SIL.DictionaryServices.9.0.0-beta0154\lib\net461\SIL.DictionaryServices.dll</HintPath>
     </Reference>
     <Reference Include="SIL.Lexicon, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
-      <HintPath>..\packages\SIL.Lexicon.9.0.0-beta0154\lib\net461\SIL.Lexicon.dll</HintPath>
+      <HintPath>..\..\packages\SIL.Lexicon.9.0.0-beta0154\lib\net461\SIL.Lexicon.dll</HintPath>
     </Reference>
     <Reference Include="SIL.Lift, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
-      <HintPath>..\packages\SIL.Lift.9.0.0-beta0154\lib\net461\SIL.Lift.dll</HintPath>
+      <HintPath>..\..\packages\SIL.Lift.9.0.0-beta0154\lib\net461\SIL.Lift.dll</HintPath>
     </Reference>
     <Reference Include="SIL.Windows.Forms, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
-      <HintPath>..\packages\SIL.Windows.Forms.9.0.0-beta0154\lib\net461\SIL.Windows.Forms.dll</HintPath>
+      <HintPath>..\..\packages\SIL.Windows.Forms.9.0.0-beta0154\lib\net461\SIL.Windows.Forms.dll</HintPath>
     </Reference>
     <Reference Include="SIL.WritingSystems, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
-      <HintPath>..\packages\SIL.WritingSystems.9.0.0-beta0154\lib\net461\SIL.WritingSystems.dll</HintPath>
+      <HintPath>..\..\packages\SIL.WritingSystems.9.0.0-beta0154\lib\net461\SIL.WritingSystems.dll</HintPath>
     </Reference>
     <Reference Include="Spart, Version=1.0.0.0, Culture=neutral, PublicKeyToken=14d24e064e474331, processorArchitecture=MSIL">
-      <HintPath>..\packages\Spart.1.0.0\lib\net461\Spart.dll</HintPath>
+      <HintPath>..\..\packages\Spart.1.0.0\lib\net461\Spart.dll</HintPath>
     </Reference>
     <Reference Include="System" />
     <Reference Include="System.Buffers, Version=4.0.3.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
-      <HintPath>..\packages\System.Buffers.4.5.1\lib\net461\System.Buffers.dll</HintPath>
+      <HintPath>..\..\packages\System.Buffers.4.5.1\lib\net461\System.Buffers.dll</HintPath>
     </Reference>
     <Reference Include="System.Configuration" />
     <Reference Include="System.Core">
@@ -160,38 +160,38 @@
     <Reference Include="System.Data" />
     <Reference Include="System.Drawing" />
     <Reference Include="System.IO.FileSystem.AccessControl, Version=4.0.5.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
-      <HintPath>..\packages\System.IO.FileSystem.AccessControl.4.7.0\lib\net461\System.IO.FileSystem.AccessControl.dll</HintPath>
+      <HintPath>..\..\packages\System.IO.FileSystem.AccessControl.4.7.0\lib\net461\System.IO.FileSystem.AccessControl.dll</HintPath>
     </Reference>
     <Reference Include="System.Management" />
     <Reference Include="System.Memory, Version=4.0.1.1, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
-      <HintPath>..\packages\System.Memory.4.5.4\lib\net461\System.Memory.dll</HintPath>
+      <HintPath>..\..\packages\System.Memory.4.5.4\lib\net461\System.Memory.dll</HintPath>
     </Reference>
     <Reference Include="System.Numerics" />
     <Reference Include="System.Numerics.Vectors, Version=4.1.4.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
-      <HintPath>..\packages\System.Numerics.Vectors.4.5.0\lib\net46\System.Numerics.Vectors.dll</HintPath>
+      <HintPath>..\..\packages\System.Numerics.Vectors.4.5.0\lib\net46\System.Numerics.Vectors.dll</HintPath>
     </Reference>
     <Reference Include="System.Runtime.CompilerServices.Unsafe, Version=4.0.4.1, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
-      <HintPath>..\packages\System.Runtime.CompilerServices.Unsafe.4.5.3\lib\net461\System.Runtime.CompilerServices.Unsafe.dll</HintPath>
+      <HintPath>..\..\packages\System.Runtime.CompilerServices.Unsafe.4.5.3\lib\net461\System.Runtime.CompilerServices.Unsafe.dll</HintPath>
     </Reference>
     <Reference Include="System.Security" />
     <Reference Include="System.Security.AccessControl, Version=4.1.3.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
-      <HintPath>..\packages\System.Security.AccessControl.4.7.0\lib\net461\System.Security.AccessControl.dll</HintPath>
+      <HintPath>..\..\packages\System.Security.AccessControl.4.7.0\lib\net461\System.Security.AccessControl.dll</HintPath>
     </Reference>
     <Reference Include="System.Security.Principal.Windows, Version=4.1.3.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
-      <HintPath>..\packages\System.Security.Principal.Windows.4.7.0\lib\net461\System.Security.Principal.Windows.dll</HintPath>
+      <HintPath>..\..\packages\System.Security.Principal.Windows.4.7.0\lib\net461\System.Security.Principal.Windows.dll</HintPath>
     </Reference>
     <Reference Include="System.ServiceModel" />
     <Reference Include="System.ValueTuple, Version=4.0.3.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
-      <HintPath>..\packages\System.ValueTuple.4.5.0\lib\net461\System.ValueTuple.dll</HintPath>
+      <HintPath>..\..\packages\System.ValueTuple.4.5.0\lib\net461\System.ValueTuple.dll</HintPath>
     </Reference>
     <Reference Include="System.Web" />
     <Reference Include="System.Windows.Forms" />
     <Reference Include="System.Xml" />
     <Reference Include="ICSharpCode.SharpZipLib, Version=0.86.0.518, Culture=neutral, PublicKeyToken=1b03e6acf1164f73">
-      <HintPath>..\packages\SharpZipLib.0.86.0\lib\20\ICSharpCode.SharpZipLib.dll</HintPath>
+      <HintPath>..\..\packages\SharpZipLib.0.86.0\lib\20\ICSharpCode.SharpZipLib.dll</HintPath>
     </Reference>
     <Reference Include="TagLibSharp, Version=2.2.0.0, Culture=neutral, PublicKeyToken=db62eba44689b5b0, processorArchitecture=MSIL">
-      <HintPath>..\packages\TagLibSharp.2.2.0\lib\net45\TagLibSharp.dll</HintPath>
+      <HintPath>..\..\packages\TagLibSharp.2.2.0\lib\net45\TagLibSharp.dll</HintPath>
     </Reference>
   </ItemGroup>
   <ItemGroup>
@@ -343,13 +343,13 @@
     <PostBuildEvent>
     </PostBuildEvent>
   </PropertyGroup>
-  <Import Project="..\packages\NDesk.DBus.0.15.0\build\NDesk.DBus.targets" Condition="Exists('..\packages\NDesk.DBus.0.15.0\build\NDesk.DBus.targets')" />
+  <Import Project="..\..\packages\NDesk.DBus.0.15.0\build\NDesk.DBus.targets" Condition="Exists('..\..\packages\NDesk.DBus.0.15.0\build\NDesk.DBus.targets')" />
   <Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
     <PropertyGroup>
       <ErrorText>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}.</ErrorText>
     </PropertyGroup>
-    <Error Condition="!Exists('..\packages\NDesk.DBus.0.15.0\build\NDesk.DBus.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\NDesk.DBus.0.15.0\build\NDesk.DBus.targets'))" />
-    <Error Condition="!Exists('..\packages\SIL.Windows.Forms.9.0.0-beta0154\build\SIL.Windows.Forms.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\SIL.Windows.Forms.9.0.0-beta0154\build\SIL.Windows.Forms.targets'))" />
+    <Error Condition="!Exists('..\..\packages\NDesk.DBus.0.15.0\build\NDesk.DBus.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\NDesk.DBus.0.15.0\build\NDesk.DBus.targets'))" />
+    <Error Condition="!Exists('..\..\packages\SIL.Windows.Forms.9.0.0-beta0154\build\SIL.Windows.Forms.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\SIL.Windows.Forms.9.0.0-beta0154\build\SIL.Windows.Forms.targets'))" />
   </Target>
-  <Import Project="..\packages\SIL.Windows.Forms.9.0.0-beta0154\build\SIL.Windows.Forms.targets" Condition="Exists('..\packages\SIL.Windows.Forms.9.0.0-beta0154\build\SIL.Windows.Forms.targets')" />
+  <Import Project="..\..\packages\SIL.Windows.Forms.9.0.0-beta0154\build\SIL.Windows.Forms.targets" Condition="Exists('..\..\packages\SIL.Windows.Forms.9.0.0-beta0154\build\SIL.Windows.Forms.targets')" />
 </Project>
\ No newline at end of file
diff --git a/src/CommonTools.Tests/CommonTools.Tests.csproj b/src/CommonTools.Tests/CommonTools.Tests.csproj
index 78007716e..1a49e701e 100644
--- a/src/CommonTools.Tests/CommonTools.Tests.csproj
+++ b/src/CommonTools.Tests/CommonTools.Tests.csproj
@@ -34,7 +34,7 @@
   </PropertyGroup>
   <ItemGroup>
     <Reference Include="nunit.framework">
-      <HintPath>..\packages\NUnit.3.13.1\lib\net45\nunit.framework.dll</HintPath>
+      <HintPath>..\..\packages\NUnit.3.13.1\lib\net45\nunit.framework.dll</HintPath>
 	</Reference>
     <None Include="packages.config" />
 	<Reference Include="System" />
diff --git a/src/CommonTools/CommonTools.csproj b/src/CommonTools/CommonTools.csproj
index da968d4aa..474c81bb2 100644
--- a/src/CommonTools/CommonTools.csproj
+++ b/src/CommonTools/CommonTools.csproj
@@ -51,15 +51,15 @@
   <ItemGroup>
 	<Reference Include="Mono.Addins, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
 	  <ExecutableExtension>.exe</ExecutableExtension>
-	  <HintPath>..\packages\Mono.Addins.1.2\lib\net40\Mono.Addins.dll</HintPath>
+	  <HintPath>..\..\packages\Mono.Addins.1.2\lib\net40\Mono.Addins.dll</HintPath>
 	</Reference>
 	<Reference Include="SIL.Core, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
 	  <SpecificVersion>False</SpecificVersion>
-	  <HintPath>..\packages\SIL.Core.9.0.0-beta0154\lib\net461\SIL.Core.dll</HintPath>
+	  <HintPath>..\..\packages\SIL.Core.9.0.0-beta0154\lib\net461\SIL.Core.dll</HintPath>
 	</Reference>
 	<Reference Include="SIL.Windows.Forms, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
 	  <SpecificVersion>False</SpecificVersion>
-	  <HintPath>..\packages\SIL.Windows.Forms.9.0.0-beta0154\lib\net461\SIL.Windows.Forms.dll</HintPath>
+	  <HintPath>..\..\packages\SIL.Windows.Forms.9.0.0-beta0154\lib\net461\SIL.Windows.Forms.dll</HintPath>
 	</Reference>
 	<Reference Include="System" />
 	<Reference Include="System.Data" />
diff --git a/src/Language/Language.csproj b/src/Language/Language.csproj
index 7f0e254d2..142ca9c56 100644
--- a/src/Language/Language.csproj
+++ b/src/Language/Language.csproj
@@ -30,7 +30,7 @@
   <ItemGroup>
 	<Reference Include="NetReflector, Version=1.0.0.0, Culture=neutral">
 	  <SpecificVersion>False</SpecificVersion>
-	  <HintPath>../packages/NetReflector.1.1.2009/lib/net20/NetReflector.dll</HintPath>
+	  <HintPath>../../packages/NetReflector.1.1.2009/lib/net20/NetReflector.dll</HintPath>
 	</Reference>
 	<Reference Include="System" />
 	<Reference Include="System.Data" />
diff --git a/src/LexicalModel.Tests/LexicalModel.Tests.csproj b/src/LexicalModel.Tests/LexicalModel.Tests.csproj
index ae7be6527..8a265ae93 100755
--- a/src/LexicalModel.Tests/LexicalModel.Tests.csproj
+++ b/src/LexicalModel.Tests/LexicalModel.Tests.csproj
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="12.0">
-  <Import Project="..\packages\NUnit.3.13.1\build\NUnit.props" Condition="Exists('..\packages\NUnit.3.13.1\build\NUnit.props')" />
+  <Import Project="..\..\packages\NUnit.3.13.1\build\NUnit.props" Condition="Exists('..\..\packages\NUnit.3.13.1\build\NUnit.props')" />
   <PropertyGroup>
     <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
@@ -72,69 +72,69 @@
   </PropertyGroup>
   <ItemGroup>
     <Reference Include="Commons.Xml.Relaxng, Version=4.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756, processorArchitecture=MSIL">
-      <HintPath>..\packages\RelaxNG.3.2.3\lib\net40\Commons.Xml.Relaxng.dll</HintPath>
+      <HintPath>..\..\packages\RelaxNG.3.2.3\lib\net40\Commons.Xml.Relaxng.dll</HintPath>
     </Reference>
     <Reference Include="Enchant.Net, Version=1.4.3.1, Culture=neutral, processorArchitecture=MSIL">
       <SpecificVersion>False</SpecificVersion>
-      <HintPath>..\packages\Enchant.Net.1.4.2\lib\net461\Enchant.Net.dll</HintPath>
+      <HintPath>..\..\packages\Enchant.Net.1.4.2\lib\net461\Enchant.Net.dll</HintPath>
     </Reference>
     <Reference Include="icu.net, Version=2.7.0.0, Culture=neutral, PublicKeyToken=416fdd914afa6b66, processorArchitecture=MSIL">
       <SpecificVersion>False</SpecificVersion>
-      <HintPath>..\packages\icu.net.2.7.1\lib\net451\icu.net.dll</HintPath>
+      <HintPath>..\..\packages\icu.net.2.7.1\lib\net451\icu.net.dll</HintPath>
     </Reference>
     <Reference Include="Microsoft.DotNet.PlatformAbstractions, Version=2.0.4.0, Culture=neutral, PublicKeyToken=adb9793829ddae60, processorArchitecture=MSIL">
-      <HintPath>..\packages\Microsoft.DotNet.PlatformAbstractions.2.0.4\lib\net45\Microsoft.DotNet.PlatformAbstractions.dll</HintPath>
+      <HintPath>..\..\packages\Microsoft.DotNet.PlatformAbstractions.2.0.4\lib\net45\Microsoft.DotNet.PlatformAbstractions.dll</HintPath>
     </Reference>
     <Reference Include="Microsoft.Extensions.DependencyModel, Version=2.0.4.0, Culture=neutral, PublicKeyToken=adb9793829ddae60, processorArchitecture=MSIL">
-      <HintPath>..\packages\Microsoft.Extensions.DependencyModel.2.0.4\lib\net451\Microsoft.Extensions.DependencyModel.dll</HintPath>
+      <HintPath>..\..\packages\Microsoft.Extensions.DependencyModel.2.0.4\lib\net451\Microsoft.Extensions.DependencyModel.dll</HintPath>
     </Reference>
     <Reference Include="NDesk.DBus, Version=1.0.0.0, Culture=neutral, PublicKeyToken=f6716e4f9b2ed099, processorArchitecture=MSIL">
-      <HintPath>..\packages\NDesk.DBus.0.15.0\lib\NDesk.DBus.dll</HintPath>
+      <HintPath>..\..\packages\NDesk.DBus.0.15.0\lib\NDesk.DBus.dll</HintPath>
     </Reference>
     <Reference Include="NetReflector, Version=1.0.0.0, Culture=neutral">
       <SpecificVersion>False</SpecificVersion>
-      <HintPath>../packages/NetReflector.1.1.2009/lib/net20/NetReflector.dll</HintPath>
+      <HintPath>../../packages/NetReflector.1.1.2009/lib/net20/NetReflector.dll</HintPath>
     </Reference>
     <Reference Include="Newtonsoft.Json, Version=12.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
       <SpecificVersion>False</SpecificVersion>
-      <HintPath>..\packages\Newtonsoft.Json.12.0.3\lib\net45\Newtonsoft.Json.dll</HintPath>
+      <HintPath>..\..\packages\Newtonsoft.Json.12.0.3\lib\net45\Newtonsoft.Json.dll</HintPath>
     </Reference>
     <Reference Include="nunit.framework, Version=3.13.1.0, Culture=neutral, PublicKeyToken=2638cd05610744eb, processorArchitecture=MSIL">
       <SpecificVersion>False</SpecificVersion>
-      <HintPath>..\packages\NUnit.3.13.1\lib\net45\nunit.framework.dll</HintPath>
+      <HintPath>..\..\packages\NUnit.3.13.1\lib\net45\nunit.framework.dll</HintPath>
     </Reference>
     <None Include="..\..\lib\common\Enchant.Net.dll.config">
       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
     </None>
     <Reference Include="SIL.Core, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
-      <HintPath>..\packages\SIL.Core.9.0.0-beta0154\lib\net461\SIL.Core.dll</HintPath>
+      <HintPath>..\..\packages\SIL.Core.9.0.0-beta0154\lib\net461\SIL.Core.dll</HintPath>
     </Reference>
     <Reference Include="SIL.Core.Desktop, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
-      <HintPath>..\packages\SIL.Core.Desktop.9.0.0-beta0154\lib\net461\SIL.Core.Desktop.dll</HintPath>
+      <HintPath>..\..\packages\SIL.Core.Desktop.9.0.0-beta0154\lib\net461\SIL.Core.Desktop.dll</HintPath>
     </Reference>
     <Reference Include="SIL.Core.Tests, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
-      <HintPath>..\packages\SIL.Core.Tests.9.0.0-beta0154\lib\net461\SIL.Core.Tests.dll</HintPath>
+      <HintPath>..\..\packages\SIL.Core.Tests.9.0.0-beta0154\lib\net461\SIL.Core.Tests.dll</HintPath>
     </Reference>
     <Reference Include="SIL.DictionaryServices, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
-      <HintPath>..\packages\SIL.DictionaryServices.9.0.0-beta0154\lib\net461\SIL.DictionaryServices.dll</HintPath>
+      <HintPath>..\..\packages\SIL.DictionaryServices.9.0.0-beta0154\lib\net461\SIL.DictionaryServices.dll</HintPath>
     </Reference>
     <Reference Include="SIL.Lexicon, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
-      <HintPath>..\packages\SIL.Lexicon.9.0.0-beta0154\lib\net461\SIL.Lexicon.dll</HintPath>
+      <HintPath>..\..\packages\SIL.Lexicon.9.0.0-beta0154\lib\net461\SIL.Lexicon.dll</HintPath>
     </Reference>
     <Reference Include="SIL.Lift, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
-      <HintPath>..\packages\SIL.Lift.9.0.0-beta0154\lib\net461\SIL.Lift.dll</HintPath>
+      <HintPath>..\..\packages\SIL.Lift.9.0.0-beta0154\lib\net461\SIL.Lift.dll</HintPath>
     </Reference>
     <Reference Include="SIL.TestUtilities, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
-      <HintPath>..\packages\SIL.TestUtilities.9.0.0-beta0154\lib\net461\SIL.TestUtilities.dll</HintPath>
+      <HintPath>..\..\packages\SIL.TestUtilities.9.0.0-beta0154\lib\net461\SIL.TestUtilities.dll</HintPath>
     </Reference>
     <Reference Include="SIL.WritingSystems, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
-      <HintPath>..\packages\SIL.WritingSystems.9.0.0-beta0154\lib\net461\SIL.WritingSystems.dll</HintPath>
+      <HintPath>..\..\packages\SIL.WritingSystems.9.0.0-beta0154\lib\net461\SIL.WritingSystems.dll</HintPath>
     </Reference>
     <Reference Include="SIL.WritingSystems.Tests, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
-      <HintPath>..\packages\SIL.WritingSystems.Tests.9.0.0-beta0154\lib\net461\SIL.WritingSystems.Tests.dll</HintPath>
+      <HintPath>..\..\packages\SIL.WritingSystems.Tests.9.0.0-beta0154\lib\net461\SIL.WritingSystems.Tests.dll</HintPath>
     </Reference>
     <Reference Include="Spart, Version=1.0.0.0, Culture=neutral, PublicKeyToken=14d24e064e474331, processorArchitecture=MSIL">
-      <HintPath>..\packages\Spart.1.0.0\lib\net461\Spart.dll</HintPath>
+      <HintPath>..\..\packages\Spart.1.0.0\lib\net461\Spart.dll</HintPath>
     </Reference>
     <Reference Include="System" />
     <Reference Include="System.Configuration" />
@@ -144,18 +144,18 @@
     <Reference Include="System.Data" />
     <Reference Include="System.Drawing" />
     <Reference Include="System.IO.FileSystem.AccessControl, Version=4.0.5.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
-      <HintPath>..\packages\System.IO.FileSystem.AccessControl.4.7.0\lib\net461\System.IO.FileSystem.AccessControl.dll</HintPath>
+      <HintPath>..\..\packages\System.IO.FileSystem.AccessControl.4.7.0\lib\net461\System.IO.FileSystem.AccessControl.dll</HintPath>
     </Reference>
     <Reference Include="System.Management" />
     <Reference Include="System.Security" />
     <Reference Include="System.Security.AccessControl, Version=4.1.3.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
-      <HintPath>..\packages\System.Security.AccessControl.4.7.0\lib\net461\System.Security.AccessControl.dll</HintPath>
+      <HintPath>..\..\packages\System.Security.AccessControl.4.7.0\lib\net461\System.Security.AccessControl.dll</HintPath>
     </Reference>
     <Reference Include="System.Security.Principal.Windows, Version=4.1.3.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
-      <HintPath>..\packages\System.Security.Principal.Windows.4.7.0\lib\net461\System.Security.Principal.Windows.dll</HintPath>
+      <HintPath>..\..\packages\System.Security.Principal.Windows.4.7.0\lib\net461\System.Security.Principal.Windows.dll</HintPath>
     </Reference>
     <Reference Include="System.ValueTuple, Version=4.0.3.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
-      <HintPath>..\packages\System.ValueTuple.4.5.0\lib\net461\System.ValueTuple.dll</HintPath>
+      <HintPath>..\..\packages\System.ValueTuple.4.5.0\lib\net461\System.ValueTuple.dll</HintPath>
     </Reference>
     <Reference Include="System.Web" />
     <Reference Include="System.Windows.Forms" />
@@ -227,14 +227,14 @@
     <PropertyGroup>
       <ErrorText>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}.</ErrorText>
     </PropertyGroup>
-    <Error Condition="!Exists('..\packages\Mono.Posix.5.4.0.201\build\net45\Mono.Posix.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Mono.Posix.5.4.0.201\build\net45\Mono.Posix.targets'))" />
-    <Error Condition="!Exists('..\packages\NDesk.DBus.0.15.0\build\NDesk.DBus.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\NDesk.DBus.0.15.0\build\NDesk.DBus.targets'))" />
-    <Error Condition="!Exists('..\packages\NUnit.3.13.1\build\NUnit.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\NUnit.3.13.1\build\NUnit.props'))" />
-    <Error Condition="!Exists('..\packages\Icu4c.Win.Min.59.1.7\build\Icu4c.Win.Min.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Icu4c.Win.Min.59.1.7\build\Icu4c.Win.Min.targets'))" />
+    <Error Condition="!Exists('..\..\packages\Mono.Posix.5.4.0.201\build\net45\Mono.Posix.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\Mono.Posix.5.4.0.201\build\net45\Mono.Posix.targets'))" />
+    <Error Condition="!Exists('..\..\packages\NDesk.DBus.0.15.0\build\NDesk.DBus.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\NDesk.DBus.0.15.0\build\NDesk.DBus.targets'))" />
+    <Error Condition="!Exists('..\..\packages\NUnit.3.13.1\build\NUnit.props')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\NUnit.3.13.1\build\NUnit.props'))" />
+    <Error Condition="!Exists('..\..\packages\Icu4c.Win.Min.59.1.7\build\Icu4c.Win.Min.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\Icu4c.Win.Min.59.1.7\build\Icu4c.Win.Min.targets'))" />
   </Target>
-  <Import Project="..\packages\Mono.Posix.5.4.0.201\build\net45\Mono.Posix.targets" Condition="Exists('..\packages\Mono.Posix.5.4.0.201\build\net45\Mono.Posix.targets')" />
-  <Import Project="..\packages\NDesk.DBus.0.15.0\build\NDesk.DBus.targets" Condition="Exists('..\packages\NDesk.DBus.0.15.0\build\NDesk.DBus.targets')" />
-  <Import Project="..\packages\Icu4c.Win.Min.59.1.7\build\Icu4c.Win.Min.targets" Condition="Exists('..\packages\Icu4c.Win.Min.59.1.7\build\Icu4c.Win.Min.targets')" />
+  <Import Project="..\..\packages\Mono.Posix.5.4.0.201\build\net45\Mono.Posix.targets" Condition="Exists('..\..\packages\Mono.Posix.5.4.0.201\build\net45\Mono.Posix.targets')" />
+  <Import Project="..\..\packages\NDesk.DBus.0.15.0\build\NDesk.DBus.targets" Condition="Exists('..\..\packages\NDesk.DBus.0.15.0\build\NDesk.DBus.targets')" />
+  <Import Project="..\..\packages\Icu4c.Win.Min.59.1.7\build\Icu4c.Win.Min.targets" Condition="Exists('..\..\packages\Icu4c.Win.Min.59.1.7\build\Icu4c.Win.Min.targets')" />
   <!-- To modify your build process, add your task inside one of the targets below and uncomment it.
 	   Other similar extension points exist, see Microsoft.Common.targets.
   <Target Name="BeforeBuild">
diff --git a/src/LexicalModel/LexicalModel.csproj b/src/LexicalModel/LexicalModel.csproj
index 319c290e8..b4587124f 100755
--- a/src/LexicalModel/LexicalModel.csproj
+++ b/src/LexicalModel/LexicalModel.csproj
@@ -69,119 +69,119 @@
   </PropertyGroup>
   <ItemGroup>
     <Reference Include="Autofac, Version=4.1.1.0, Culture=neutral, PublicKeyToken=17863af14b0044da, processorArchitecture=MSIL">
-      <HintPath>..\packages\Autofac.4.1.1\lib\net45\Autofac.dll</HintPath>
+      <HintPath>..\..\packages\Autofac.4.1.1\lib\net45\Autofac.dll</HintPath>
     </Reference>
     <Reference Include="Chorus, Version=3.1.0.0, Culture=neutral, PublicKeyToken=f1447bae1e63f485, processorArchitecture=MSIL">
       <SpecificVersion>False</SpecificVersion>
-      <HintPath>..\packages\SIL.Chorus.App.LibChorus.5.0.0-beta0017\lib\net461\Chorus.exe</HintPath>
+      <HintPath>..\..\packages\SIL.Chorus.App.LibChorus.5.0.0-beta0017\lib\net461\Chorus.exe</HintPath>
     </Reference>
     <Reference Include="Commons.Xml.Relaxng, Version=4.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756, processorArchitecture=MSIL">
-      <HintPath>..\packages\RelaxNG.3.2.3\lib\net40\Commons.Xml.Relaxng.dll</HintPath>
+      <HintPath>..\..\packages\RelaxNG.3.2.3\lib\net40\Commons.Xml.Relaxng.dll</HintPath>
     </Reference>
     <None Include="packages.config" />
     <Reference Include="Enchant.Net, Version=1.4.3.1, Culture=neutral, processorArchitecture=MSIL">
       <SpecificVersion>False</SpecificVersion>
-      <HintPath>..\packages\Enchant.Net.1.4.2\lib\net461\Enchant.Net.dll</HintPath>
+      <HintPath>..\..\packages\Enchant.Net.1.4.2\lib\net461\Enchant.Net.dll</HintPath>
     </Reference>
     <Reference Include="icu.net, Version=2.7.0.0, Culture=neutral, PublicKeyToken=416fdd914afa6b66, processorArchitecture=MSIL">
-      <HintPath>..\packages\icu.net.2.7.1\lib\net451\icu.net.dll</HintPath>
+      <HintPath>..\..\packages\icu.net.2.7.1\lib\net451\icu.net.dll</HintPath>
     </Reference>
     <Reference Include="L10NSharp, Version=5.0.0.0, Culture=neutral, PublicKeyToken=fd0b3e309a5b7c28, processorArchitecture=MSIL">
-      <HintPath>..\packages\L10NSharp.5.0.0-beta0086\lib\net461\L10NSharp.dll</HintPath>
+      <HintPath>..\..\packages\L10NSharp.5.0.0-beta0086\lib\net461\L10NSharp.dll</HintPath>
     </Reference>
     <Reference Include="LibChorus, Version=5.0.0.0, Culture=neutral, PublicKeyToken=f1447bae1e63f485, processorArchitecture=MSIL">
-      <HintPath>..\packages\SIL.Chorus.LibChorus.5.0.0-beta0017\lib\net461\LibChorus.dll</HintPath>
+      <HintPath>..\..\packages\SIL.Chorus.LibChorus.5.0.0-beta0017\lib\net461\LibChorus.dll</HintPath>
     </Reference>
     <Reference Include="Microsoft.Bcl.AsyncInterfaces, Version=5.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
-      <HintPath>..\packages\Microsoft.Bcl.AsyncInterfaces.5.0.0\lib\net461\Microsoft.Bcl.AsyncInterfaces.dll</HintPath>
+      <HintPath>..\..\packages\Microsoft.Bcl.AsyncInterfaces.5.0.0\lib\net461\Microsoft.Bcl.AsyncInterfaces.dll</HintPath>
     </Reference>
     <Reference Include="Microsoft.DotNet.PlatformAbstractions, Version=2.0.4.0, Culture=neutral, PublicKeyToken=adb9793829ddae60, processorArchitecture=MSIL">
-      <HintPath>..\packages\Microsoft.DotNet.PlatformAbstractions.2.0.4\lib\net45\Microsoft.DotNet.PlatformAbstractions.dll</HintPath>
+      <HintPath>..\..\packages\Microsoft.DotNet.PlatformAbstractions.2.0.4\lib\net45\Microsoft.DotNet.PlatformAbstractions.dll</HintPath>
     </Reference>
     <Reference Include="Microsoft.Extensions.DependencyModel, Version=2.0.4.0, Culture=neutral, PublicKeyToken=adb9793829ddae60, processorArchitecture=MSIL">
-      <HintPath>..\packages\Microsoft.Extensions.DependencyModel.2.0.4\lib\net451\Microsoft.Extensions.DependencyModel.dll</HintPath>
+      <HintPath>..\..\packages\Microsoft.Extensions.DependencyModel.2.0.4\lib\net451\Microsoft.Extensions.DependencyModel.dll</HintPath>
     </Reference>
     <Reference Include="NDesk.DBus, Version=1.0.0.0, Culture=neutral, PublicKeyToken=f6716e4f9b2ed099, processorArchitecture=MSIL">
       <SpecificVersion>False</SpecificVersion>
-      <HintPath>..\packages\NDesk.DBus.0.15.0\lib\NDesk.DBus.dll</HintPath>
+      <HintPath>..\..\packages\NDesk.DBus.0.15.0\lib\NDesk.DBus.dll</HintPath>
     </Reference>
     <Reference Include="NetReflector, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null">
       <SpecificVersion>False</SpecificVersion>
-      <HintPath>../packages/NetReflector.1.1.2009/lib/net20/NetReflector.dll</HintPath>
+      <HintPath>../../packages/NetReflector.1.1.2009/lib/net20/NetReflector.dll</HintPath>
     </Reference>
     <Reference Include="Newtonsoft.Json, Version=12.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
       <SpecificVersion>False</SpecificVersion>
-      <HintPath>..\packages\Newtonsoft.Json.12.0.3\lib\net45\Newtonsoft.Json.dll</HintPath>
+      <HintPath>..\..\packages\Newtonsoft.Json.12.0.3\lib\net45\Newtonsoft.Json.dll</HintPath>
     </Reference>
     <Reference Include="SIL.Core, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
-      <HintPath>..\packages\SIL.Core.9.0.0-beta0154\lib\net461\SIL.Core.dll</HintPath>
+      <HintPath>..\..\packages\SIL.Core.9.0.0-beta0154\lib\net461\SIL.Core.dll</HintPath>
     </Reference>
     <Reference Include="SIL.Core.Desktop, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
-      <HintPath>..\packages\SIL.Core.Desktop.9.0.0-beta0154\lib\net461\SIL.Core.Desktop.dll</HintPath>
+      <HintPath>..\..\packages\SIL.Core.Desktop.9.0.0-beta0154\lib\net461\SIL.Core.Desktop.dll</HintPath>
     </Reference>
     <Reference Include="SIL.DictionaryServices, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
-      <HintPath>..\packages\SIL.DictionaryServices.9.0.0-beta0154\lib\net461\SIL.DictionaryServices.dll</HintPath>
+      <HintPath>..\..\packages\SIL.DictionaryServices.9.0.0-beta0154\lib\net461\SIL.DictionaryServices.dll</HintPath>
     </Reference>
     <Reference Include="SIL.Lift, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
-      <HintPath>..\packages\SIL.Lift.9.0.0-beta0154\lib\net461\SIL.Lift.dll</HintPath>
+      <HintPath>..\..\packages\SIL.Lift.9.0.0-beta0154\lib\net461\SIL.Lift.dll</HintPath>
     </Reference>
     <Reference Include="SIL.Windows.Forms.Keyboarding">
-      <HintPath>..\packages\SIL.Windows.Forms.Keyboarding.9.0.0-beta0154\lib\net461\SIL.Windows.Forms.Keyboarding.dll</HintPath>
+      <HintPath>..\..\packages\SIL.Windows.Forms.Keyboarding.9.0.0-beta0154\lib\net461\SIL.Windows.Forms.Keyboarding.dll</HintPath>
     </Reference>
     <Reference Include="SIL.Windows.Forms.WritingSystems">
-      <HintPath>..\packages\SIL.Windows.Forms.WritingSystems.9.0.0-beta0154\lib\net461\SIL.Windows.Forms.WritingSystems.dll</HintPath>
+      <HintPath>..\..\packages\SIL.Windows.Forms.WritingSystems.9.0.0-beta0154\lib\net461\SIL.Windows.Forms.WritingSystems.dll</HintPath>
     </Reference>
     <Reference Include="SIL.WritingSystems, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
-      <HintPath>..\packages\SIL.WritingSystems.9.0.0-beta0154\lib\net461\SIL.WritingSystems.dll</HintPath>
+      <HintPath>..\..\packages\SIL.WritingSystems.9.0.0-beta0154\lib\net461\SIL.WritingSystems.dll</HintPath>
     </Reference>
     <Reference Include="Spart, Version=1.0.0.0, Culture=neutral, PublicKeyToken=14d24e064e474331, processorArchitecture=MSIL">
-      <HintPath>..\packages\Spart.1.0.0\lib\net461\Spart.dll</HintPath>
+      <HintPath>..\..\packages\Spart.1.0.0\lib\net461\Spart.dll</HintPath>
     </Reference>
     <Reference Include="System" />
     <Reference Include="System.Buffers, Version=4.0.3.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
-      <HintPath>..\packages\System.Buffers.4.5.1\lib\net461\System.Buffers.dll</HintPath>
+      <HintPath>..\..\packages\System.Buffers.4.5.1\lib\net461\System.Buffers.dll</HintPath>
     </Reference>
     <Reference Include="System.ComponentModel.Composition" />
     <Reference Include="System.Configuration" />
     <Reference Include="System.Data" />
     <Reference Include="System.Diagnostics.DiagnosticSource, Version=4.0.5.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
-      <HintPath>..\packages\System.Diagnostics.DiagnosticSource.4.7.1\lib\net46\System.Diagnostics.DiagnosticSource.dll</HintPath>
+      <HintPath>..\..\packages\System.Diagnostics.DiagnosticSource.4.7.1\lib\net46\System.Diagnostics.DiagnosticSource.dll</HintPath>
     </Reference>
     <Reference Include="System.Drawing" />
     <Reference Include="System.IO.FileSystem.AccessControl, Version=4.0.5.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
-      <HintPath>..\packages\System.IO.FileSystem.AccessControl.4.7.0\lib\net461\System.IO.FileSystem.AccessControl.dll</HintPath>
+      <HintPath>..\..\packages\System.IO.FileSystem.AccessControl.4.7.0\lib\net461\System.IO.FileSystem.AccessControl.dll</HintPath>
     </Reference>
     <Reference Include="System.Management" />
     <Reference Include="System.Memory, Version=4.0.1.1, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
-      <HintPath>..\packages\System.Memory.4.5.4\lib\net461\System.Memory.dll</HintPath>
+      <HintPath>..\..\packages\System.Memory.4.5.4\lib\net461\System.Memory.dll</HintPath>
     </Reference>
     <Reference Include="System.Numerics" />
     <Reference Include="System.Numerics.Vectors, Version=4.1.4.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
-      <HintPath>..\packages\System.Numerics.Vectors.4.5.0\lib\net46\System.Numerics.Vectors.dll</HintPath>
+      <HintPath>..\..\packages\System.Numerics.Vectors.4.5.0\lib\net46\System.Numerics.Vectors.dll</HintPath>
     </Reference>
     <Reference Include="System.Runtime.CompilerServices.Unsafe, Version=4.0.4.1, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
-      <HintPath>..\packages\System.Runtime.CompilerServices.Unsafe.4.5.3\lib\net461\System.Runtime.CompilerServices.Unsafe.dll</HintPath>
+      <HintPath>..\..\packages\System.Runtime.CompilerServices.Unsafe.4.5.3\lib\net461\System.Runtime.CompilerServices.Unsafe.dll</HintPath>
     </Reference>
     <Reference Include="System.Security" />
     <Reference Include="System.Security.AccessControl, Version=4.1.3.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
-      <HintPath>..\packages\System.Security.AccessControl.4.7.0\lib\net461\System.Security.AccessControl.dll</HintPath>
+      <HintPath>..\..\packages\System.Security.AccessControl.4.7.0\lib\net461\System.Security.AccessControl.dll</HintPath>
     </Reference>
     <Reference Include="System.Security.Principal.Windows, Version=4.1.3.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
-      <HintPath>..\packages\System.Security.Principal.Windows.4.7.0\lib\net461\System.Security.Principal.Windows.dll</HintPath>
+      <HintPath>..\..\packages\System.Security.Principal.Windows.4.7.0\lib\net461\System.Security.Principal.Windows.dll</HintPath>
     </Reference>
     <Reference Include="System.ServiceModel" />
     <Reference Include="System.Threading.Tasks.Extensions, Version=4.2.0.1, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
-      <HintPath>..\packages\System.Threading.Tasks.Extensions.4.5.4\lib\net461\System.Threading.Tasks.Extensions.dll</HintPath>
+      <HintPath>..\..\packages\System.Threading.Tasks.Extensions.4.5.4\lib\net461\System.Threading.Tasks.Extensions.dll</HintPath>
     </Reference>
     <Reference Include="System.ValueTuple, Version=4.0.3.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
-      <HintPath>..\packages\System.ValueTuple.4.5.0\lib\net461\System.ValueTuple.dll</HintPath>
+      <HintPath>..\..\packages\System.ValueTuple.4.5.0\lib\net461\System.ValueTuple.dll</HintPath>
     </Reference>
     <Reference Include="System.Web" />
     <Reference Include="System.Windows.Forms" />
     <Reference Include="System.Xml" />
     <Reference Condition="'$(OS)' == 'Windows_NT'" Include="irrKlang.NET4, Version=1.1.2.0, Culture=neutral, PublicKeyToken=a854741bd80517c7">
       <SpecificVersion>False</SpecificVersion>
-      <HintPath>..\packages\SIL.Media.9.0.0-beta0154\build\lib\win-x86\irrKlang.NET4.dll</HintPath>
+      <HintPath>..\..\packages\SIL.Media.9.0.0-beta0154\build\lib\win-x86\irrKlang.NET4.dll</HintPath>
     </Reference>
     <Reference Include="System.Core">
       <RequiredTargetFramework>3.5</RequiredTargetFramework>
@@ -222,15 +222,15 @@
     <ProjectGuid>{5F61C809-B6C0-4567-9603-B2198E1AD038}</ProjectGuid>
     <RootNamespace>WeSay.LexicalModel</RootNamespace>
   </PropertyGroup>
-  <Import Project="..\packages\NDesk.DBus.0.15.0\build\NDesk.DBus.targets" Condition="Exists('..\packages\NDesk.DBus.0.15.0\build\NDesk.DBus.targets')" />
+  <Import Project="..\..\packages\NDesk.DBus.0.15.0\build\NDesk.DBus.targets" Condition="Exists('..\..\packages\NDesk.DBus.0.15.0\build\NDesk.DBus.targets')" />
   <Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
     <PropertyGroup>
       <ErrorText>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}.</ErrorText>
     </PropertyGroup>
-    <Error Condition="!Exists('..\packages\NDesk.DBus.0.15.0\build\NDesk.DBus.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\NDesk.DBus.0.15.0\build\NDesk.DBus.targets'))" />
-    <Error Condition="!Exists('..\packages\Icu4c.Win.Min.59.1.7\build\Icu4c.Win.Min.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Icu4c.Win.Min.59.1.7\build\Icu4c.Win.Min.targets'))" />
-    <Error Condition="!Exists('..\packages\SIL.Chorus.Mercurial.3.0.3\build\SIL.Chorus.Mercurial.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\SIL.Chorus.Mercurial.3.0.3\build\SIL.Chorus.Mercurial.targets'))" />
+    <Error Condition="!Exists('..\..\packages\NDesk.DBus.0.15.0\build\NDesk.DBus.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\NDesk.DBus.0.15.0\build\NDesk.DBus.targets'))" />
+    <Error Condition="!Exists('..\..\packages\Icu4c.Win.Min.59.1.7\build\Icu4c.Win.Min.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\Icu4c.Win.Min.59.1.7\build\Icu4c.Win.Min.targets'))" />
+    <Error Condition="!Exists('..\..\packages\SIL.Chorus.Mercurial.3.0.3\build\SIL.Chorus.Mercurial.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\SIL.Chorus.Mercurial.3.0.3\build\SIL.Chorus.Mercurial.targets'))" />
   </Target>
-  <Import Project="..\packages\Icu4c.Win.Min.59.1.7\build\Icu4c.Win.Min.targets" Condition="Exists('..\packages\Icu4c.Win.Min.59.1.7\build\Icu4c.Win.Min.targets')" />
-  <Import Project="..\packages\SIL.Chorus.Mercurial.3.0.3\build\SIL.Chorus.Mercurial.targets" Condition="Exists('..\packages\SIL.Chorus.Mercurial.3.0.3\build\SIL.Chorus.Mercurial.targets')" />
+  <Import Project="..\..\packages\Icu4c.Win.Min.59.1.7\build\Icu4c.Win.Min.targets" Condition="Exists('..\..\packages\Icu4c.Win.Min.59.1.7\build\Icu4c.Win.Min.targets')" />
+  <Import Project="..\..\packages\SIL.Chorus.Mercurial.3.0.3\build\SIL.Chorus.Mercurial.targets" Condition="Exists('..\..\packages\SIL.Chorus.Mercurial.3.0.3\build\SIL.Chorus.Mercurial.targets')" />
 </Project>
\ No newline at end of file
diff --git a/src/LexicalTools.Tests/LexicalTools.Tests.csproj b/src/LexicalTools.Tests/LexicalTools.Tests.csproj
index 9ac5e56b2..a23630356 100755
--- a/src/LexicalTools.Tests/LexicalTools.Tests.csproj
+++ b/src/LexicalTools.Tests/LexicalTools.Tests.csproj
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="12.0">
-  <Import Project="..\packages\NUnit.3.13.1\build\NUnit.props" Condition="Exists('..\packages\NUnit.3.13.1\build\NUnit.props')" />
+  <Import Project="..\..\packages\NUnit.3.13.1\build\NUnit.props" Condition="Exists('..\..\packages\NUnit.3.13.1\build\NUnit.props')" />
   <PropertyGroup>
     <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
@@ -75,92 +75,92 @@
   </PropertyGroup>
   <ItemGroup>
     <Reference Include="Autofac, Version=4.1.1.0, Culture=neutral, PublicKeyToken=17863af14b0044da, processorArchitecture=MSIL">
-      <HintPath>..\packages\Autofac.4.1.1\lib\net45\Autofac.dll</HintPath>
+      <HintPath>..\..\packages\Autofac.4.1.1\lib\net45\Autofac.dll</HintPath>
     </Reference>
     <Reference Include="Chorus, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
       <SpecificVersion>False</SpecificVersion>
       <ExecutableExtension>.exe</ExecutableExtension>
-      <HintPath>..\packages\SIL.Chorus.App.5.0.0-beta0017\lib\net461\Chorus.exe</HintPath>
+      <HintPath>..\..\packages\SIL.Chorus.App.5.0.0-beta0017\lib\net461\Chorus.exe</HintPath>
     </Reference>
     <Reference Include="Commons.Xml.Relaxng, Version=4.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756, processorArchitecture=MSIL">
-      <HintPath>..\packages\RelaxNG.3.2.3\lib\net40\Commons.Xml.Relaxng.dll</HintPath>
+      <HintPath>..\..\packages\RelaxNG.3.2.3\lib\net40\Commons.Xml.Relaxng.dll</HintPath>
     </Reference>
     <Reference Include="DialogAdapters, Version=0.1.9.0, Culture=neutral, PublicKeyToken=7dc842182b0626dc, processorArchitecture=MSIL">
-      <HintPath>..\packages\DialogAdapters.Gtk2.0.1.9\lib\net461\DialogAdapters.dll</HintPath>
+      <HintPath>..\..\packages\DialogAdapters.Gtk2.0.1.9\lib\net461\DialogAdapters.dll</HintPath>
     </Reference>
     <Reference Include="Enchant.Net, Version=1.4.0.0, Culture=neutral, PublicKeyToken=ae135aeb3d479ab9, processorArchitecture=MSIL">
-      <HintPath>..\packages\Enchant.Net.1.4.2\lib\net461\Enchant.Net.dll</HintPath>
+      <HintPath>..\..\packages\Enchant.Net.1.4.2\lib\net461\Enchant.Net.dll</HintPath>
     </Reference>
     <Reference Include="ibusdotnet, Version=2.0.0.0, Culture=neutral, PublicKeyToken=c9ab93f7b23223fb, processorArchitecture=MSIL">
-      <HintPath>..\packages\ibusdotnet.2.0.3\lib\net461\ibusdotnet.dll</HintPath>
+      <HintPath>..\..\packages\ibusdotnet.2.0.3\lib\net461\ibusdotnet.dll</HintPath>
     </Reference>
     <Reference Include="icu.net, Version=2.7.0.0, Culture=neutral, PublicKeyToken=416fdd914afa6b66, processorArchitecture=MSIL">
       <SpecificVersion>False</SpecificVersion>
-      <HintPath>..\packages\icu.net.2.7.1\lib\net451\icu.net.dll</HintPath>
+      <HintPath>..\..\packages\icu.net.2.7.1\lib\net451\icu.net.dll</HintPath>
     </Reference>
     <Reference Include="JetBrains.Annotations, Version=2021.2.0.0, Culture=neutral, PublicKeyToken=1010a0d8d6380325, processorArchitecture=MSIL">
-      <HintPath>..\packages\JetBrains.Annotations.2021.2.0\lib\net20\JetBrains.Annotations.dll</HintPath>
+      <HintPath>..\..\packages\JetBrains.Annotations.2021.2.0\lib\net20\JetBrains.Annotations.dll</HintPath>
     </Reference>
     <Reference Include="L10NSharp, Version=5.0.0.0, Culture=neutral, PublicKeyToken=fd0b3e309a5b7c28, processorArchitecture=MSIL">
-      <HintPath>..\packages\L10NSharp.5.0.0-beta0086\lib\net461\L10NSharp.dll</HintPath>
+      <HintPath>..\..\packages\L10NSharp.5.0.0-beta0086\lib\net461\L10NSharp.dll</HintPath>
     </Reference>
     <Reference Include="LibChorus, Version=5.0.0.0, Culture=neutral, PublicKeyToken=f1447bae1e63f485, processorArchitecture=MSIL">
-      <HintPath>..\packages\SIL.Chorus.LibChorus.5.0.0-beta0017\lib\net461\LibChorus.dll</HintPath>
+      <HintPath>..\..\packages\SIL.Chorus.LibChorus.5.0.0-beta0017\lib\net461\LibChorus.dll</HintPath>
     </Reference>
     <Reference Include="Markdig.Signed, Version=0.22.0.0, Culture=neutral, PublicKeyToken=870da25a133885f8, processorArchitecture=MSIL">
-      <HintPath>..\packages\Markdig.Signed.0.22.0\lib\net452\Markdig.Signed.dll</HintPath>
+      <HintPath>..\..\packages\Markdig.Signed.0.22.0\lib\net452\Markdig.Signed.dll</HintPath>
     </Reference>
     <Reference Include="Microsoft.Bcl.AsyncInterfaces, Version=5.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
-      <HintPath>..\packages\Microsoft.Bcl.AsyncInterfaces.5.0.0\lib\net461\Microsoft.Bcl.AsyncInterfaces.dll</HintPath>
+      <HintPath>..\..\packages\Microsoft.Bcl.AsyncInterfaces.5.0.0\lib\net461\Microsoft.Bcl.AsyncInterfaces.dll</HintPath>
     </Reference>
     <Reference Include="Microsoft.DotNet.PlatformAbstractions, Version=2.0.4.0, Culture=neutral, PublicKeyToken=adb9793829ddae60, processorArchitecture=MSIL">
-      <HintPath>..\packages\Microsoft.DotNet.PlatformAbstractions.2.0.4\lib\net45\Microsoft.DotNet.PlatformAbstractions.dll</HintPath>
+      <HintPath>..\..\packages\Microsoft.DotNet.PlatformAbstractions.2.0.4\lib\net45\Microsoft.DotNet.PlatformAbstractions.dll</HintPath>
     </Reference>
     <Reference Include="Microsoft.Extensions.DependencyModel, Version=2.0.4.0, Culture=neutral, PublicKeyToken=adb9793829ddae60, processorArchitecture=MSIL">
-      <HintPath>..\packages\Microsoft.Extensions.DependencyModel.2.0.4\lib\net451\Microsoft.Extensions.DependencyModel.dll</HintPath>
+      <HintPath>..\..\packages\Microsoft.Extensions.DependencyModel.2.0.4\lib\net451\Microsoft.Extensions.DependencyModel.dll</HintPath>
     </Reference>
     <Reference Include="Microsoft.VisualBasic" />
     <Reference Include="NDesk.DBus, Version=1.0.0.0, Culture=neutral, PublicKeyToken=f6716e4f9b2ed099, processorArchitecture=MSIL">
-      <HintPath>..\packages\NDesk.DBus.0.15.0\lib\NDesk.DBus.dll</HintPath>
+      <HintPath>..\..\packages\NDesk.DBus.0.15.0\lib\NDesk.DBus.dll</HintPath>
     </Reference>
     <Reference Include="Newtonsoft.Json, Version=12.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
       <SpecificVersion>False</SpecificVersion>
-      <HintPath>..\packages\Newtonsoft.Json.12.0.3\lib\net45\Newtonsoft.Json.dll</HintPath>
+      <HintPath>..\..\packages\Newtonsoft.Json.12.0.3\lib\net45\Newtonsoft.Json.dll</HintPath>
     </Reference>
     <Reference Include="nunit.framework, Version=3.13.1.0, Culture=neutral, PublicKeyToken=2638cd05610744eb, processorArchitecture=MSIL">
       <SpecificVersion>False</SpecificVersion>
-      <HintPath>..\packages\NUnit.3.13.1\lib\net45\nunit.framework.dll</HintPath>
+      <HintPath>..\..\packages\NUnit.3.13.1\lib\net45\nunit.framework.dll</HintPath>
     </Reference>
     <Reference Include="SIL.Core, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
-      <HintPath>..\packages\SIL.Core.9.0.0-beta0154\lib\net461\SIL.Core.dll</HintPath>
+      <HintPath>..\..\packages\SIL.Core.9.0.0-beta0154\lib\net461\SIL.Core.dll</HintPath>
     </Reference>
     <Reference Include="SIL.Core.Desktop, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
-      <HintPath>..\packages\SIL.Core.Desktop.9.0.0-beta0154\lib\net461\SIL.Core.Desktop.dll</HintPath>
+      <HintPath>..\..\packages\SIL.Core.Desktop.9.0.0-beta0154\lib\net461\SIL.Core.Desktop.dll</HintPath>
     </Reference>
     <Reference Include="SIL.DictionaryServices, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
-      <HintPath>..\packages\SIL.DictionaryServices.9.0.0-beta0154\lib\net461\SIL.DictionaryServices.dll</HintPath>
+      <HintPath>..\..\packages\SIL.DictionaryServices.9.0.0-beta0154\lib\net461\SIL.DictionaryServices.dll</HintPath>
     </Reference>
     <Reference Include="SIL.Lift, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
-      <HintPath>..\packages\SIL.Lift.9.0.0-beta0154\lib\net461\SIL.Lift.dll</HintPath>
+      <HintPath>..\..\packages\SIL.Lift.9.0.0-beta0154\lib\net461\SIL.Lift.dll</HintPath>
     </Reference>
     <Reference Include="SIL.TestUtilities, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
-      <HintPath>..\packages\SIL.TestUtilities.9.0.0-beta0154\lib\net461\SIL.TestUtilities.dll</HintPath>
+      <HintPath>..\..\packages\SIL.TestUtilities.9.0.0-beta0154\lib\net461\SIL.TestUtilities.dll</HintPath>
     </Reference>
     <Reference Include="SIL.Windows.Forms, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
-      <HintPath>..\packages\SIL.Windows.Forms.9.0.0-beta0154\lib\net461\SIL.Windows.Forms.dll</HintPath>
+      <HintPath>..\..\packages\SIL.Windows.Forms.9.0.0-beta0154\lib\net461\SIL.Windows.Forms.dll</HintPath>
     </Reference>
     <Reference Include="SIL.Windows.Forms.Keyboarding, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
-      <HintPath>..\packages\SIL.Windows.Forms.Keyboarding.9.0.0-beta0154\lib\net461\SIL.Windows.Forms.Keyboarding.dll</HintPath>
+      <HintPath>..\..\packages\SIL.Windows.Forms.Keyboarding.9.0.0-beta0154\lib\net461\SIL.Windows.Forms.Keyboarding.dll</HintPath>
     </Reference>
     <Reference Include="SIL.WritingSystems, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
-      <HintPath>..\packages\SIL.WritingSystems.9.0.0-beta0154\lib\net461\SIL.WritingSystems.dll</HintPath>
+      <HintPath>..\..\packages\SIL.WritingSystems.9.0.0-beta0154\lib\net461\SIL.WritingSystems.dll</HintPath>
     </Reference>
     <Reference Include="Spart, Version=1.0.0.0, Culture=neutral, PublicKeyToken=14d24e064e474331, processorArchitecture=MSIL">
-      <HintPath>..\packages\Spart.1.0.0\lib\net461\Spart.dll</HintPath>
+      <HintPath>..\..\packages\Spart.1.0.0\lib\net461\Spart.dll</HintPath>
     </Reference>
     <Reference Include="System" />
     <Reference Include="System.Buffers, Version=4.0.3.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
-      <HintPath>..\packages\System.Buffers.4.5.1\lib\net461\System.Buffers.dll</HintPath>
+      <HintPath>..\..\packages\System.Buffers.4.5.1\lib\net461\System.Buffers.dll</HintPath>
     </Reference>
     <Reference Include="System.ComponentModel.Composition" />
     <Reference Include="System.Configuration" />
@@ -170,38 +170,38 @@
     <Reference Include="System.Data" />
     <Reference Include="System.Drawing" />
     <Reference Include="System.IO.FileSystem.AccessControl, Version=4.0.5.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
-      <HintPath>..\packages\System.IO.FileSystem.AccessControl.4.7.0\lib\net461\System.IO.FileSystem.AccessControl.dll</HintPath>
+      <HintPath>..\..\packages\System.IO.FileSystem.AccessControl.4.7.0\lib\net461\System.IO.FileSystem.AccessControl.dll</HintPath>
     </Reference>
     <Reference Include="System.Management" />
     <Reference Include="System.Memory, Version=4.0.1.1, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
-      <HintPath>..\packages\System.Memory.4.5.4\lib\net461\System.Memory.dll</HintPath>
+      <HintPath>..\..\packages\System.Memory.4.5.4\lib\net461\System.Memory.dll</HintPath>
     </Reference>
     <Reference Include="System.Numerics" />
     <Reference Include="System.Numerics.Vectors, Version=4.1.4.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
-      <HintPath>..\packages\System.Numerics.Vectors.4.5.0\lib\net46\System.Numerics.Vectors.dll</HintPath>
+      <HintPath>..\..\packages\System.Numerics.Vectors.4.5.0\lib\net46\System.Numerics.Vectors.dll</HintPath>
     </Reference>
     <Reference Include="System.Runtime.CompilerServices.Unsafe, Version=4.0.4.1, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
-      <HintPath>..\packages\System.Runtime.CompilerServices.Unsafe.4.5.3\lib\net461\System.Runtime.CompilerServices.Unsafe.dll</HintPath>
+      <HintPath>..\..\packages\System.Runtime.CompilerServices.Unsafe.4.5.3\lib\net461\System.Runtime.CompilerServices.Unsafe.dll</HintPath>
     </Reference>
     <Reference Include="System.Security" />
     <Reference Include="System.Security.AccessControl, Version=4.1.3.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
-      <HintPath>..\packages\System.Security.AccessControl.4.7.0\lib\net461\System.Security.AccessControl.dll</HintPath>
+      <HintPath>..\..\packages\System.Security.AccessControl.4.7.0\lib\net461\System.Security.AccessControl.dll</HintPath>
     </Reference>
     <Reference Include="System.Security.Principal.Windows, Version=4.1.3.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
-      <HintPath>..\packages\System.Security.Principal.Windows.4.7.0\lib\net461\System.Security.Principal.Windows.dll</HintPath>
+      <HintPath>..\..\packages\System.Security.Principal.Windows.4.7.0\lib\net461\System.Security.Principal.Windows.dll</HintPath>
     </Reference>
     <Reference Include="System.ServiceModel" />
     <Reference Include="System.Threading.Tasks.Extensions, Version=4.2.0.1, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
-      <HintPath>..\packages\System.Threading.Tasks.Extensions.4.5.4\lib\net461\System.Threading.Tasks.Extensions.dll</HintPath>
+      <HintPath>..\..\packages\System.Threading.Tasks.Extensions.4.5.4\lib\net461\System.Threading.Tasks.Extensions.dll</HintPath>
     </Reference>
     <Reference Include="System.ValueTuple, Version=4.0.3.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
-      <HintPath>..\packages\System.ValueTuple.4.5.0\lib\net461\System.ValueTuple.dll</HintPath>
+      <HintPath>..\..\packages\System.ValueTuple.4.5.0\lib\net461\System.ValueTuple.dll</HintPath>
     </Reference>
     <Reference Include="System.Web" />
     <Reference Include="System.Windows.Forms" />
     <Reference Include="System.Xml" />
     <Reference Include="TagLibSharp, Version=2.2.0.0, Culture=neutral, PublicKeyToken=db62eba44689b5b0, processorArchitecture=MSIL">
-      <HintPath>..\packages\TagLibSharp.2.2.0\lib\net45\TagLibSharp.dll</HintPath>
+      <HintPath>..\..\packages\TagLibSharp.2.2.0\lib\net45\TagLibSharp.dll</HintPath>
     </Reference>
   </ItemGroup>
   <ItemGroup>
@@ -275,24 +275,24 @@
     <None Include="icu4c.readme.txt" />
   </ItemGroup>
   <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
-  <Import Project="..\packages\NDesk.DBus.0.15.0\build\NDesk.DBus.targets" Condition="Exists('..\packages\NDesk.DBus.0.15.0\build\NDesk.DBus.targets')" />
+  <Import Project="..\..\packages\NDesk.DBus.0.15.0\build\NDesk.DBus.targets" Condition="Exists('..\..\packages\NDesk.DBus.0.15.0\build\NDesk.DBus.targets')" />
   <Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
     <PropertyGroup>
       <ErrorText>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}.</ErrorText>
     </PropertyGroup>
-    <Error Condition="!Exists('..\packages\NDesk.DBus.0.15.0\build\NDesk.DBus.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\NDesk.DBus.0.15.0\build\NDesk.DBus.targets'))" />
-    <Error Condition="!Exists('..\packages\Mono.Posix.5.4.0.201\build\net45\Mono.Posix.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Mono.Posix.5.4.0.201\build\net45\Mono.Posix.targets'))" />
-    <Error Condition="!Exists('..\packages\NUnit.3.13.1\build\NUnit.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\NUnit.3.13.1\build\NUnit.props'))" />
-    <Error Condition="!Exists('..\packages\Icu4c.Win.Min.59.1.7\build\Icu4c.Win.Min.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Icu4c.Win.Min.59.1.7\build\Icu4c.Win.Min.targets'))" />
-    <Error Condition="!Exists('..\packages\SIL.Chorus.Mercurial.3.0.3\build\SIL.Chorus.Mercurial.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\SIL.Chorus.Mercurial.3.0.3\build\SIL.Chorus.Mercurial.targets'))" />
-    <Error Condition="!Exists('..\packages\SIL.Windows.Forms.Keyboarding.9.0.0-beta0154\build\SIL.Windows.Forms.Keyboarding.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\SIL.Windows.Forms.Keyboarding.9.0.0-beta0154\build\SIL.Windows.Forms.Keyboarding.targets'))" />
-    <Error Condition="!Exists('..\packages\SIL.Windows.Forms.9.0.0-beta0154\build\SIL.Windows.Forms.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\SIL.Windows.Forms.9.0.0-beta0154\build\SIL.Windows.Forms.targets'))" />
+    <Error Condition="!Exists('..\..\packages\NDesk.DBus.0.15.0\build\NDesk.DBus.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\NDesk.DBus.0.15.0\build\NDesk.DBus.targets'))" />
+    <Error Condition="!Exists('..\..\packages\Mono.Posix.5.4.0.201\build\net45\Mono.Posix.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\Mono.Posix.5.4.0.201\build\net45\Mono.Posix.targets'))" />
+    <Error Condition="!Exists('..\..\packages\NUnit.3.13.1\build\NUnit.props')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\NUnit.3.13.1\build\NUnit.props'))" />
+    <Error Condition="!Exists('..\..\packages\Icu4c.Win.Min.59.1.7\build\Icu4c.Win.Min.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\Icu4c.Win.Min.59.1.7\build\Icu4c.Win.Min.targets'))" />
+    <Error Condition="!Exists('..\..\packages\SIL.Chorus.Mercurial.3.0.3\build\SIL.Chorus.Mercurial.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\SIL.Chorus.Mercurial.3.0.3\build\SIL.Chorus.Mercurial.targets'))" />
+    <Error Condition="!Exists('..\..\packages\SIL.Windows.Forms.Keyboarding.9.0.0-beta0154\build\SIL.Windows.Forms.Keyboarding.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\SIL.Windows.Forms.Keyboarding.9.0.0-beta0154\build\SIL.Windows.Forms.Keyboarding.targets'))" />
+    <Error Condition="!Exists('..\..\packages\SIL.Windows.Forms.9.0.0-beta0154\build\SIL.Windows.Forms.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\SIL.Windows.Forms.9.0.0-beta0154\build\SIL.Windows.Forms.targets'))" />
   </Target>
-  <Import Project="..\packages\Mono.Posix.5.4.0.201\build\net45\Mono.Posix.targets" Condition="Exists('..\packages\Mono.Posix.5.4.0.201\build\net45\Mono.Posix.targets')" />
-  <Import Project="..\packages\Icu4c.Win.Min.59.1.7\build\Icu4c.Win.Min.targets" Condition="Exists('..\packages\Icu4c.Win.Min.59.1.7\build\Icu4c.Win.Min.targets')" />
-  <Import Project="..\packages\SIL.Chorus.Mercurial.3.0.3\build\SIL.Chorus.Mercurial.targets" Condition="Exists('..\packages\SIL.Chorus.Mercurial.3.0.3\build\SIL.Chorus.Mercurial.targets')" />
-  <Import Project="..\packages\SIL.Windows.Forms.Keyboarding.9.0.0-beta0154\build\SIL.Windows.Forms.Keyboarding.targets" Condition="Exists('..\packages\SIL.Windows.Forms.Keyboarding.9.0.0-beta0154\build\SIL.Windows.Forms.Keyboarding.targets')" />
-  <Import Project="..\packages\SIL.Windows.Forms.9.0.0-beta0154\build\SIL.Windows.Forms.targets" Condition="Exists('..\packages\SIL.Windows.Forms.9.0.0-beta0154\build\SIL.Windows.Forms.targets')" />
+  <Import Project="..\..\packages\Mono.Posix.5.4.0.201\build\net45\Mono.Posix.targets" Condition="Exists('..\..\packages\Mono.Posix.5.4.0.201\build\net45\Mono.Posix.targets')" />
+  <Import Project="..\..\packages\Icu4c.Win.Min.59.1.7\build\Icu4c.Win.Min.targets" Condition="Exists('..\..\packages\Icu4c.Win.Min.59.1.7\build\Icu4c.Win.Min.targets')" />
+  <Import Project="..\..\packages\SIL.Chorus.Mercurial.3.0.3\build\SIL.Chorus.Mercurial.targets" Condition="Exists('..\..\packages\SIL.Chorus.Mercurial.3.0.3\build\SIL.Chorus.Mercurial.targets')" />
+  <Import Project="..\..\packages\SIL.Windows.Forms.Keyboarding.9.0.0-beta0154\build\SIL.Windows.Forms.Keyboarding.targets" Condition="Exists('..\..\packages\SIL.Windows.Forms.Keyboarding.9.0.0-beta0154\build\SIL.Windows.Forms.Keyboarding.targets')" />
+  <Import Project="..\..\packages\SIL.Windows.Forms.9.0.0-beta0154\build\SIL.Windows.Forms.targets" Condition="Exists('..\..\packages\SIL.Windows.Forms.9.0.0-beta0154\build\SIL.Windows.Forms.targets')" />
   <!-- To modify your build process, add your task inside one of the targets below and uncomment it.
 	   Other similar extension points exist, see Microsoft.Common.targets.
   <Target Name="BeforeBuild">
diff --git a/src/LexicalTools/LexicalTools.csproj b/src/LexicalTools/LexicalTools.csproj
index 96fa3e670..374caea54 100755
--- a/src/LexicalTools/LexicalTools.csproj
+++ b/src/LexicalTools/LexicalTools.csproj
@@ -70,66 +70,66 @@
   </PropertyGroup>
   <ItemGroup>
     <Reference Include="Autofac, Version=4.1.1.0, Culture=neutral, PublicKeyToken=17863af14b0044da, processorArchitecture=MSIL">
-      <HintPath>..\packages\Autofac.4.1.1\lib\net45\Autofac.dll</HintPath>
+      <HintPath>..\..\packages\Autofac.4.1.1\lib\net45\Autofac.dll</HintPath>
     </Reference>
     <Reference Include="Chorus, Version=3.1.0.0, Culture=neutral, PublicKeyToken=f1447bae1e63f485, processorArchitecture=MSIL">
       <SpecificVersion>False</SpecificVersion>
-      <HintPath>..\packages\SIL.Chorus.App.5.0.0-beta0017\lib\net461\Chorus.exe</HintPath>
+      <HintPath>..\..\packages\SIL.Chorus.App.5.0.0-beta0017\lib\net461\Chorus.exe</HintPath>
     </Reference>
     <Reference Include="Commons.Xml.Relaxng, Version=4.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756, processorArchitecture=MSIL">
-      <HintPath>..\packages\RelaxNG.3.2.3\lib\net40\Commons.Xml.Relaxng.dll</HintPath>
+      <HintPath>..\..\packages\RelaxNG.3.2.3\lib\net40\Commons.Xml.Relaxng.dll</HintPath>
     </Reference>
     <Reference Include="Enchant.Net, Version=1.4.3.1, Culture=neutral, processorArchitecture=MSIL">
       <SpecificVersion>False</SpecificVersion>
-      <HintPath>..\packages\Enchant.Net.1.4.2\lib\net461\Enchant.Net.dll</HintPath>
+      <HintPath>..\..\packages\Enchant.Net.1.4.2\lib\net461\Enchant.Net.dll</HintPath>
     </Reference>
     <Reference Include="icu.net, Version=2.7.0.0, Culture=neutral, PublicKeyToken=416fdd914afa6b66, processorArchitecture=MSIL">
-      <HintPath>..\packages\icu.net.2.7.1\lib\net451\icu.net.dll</HintPath>
+      <HintPath>..\..\packages\icu.net.2.7.1\lib\net451\icu.net.dll</HintPath>
     </Reference>
     <Reference Include="LibChorus, Version=5.0.0.0, Culture=neutral, PublicKeyToken=f1447bae1e63f485, processorArchitecture=MSIL">
       <SpecificVersion>False</SpecificVersion>
-      <HintPath>..\packages\SIL.Chorus.LibChorus.5.0.0-beta0017\lib\net461\LibChorus.dll</HintPath>
+      <HintPath>..\..\packages\SIL.Chorus.LibChorus.5.0.0-beta0017\lib\net461\LibChorus.dll</HintPath>
     </Reference>
     <Reference Include="Microsoft.Bcl.AsyncInterfaces, Version=5.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
-      <HintPath>..\packages\Microsoft.Bcl.AsyncInterfaces.5.0.0\lib\net461\Microsoft.Bcl.AsyncInterfaces.dll</HintPath>
+      <HintPath>..\..\packages\Microsoft.Bcl.AsyncInterfaces.5.0.0\lib\net461\Microsoft.Bcl.AsyncInterfaces.dll</HintPath>
     </Reference>
     <Reference Include="Microsoft.DotNet.PlatformAbstractions, Version=2.0.4.0, Culture=neutral, PublicKeyToken=adb9793829ddae60, processorArchitecture=MSIL">
-      <HintPath>..\packages\Microsoft.DotNet.PlatformAbstractions.2.0.4\lib\net45\Microsoft.DotNet.PlatformAbstractions.dll</HintPath>
+      <HintPath>..\..\packages\Microsoft.DotNet.PlatformAbstractions.2.0.4\lib\net45\Microsoft.DotNet.PlatformAbstractions.dll</HintPath>
     </Reference>
     <Reference Include="Microsoft.Extensions.DependencyModel, Version=2.0.4.0, Culture=neutral, PublicKeyToken=adb9793829ddae60, processorArchitecture=MSIL">
-      <HintPath>..\packages\Microsoft.Extensions.DependencyModel.2.0.4\lib\net451\Microsoft.Extensions.DependencyModel.dll</HintPath>
+      <HintPath>..\..\packages\Microsoft.Extensions.DependencyModel.2.0.4\lib\net451\Microsoft.Extensions.DependencyModel.dll</HintPath>
     </Reference>
     <Reference Include="Mono.Addins, Version=1.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756, processorArchitecture=MSIL">
-      <HintPath>..\packages\Mono.Addins.1.3.8\lib\net45\Mono.Addins.dll</HintPath>
+      <HintPath>..\..\packages\Mono.Addins.1.3.8\lib\net45\Mono.Addins.dll</HintPath>
     </Reference>
     <Reference Include="Newtonsoft.Json, Version=11.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
-      <HintPath>..\packages\Newtonsoft.Json.11.0.1\lib\net45\Newtonsoft.Json.dll</HintPath>
+      <HintPath>..\..\packages\Newtonsoft.Json.11.0.1\lib\net45\Newtonsoft.Json.dll</HintPath>
     </Reference>
     <Reference Include="SIL.Core, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
-      <HintPath>..\packages\SIL.Core.9.0.0-beta0154\lib\net461\SIL.Core.dll</HintPath>
+      <HintPath>..\..\packages\SIL.Core.9.0.0-beta0154\lib\net461\SIL.Core.dll</HintPath>
     </Reference>
     <Reference Include="SIL.Core.Desktop, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
-      <HintPath>..\packages\SIL.Core.Desktop.9.0.0-beta0154\lib\net461\SIL.Core.Desktop.dll</HintPath>
+      <HintPath>..\..\packages\SIL.Core.Desktop.9.0.0-beta0154\lib\net461\SIL.Core.Desktop.dll</HintPath>
     </Reference>
     <Reference Include="SIL.DictionaryServices, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
-      <HintPath>..\packages\SIL.DictionaryServices.9.0.0-beta0154\lib\net461\SIL.DictionaryServices.dll</HintPath>
+      <HintPath>..\..\packages\SIL.DictionaryServices.9.0.0-beta0154\lib\net461\SIL.DictionaryServices.dll</HintPath>
     </Reference>
     <Reference Include="SIL.Lift, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
-      <HintPath>..\packages\SIL.Lift.9.0.0-beta0154\lib\net461\SIL.Lift.dll</HintPath>
+      <HintPath>..\..\packages\SIL.Lift.9.0.0-beta0154\lib\net461\SIL.Lift.dll</HintPath>
     </Reference>
     <Reference Include="SIL.Windows.Forms, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
       <SpecificVersion>False</SpecificVersion>
-      <HintPath>..\packages\SIL.Windows.Forms.9.0.0-beta0154\lib\net461\SIL.Windows.Forms.dll</HintPath>
+      <HintPath>..\..\packages\SIL.Windows.Forms.9.0.0-beta0154\lib\net461\SIL.Windows.Forms.dll</HintPath>
     </Reference>
     <Reference Include="SIL.Windows.Forms.Keyboarding, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
       <SpecificVersion>False</SpecificVersion>
-      <HintPath>..\packages\SIL.Windows.Forms.Keyboarding.9.0.0-beta0154\lib\net461\SIL.Windows.Forms.Keyboarding.dll</HintPath>
+      <HintPath>..\..\packages\SIL.Windows.Forms.Keyboarding.9.0.0-beta0154\lib\net461\SIL.Windows.Forms.Keyboarding.dll</HintPath>
     </Reference>
     <Reference Include="SIL.WritingSystems, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
-      <HintPath>..\packages\SIL.WritingSystems.9.0.0-beta0154\lib\net461\SIL.WritingSystems.dll</HintPath>
+      <HintPath>..\..\packages\SIL.WritingSystems.9.0.0-beta0154\lib\net461\SIL.WritingSystems.dll</HintPath>
     </Reference>
     <Reference Include="Spart, Version=1.0.0.0, Culture=neutral, PublicKeyToken=14d24e064e474331, processorArchitecture=MSIL">
-      <HintPath>..\packages\Spart.1.0.0\lib\net461\Spart.dll</HintPath>
+      <HintPath>..\..\packages\Spart.1.0.0\lib\net461\Spart.dll</HintPath>
     </Reference>
     <Reference Include="System" />
     <Reference Include="System.ComponentModel.Composition" />
@@ -140,24 +140,24 @@
     <Reference Include="System.Data" />
     <Reference Include="System.Drawing" />
     <Reference Include="System.IO.FileSystem.AccessControl, Version=4.0.5.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
-      <HintPath>..\packages\System.IO.FileSystem.AccessControl.4.7.0\lib\net461\System.IO.FileSystem.AccessControl.dll</HintPath>
+      <HintPath>..\..\packages\System.IO.FileSystem.AccessControl.4.7.0\lib\net461\System.IO.FileSystem.AccessControl.dll</HintPath>
     </Reference>
     <Reference Include="System.Management" />
     <Reference Include="System.Runtime.CompilerServices.Unsafe, Version=4.0.4.1, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
-      <HintPath>..\packages\System.Runtime.CompilerServices.Unsafe.4.5.3\lib\net461\System.Runtime.CompilerServices.Unsafe.dll</HintPath>
+      <HintPath>..\..\packages\System.Runtime.CompilerServices.Unsafe.4.5.3\lib\net461\System.Runtime.CompilerServices.Unsafe.dll</HintPath>
     </Reference>
     <Reference Include="System.Security" />
     <Reference Include="System.Security.AccessControl, Version=4.1.3.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
-      <HintPath>..\packages\System.Security.AccessControl.4.7.0\lib\net461\System.Security.AccessControl.dll</HintPath>
+      <HintPath>..\..\packages\System.Security.AccessControl.4.7.0\lib\net461\System.Security.AccessControl.dll</HintPath>
     </Reference>
     <Reference Include="System.Security.Principal.Windows, Version=4.1.3.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
-      <HintPath>..\packages\System.Security.Principal.Windows.4.7.0\lib\net461\System.Security.Principal.Windows.dll</HintPath>
+      <HintPath>..\..\packages\System.Security.Principal.Windows.4.7.0\lib\net461\System.Security.Principal.Windows.dll</HintPath>
     </Reference>
     <Reference Include="System.Threading.Tasks.Extensions, Version=4.2.0.1, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
-      <HintPath>..\packages\System.Threading.Tasks.Extensions.4.5.4\lib\net461\System.Threading.Tasks.Extensions.dll</HintPath>
+      <HintPath>..\..\packages\System.Threading.Tasks.Extensions.4.5.4\lib\net461\System.Threading.Tasks.Extensions.dll</HintPath>
     </Reference>
     <Reference Include="System.ValueTuple, Version=4.0.3.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
-      <HintPath>..\packages\System.ValueTuple.4.5.0\lib\net461\System.ValueTuple.dll</HintPath>
+      <HintPath>..\..\packages\System.ValueTuple.4.5.0\lib\net461\System.ValueTuple.dll</HintPath>
     </Reference>
     <Reference Include="System.Web" />
     <Reference Include="System.Windows.Forms" />
@@ -452,12 +452,12 @@
     <None Include="Resources\AddWord.png" />
   </ItemGroup>
   <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
-  <Import Project="..\packages\NDesk.DBus.0.15.0\build\NDesk.DBus.targets" Condition="Exists('..\packages\NDesk.DBus.0.15.0\build\NDesk.DBus.targets')" />
+  <Import Project="..\..\packages\NDesk.DBus.0.15.0\build\NDesk.DBus.targets" Condition="Exists('..\..\packages\NDesk.DBus.0.15.0\build\NDesk.DBus.targets')" />
   <Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
     <PropertyGroup>
       <ErrorText>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}.</ErrorText>
     </PropertyGroup>
-    <Error Condition="!Exists('..\packages\NDesk.DBus.0.15.0\build\NDesk.DBus.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\NDesk.DBus.0.15.0\build\NDesk.DBus.targets'))" />
+    <Error Condition="!Exists('..\..\packages\NDesk.DBus.0.15.0\build\NDesk.DBus.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\NDesk.DBus.0.15.0\build\NDesk.DBus.targets'))" />
   </Target>
   <!-- To modify your build process, add your task inside one of the targets below and uncomment it.
 	   Other similar extension points exist, see Microsoft.Common.targets.
diff --git a/src/Lift2WeSay/SampleDataProcessor.csproj b/src/Lift2WeSay/SampleDataProcessor.csproj
index 24bc99dd3..2af26afbf 100755
--- a/src/Lift2WeSay/SampleDataProcessor.csproj
+++ b/src/Lift2WeSay/SampleDataProcessor.csproj
@@ -70,53 +70,53 @@
   </PropertyGroup>
   <ItemGroup>
     <Reference Include="DialogAdapters, Version=0.1.9.0, Culture=neutral, PublicKeyToken=7dc842182b0626dc, processorArchitecture=MSIL">
-      <HintPath>..\packages\DialogAdapters.Gtk2.0.1.9\lib\net461\DialogAdapters.dll</HintPath>
+      <HintPath>..\..\packages\DialogAdapters.Gtk2.0.1.9\lib\net461\DialogAdapters.dll</HintPath>
     </Reference>
     <Reference Include="Enchant.Net, Version=1.4.0.0, Culture=neutral, PublicKeyToken=ae135aeb3d479ab9, processorArchitecture=MSIL">
-      <HintPath>..\packages\Enchant.Net.1.4.2\lib\net461\Enchant.Net.dll</HintPath>
+      <HintPath>..\..\packages\Enchant.Net.1.4.2\lib\net461\Enchant.Net.dll</HintPath>
     </Reference>
     <Reference Include="icu.net, Version=2.7.0.0, Culture=neutral, PublicKeyToken=416fdd914afa6b66, processorArchitecture=MSIL">
-      <HintPath>..\packages\icu.net.2.7.1\lib\net451\icu.net.dll</HintPath>
+      <HintPath>..\..\packages\icu.net.2.7.1\lib\net451\icu.net.dll</HintPath>
     </Reference>
     <Reference Include="JetBrains.Annotations, Version=2021.2.0.0, Culture=neutral, PublicKeyToken=1010a0d8d6380325, processorArchitecture=MSIL">
-      <HintPath>..\packages\JetBrains.Annotations.2021.2.0\lib\net20\JetBrains.Annotations.dll</HintPath>
+      <HintPath>..\..\packages\JetBrains.Annotations.2021.2.0\lib\net20\JetBrains.Annotations.dll</HintPath>
     </Reference>
     <Reference Include="L10NSharp, Version=5.0.0.0, Culture=neutral, PublicKeyToken=fd0b3e309a5b7c28, processorArchitecture=MSIL">
-      <HintPath>..\packages\L10NSharp.5.0.0-beta0086\lib\net461\L10NSharp.dll</HintPath>
+      <HintPath>..\..\packages\L10NSharp.5.0.0-beta0086\lib\net461\L10NSharp.dll</HintPath>
     </Reference>
     <Reference Include="Markdig.Signed, Version=0.22.0.0, Culture=neutral, PublicKeyToken=870da25a133885f8, processorArchitecture=MSIL">
-      <HintPath>..\packages\Markdig.Signed.0.22.0\lib\net452\Markdig.Signed.dll</HintPath>
+      <HintPath>..\..\packages\Markdig.Signed.0.22.0\lib\net452\Markdig.Signed.dll</HintPath>
     </Reference>
     <Reference Include="Microsoft.DotNet.PlatformAbstractions, Version=2.0.4.0, Culture=neutral, PublicKeyToken=adb9793829ddae60, processorArchitecture=MSIL">
-      <HintPath>..\packages\Microsoft.DotNet.PlatformAbstractions.2.0.4\lib\net45\Microsoft.DotNet.PlatformAbstractions.dll</HintPath>
+      <HintPath>..\..\packages\Microsoft.DotNet.PlatformAbstractions.2.0.4\lib\net45\Microsoft.DotNet.PlatformAbstractions.dll</HintPath>
     </Reference>
     <Reference Include="Microsoft.Extensions.DependencyModel, Version=2.0.4.0, Culture=neutral, PublicKeyToken=adb9793829ddae60, processorArchitecture=MSIL">
-      <HintPath>..\packages\Microsoft.Extensions.DependencyModel.2.0.4\lib\net451\Microsoft.Extensions.DependencyModel.dll</HintPath>
+      <HintPath>..\..\packages\Microsoft.Extensions.DependencyModel.2.0.4\lib\net451\Microsoft.Extensions.DependencyModel.dll</HintPath>
     </Reference>
     <Reference Include="NDesk.DBus, Version=1.0.0.0, Culture=neutral, PublicKeyToken=f6716e4f9b2ed099, processorArchitecture=MSIL">
-      <HintPath>..\packages\NDesk.DBus.0.15.0\lib\NDesk.DBus.dll</HintPath>
+      <HintPath>..\..\packages\NDesk.DBus.0.15.0\lib\NDesk.DBus.dll</HintPath>
     </Reference>
     <Reference Include="Newtonsoft.Json, Version=12.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
-      <HintPath>..\packages\Newtonsoft.Json.12.0.3\lib\net45\Newtonsoft.Json.dll</HintPath>
+      <HintPath>..\..\packages\Newtonsoft.Json.12.0.3\lib\net45\Newtonsoft.Json.dll</HintPath>
     </Reference>
     <Reference Include="SIL.Core, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
-      <HintPath>..\packages\SIL.Core.9.0.0-beta0154\lib\net461\SIL.Core.dll</HintPath>
+      <HintPath>..\..\packages\SIL.Core.9.0.0-beta0154\lib\net461\SIL.Core.dll</HintPath>
     </Reference>
     <Reference Include="SIL.Core.Desktop, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
-      <HintPath>..\packages\SIL.Core.Desktop.9.0.0-beta0154\lib\net461\SIL.Core.Desktop.dll</HintPath>
+      <HintPath>..\..\packages\SIL.Core.Desktop.9.0.0-beta0154\lib\net461\SIL.Core.Desktop.dll</HintPath>
     </Reference>
     <Reference Include="SIL.Windows.Forms, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
-      <HintPath>..\packages\SIL.Windows.Forms.9.0.0-beta0154\lib\net461\SIL.Windows.Forms.dll</HintPath>
+      <HintPath>..\..\packages\SIL.Windows.Forms.9.0.0-beta0154\lib\net461\SIL.Windows.Forms.dll</HintPath>
     </Reference>
     <Reference Include="SIL.WritingSystems, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
-      <HintPath>..\packages\SIL.WritingSystems.9.0.0-beta0154\lib\net461\SIL.WritingSystems.dll</HintPath>
+      <HintPath>..\..\packages\SIL.WritingSystems.9.0.0-beta0154\lib\net461\SIL.WritingSystems.dll</HintPath>
     </Reference>
     <Reference Include="Spart, Version=1.0.0.0, Culture=neutral, PublicKeyToken=14d24e064e474331, processorArchitecture=MSIL">
-      <HintPath>..\packages\Spart.1.0.0\lib\net461\Spart.dll</HintPath>
+      <HintPath>..\..\packages\Spart.1.0.0\lib\net461\Spart.dll</HintPath>
     </Reference>
     <Reference Include="System" />
     <Reference Include="System.Buffers, Version=4.0.3.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
-      <HintPath>..\packages\System.Buffers.4.5.1\lib\net461\System.Buffers.dll</HintPath>
+      <HintPath>..\..\packages\System.Buffers.4.5.1\lib\net461\System.Buffers.dll</HintPath>
     </Reference>
     <Reference Include="System.Configuration" />
     <Reference Include="System.Core">
@@ -124,35 +124,35 @@
     </Reference>
     <Reference Include="System.Data" />
     <Reference Include="System.IO.FileSystem.AccessControl, Version=4.0.5.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
-      <HintPath>..\packages\System.IO.FileSystem.AccessControl.4.7.0\lib\net461\System.IO.FileSystem.AccessControl.dll</HintPath>
+      <HintPath>..\..\packages\System.IO.FileSystem.AccessControl.4.7.0\lib\net461\System.IO.FileSystem.AccessControl.dll</HintPath>
     </Reference>
     <Reference Include="System.Management" />
     <Reference Include="System.Memory, Version=4.0.1.1, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
-      <HintPath>..\packages\System.Memory.4.5.4\lib\net461\System.Memory.dll</HintPath>
+      <HintPath>..\..\packages\System.Memory.4.5.4\lib\net461\System.Memory.dll</HintPath>
     </Reference>
     <Reference Include="System.Numerics" />
     <Reference Include="System.Numerics.Vectors, Version=4.1.4.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
-      <HintPath>..\packages\System.Numerics.Vectors.4.5.0\lib\net46\System.Numerics.Vectors.dll</HintPath>
+      <HintPath>..\..\packages\System.Numerics.Vectors.4.5.0\lib\net46\System.Numerics.Vectors.dll</HintPath>
     </Reference>
     <Reference Include="System.Runtime.CompilerServices.Unsafe, Version=4.0.4.1, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
-      <HintPath>..\packages\System.Runtime.CompilerServices.Unsafe.4.5.3\lib\net461\System.Runtime.CompilerServices.Unsafe.dll</HintPath>
+      <HintPath>..\..\packages\System.Runtime.CompilerServices.Unsafe.4.5.3\lib\net461\System.Runtime.CompilerServices.Unsafe.dll</HintPath>
     </Reference>
     <Reference Include="System.Security" />
     <Reference Include="System.Security.AccessControl, Version=4.1.3.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
-      <HintPath>..\packages\System.Security.AccessControl.4.7.0\lib\net461\System.Security.AccessControl.dll</HintPath>
+      <HintPath>..\..\packages\System.Security.AccessControl.4.7.0\lib\net461\System.Security.AccessControl.dll</HintPath>
     </Reference>
     <Reference Include="System.Security.Principal.Windows, Version=4.1.3.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
-      <HintPath>..\packages\System.Security.Principal.Windows.4.7.0\lib\net461\System.Security.Principal.Windows.dll</HintPath>
+      <HintPath>..\..\packages\System.Security.Principal.Windows.4.7.0\lib\net461\System.Security.Principal.Windows.dll</HintPath>
     </Reference>
     <Reference Include="System.ServiceModel" />
     <Reference Include="System.ValueTuple, Version=4.0.3.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
-      <HintPath>..\packages\System.ValueTuple.4.5.0\lib\net461\System.ValueTuple.dll</HintPath>
+      <HintPath>..\..\packages\System.ValueTuple.4.5.0\lib\net461\System.ValueTuple.dll</HintPath>
     </Reference>
     <Reference Include="System.Web" />
     <Reference Include="System.Windows.Forms" />
     <Reference Include="System.Xml" />
     <Reference Include="TagLibSharp, Version=2.2.0.0, Culture=neutral, PublicKeyToken=db62eba44689b5b0, processorArchitecture=MSIL">
-      <HintPath>..\packages\TagLibSharp.2.2.0\lib\net45\TagLibSharp.dll</HintPath>
+      <HintPath>..\..\packages\TagLibSharp.2.2.0\lib\net45\TagLibSharp.dll</HintPath>
     </Reference>
   </ItemGroup>
   <ItemGroup>
@@ -189,15 +189,15 @@
     <None Include="packages.config" />
   </ItemGroup>
   <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
-  <Import Project="..\packages\NDesk.DBus.0.15.0\build\NDesk.DBus.targets" Condition="Exists('..\packages\NDesk.DBus.0.15.0\build\NDesk.DBus.targets')" />
+  <Import Project="..\..\packages\NDesk.DBus.0.15.0\build\NDesk.DBus.targets" Condition="Exists('..\..\packages\NDesk.DBus.0.15.0\build\NDesk.DBus.targets')" />
   <Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
     <PropertyGroup>
       <ErrorText>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}.</ErrorText>
     </PropertyGroup>
-    <Error Condition="!Exists('..\packages\NDesk.DBus.0.15.0\build\NDesk.DBus.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\NDesk.DBus.0.15.0\build\NDesk.DBus.targets'))" />
-    <Error Condition="!Exists('..\packages\SIL.Windows.Forms.9.0.0-beta0154\build\SIL.Windows.Forms.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\SIL.Windows.Forms.9.0.0-beta0154\build\SIL.Windows.Forms.targets'))" />
+    <Error Condition="!Exists('..\..\packages\NDesk.DBus.0.15.0\build\NDesk.DBus.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\NDesk.DBus.0.15.0\build\NDesk.DBus.targets'))" />
+    <Error Condition="!Exists('..\..\packages\SIL.Windows.Forms.9.0.0-beta0154\build\SIL.Windows.Forms.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\SIL.Windows.Forms.9.0.0-beta0154\build\SIL.Windows.Forms.targets'))" />
   </Target>
-  <Import Project="..\packages\SIL.Windows.Forms.9.0.0-beta0154\build\SIL.Windows.Forms.targets" Condition="Exists('..\packages\SIL.Windows.Forms.9.0.0-beta0154\build\SIL.Windows.Forms.targets')" />
+  <Import Project="..\..\packages\SIL.Windows.Forms.9.0.0-beta0154\build\SIL.Windows.Forms.targets" Condition="Exists('..\..\packages\SIL.Windows.Forms.9.0.0-beta0154\build\SIL.Windows.Forms.targets')" />
   <!-- To modify your build process, add your task inside one of the targets below and uncomment it.
 	   Other similar extension points exist, see Microsoft.Common.targets.
   <Target Name="BeforeBuild">
diff --git a/src/LiftWordList2Json/LiftWordList2Json.csproj b/src/LiftWordList2Json/LiftWordList2Json.csproj
index f9013758b..253b828ba 100644
--- a/src/LiftWordList2Json/LiftWordList2Json.csproj
+++ b/src/LiftWordList2Json/LiftWordList2Json.csproj
@@ -53,87 +53,87 @@
   </PropertyGroup>
   <ItemGroup>
     <Reference Include="DialogAdapters, Version=0.1.9.0, Culture=neutral, PublicKeyToken=7dc842182b0626dc, processorArchitecture=MSIL">
-      <HintPath>..\packages\DialogAdapters.Gtk2.0.1.9\lib\net461\DialogAdapters.dll</HintPath>
+      <HintPath>..\..\packages\DialogAdapters.Gtk2.0.1.9\lib\net461\DialogAdapters.dll</HintPath>
     </Reference>
     <Reference Include="Enchant.Net, Version=1.4.0.0, Culture=neutral, PublicKeyToken=ae135aeb3d479ab9, processorArchitecture=MSIL">
-      <HintPath>..\packages\Enchant.Net.1.4.2\lib\net461\Enchant.Net.dll</HintPath>
+      <HintPath>..\..\packages\Enchant.Net.1.4.2\lib\net461\Enchant.Net.dll</HintPath>
     </Reference>
     <Reference Include="icu.net, Version=2.7.0.0, Culture=neutral, PublicKeyToken=416fdd914afa6b66, processorArchitecture=MSIL">
-      <HintPath>..\packages\icu.net.2.7.1\lib\net451\icu.net.dll</HintPath>
+      <HintPath>..\..\packages\icu.net.2.7.1\lib\net451\icu.net.dll</HintPath>
     </Reference>
     <Reference Include="JetBrains.Annotations, Version=2021.2.0.0, Culture=neutral, PublicKeyToken=1010a0d8d6380325, processorArchitecture=MSIL">
-      <HintPath>..\packages\JetBrains.Annotations.2021.2.0\lib\net20\JetBrains.Annotations.dll</HintPath>
+      <HintPath>..\..\packages\JetBrains.Annotations.2021.2.0\lib\net20\JetBrains.Annotations.dll</HintPath>
     </Reference>
     <Reference Include="L10NSharp, Version=5.0.0.0, Culture=neutral, PublicKeyToken=fd0b3e309a5b7c28, processorArchitecture=MSIL">
-      <HintPath>..\packages\L10NSharp.5.0.0-beta0086\lib\net461\L10NSharp.dll</HintPath>
+      <HintPath>..\..\packages\L10NSharp.5.0.0-beta0086\lib\net461\L10NSharp.dll</HintPath>
     </Reference>
     <Reference Include="Markdig.Signed, Version=0.22.0.0, Culture=neutral, PublicKeyToken=870da25a133885f8, processorArchitecture=MSIL">
-      <HintPath>..\packages\Markdig.Signed.0.22.0\lib\net452\Markdig.Signed.dll</HintPath>
+      <HintPath>..\..\packages\Markdig.Signed.0.22.0\lib\net452\Markdig.Signed.dll</HintPath>
     </Reference>
     <Reference Include="Microsoft.DotNet.PlatformAbstractions, Version=2.0.4.0, Culture=neutral, PublicKeyToken=adb9793829ddae60, processorArchitecture=MSIL">
-      <HintPath>..\packages\Microsoft.DotNet.PlatformAbstractions.2.0.4\lib\net45\Microsoft.DotNet.PlatformAbstractions.dll</HintPath>
+      <HintPath>..\..\packages\Microsoft.DotNet.PlatformAbstractions.2.0.4\lib\net45\Microsoft.DotNet.PlatformAbstractions.dll</HintPath>
     </Reference>
     <Reference Include="Microsoft.Extensions.DependencyModel, Version=2.0.4.0, Culture=neutral, PublicKeyToken=adb9793829ddae60, processorArchitecture=MSIL">
-      <HintPath>..\packages\Microsoft.Extensions.DependencyModel.2.0.4\lib\net451\Microsoft.Extensions.DependencyModel.dll</HintPath>
+      <HintPath>..\..\packages\Microsoft.Extensions.DependencyModel.2.0.4\lib\net451\Microsoft.Extensions.DependencyModel.dll</HintPath>
     </Reference>
     <Reference Include="NDesk.DBus, Version=1.0.0.0, Culture=neutral, PublicKeyToken=f6716e4f9b2ed099, processorArchitecture=MSIL">
-      <HintPath>..\packages\NDesk.DBus.0.15.0\lib\NDesk.DBus.dll</HintPath>
+      <HintPath>..\..\packages\NDesk.DBus.0.15.0\lib\NDesk.DBus.dll</HintPath>
     </Reference>
     <Reference Include="Newtonsoft.Json, Version=12.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
       <SpecificVersion>False</SpecificVersion>
-      <HintPath>..\packages\Newtonsoft.Json.12.0.3\lib\net45\Newtonsoft.Json.dll</HintPath>
+      <HintPath>..\..\packages\Newtonsoft.Json.12.0.3\lib\net45\Newtonsoft.Json.dll</HintPath>
     </Reference>
     <Reference Include="SIL.Core, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
-      <HintPath>..\packages\SIL.Core.9.0.0-beta0154\lib\net461\SIL.Core.dll</HintPath>
+      <HintPath>..\..\packages\SIL.Core.9.0.0-beta0154\lib\net461\SIL.Core.dll</HintPath>
     </Reference>
     <Reference Include="SIL.Core.Desktop, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
-      <HintPath>..\packages\SIL.Core.Desktop.9.0.0-beta0154\lib\net461\SIL.Core.Desktop.dll</HintPath>
+      <HintPath>..\..\packages\SIL.Core.Desktop.9.0.0-beta0154\lib\net461\SIL.Core.Desktop.dll</HintPath>
     </Reference>
     <Reference Include="SIL.DictionaryServices, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
-      <HintPath>..\packages\SIL.DictionaryServices.9.0.0-beta0154\lib\net461\SIL.DictionaryServices.dll</HintPath>
+      <HintPath>..\..\packages\SIL.DictionaryServices.9.0.0-beta0154\lib\net461\SIL.DictionaryServices.dll</HintPath>
     </Reference>
     <Reference Include="SIL.Lift, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
-      <HintPath>..\packages\SIL.Lift.9.0.0-beta0154\lib\net461\SIL.Lift.dll</HintPath>
+      <HintPath>..\..\packages\SIL.Lift.9.0.0-beta0154\lib\net461\SIL.Lift.dll</HintPath>
     </Reference>
     <Reference Include="SIL.Windows.Forms, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
-      <HintPath>..\packages\SIL.Windows.Forms.9.0.0-beta0154\lib\net461\SIL.Windows.Forms.dll</HintPath>
+      <HintPath>..\..\packages\SIL.Windows.Forms.9.0.0-beta0154\lib\net461\SIL.Windows.Forms.dll</HintPath>
     </Reference>
     <Reference Include="SIL.WritingSystems, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
-      <HintPath>..\packages\SIL.WritingSystems.9.0.0-beta0154\lib\net461\SIL.WritingSystems.dll</HintPath>
+      <HintPath>..\..\packages\SIL.WritingSystems.9.0.0-beta0154\lib\net461\SIL.WritingSystems.dll</HintPath>
     </Reference>
     <Reference Include="Spart, Version=1.0.0.0, Culture=neutral, PublicKeyToken=14d24e064e474331, processorArchitecture=MSIL">
-      <HintPath>..\packages\Spart.1.0.0\lib\net461\Spart.dll</HintPath>
+      <HintPath>..\..\packages\Spart.1.0.0\lib\net461\Spart.dll</HintPath>
     </Reference>
     <Reference Include="System" />
     <Reference Include="System.Buffers, Version=4.0.3.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
-      <HintPath>..\packages\System.Buffers.4.5.1\lib\net461\System.Buffers.dll</HintPath>
+      <HintPath>..\..\packages\System.Buffers.4.5.1\lib\net461\System.Buffers.dll</HintPath>
     </Reference>
     <Reference Include="System.Configuration" />
     <Reference Include="System.Core" />
     <Reference Include="System.IO.FileSystem.AccessControl, Version=4.0.5.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
-      <HintPath>..\packages\System.IO.FileSystem.AccessControl.4.7.0\lib\net461\System.IO.FileSystem.AccessControl.dll</HintPath>
+      <HintPath>..\..\packages\System.IO.FileSystem.AccessControl.4.7.0\lib\net461\System.IO.FileSystem.AccessControl.dll</HintPath>
     </Reference>
     <Reference Include="System.Management" />
     <Reference Include="System.Memory, Version=4.0.1.1, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
-      <HintPath>..\packages\System.Memory.4.5.4\lib\net461\System.Memory.dll</HintPath>
+      <HintPath>..\..\packages\System.Memory.4.5.4\lib\net461\System.Memory.dll</HintPath>
     </Reference>
     <Reference Include="System.Numerics" />
     <Reference Include="System.Numerics.Vectors, Version=4.1.4.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
-      <HintPath>..\packages\System.Numerics.Vectors.4.5.0\lib\net46\System.Numerics.Vectors.dll</HintPath>
+      <HintPath>..\..\packages\System.Numerics.Vectors.4.5.0\lib\net46\System.Numerics.Vectors.dll</HintPath>
     </Reference>
     <Reference Include="System.Runtime.CompilerServices.Unsafe, Version=4.0.4.1, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
-      <HintPath>..\packages\System.Runtime.CompilerServices.Unsafe.4.5.3\lib\net461\System.Runtime.CompilerServices.Unsafe.dll</HintPath>
+      <HintPath>..\..\packages\System.Runtime.CompilerServices.Unsafe.4.5.3\lib\net461\System.Runtime.CompilerServices.Unsafe.dll</HintPath>
     </Reference>
     <Reference Include="System.Security" />
     <Reference Include="System.Security.AccessControl, Version=4.1.3.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
-      <HintPath>..\packages\System.Security.AccessControl.4.7.0\lib\net461\System.Security.AccessControl.dll</HintPath>
+      <HintPath>..\..\packages\System.Security.AccessControl.4.7.0\lib\net461\System.Security.AccessControl.dll</HintPath>
     </Reference>
     <Reference Include="System.Security.Principal.Windows, Version=4.1.3.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
-      <HintPath>..\packages\System.Security.Principal.Windows.4.7.0\lib\net461\System.Security.Principal.Windows.dll</HintPath>
+      <HintPath>..\..\packages\System.Security.Principal.Windows.4.7.0\lib\net461\System.Security.Principal.Windows.dll</HintPath>
     </Reference>
     <Reference Include="System.ServiceModel" />
     <Reference Include="System.ValueTuple, Version=4.0.3.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
-      <HintPath>..\packages\System.ValueTuple.4.5.0\lib\net461\System.ValueTuple.dll</HintPath>
+      <HintPath>..\..\packages\System.ValueTuple.4.5.0\lib\net461\System.ValueTuple.dll</HintPath>
     </Reference>
     <Reference Include="System.Web" />
     <Reference Include="System.Windows.Forms" />
@@ -144,14 +144,14 @@
     <Reference Include="System.Net.Http" />
     <Reference Include="System.Xml" />
     <Reference Include="CommandLine">
-      <HintPath>..\packages\CommandLineParser.1.9.71\lib\net40\CommandLine.dll</HintPath>
+      <HintPath>..\..\packages\CommandLineParser.1.9.71\lib\net40\CommandLine.dll</HintPath>
     </Reference>
     <Reference Include="Commons.Xml.Relaxng, Version=2.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756, processorArchitecture=MSIL">
       <SpecificVersion>False</SpecificVersion>
-      <HintPath>..\packages\RelaxNG.3.2.3\lib\net40\Commons.Xml.Relaxng.dll</HintPath>
+      <HintPath>..\..\packages\RelaxNG.3.2.3\lib\net40\Commons.Xml.Relaxng.dll</HintPath>
     </Reference>
     <Reference Include="TagLibSharp, Version=2.2.0.0, Culture=neutral, PublicKeyToken=db62eba44689b5b0, processorArchitecture=MSIL">
-      <HintPath>..\packages\TagLibSharp.2.2.0\lib\net45\TagLibSharp.dll</HintPath>
+      <HintPath>..\..\packages\TagLibSharp.2.2.0\lib\net45\TagLibSharp.dll</HintPath>
     </Reference>
   </ItemGroup>
   <ItemGroup>
@@ -205,16 +205,16 @@
     </BootstrapperPackage>
   </ItemGroup>
   <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
-  <Import Project="..\packages\NDesk.DBus.0.15.0\build\NDesk.DBus.targets" Condition="Exists('..\packages\NDesk.DBus.0.15.0\build\NDesk.DBus.targets')" />
+  <Import Project="..\..\packages\NDesk.DBus.0.15.0\build\NDesk.DBus.targets" Condition="Exists('..\..\packages\NDesk.DBus.0.15.0\build\NDesk.DBus.targets')" />
   <Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
     <PropertyGroup>
       <ErrorText>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}.</ErrorText>
     </PropertyGroup>
-    <Error Condition="!Exists('..\packages\NDesk.DBus.0.15.0\build\NDesk.DBus.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\NDesk.DBus.0.15.0\build\NDesk.DBus.targets'))" />
-    <Error Condition="!Exists('..\packages\SIL.Windows.Forms.9.0.0-beta0154\build\SIL.Windows.Forms.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\SIL.Windows.Forms.9.0.0-beta0154\build\SIL.Windows.Forms.targets'))" />
+    <Error Condition="!Exists('..\..\packages\NDesk.DBus.0.15.0\build\NDesk.DBus.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\NDesk.DBus.0.15.0\build\NDesk.DBus.targets'))" />
+    <Error Condition="!Exists('..\..\packages\SIL.Windows.Forms.9.0.0-beta0154\build\SIL.Windows.Forms.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\SIL.Windows.Forms.9.0.0-beta0154\build\SIL.Windows.Forms.targets'))" />
   </Target>
-  <Import Project="..\packages\SIL.Windows.Forms.9.0.0-beta0154\build\SIL.Windows.Forms.targets" Condition="Exists('..\packages\SIL.Windows.Forms.9.0.0-beta0154\build\SIL.Windows.Forms.targets')" />
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
+  <Import Project="..\..\packages\SIL.Windows.Forms.9.0.0-beta0154\build\SIL.Windows.Forms.targets" Condition="Exists('..\..\packages\SIL.Windows.Forms.9.0.0-beta0154\build\SIL.Windows.Forms.targets')" />
+  <!-- To modify your build process, add your task inside one of the targets below and uncomment it.
        Other similar extension points exist, see Microsoft.Common.targets.
   <Target Name="BeforeBuild">
   </Target>
diff --git a/src/TreeViewIList.Tests/TreeViewIList.Tests.csproj b/src/TreeViewIList.Tests/TreeViewIList.Tests.csproj
index 98aac043b..c952df944 100644
--- a/src/TreeViewIList.Tests/TreeViewIList.Tests.csproj
+++ b/src/TreeViewIList.Tests/TreeViewIList.Tests.csproj
@@ -32,7 +32,7 @@
 	<Reference Include="glib-sharp, Version=2.8.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f" />
 	<Reference Include="gtk-sharp, Version=2.8.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f" />
     <Reference Include="nunit.framework">
-      <HintPath>..\packages\NUnit.3.13.1\lib\net45\nunit.framework.dll</HintPath>
+      <HintPath>..\..\packages\NUnit.3.13.1\lib\net45\nunit.framework.dll</HintPath>
 	</Reference>
     <None Include="packages.config" />
 	<Reference Include="System" />
diff --git a/src/WeSay.AddinLib.Tests/WeSay.AddinLib.Tests.csproj b/src/WeSay.AddinLib.Tests/WeSay.AddinLib.Tests.csproj
index 439a7feec..1474a0e64 100644
--- a/src/WeSay.AddinLib.Tests/WeSay.AddinLib.Tests.csproj
+++ b/src/WeSay.AddinLib.Tests/WeSay.AddinLib.Tests.csproj
@@ -71,7 +71,7 @@
   </PropertyGroup>
   <ItemGroup>
     <Reference Include="Newtonsoft.Json, Version=12.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
-      <HintPath>..\packages\Newtonsoft.Json.12.0.3\lib\net45\Newtonsoft.Json.dll</HintPath>
+      <HintPath>..\..\packages\Newtonsoft.Json.12.0.3\lib\net45\Newtonsoft.Json.dll</HintPath>
     </Reference>
     <Reference Include="System" />
     <Reference Include="System.Core">
@@ -81,7 +81,7 @@
     <Reference Include="System.Deployment" />
     <Reference Include="System.Xml" />
     <Reference Include="nunit.framework">
-      <HintPath>..\packages\NUnit.3.13.1\lib\net45\nunit.framework.dll</HintPath>
+      <HintPath>..\..\packages\NUnit.3.13.1\lib\net45\nunit.framework.dll</HintPath>
     </Reference>
   </ItemGroup>
   <ItemGroup>
diff --git a/src/WeSay.AddinLib/WeSay.AddinLib.csproj b/src/WeSay.AddinLib/WeSay.AddinLib.csproj
index a4544070c..1b1eb1295 100755
--- a/src/WeSay.AddinLib/WeSay.AddinLib.csproj
+++ b/src/WeSay.AddinLib/WeSay.AddinLib.csproj
@@ -71,23 +71,23 @@
   </PropertyGroup>
   <ItemGroup>
     <Reference Include="Mono.Addins, Version=1.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756, processorArchitecture=MSIL">
-      <HintPath>..\packages\Mono.Addins.1.3.8\lib\net45\Mono.Addins.dll</HintPath>
+      <HintPath>..\..\packages\Mono.Addins.1.3.8\lib\net45\Mono.Addins.dll</HintPath>
     </Reference>
     <Reference Include="SIL.Core">
       <SpecificVersion>False</SpecificVersion>
-      <HintPath>..\packages\SIL.Core.9.0.0-beta0154\lib\net461\SIL.Core.dll</HintPath>
+      <HintPath>..\..\packages\SIL.Core.9.0.0-beta0154\lib\net461\SIL.Core.dll</HintPath>
     </Reference>
     <Reference Include="SIL.Core.Desktop">
       <SpecificVersion>False</SpecificVersion>
-      <HintPath>..\packages\SIL.Core.Desktop.9.0.0-beta0154\lib\net461\SIL.Core.Desktop.dll</HintPath>
+      <HintPath>..\..\packages\SIL.Core.Desktop.9.0.0-beta0154\lib\net461\SIL.Core.Desktop.dll</HintPath>
     </Reference>
     <Reference Include="SIL.Windows.Forms">
       <SpecificVersion>False</SpecificVersion>
-      <HintPath>..\packages\SIL.Windows.Forms.9.0.0-beta0154\lib\net461\SIL.Windows.Forms.dll</HintPath>
+      <HintPath>..\..\packages\SIL.Windows.Forms.9.0.0-beta0154\lib\net461\SIL.Windows.Forms.dll</HintPath>
     </Reference>
     <Reference Include="SIL.WritingSystems">
       <SpecificVersion>False</SpecificVersion>
-      <HintPath>..\packages\SIL.WritingSystems.9.0.0-beta0154\lib\net461\SIL.WritingSystems.dll</HintPath>
+      <HintPath>..\..\packages\SIL.WritingSystems.9.0.0-beta0154\lib\net461\SIL.WritingSystems.dll</HintPath>
     </Reference>
     <None Include="..\..\lib\common\Enchant.Net.dll.config">
       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
diff --git a/src/WeSay.App.Tests/WeSay.App.Tests.csproj b/src/WeSay.App.Tests/WeSay.App.Tests.csproj
index 91bda2cc9..58a55cd42 100644
--- a/src/WeSay.App.Tests/WeSay.App.Tests.csproj
+++ b/src/WeSay.App.Tests/WeSay.App.Tests.csproj
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="12.0">
-  <Import Project="..\packages\NUnit.3.13.1\build\NUnit.props" Condition="Exists('..\packages\NUnit.3.13.1\build\NUnit.props')" />
+  <Import Project="..\..\packages\NUnit.3.13.1\build\NUnit.props" Condition="Exists('..\..\packages\NUnit.3.13.1\build\NUnit.props')" />
   <PropertyGroup>
     <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
@@ -72,71 +72,71 @@
   </PropertyGroup>
   <ItemGroup>
     <Reference Include="Autofac, Version=4.1.1.0, Culture=neutral, PublicKeyToken=17863af14b0044da, processorArchitecture=MSIL">
-      <HintPath>..\packages\Autofac.4.1.1\lib\net45\Autofac.dll</HintPath>
+      <HintPath>..\..\packages\Autofac.4.1.1\lib\net45\Autofac.dll</HintPath>
     </Reference>
     <Reference Include="Commons.Xml.Relaxng, Version=4.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756, processorArchitecture=MSIL">
-      <HintPath>..\packages\RelaxNG.3.2.3\lib\net40\Commons.Xml.Relaxng.dll</HintPath>
+      <HintPath>..\..\packages\RelaxNG.3.2.3\lib\net40\Commons.Xml.Relaxng.dll</HintPath>
     </Reference>
     <Reference Include="DialogAdapters, Version=0.1.9.0, Culture=neutral, PublicKeyToken=7dc842182b0626dc, processorArchitecture=MSIL">
-      <HintPath>..\packages\DialogAdapters.Gtk2.0.1.9\lib\net461\DialogAdapters.dll</HintPath>
+      <HintPath>..\..\packages\DialogAdapters.Gtk2.0.1.9\lib\net461\DialogAdapters.dll</HintPath>
     </Reference>
     <Reference Include="Enchant.Net, Version=1.4.0.0, Culture=neutral, PublicKeyToken=ae135aeb3d479ab9, processorArchitecture=MSIL">
-      <HintPath>..\packages\Enchant.Net.1.4.2\lib\net461\Enchant.Net.dll</HintPath>
+      <HintPath>..\..\packages\Enchant.Net.1.4.2\lib\net461\Enchant.Net.dll</HintPath>
     </Reference>
     <Reference Include="icu.net, Version=2.7.0.0, Culture=neutral, PublicKeyToken=416fdd914afa6b66, processorArchitecture=MSIL">
-      <HintPath>..\packages\icu.net.2.7.1\lib\net451\icu.net.dll</HintPath>
+      <HintPath>..\..\packages\icu.net.2.7.1\lib\net451\icu.net.dll</HintPath>
     </Reference>
     <Reference Include="JetBrains.Annotations, Version=2021.2.0.0, Culture=neutral, PublicKeyToken=1010a0d8d6380325, processorArchitecture=MSIL">
-      <HintPath>..\packages\JetBrains.Annotations.2021.2.0\lib\net20\JetBrains.Annotations.dll</HintPath>
+      <HintPath>..\..\packages\JetBrains.Annotations.2021.2.0\lib\net20\JetBrains.Annotations.dll</HintPath>
     </Reference>
     <Reference Include="L10NSharp, Version=5.0.0.0, Culture=neutral, PublicKeyToken=fd0b3e309a5b7c28, processorArchitecture=MSIL">
-      <HintPath>..\packages\L10NSharp.5.0.0-beta0086\lib\net461\L10NSharp.dll</HintPath>
+      <HintPath>..\..\packages\L10NSharp.5.0.0-beta0086\lib\net461\L10NSharp.dll</HintPath>
     </Reference>
     <Reference Include="Markdig.Signed, Version=0.22.0.0, Culture=neutral, PublicKeyToken=870da25a133885f8, processorArchitecture=MSIL">
-      <HintPath>..\packages\Markdig.Signed.0.22.0\lib\net452\Markdig.Signed.dll</HintPath>
+      <HintPath>..\..\packages\Markdig.Signed.0.22.0\lib\net452\Markdig.Signed.dll</HintPath>
     </Reference>
     <Reference Include="Microsoft.Bcl.AsyncInterfaces, Version=5.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
-      <HintPath>..\packages\Microsoft.Bcl.AsyncInterfaces.5.0.0\lib\net461\Microsoft.Bcl.AsyncInterfaces.dll</HintPath>
+      <HintPath>..\..\packages\Microsoft.Bcl.AsyncInterfaces.5.0.0\lib\net461\Microsoft.Bcl.AsyncInterfaces.dll</HintPath>
     </Reference>
     <Reference Include="Microsoft.DotNet.PlatformAbstractions, Version=2.0.4.0, Culture=neutral, PublicKeyToken=adb9793829ddae60, processorArchitecture=MSIL">
-      <HintPath>..\packages\Microsoft.DotNet.PlatformAbstractions.2.0.4\lib\net45\Microsoft.DotNet.PlatformAbstractions.dll</HintPath>
+      <HintPath>..\..\packages\Microsoft.DotNet.PlatformAbstractions.2.0.4\lib\net45\Microsoft.DotNet.PlatformAbstractions.dll</HintPath>
     </Reference>
     <Reference Include="Microsoft.Extensions.DependencyModel, Version=2.0.4.0, Culture=neutral, PublicKeyToken=adb9793829ddae60, processorArchitecture=MSIL">
-      <HintPath>..\packages\Microsoft.Extensions.DependencyModel.2.0.4\lib\net451\Microsoft.Extensions.DependencyModel.dll</HintPath>
+      <HintPath>..\..\packages\Microsoft.Extensions.DependencyModel.2.0.4\lib\net451\Microsoft.Extensions.DependencyModel.dll</HintPath>
     </Reference>
     <Reference Include="NDesk.DBus, Version=1.0.0.0, Culture=neutral, PublicKeyToken=f6716e4f9b2ed099, processorArchitecture=MSIL">
-      <HintPath>..\packages\NDesk.DBus.0.15.0\lib\NDesk.DBus.dll</HintPath>
+      <HintPath>..\..\packages\NDesk.DBus.0.15.0\lib\NDesk.DBus.dll</HintPath>
     </Reference>
     <Reference Include="Newtonsoft.Json, Version=12.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
-      <HintPath>..\packages\Newtonsoft.Json.12.0.3\lib\net45\Newtonsoft.Json.dll</HintPath>
+      <HintPath>..\..\packages\Newtonsoft.Json.12.0.3\lib\net45\Newtonsoft.Json.dll</HintPath>
     </Reference>
     <Reference Include="nunit.framework, Version=3.13.1.0, Culture=neutral, PublicKeyToken=2638cd05610744eb, processorArchitecture=MSIL">
-      <HintPath>..\packages\NUnit.3.13.1\lib\net45\nunit.framework.dll</HintPath>
+      <HintPath>..\..\packages\NUnit.3.13.1\lib\net45\nunit.framework.dll</HintPath>
     </Reference>
     <Reference Include="SIL.Core, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
-      <HintPath>..\packages\SIL.Core.9.0.0-beta0154\lib\net461\SIL.Core.dll</HintPath>
+      <HintPath>..\..\packages\SIL.Core.9.0.0-beta0154\lib\net461\SIL.Core.dll</HintPath>
     </Reference>
     <Reference Include="SIL.Core.Desktop, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
-      <HintPath>..\packages\SIL.Core.Desktop.9.0.0-beta0154\lib\net461\SIL.Core.Desktop.dll</HintPath>
+      <HintPath>..\..\packages\SIL.Core.Desktop.9.0.0-beta0154\lib\net461\SIL.Core.Desktop.dll</HintPath>
     </Reference>
     <Reference Include="SIL.DictionaryServices, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
-      <HintPath>..\packages\SIL.DictionaryServices.9.0.0-beta0154\lib\net461\SIL.DictionaryServices.dll</HintPath>
+      <HintPath>..\..\packages\SIL.DictionaryServices.9.0.0-beta0154\lib\net461\SIL.DictionaryServices.dll</HintPath>
     </Reference>
     <Reference Include="SIL.Lift, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
-      <HintPath>..\packages\SIL.Lift.9.0.0-beta0154\lib\net461\SIL.Lift.dll</HintPath>
+      <HintPath>..\..\packages\SIL.Lift.9.0.0-beta0154\lib\net461\SIL.Lift.dll</HintPath>
     </Reference>
     <Reference Include="SIL.Windows.Forms, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
-      <HintPath>..\packages\SIL.Windows.Forms.9.0.0-beta0154\lib\net461\SIL.Windows.Forms.dll</HintPath>
+      <HintPath>..\..\packages\SIL.Windows.Forms.9.0.0-beta0154\lib\net461\SIL.Windows.Forms.dll</HintPath>
     </Reference>
     <Reference Include="SIL.WritingSystems, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
-      <HintPath>..\packages\SIL.WritingSystems.9.0.0-beta0154\lib\net461\SIL.WritingSystems.dll</HintPath>
+      <HintPath>..\..\packages\SIL.WritingSystems.9.0.0-beta0154\lib\net461\SIL.WritingSystems.dll</HintPath>
     </Reference>
     <Reference Include="Spart, Version=1.0.0.0, Culture=neutral, PublicKeyToken=14d24e064e474331, processorArchitecture=MSIL">
-      <HintPath>..\packages\Spart.1.0.0\lib\net461\Spart.dll</HintPath>
+      <HintPath>..\..\packages\Spart.1.0.0\lib\net461\Spart.dll</HintPath>
     </Reference>
     <Reference Include="System" />
     <Reference Include="System.Buffers, Version=4.0.3.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
-      <HintPath>..\packages\System.Buffers.4.5.1\lib\net461\System.Buffers.dll</HintPath>
+      <HintPath>..\..\packages\System.Buffers.4.5.1\lib\net461\System.Buffers.dll</HintPath>
     </Reference>
     <Reference Include="System.ComponentModel.Composition" />
     <Reference Include="System.Configuration" />
@@ -146,38 +146,38 @@
     <Reference Include="System.Data" />
     <Reference Include="System.Drawing" />
     <Reference Include="System.IO.FileSystem.AccessControl, Version=4.0.5.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
-      <HintPath>..\packages\System.IO.FileSystem.AccessControl.4.7.0\lib\net461\System.IO.FileSystem.AccessControl.dll</HintPath>
+      <HintPath>..\..\packages\System.IO.FileSystem.AccessControl.4.7.0\lib\net461\System.IO.FileSystem.AccessControl.dll</HintPath>
     </Reference>
     <Reference Include="System.Management" />
     <Reference Include="System.Memory, Version=4.0.1.1, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
-      <HintPath>..\packages\System.Memory.4.5.4\lib\net461\System.Memory.dll</HintPath>
+      <HintPath>..\..\packages\System.Memory.4.5.4\lib\net461\System.Memory.dll</HintPath>
     </Reference>
     <Reference Include="System.Numerics" />
     <Reference Include="System.Numerics.Vectors, Version=4.1.4.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
-      <HintPath>..\packages\System.Numerics.Vectors.4.5.0\lib\net46\System.Numerics.Vectors.dll</HintPath>
+      <HintPath>..\..\packages\System.Numerics.Vectors.4.5.0\lib\net46\System.Numerics.Vectors.dll</HintPath>
     </Reference>
     <Reference Include="System.Runtime.CompilerServices.Unsafe, Version=4.0.4.1, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
-      <HintPath>..\packages\System.Runtime.CompilerServices.Unsafe.4.5.3\lib\net461\System.Runtime.CompilerServices.Unsafe.dll</HintPath>
+      <HintPath>..\..\packages\System.Runtime.CompilerServices.Unsafe.4.5.3\lib\net461\System.Runtime.CompilerServices.Unsafe.dll</HintPath>
     </Reference>
     <Reference Include="System.Security" />
     <Reference Include="System.Security.AccessControl, Version=4.1.3.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
-      <HintPath>..\packages\System.Security.AccessControl.4.7.0\lib\net461\System.Security.AccessControl.dll</HintPath>
+      <HintPath>..\..\packages\System.Security.AccessControl.4.7.0\lib\net461\System.Security.AccessControl.dll</HintPath>
     </Reference>
     <Reference Include="System.Security.Principal.Windows, Version=4.1.3.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
-      <HintPath>..\packages\System.Security.Principal.Windows.4.7.0\lib\net461\System.Security.Principal.Windows.dll</HintPath>
+      <HintPath>..\..\packages\System.Security.Principal.Windows.4.7.0\lib\net461\System.Security.Principal.Windows.dll</HintPath>
     </Reference>
     <Reference Include="System.ServiceModel" />
     <Reference Include="System.Threading.Tasks.Extensions, Version=4.2.0.1, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
-      <HintPath>..\packages\System.Threading.Tasks.Extensions.4.5.4\lib\net461\System.Threading.Tasks.Extensions.dll</HintPath>
+      <HintPath>..\..\packages\System.Threading.Tasks.Extensions.4.5.4\lib\net461\System.Threading.Tasks.Extensions.dll</HintPath>
     </Reference>
     <Reference Include="System.ValueTuple, Version=4.0.3.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
-      <HintPath>..\packages\System.ValueTuple.4.5.0\lib\net461\System.ValueTuple.dll</HintPath>
+      <HintPath>..\..\packages\System.ValueTuple.4.5.0\lib\net461\System.ValueTuple.dll</HintPath>
     </Reference>
     <Reference Include="System.Web" />
     <Reference Include="System.Windows.Forms" />
     <Reference Include="System.Xml" />
     <Reference Include="TagLibSharp, Version=2.2.0.0, Culture=neutral, PublicKeyToken=db62eba44689b5b0, processorArchitecture=MSIL">
-      <HintPath>..\packages\TagLibSharp.2.2.0\lib\net45\TagLibSharp.dll</HintPath>
+      <HintPath>..\..\packages\TagLibSharp.2.2.0\lib\net45\TagLibSharp.dll</HintPath>
     </Reference>
   </ItemGroup>
   <ItemGroup>
@@ -249,10 +249,10 @@
     <PropertyGroup>
       <ErrorText>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}.</ErrorText>
     </PropertyGroup>
-    <Error Condition="!Exists('..\packages\NUnit.3.13.1\build\NUnit.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\NUnit.3.13.1\build\NUnit.props'))" />
-    <Error Condition="!Exists('..\packages\NDesk.DBus.0.15.0\build\NDesk.DBus.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\NDesk.DBus.0.15.0\build\NDesk.DBus.targets'))" />
-    <Error Condition="!Exists('..\packages\SIL.Windows.Forms.9.0.0-beta0154\build\SIL.Windows.Forms.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\SIL.Windows.Forms.9.0.0-beta0154\build\SIL.Windows.Forms.targets'))" />
+    <Error Condition="!Exists('..\..\packages\NUnit.3.13.1\build\NUnit.props')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\NUnit.3.13.1\build\NUnit.props'))" />
+    <Error Condition="!Exists('..\..\packages\NDesk.DBus.0.15.0\build\NDesk.DBus.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\NDesk.DBus.0.15.0\build\NDesk.DBus.targets'))" />
+    <Error Condition="!Exists('..\..\packages\SIL.Windows.Forms.9.0.0-beta0154\build\SIL.Windows.Forms.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\SIL.Windows.Forms.9.0.0-beta0154\build\SIL.Windows.Forms.targets'))" />
   </Target>
-  <Import Project="..\packages\NDesk.DBus.0.15.0\build\NDesk.DBus.targets" Condition="Exists('..\packages\NDesk.DBus.0.15.0\build\NDesk.DBus.targets')" />
-  <Import Project="..\packages\SIL.Windows.Forms.9.0.0-beta0154\build\SIL.Windows.Forms.targets" Condition="Exists('..\packages\SIL.Windows.Forms.9.0.0-beta0154\build\SIL.Windows.Forms.targets')" />
+  <Import Project="..\..\packages\NDesk.DBus.0.15.0\build\NDesk.DBus.targets" Condition="Exists('..\..\packages\NDesk.DBus.0.15.0\build\NDesk.DBus.targets')" />
+  <Import Project="..\..\packages\SIL.Windows.Forms.9.0.0-beta0154\build\SIL.Windows.Forms.targets" Condition="Exists('..\..\packages\SIL.Windows.Forms.9.0.0-beta0154\build\SIL.Windows.Forms.targets')" />
 </Project>
\ No newline at end of file
diff --git a/src/WeSay.App/WeSay.App.csproj b/src/WeSay.App/WeSay.App.csproj
index 519c3f595..653f34594 100755
--- a/src/WeSay.App/WeSay.App.csproj
+++ b/src/WeSay.App/WeSay.App.csproj
@@ -94,68 +94,68 @@
   </PropertyGroup>
   <ItemGroup>
     <Reference Include="Autofac, Version=4.1.1.0, Culture=neutral, PublicKeyToken=17863af14b0044da, processorArchitecture=MSIL">
-      <HintPath>..\packages\Autofac.4.1.1\lib\net45\Autofac.dll</HintPath>
+      <HintPath>..\..\packages\Autofac.4.1.1\lib\net45\Autofac.dll</HintPath>
     </Reference>
     <Reference Include="Chorus, Version=3.1.0.0, Culture=neutral, PublicKeyToken=f1447bae1e63f485, processorArchitecture=MSIL">
       <SpecificVersion>False</SpecificVersion>
-      <HintPath>..\packages\SIL.Chorus.App.5.0.0-beta0017\lib\net461\Chorus.exe</HintPath>
+      <HintPath>..\..\packages\SIL.Chorus.App.5.0.0-beta0017\lib\net461\Chorus.exe</HintPath>
     </Reference>
     <Reference Include="Enchant.Net, Version=1.4.3.1, Culture=neutral, processorArchitecture=MSIL">
       <SpecificVersion>False</SpecificVersion>
-      <HintPath>..\packages\Enchant.Net.1.4.2\lib\net461\Enchant.Net.dll</HintPath>
+      <HintPath>..\..\packages\Enchant.Net.1.4.2\lib\net461\Enchant.Net.dll</HintPath>
     </Reference>
     <Reference Include="Geckofx-Core, Version=45.0.34.0, Culture=neutral, PublicKeyToken=3209ac31600d1857, processorArchitecture=x86">
       <SpecificVersion>False</SpecificVersion>
-      <HintPath>..\packages\Geckofx60.32.60.0.54\lib\net45\Geckofx-Core.dll</HintPath>
+      <HintPath>..\..\packages\Geckofx60.32.60.0.54\lib\net45\Geckofx-Core.dll</HintPath>
     </Reference>
     <Reference Include="Geckofx-Winforms, Version=45.0.34.0, Culture=neutral, PublicKeyToken=3209ac31600d1857, processorArchitecture=x86">
       <SpecificVersion>False</SpecificVersion>
-      <HintPath>..\packages\Geckofx60.32.60.0.54\lib\net45\Geckofx-Winforms.dll</HintPath>
+      <HintPath>..\..\packages\Geckofx60.32.60.0.54\lib\net45\Geckofx-Winforms.dll</HintPath>
     </Reference>
     <Reference Include="icu.net, Version=2.7.0.0, Culture=neutral, PublicKeyToken=416fdd914afa6b66, processorArchitecture=MSIL">
       <SpecificVersion>False</SpecificVersion>
-      <HintPath>..\packages\icu.net.2.7.1\lib\net451\icu.net.dll</HintPath>
+      <HintPath>..\..\packages\icu.net.2.7.1\lib\net451\icu.net.dll</HintPath>
     </Reference>
     <Reference Include="LibChorus, Version=5.0.0.0, Culture=neutral, PublicKeyToken=f1447bae1e63f485, processorArchitecture=MSIL">
       <SpecificVersion>False</SpecificVersion>
-      <HintPath>..\packages\SIL.Chorus.LibChorus.5.0.0-beta0017\lib\net461\LibChorus.dll</HintPath>
+      <HintPath>..\..\packages\SIL.Chorus.LibChorus.5.0.0-beta0017\lib\net461\LibChorus.dll</HintPath>
     </Reference>
     <Reference Include="Microsoft.Bcl.AsyncInterfaces, Version=5.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
       <SpecificVersion>False</SpecificVersion>
-      <HintPath>..\packages\Microsoft.Bcl.AsyncInterfaces.5.0.0\lib\net461\Microsoft.Bcl.AsyncInterfaces.dll</HintPath>
+      <HintPath>..\..\packages\Microsoft.Bcl.AsyncInterfaces.5.0.0\lib\net461\Microsoft.Bcl.AsyncInterfaces.dll</HintPath>
     </Reference>
     <Reference Include="Microsoft.DotNet.PlatformAbstractions, Version=2.0.4.0, Culture=neutral, PublicKeyToken=adb9793829ddae60, processorArchitecture=MSIL">
-      <HintPath>..\packages\Microsoft.DotNet.PlatformAbstractions.2.0.4\lib\net45\Microsoft.DotNet.PlatformAbstractions.dll</HintPath>
+      <HintPath>..\..\packages\Microsoft.DotNet.PlatformAbstractions.2.0.4\lib\net45\Microsoft.DotNet.PlatformAbstractions.dll</HintPath>
     </Reference>
     <Reference Include="Microsoft.Extensions.DependencyModel, Version=2.0.4.0, Culture=neutral, PublicKeyToken=adb9793829ddae60, processorArchitecture=MSIL">
-      <HintPath>..\packages\Microsoft.Extensions.DependencyModel.2.0.4\lib\net451\Microsoft.Extensions.DependencyModel.dll</HintPath>
+      <HintPath>..\..\packages\Microsoft.Extensions.DependencyModel.2.0.4\lib\net451\Microsoft.Extensions.DependencyModel.dll</HintPath>
     </Reference>
     <Reference Include="Newtonsoft.Json, Version=12.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
-      <HintPath>..\packages\Newtonsoft.Json.12.0.3\lib\net45\Newtonsoft.Json.dll</HintPath>
+      <HintPath>..\..\packages\Newtonsoft.Json.12.0.3\lib\net45\Newtonsoft.Json.dll</HintPath>
     </Reference>
     <Reference Include="SIL.Core">
       <SpecificVersion>False</SpecificVersion>
-      <HintPath>..\packages\SIL.Core.9.0.0-beta0154\lib\net461\SIL.Core.dll</HintPath>
+      <HintPath>..\..\packages\SIL.Core.9.0.0-beta0154\lib\net461\SIL.Core.dll</HintPath>
     </Reference>
     <Reference Include="SIL.Core.Desktop">
       <SpecificVersion>False</SpecificVersion>
-      <HintPath>..\packages\SIL.Core.Desktop.9.0.0-beta0154\lib\net461\SIL.Core.Desktop.dll</HintPath>
+      <HintPath>..\..\packages\SIL.Core.Desktop.9.0.0-beta0154\lib\net461\SIL.Core.Desktop.dll</HintPath>
     </Reference>
     <Reference Include="SIL.Lift">
       <SpecificVersion>False</SpecificVersion>
-      <HintPath>..\packages\SIL.Lift.9.0.0-beta0154\lib\net461\SIL.Lift.dll</HintPath>
+      <HintPath>..\..\packages\SIL.Lift.9.0.0-beta0154\lib\net461\SIL.Lift.dll</HintPath>
     </Reference>
     <Reference Include="SIL.Windows.Forms">
       <SpecificVersion>False</SpecificVersion>
-      <HintPath>..\packages\SIL.Windows.Forms.9.0.0-beta0154\lib\net461\SIL.Windows.Forms.dll</HintPath>
+      <HintPath>..\..\packages\SIL.Windows.Forms.9.0.0-beta0154\lib\net461\SIL.Windows.Forms.dll</HintPath>
     </Reference>
     <Reference Include="SIL.Windows.Forms.Keyboarding">
       <SpecificVersion>False</SpecificVersion>
-      <HintPath>..\packages\SIL.Windows.Forms.Keyboarding.9.0.0-beta0154\lib\net461\SIL.Windows.Forms.Keyboarding.dll</HintPath>
+      <HintPath>..\..\packages\SIL.Windows.Forms.Keyboarding.9.0.0-beta0154\lib\net461\SIL.Windows.Forms.Keyboarding.dll</HintPath>
     </Reference>
     <Reference Condition="'$(OS)'=='Windows_NT'" Include="IrrKlang.NET4.dll, Culture=neutral, PublicKeyToken=null">
       <SpecificVersion>False</SpecificVersion>
-      <HintPath>..\packages\SIL.Media.9.0.0-beta0154\build\lib\win-x86\irrKlang.NET4.dll</HintPath>
+      <HintPath>..\..\packages\SIL.Media.9.0.0-beta0154\build\lib\win-x86\irrKlang.NET4.dll</HintPath>
     </Reference>
     <None Include="packages.config" />
     <None Include="..\..\lib\common\Enchant.Net.dll.config">
@@ -163,7 +163,7 @@
     </None>
     <Reference Include="SIL.WritingSystems">
       <SpecificVersion>False</SpecificVersion>
-      <HintPath>..\packages\SIL.WritingSystems.9.0.0-beta0154\lib\net461\SIL.WritingSystems.dll</HintPath>
+      <HintPath>..\..\packages\SIL.WritingSystems.9.0.0-beta0154\lib\net461\SIL.WritingSystems.dll</HintPath>
     </Reference>
     <Reference Include="System" />
     <Reference Include="System.ComponentModel.Composition" />
@@ -174,19 +174,19 @@
     <Reference Include="System.Data" />
     <Reference Include="System.Drawing" />
     <Reference Include="System.Runtime.CompilerServices.Unsafe, Version=4.0.4.1, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
-      <HintPath>..\packages\System.Runtime.CompilerServices.Unsafe.4.5.3\lib\net461\System.Runtime.CompilerServices.Unsafe.dll</HintPath>
+      <HintPath>..\..\packages\System.Runtime.CompilerServices.Unsafe.4.5.3\lib\net461\System.Runtime.CompilerServices.Unsafe.dll</HintPath>
     </Reference>
     <Reference Include="System.Threading.Tasks.Extensions, Version=4.2.0.1, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
-      <HintPath>..\packages\System.Threading.Tasks.Extensions.4.5.4\lib\net461\System.Threading.Tasks.Extensions.dll</HintPath>
+      <HintPath>..\..\packages\System.Threading.Tasks.Extensions.4.5.4\lib\net461\System.Threading.Tasks.Extensions.dll</HintPath>
     </Reference>
     <Reference Include="System.ValueTuple, Version=4.0.3.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
-      <HintPath>..\packages\System.ValueTuple.4.5.0\lib\net461\System.ValueTuple.dll</HintPath>
+      <HintPath>..\..\packages\System.ValueTuple.4.5.0\lib\net461\System.ValueTuple.dll</HintPath>
     </Reference>
     <Reference Include="System.Windows.Forms" />
     <Reference Include="System.Xml" />
     <Reference Include="Vulcan.Uczniowie.HelpProvider, Version=0.9.999.0, Culture=neutral, processorArchitecture=MSIL">
       <SpecificVersion>False</SpecificVersion>
-      <HintPath>..\packages\Vulcan.Uczniowie.HelpProvider.1.0.16\lib\net461\Vulcan.Uczniowie.HelpProvider.dll</HintPath>
+      <HintPath>..\..\packages\Vulcan.Uczniowie.HelpProvider.1.0.16\lib\net461\Vulcan.Uczniowie.HelpProvider.dll</HintPath>
     </Reference>
   </ItemGroup>
   <ItemGroup>
@@ -313,15 +313,15 @@
     <PreBuildEvent>
     </PreBuildEvent>
   </PropertyGroup>
-  <Import Project="..\packages\NDesk.DBus.0.15.0\build\NDesk.DBus.targets" Condition="Exists('..\packages\NDesk.DBus.0.15.0\build\NDesk.DBus.targets')" />
+  <Import Project="..\..\packages\NDesk.DBus.0.15.0\build\NDesk.DBus.targets" Condition="Exists('..\..\packages\NDesk.DBus.0.15.0\build\NDesk.DBus.targets')" />
   <Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
     <PropertyGroup>
       <ErrorText>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}.</ErrorText>
     </PropertyGroup>
-    <Error Condition="!Exists('..\packages\NDesk.DBus.0.15.0\build\NDesk.DBus.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\NDesk.DBus.0.15.0\build\NDesk.DBus.targets'))" />
-    <Error Condition="!Exists('..\packages\Icu4c.Win.Min.59.1.7\build\Icu4c.Win.Min.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Icu4c.Win.Min.59.1.7\build\Icu4c.Win.Min.targets'))" />
+    <Error Condition="!Exists('..\..\packages\NDesk.DBus.0.15.0\build\NDesk.DBus.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\NDesk.DBus.0.15.0\build\NDesk.DBus.targets'))" />
+    <Error Condition="!Exists('..\..\packages\Icu4c.Win.Min.59.1.7\build\Icu4c.Win.Min.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\Icu4c.Win.Min.59.1.7\build\Icu4c.Win.Min.targets'))" />
   </Target>
-  <Import Project="..\packages\Icu4c.Win.Min.59.1.7\build\Icu4c.Win.Min.targets" Condition="Exists('..\packages\Icu4c.Win.Min.59.1.7\build\Icu4c.Win.Min.targets')" />
+  <Import Project="..\..\packages\Icu4c.Win.Min.59.1.7\build\Icu4c.Win.Min.targets" Condition="Exists('..\..\packages\Icu4c.Win.Min.59.1.7\build\Icu4c.Win.Min.targets')" />
   <!-- To modify your build process, add your task inside one of the targets below and uncomment it.
 	   Other similar extension points exist, see Microsoft.Common.targets.
   <Target Name="BeforeBuild">
@@ -329,8 +329,8 @@
   -->
   <Target Name="AfterBuild">
     <ItemGroup>
-      <FirefoxFiles Include="..\packages\Geckofx60.32.60.0.54\content\Firefox\**\*.*" Condition="'$(Platform)' == 'x86'" />
-      <FirefoxFiles Include="..\packages\Geckofx60.64.60.0.54\content\Firefox\**\*.*" Condition="'$(Platform)' != 'x86'" />
+      <FirefoxFiles Include="..\..\packages\Geckofx60.32.60.0.54\content\Firefox\**\*.*" Condition="'$(Platform)' == 'x86'" />
+      <FirefoxFiles Include="..\..\packages\Geckofx60.64.60.0.54\content\Firefox\**\*.*" Condition="'$(Platform)' != 'x86'" />
     </ItemGroup>
     <Copy SourceFiles="@(FirefoxFiles)" DestinationFiles="@(FirefoxFiles->'$(OutputPath)\Firefox\%(RecursiveDir)%(Filename)%(Extension)')" SkipUnchangedFiles="true" OverwriteReadOnlyFiles="true" />
   </Target>
diff --git a/src/WeSay.ConfigTool.Tests/WeSay.ConfigTool.Tests.csproj b/src/WeSay.ConfigTool.Tests/WeSay.ConfigTool.Tests.csproj
index 504c481ad..15862d354 100644
--- a/src/WeSay.ConfigTool.Tests/WeSay.ConfigTool.Tests.csproj
+++ b/src/WeSay.ConfigTool.Tests/WeSay.ConfigTool.Tests.csproj
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="12.0">
-  <Import Project="..\packages\NUnit.3.13.1\build\NUnit.props" Condition="Exists('..\packages\NUnit.3.13.1\build\NUnit.props')" />
+  <Import Project="..\..\packages\NUnit.3.13.1\build\NUnit.props" Condition="Exists('..\..\packages\NUnit.3.13.1\build\NUnit.props')" />
   <PropertyGroup>
     <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
@@ -75,59 +75,59 @@
   </PropertyGroup>
   <ItemGroup>
     <Reference Include="Commons.Xml.Relaxng, Version=4.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756, processorArchitecture=MSIL">
-      <HintPath>..\packages\RelaxNG.3.2.3\lib\net40\Commons.Xml.Relaxng.dll</HintPath>
+      <HintPath>..\..\packages\RelaxNG.3.2.3\lib\net40\Commons.Xml.Relaxng.dll</HintPath>
     </Reference>
     <Reference Include="icu.net, Version=2.7.0.0, Culture=neutral, PublicKeyToken=416fdd914afa6b66, processorArchitecture=MSIL">
-      <HintPath>..\packages\icu.net.2.7.1\lib\net451\icu.net.dll</HintPath>
+      <HintPath>..\..\packages\icu.net.2.7.1\lib\net451\icu.net.dll</HintPath>
     </Reference>
     <Reference Include="L10NSharp, Version=5.0.0.0, Culture=neutral, PublicKeyToken=fd0b3e309a5b7c28, processorArchitecture=MSIL">
-      <HintPath>..\packages\L10NSharp.4.1.0\lib\net461\L10NSharp.dll</HintPath>
+      <HintPath>..\..\packages\L10NSharp.4.1.0\lib\net461\L10NSharp.dll</HintPath>
       <Private>True</Private>
     </Reference>
     <Reference Include="Microsoft.DotNet.PlatformAbstractions, Version=2.0.4.0, Culture=neutral, PublicKeyToken=adb9793829ddae60, processorArchitecture=MSIL">
-      <HintPath>..\packages\Microsoft.DotNet.PlatformAbstractions.2.0.4\lib\net45\Microsoft.DotNet.PlatformAbstractions.dll</HintPath>
+      <HintPath>..\..\packages\Microsoft.DotNet.PlatformAbstractions.2.0.4\lib\net45\Microsoft.DotNet.PlatformAbstractions.dll</HintPath>
     </Reference>
     <Reference Include="Microsoft.Extensions.DependencyModel, Version=2.0.4.0, Culture=neutral, PublicKeyToken=adb9793829ddae60, processorArchitecture=MSIL">
-      <HintPath>..\packages\Microsoft.Extensions.DependencyModel.2.0.4\lib\net451\Microsoft.Extensions.DependencyModel.dll</HintPath>
+      <HintPath>..\..\packages\Microsoft.Extensions.DependencyModel.2.0.4\lib\net451\Microsoft.Extensions.DependencyModel.dll</HintPath>
     </Reference>
     <Reference Include="NDesk.DBus, Version=1.0.0.0, Culture=neutral, PublicKeyToken=f6716e4f9b2ed099, processorArchitecture=MSIL">
-      <HintPath>..\packages\NDesk.DBus.0.15.0\lib\NDesk.DBus.dll</HintPath>
+      <HintPath>..\..\packages\NDesk.DBus.0.15.0\lib\NDesk.DBus.dll</HintPath>
     </Reference>
     <Reference Include="Newtonsoft.Json, Version=12.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
       <SpecificVersion>False</SpecificVersion>
-      <HintPath>..\packages\Newtonsoft.Json.12.0.3\lib\net45\Newtonsoft.Json.dll</HintPath>
+      <HintPath>..\..\packages\Newtonsoft.Json.12.0.3\lib\net45\Newtonsoft.Json.dll</HintPath>
     </Reference>
     <Reference Include="nunit.framework, Version=3.13.1.0, Culture=neutral, PublicKeyToken=2638cd05610744eb, processorArchitecture=MSIL">
-      <HintPath>..\packages\NUnit.3.13.1\lib\net45\nunit.framework.dll</HintPath>
+      <HintPath>..\..\packages\NUnit.3.13.1\lib\net45\nunit.framework.dll</HintPath>
     </Reference>
     <Reference Include="SIL.Core, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
-      <HintPath>..\packages\SIL.Core.9.0.0-beta0154\lib\net461\SIL.Core.dll</HintPath>
+      <HintPath>..\..\packages\SIL.Core.9.0.0-beta0154\lib\net461\SIL.Core.dll</HintPath>
     </Reference>
     <Reference Include="SIL.Core.Desktop, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
-      <HintPath>..\packages\SIL.Core.Desktop.9.0.0-beta0154\lib\net461\SIL.Core.Desktop.dll</HintPath>
+      <HintPath>..\..\packages\SIL.Core.Desktop.9.0.0-beta0154\lib\net461\SIL.Core.Desktop.dll</HintPath>
     </Reference>
     <Reference Include="SIL.DictionaryServices, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
-      <HintPath>..\packages\SIL.DictionaryServices.9.0.0-beta0154\lib\net461\SIL.DictionaryServices.dll</HintPath>
+      <HintPath>..\..\packages\SIL.DictionaryServices.9.0.0-beta0154\lib\net461\SIL.DictionaryServices.dll</HintPath>
     </Reference>
     <Reference Include="SIL.Lift, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
-      <HintPath>..\packages\SIL.Lift.9.0.0-beta0154\lib\net461\SIL.Lift.dll</HintPath>
+      <HintPath>..\..\packages\SIL.Lift.9.0.0-beta0154\lib\net461\SIL.Lift.dll</HintPath>
     </Reference>
     <Reference Include="SIL.TestUtilities, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
       <SpecificVersion>False</SpecificVersion>
-      <HintPath>..\packages\SIL.TestUtilities.9.0.0-beta0154\lib\net461\SIL.TestUtilities.dll</HintPath>
+      <HintPath>..\..\packages\SIL.TestUtilities.9.0.0-beta0154\lib\net461\SIL.TestUtilities.dll</HintPath>
     </Reference>
     <Reference Include="SIL.Windows.Forms">
       <SpecificVersion>False</SpecificVersion>
-      <HintPath>..\packages\SIL.Windows.Forms.9.0.0-beta0154\lib\net461\SIL.Windows.Forms.dll</HintPath>
+      <HintPath>..\..\packages\SIL.Windows.Forms.9.0.0-beta0154\lib\net461\SIL.Windows.Forms.dll</HintPath>
     </Reference>
     <Reference Include="SIL.Windows.Forms.Keyboarding">
-      <HintPath>..\packages\SIL.Windows.Forms.Keyboarding.9.0.0-beta0154\lib\net461\SIL.Windows.Forms.Keyboarding.dll</HintPath>
+      <HintPath>..\..\packages\SIL.Windows.Forms.Keyboarding.9.0.0-beta0154\lib\net461\SIL.Windows.Forms.Keyboarding.dll</HintPath>
     </Reference>
     <Reference Include="SIL.WritingSystems, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
-      <HintPath>..\packages\SIL.WritingSystems.9.0.0-beta0154\lib\net461\SIL.WritingSystems.dll</HintPath>
+      <HintPath>..\..\packages\SIL.WritingSystems.9.0.0-beta0154\lib\net461\SIL.WritingSystems.dll</HintPath>
     </Reference>
     <Reference Include="Spart, Version=1.0.0.0, Culture=neutral, PublicKeyToken=14d24e064e474331, processorArchitecture=MSIL">
-      <HintPath>..\packages\Spart.1.0.0\lib\net461\Spart.dll</HintPath>
+      <HintPath>..\..\packages\Spart.1.0.0\lib\net461\Spart.dll</HintPath>
     </Reference>
     <Reference Include="System" />
     <Reference Include="System.Configuration" />
@@ -136,18 +136,18 @@
     </Reference>
     <Reference Include="System.Data" />
     <Reference Include="System.IO.FileSystem.AccessControl, Version=4.0.5.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
-      <HintPath>..\packages\System.IO.FileSystem.AccessControl.4.7.0\lib\net461\System.IO.FileSystem.AccessControl.dll</HintPath>
+      <HintPath>..\..\packages\System.IO.FileSystem.AccessControl.4.7.0\lib\net461\System.IO.FileSystem.AccessControl.dll</HintPath>
     </Reference>
     <Reference Include="System.Management" />
     <Reference Include="System.Security" />
     <Reference Include="System.Security.AccessControl, Version=4.1.3.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
-      <HintPath>..\packages\System.Security.AccessControl.4.7.0\lib\net461\System.Security.AccessControl.dll</HintPath>
+      <HintPath>..\..\packages\System.Security.AccessControl.4.7.0\lib\net461\System.Security.AccessControl.dll</HintPath>
     </Reference>
     <Reference Include="System.Security.Principal.Windows, Version=4.1.3.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
-      <HintPath>..\packages\System.Security.Principal.Windows.4.7.0\lib\net461\System.Security.Principal.Windows.dll</HintPath>
+      <HintPath>..\..\packages\System.Security.Principal.Windows.4.7.0\lib\net461\System.Security.Principal.Windows.dll</HintPath>
     </Reference>
     <Reference Include="System.ValueTuple, Version=4.0.3.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
-      <HintPath>..\packages\System.ValueTuple.4.5.0\lib\net461\System.ValueTuple.dll</HintPath>
+      <HintPath>..\..\packages\System.ValueTuple.4.5.0\lib\net461\System.ValueTuple.dll</HintPath>
     </Reference>
     <Reference Include="System.Web" />
     <Reference Include="System.Windows.Forms" />
@@ -216,10 +216,10 @@
     <PropertyGroup>
       <ErrorText>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}.</ErrorText>
     </PropertyGroup>
-    <Error Condition="!Exists('..\packages\NUnit.3.13.1\build\NUnit.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\NUnit.3.13.1\build\NUnit.props'))" />
-    <Error Condition="!Exists('..\packages\NDesk.DBus.0.15.0\build\NDesk.DBus.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\NDesk.DBus.0.15.0\build\NDesk.DBus.targets'))" />
+    <Error Condition="!Exists('..\..\packages\NUnit.3.13.1\build\NUnit.props')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\NUnit.3.13.1\build\NUnit.props'))" />
+    <Error Condition="!Exists('..\..\packages\NDesk.DBus.0.15.0\build\NDesk.DBus.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\NDesk.DBus.0.15.0\build\NDesk.DBus.targets'))" />
   </Target>
-  <Import Project="..\packages\NDesk.DBus.0.15.0\build\NDesk.DBus.targets" Condition="Exists('..\packages\NDesk.DBus.0.15.0\build\NDesk.DBus.targets')" />
+  <Import Project="..\..\packages\NDesk.DBus.0.15.0\build\NDesk.DBus.targets" Condition="Exists('..\..\packages\NDesk.DBus.0.15.0\build\NDesk.DBus.targets')" />
   <!-- To modify your build process, add your task inside one of the targets below and uncomment it.
 	   Other similar extension points exist, see Microsoft.Common.targets.
   <Target Name="BeforeBuild">
diff --git a/src/WeSay.ConfigTool/WeSay.ConfigTool.csproj b/src/WeSay.ConfigTool/WeSay.ConfigTool.csproj
index 00524f4ca..33f94e3d4 100755
--- a/src/WeSay.ConfigTool/WeSay.ConfigTool.csproj
+++ b/src/WeSay.ConfigTool/WeSay.ConfigTool.csproj
@@ -93,138 +93,138 @@
   </PropertyGroup>
   <ItemGroup>
     <Reference Include="Autofac, Version=4.1.1.0, Culture=neutral, PublicKeyToken=17863af14b0044da, processorArchitecture=MSIL">
-      <HintPath>..\packages\Autofac.4.1.1\lib\net45\Autofac.dll</HintPath>
+      <HintPath>..\..\packages\Autofac.4.1.1\lib\net45\Autofac.dll</HintPath>
     </Reference>
     <Reference Include="Chorus, Version=3.1.0.0, Culture=neutral, PublicKeyToken=f1447bae1e63f485, processorArchitecture=MSIL">
       <SpecificVersion>False</SpecificVersion>
-      <HintPath>..\packages\SIL.Chorus.App.5.0.0-beta0017\lib\net461\Chorus.exe</HintPath>
+      <HintPath>..\..\packages\SIL.Chorus.App.5.0.0-beta0017\lib\net461\Chorus.exe</HintPath>
     </Reference>
     <Reference Include="Commons.Xml.Relaxng, Version=4.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756, processorArchitecture=MSIL">
-      <HintPath>..\packages\RelaxNG.3.2.3\lib\net40\Commons.Xml.Relaxng.dll</HintPath>
+      <HintPath>..\..\packages\RelaxNG.3.2.3\lib\net40\Commons.Xml.Relaxng.dll</HintPath>
     </Reference>
     <Reference Include="DialogAdapters, Version=0.1.9.0, Culture=neutral, PublicKeyToken=7dc842182b0626dc, processorArchitecture=MSIL">
-      <HintPath>..\packages\DialogAdapters.Gtk2.0.1.9\lib\net461\DialogAdapters.dll</HintPath>
+      <HintPath>..\..\packages\DialogAdapters.Gtk2.0.1.9\lib\net461\DialogAdapters.dll</HintPath>
     </Reference>
     <Reference Include="Enchant.Net, Version=1.4.3.1, Culture=neutral, processorArchitecture=MSIL">
       <SpecificVersion>False</SpecificVersion>
-      <HintPath>..\packages\Enchant.Net.1.4.2\lib\net461\Enchant.Net.dll</HintPath>
+      <HintPath>..\..\packages\Enchant.Net.1.4.2\lib\net461\Enchant.Net.dll</HintPath>
     </Reference>
     <Reference Include="Geckofx-Core, Version=45.0.34.0, Culture=neutral, PublicKeyToken=3209ac31600d1857, processorArchitecture=x86">
       <SpecificVersion>False</SpecificVersion>
-      <HintPath>..\packages\Geckofx60.32.60.0.54\lib\net45\Geckofx-Core.dll</HintPath>
+      <HintPath>..\..\packages\Geckofx60.32.60.0.54\lib\net45\Geckofx-Core.dll</HintPath>
     </Reference>
     <Reference Include="Geckofx-Winforms, Version=45.0.34.0, Culture=neutral, PublicKeyToken=3209ac31600d1857, processorArchitecture=x86">
       <SpecificVersion>False</SpecificVersion>
-      <HintPath>..\packages\Geckofx60.32.60.0.54\lib\net45\Geckofx-Winforms.dll</HintPath>
+      <HintPath>..\..\packages\Geckofx60.32.60.0.54\lib\net45\Geckofx-Winforms.dll</HintPath>
     </Reference>
     <Reference Include="ibusdotnet, Version=2.0.0.0, Culture=neutral, PublicKeyToken=c9ab93f7b23223fb, processorArchitecture=MSIL">
-      <HintPath>..\packages\ibusdotnet.2.0.3\lib\net461\ibusdotnet.dll</HintPath>
+      <HintPath>..\..\packages\ibusdotnet.2.0.3\lib\net461\ibusdotnet.dll</HintPath>
     </Reference>
     <Reference Include="ICSharpCode.SharpZipLib, Version=0.86.0.518, Culture=neutral, PublicKeyToken=1b03e6acf1164f73, processorArchitecture=MSIL">
-      <HintPath>..\packages\SharpZipLib.0.86.0\lib\20\ICSharpCode.SharpZipLib.dll</HintPath>
+      <HintPath>..\..\packages\SharpZipLib.0.86.0\lib\20\ICSharpCode.SharpZipLib.dll</HintPath>
     </Reference>
     <Reference Include="icu.net, Version=2.7.0.0, Culture=neutral, PublicKeyToken=416fdd914afa6b66, processorArchitecture=MSIL">
       <SpecificVersion>False</SpecificVersion>
-      <HintPath>..\packages\icu.net.2.7.1\lib\net451\icu.net.dll</HintPath>
+      <HintPath>..\..\packages\icu.net.2.7.1\lib\net451\icu.net.dll</HintPath>
     </Reference>
     <Reference Include="JetBrains.Annotations, Version=2021.2.0.0, Culture=neutral, PublicKeyToken=1010a0d8d6380325, processorArchitecture=MSIL">
-      <HintPath>..\packages\JetBrains.Annotations.2021.2.0\lib\net20\JetBrains.Annotations.dll</HintPath>
+      <HintPath>..\..\packages\JetBrains.Annotations.2021.2.0\lib\net20\JetBrains.Annotations.dll</HintPath>
     </Reference>
     <Reference Include="Keyman10Interop, Version=10.0.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
       <SpecificVersion>False</SpecificVersion>
       <EmbedInteropTypes>True</EmbedInteropTypes>
-      <HintPath>..\packages\SIL.Windows.Forms.Keyboarding.9.0.0-beta0154\build\Keyman10Interop.dll</HintPath>
+      <HintPath>..\..\packages\SIL.Windows.Forms.Keyboarding.9.0.0-beta0154\build\Keyman10Interop.dll</HintPath>
     </Reference>
     <Reference Include="Keyman7Interop, Version=1.4.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
       <SpecificVersion>False</SpecificVersion>
       <EmbedInteropTypes>True</EmbedInteropTypes>
-      <HintPath>..\packages\SIL.Windows.Forms.Keyboarding.9.0.0-beta0154\build\Keyman7Interop.dll</HintPath>
+      <HintPath>..\..\packages\SIL.Windows.Forms.Keyboarding.9.0.0-beta0154\build\Keyman7Interop.dll</HintPath>
     </Reference>
     <Reference Condition="'$(OS)'=='Windows_NT'" Include="KeymanLink, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null">
       <SpecificVersion>False</SpecificVersion>
       <HintPath>..\..\lib\$(Configuration)\KeymanLink.dll</HintPath>
     </Reference>
     <Reference Include="L10NSharp, Version=5.0.0.0, Culture=neutral, PublicKeyToken=fd0b3e309a5b7c28, processorArchitecture=MSIL">
-      <HintPath>..\packages\L10NSharp.5.0.0-beta0086\lib\net461\L10NSharp.dll</HintPath>
+      <HintPath>..\..\packages\L10NSharp.5.0.0-beta0086\lib\net461\L10NSharp.dll</HintPath>
     </Reference>
     <Reference Include="LibChorus, Version=5.0.0.0, Culture=neutral, PublicKeyToken=f1447bae1e63f485, processorArchitecture=MSIL">
       <SpecificVersion>False</SpecificVersion>
-      <HintPath>..\packages\SIL.Chorus.LibChorus.5.0.0-beta0017\lib\net461\LibChorus.dll</HintPath>
+      <HintPath>..\..\packages\SIL.Chorus.LibChorus.5.0.0-beta0017\lib\net461\LibChorus.dll</HintPath>
     </Reference>
     <Reference Include="Markdig.Signed, Version=0.22.0.0, Culture=neutral, PublicKeyToken=870da25a133885f8, processorArchitecture=MSIL">
-      <HintPath>..\packages\Markdig.Signed.0.22.0\lib\net452\Markdig.Signed.dll</HintPath>
+      <HintPath>..\..\packages\Markdig.Signed.0.22.0\lib\net452\Markdig.Signed.dll</HintPath>
     </Reference>
     <Reference Include="Microsoft.Bcl.AsyncInterfaces, Version=5.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
-      <HintPath>..\packages\Microsoft.Bcl.AsyncInterfaces.5.0.0\lib\net461\Microsoft.Bcl.AsyncInterfaces.dll</HintPath>
+      <HintPath>..\..\packages\Microsoft.Bcl.AsyncInterfaces.5.0.0\lib\net461\Microsoft.Bcl.AsyncInterfaces.dll</HintPath>
     </Reference>
     <Reference Include="Microsoft.Build.Framework" />
     <Reference Include="Microsoft.Build.Utilities.v4.0" />
     <Reference Include="Microsoft.DotNet.PlatformAbstractions, Version=2.0.4.0, Culture=neutral, PublicKeyToken=adb9793829ddae60, processorArchitecture=MSIL">
-      <HintPath>..\packages\Microsoft.DotNet.PlatformAbstractions.2.0.4\lib\net45\Microsoft.DotNet.PlatformAbstractions.dll</HintPath>
+      <HintPath>..\..\packages\Microsoft.DotNet.PlatformAbstractions.2.0.4\lib\net45\Microsoft.DotNet.PlatformAbstractions.dll</HintPath>
       <Private>True</Private>
     </Reference>
     <Reference Include="Microsoft.Extensions.DependencyModel, Version=2.0.4.0, Culture=neutral, PublicKeyToken=adb9793829ddae60, processorArchitecture=MSIL">
-      <HintPath>..\packages\Microsoft.Extensions.DependencyModel.2.0.4\lib\net451\Microsoft.Extensions.DependencyModel.dll</HintPath>
+      <HintPath>..\..\packages\Microsoft.Extensions.DependencyModel.2.0.4\lib\net451\Microsoft.Extensions.DependencyModel.dll</HintPath>
       <Private>True</Private>
     </Reference>
     <Reference Include="Microsoft.Practices.ServiceLocation, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
-      <HintPath>..\packages\CommonServiceLocator.1.0\lib\NET35\Microsoft.Practices.ServiceLocation.dll</HintPath>
+      <HintPath>..\..\packages\CommonServiceLocator.1.0\lib\NET35\Microsoft.Practices.ServiceLocation.dll</HintPath>
     </Reference>
     <Reference Include="Microsoft.VisualBasic" />
     <None Include="packages.config" />
     <Reference Include="Mono.Addins, Version=1.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756, processorArchitecture=MSIL">
-      <HintPath>..\packages\Mono.Addins.1.3.8\lib\net45\Mono.Addins.dll</HintPath>
+      <HintPath>..\..\packages\Mono.Addins.1.3.8\lib\net45\Mono.Addins.dll</HintPath>
     </Reference>
     <Reference Include="NAudio, Version=1.10.0.0, Culture=neutral, processorArchitecture=MSIL">
-      <HintPath>..\packages\NAudio.1.10.0\lib\net35\NAudio.dll</HintPath>
+      <HintPath>..\..\packages\NAudio.1.10.0\lib\net35\NAudio.dll</HintPath>
     </Reference>
     <Reference Include="Newtonsoft.Json, Version=12.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
       <SpecificVersion>False</SpecificVersion>
-      <HintPath>..\packages\Newtonsoft.Json.12.0.3\lib\net45\Newtonsoft.Json.dll</HintPath>
+      <HintPath>..\..\packages\Newtonsoft.Json.12.0.3\lib\net45\Newtonsoft.Json.dll</HintPath>
     </Reference>
     <Reference Include="NHunspell, Version=1.2.5554.16953, Culture=neutral, PublicKeyToken=1ac793ea843b4366, processorArchitecture=MSIL">
-      <HintPath>..\packages\NHunspell.Patched.1.2.5554\lib\net\NHunspell.dll</HintPath>
+      <HintPath>..\..\packages\NHunspell.Patched.1.2.5554\lib\net\NHunspell.dll</HintPath>
     </Reference>
     <Reference Include="protobuf-net, Version=2.0.0.668, Culture=neutral, PublicKeyToken=257b51d87d2e4d67, processorArchitecture=MSIL">
-      <HintPath>..\packages\protobuf-net.2.0.0.668\lib\net40\protobuf-net.dll</HintPath>
+      <HintPath>..\..\packages\protobuf-net.2.0.0.668\lib\net40\protobuf-net.dll</HintPath>
     </Reference>
     <Reference Include="SIL.Core, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
-      <HintPath>..\packages\SIL.Core.9.0.0-beta0154\lib\net461\SIL.Core.dll</HintPath>
+      <HintPath>..\..\packages\SIL.Core.9.0.0-beta0154\lib\net461\SIL.Core.dll</HintPath>
     </Reference>
     <Reference Include="SIL.Core.Desktop, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
-      <HintPath>..\packages\SIL.Core.Desktop.9.0.0-beta0154\lib\net461\SIL.Core.Desktop.dll</HintPath>
+      <HintPath>..\..\packages\SIL.Core.Desktop.9.0.0-beta0154\lib\net461\SIL.Core.Desktop.dll</HintPath>
     </Reference>
     <Reference Include="SIL.DictionaryServices, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
-      <HintPath>..\packages\SIL.DictionaryServices.9.0.0-beta0154\lib\net461\SIL.DictionaryServices.dll</HintPath>
+      <HintPath>..\..\packages\SIL.DictionaryServices.9.0.0-beta0154\lib\net461\SIL.DictionaryServices.dll</HintPath>
     </Reference>
     <Reference Include="SIL.Lexicon, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
-      <HintPath>..\packages\SIL.Lexicon.9.0.0-beta0154\lib\net461\SIL.Lexicon.dll</HintPath>
+      <HintPath>..\..\packages\SIL.Lexicon.9.0.0-beta0154\lib\net461\SIL.Lexicon.dll</HintPath>
     </Reference>
     <Reference Include="SIL.Lift, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
-      <HintPath>..\packages\SIL.Lift.9.0.0-beta0154\lib\net461\SIL.Lift.dll</HintPath>
+      <HintPath>..\..\packages\SIL.Lift.9.0.0-beta0154\lib\net461\SIL.Lift.dll</HintPath>
     </Reference>
     <Reference Include="SIL.Windows.Forms, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
-      <HintPath>..\packages\SIL.Windows.Forms.9.0.0-beta0154\lib\net461\SIL.Windows.Forms.dll</HintPath>
+      <HintPath>..\..\packages\SIL.Windows.Forms.9.0.0-beta0154\lib\net461\SIL.Windows.Forms.dll</HintPath>
     </Reference>
     <Reference Include="SIL.Windows.Forms.Keyboarding, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
-      <HintPath>..\packages\SIL.Windows.Forms.Keyboarding.9.0.0-beta0154\lib\net461\SIL.Windows.Forms.Keyboarding.dll</HintPath>
+      <HintPath>..\..\packages\SIL.Windows.Forms.Keyboarding.9.0.0-beta0154\lib\net461\SIL.Windows.Forms.Keyboarding.dll</HintPath>
     </Reference>
     <Reference Include="SIL.Windows.Forms.WritingSystems, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
-      <HintPath>..\packages\SIL.Windows.Forms.WritingSystems.9.0.0-beta0154\lib\net461\SIL.Windows.Forms.WritingSystems.dll</HintPath>
+      <HintPath>..\..\packages\SIL.Windows.Forms.WritingSystems.9.0.0-beta0154\lib\net461\SIL.Windows.Forms.WritingSystems.dll</HintPath>
     </Reference>
     <Reference Include="SIL.WritingSystems, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
-      <HintPath>..\packages\SIL.WritingSystems.9.0.0-beta0154\lib\net461\SIL.WritingSystems.dll</HintPath>
+      <HintPath>..\..\packages\SIL.WritingSystems.9.0.0-beta0154\lib\net461\SIL.WritingSystems.dll</HintPath>
     </Reference>
     <Reference Include="Spart, Version=1.0.0.0, Culture=neutral, PublicKeyToken=14d24e064e474331, processorArchitecture=MSIL">
-      <HintPath>..\packages\Spart.1.0.0\lib\net461\Spart.dll</HintPath>
+      <HintPath>..\..\packages\Spart.1.0.0\lib\net461\Spart.dll</HintPath>
       <Private>True</Private>
     </Reference>
     <Reference Include="StructureMap, Version=2.5.4.0, Culture=neutral, PublicKeyToken=e60ad81abae3c223, processorArchitecture=MSIL">
-      <HintPath>..\packages\structuremap.patched.2.5.4\lib\net461\StructureMap.dll</HintPath>
+      <HintPath>..\..\packages\structuremap.patched.2.5.4\lib\net461\StructureMap.dll</HintPath>
     </Reference>
     <Reference Include="System" />
     <Reference Include="System.Buffers, Version=4.0.3.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
-      <HintPath>..\packages\System.Buffers.4.5.1\lib\net461\System.Buffers.dll</HintPath>
+      <HintPath>..\..\packages\System.Buffers.4.5.1\lib\net461\System.Buffers.dll</HintPath>
     </Reference>
     <Reference Include="System.ComponentModel.Composition" />
     <Reference Include="System.Configuration" />
@@ -234,50 +234,50 @@
     <Reference Include="System.Data" />
     <Reference Include="System.Drawing" />
     <Reference Include="System.IO.FileSystem.AccessControl, Version=4.0.5.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
-      <HintPath>..\packages\System.IO.FileSystem.AccessControl.4.7.0\lib\net461\System.IO.FileSystem.AccessControl.dll</HintPath>
+      <HintPath>..\..\packages\System.IO.FileSystem.AccessControl.4.7.0\lib\net461\System.IO.FileSystem.AccessControl.dll</HintPath>
       <Private>True</Private>
     </Reference>
     <Reference Include="System.Management" />
     <Reference Include="System.Memory, Version=4.0.1.1, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
-      <HintPath>..\packages\System.Memory.4.5.4\lib\net461\System.Memory.dll</HintPath>
+      <HintPath>..\..\packages\System.Memory.4.5.4\lib\net461\System.Memory.dll</HintPath>
     </Reference>
     <Reference Include="System.Numerics" />
     <Reference Include="System.Numerics.Vectors, Version=4.1.4.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
-      <HintPath>..\packages\System.Numerics.Vectors.4.5.0\lib\net46\System.Numerics.Vectors.dll</HintPath>
+      <HintPath>..\..\packages\System.Numerics.Vectors.4.5.0\lib\net46\System.Numerics.Vectors.dll</HintPath>
     </Reference>
     <Reference Include="System.Runtime.CompilerServices.Unsafe, Version=4.0.4.1, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
-      <HintPath>..\packages\System.Runtime.CompilerServices.Unsafe.4.5.3\lib\net461\System.Runtime.CompilerServices.Unsafe.dll</HintPath>
+      <HintPath>..\..\packages\System.Runtime.CompilerServices.Unsafe.4.5.3\lib\net461\System.Runtime.CompilerServices.Unsafe.dll</HintPath>
     </Reference>
     <Reference Include="System.Runtime.InteropServices.RuntimeInformation, Version=4.0.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
-      <HintPath>..\packages\System.Runtime.InteropServices.RuntimeInformation.4.3.0\lib\net45\System.Runtime.InteropServices.RuntimeInformation.dll</HintPath>
+      <HintPath>..\..\packages\System.Runtime.InteropServices.RuntimeInformation.4.3.0\lib\net45\System.Runtime.InteropServices.RuntimeInformation.dll</HintPath>
     </Reference>
     <Reference Include="System.Security" />
     <Reference Include="System.Security.AccessControl, Version=4.1.3.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
-      <HintPath>..\packages\System.Security.AccessControl.4.7.0\lib\net461\System.Security.AccessControl.dll</HintPath>
+      <HintPath>..\..\packages\System.Security.AccessControl.4.7.0\lib\net461\System.Security.AccessControl.dll</HintPath>
       <Private>True</Private>
     </Reference>
     <Reference Include="System.Security.Principal.Windows, Version=4.1.3.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
-      <HintPath>..\packages\System.Security.Principal.Windows.4.7.0\lib\net461\System.Security.Principal.Windows.dll</HintPath>
+      <HintPath>..\..\packages\System.Security.Principal.Windows.4.7.0\lib\net461\System.Security.Principal.Windows.dll</HintPath>
       <Private>True</Private>
     </Reference>
     <Reference Include="System.ServiceModel" />
     <Reference Include="System.ServiceProcess" />
     <Reference Include="System.Threading.Tasks.Extensions, Version=4.2.0.1, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
-      <HintPath>..\packages\System.Threading.Tasks.Extensions.4.5.4\lib\net461\System.Threading.Tasks.Extensions.dll</HintPath>
+      <HintPath>..\..\packages\System.Threading.Tasks.Extensions.4.5.4\lib\net461\System.Threading.Tasks.Extensions.dll</HintPath>
     </Reference>
     <Reference Include="System.ValueTuple, Version=4.0.3.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
-      <HintPath>..\packages\System.ValueTuple.4.5.0\lib\net461\System.ValueTuple.dll</HintPath>
+      <HintPath>..\..\packages\System.ValueTuple.4.5.0\lib\net461\System.ValueTuple.dll</HintPath>
       <Private>True</Private>
     </Reference>
     <Reference Include="System.Web" />
     <Reference Include="System.Windows.Forms" />
     <Reference Include="System.Xml" />
     <Reference Include="TagLibSharp, Version=2.2.0.0, Culture=neutral, PublicKeyToken=db62eba44689b5b0, processorArchitecture=MSIL">
-      <HintPath>..\packages\TagLibSharp.2.2.0\lib\net45\TagLibSharp.dll</HintPath>
+      <HintPath>..\..\packages\TagLibSharp.2.2.0\lib\net45\TagLibSharp.dll</HintPath>
     </Reference>
     <Reference Include="Vulcan.Uczniowie.HelpProvider, Version=0.9.999.0, Culture=neutral, processorArchitecture=MSIL">
       <SpecificVersion>False</SpecificVersion>
-      <HintPath>..\packages\Vulcan.Uczniowie.HelpProvider.1.0.16\lib\net461\Vulcan.Uczniowie.HelpProvider.dll</HintPath>
+      <HintPath>..\..\packages\Vulcan.Uczniowie.HelpProvider.1.0.16\lib\net461\Vulcan.Uczniowie.HelpProvider.dll</HintPath>
     </Reference>
   </ItemGroup>
   <ItemGroup>
@@ -676,29 +676,29 @@
     <None Include="icu4c.readme.txt" />
   </ItemGroup>
   <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
-  <Import Project="..\packages\NDesk.DBus.0.15.0\build\NDesk.DBus.targets" Condition="Exists('..\packages\NDesk.DBus.0.15.0\build\NDesk.DBus.targets')" />
+  <Import Project="..\..\packages\NDesk.DBus.0.15.0\build\NDesk.DBus.targets" Condition="Exists('..\..\packages\NDesk.DBus.0.15.0\build\NDesk.DBus.targets')" />
   <Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
     <PropertyGroup>
       <ErrorText>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}.</ErrorText>
     </PropertyGroup>
-    <Error Condition="!Exists('..\packages\NDesk.DBus.0.15.0\build\NDesk.DBus.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\NDesk.DBus.0.15.0\build\NDesk.DBus.targets'))" />
-    <Error Condition="!Exists('..\packages\Mono.Posix.5.4.0.201\build\net45\Mono.Posix.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Mono.Posix.5.4.0.201\build\net45\Mono.Posix.targets'))" />
-    <Error Condition="!Exists('..\packages\Icu4c.Win.Min.59.1.7\build\Icu4c.Win.Min.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Icu4c.Win.Min.59.1.7\build\Icu4c.Win.Min.targets'))" />
-    <Error Condition="!Exists('..\packages\Icu4c.Win.Fw.Lib.54.1.22-beta\build\Icu4c.Win.Fw.Lib.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Icu4c.Win.Fw.Lib.54.1.22-beta\build\Icu4c.Win.Fw.Lib.targets'))" />
-    <Error Condition="!Exists('..\packages\Icu4c.Win.Fw.Bin.54.1.22-beta\build\Icu4c.Win.Fw.Bin.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Icu4c.Win.Fw.Bin.54.1.22-beta\build\Icu4c.Win.Fw.Bin.targets'))" />
-    <Error Condition="!Exists('..\packages\NHunspell.Patched.1.2.5554\build\NHunspell.Patched.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\NHunspell.Patched.1.2.5554\build\NHunspell.Patched.targets'))" />
-    <Error Condition="!Exists('..\packages\SIL.Chorus.Mercurial.3.0.3\build\SIL.Chorus.Mercurial.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\SIL.Chorus.Mercurial.3.0.3\build\SIL.Chorus.Mercurial.targets'))" />
-    <Error Condition="!Exists('..\packages\SIL.Windows.Forms.Keyboarding.9.0.0-beta0154\build\SIL.Windows.Forms.Keyboarding.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\SIL.Windows.Forms.Keyboarding.9.0.0-beta0154\build\SIL.Windows.Forms.Keyboarding.targets'))" />
-    <Error Condition="!Exists('..\packages\SIL.Windows.Forms.9.0.0-beta0154\build\SIL.Windows.Forms.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\SIL.Windows.Forms.9.0.0-beta0154\build\SIL.Windows.Forms.targets'))" />
+    <Error Condition="!Exists('..\..\packages\NDesk.DBus.0.15.0\build\NDesk.DBus.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\NDesk.DBus.0.15.0\build\NDesk.DBus.targets'))" />
+    <Error Condition="!Exists('..\..\packages\Mono.Posix.5.4.0.201\build\net45\Mono.Posix.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\Mono.Posix.5.4.0.201\build\net45\Mono.Posix.targets'))" />
+    <Error Condition="!Exists('..\..\packages\Icu4c.Win.Min.59.1.7\build\Icu4c.Win.Min.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\Icu4c.Win.Min.59.1.7\build\Icu4c.Win.Min.targets'))" />
+    <Error Condition="!Exists('..\..\packages\Icu4c.Win.Fw.Lib.54.1.22-beta\build\Icu4c.Win.Fw.Lib.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\Icu4c.Win.Fw.Lib.54.1.22-beta\build\Icu4c.Win.Fw.Lib.targets'))" />
+    <Error Condition="!Exists('..\..\packages\Icu4c.Win.Fw.Bin.54.1.22-beta\build\Icu4c.Win.Fw.Bin.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\Icu4c.Win.Fw.Bin.54.1.22-beta\build\Icu4c.Win.Fw.Bin.targets'))" />
+    <Error Condition="!Exists('..\..\packages\NHunspell.Patched.1.2.5554\build\NHunspell.Patched.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\NHunspell.Patched.1.2.5554\build\NHunspell.Patched.targets'))" />
+    <Error Condition="!Exists('..\..\packages\SIL.Chorus.Mercurial.3.0.3\build\SIL.Chorus.Mercurial.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\SIL.Chorus.Mercurial.3.0.3\build\SIL.Chorus.Mercurial.targets'))" />
+    <Error Condition="!Exists('..\..\packages\SIL.Windows.Forms.Keyboarding.9.0.0-beta0154\build\SIL.Windows.Forms.Keyboarding.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\SIL.Windows.Forms.Keyboarding.9.0.0-beta0154\build\SIL.Windows.Forms.Keyboarding.targets'))" />
+    <Error Condition="!Exists('..\..\packages\SIL.Windows.Forms.9.0.0-beta0154\build\SIL.Windows.Forms.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\SIL.Windows.Forms.9.0.0-beta0154\build\SIL.Windows.Forms.targets'))" />
   </Target>
-  <Import Project="..\packages\Mono.Posix.5.4.0.201\build\net45\Mono.Posix.targets" Condition="Exists('..\packages\Mono.Posix.5.4.0.201\build\net45\Mono.Posix.targets')" />
-  <Import Project="..\packages\Icu4c.Win.Min.59.1.7\build\Icu4c.Win.Min.targets" Condition="Exists('..\packages\Icu4c.Win.Min.59.1.7\build\Icu4c.Win.Min.targets')" />
-  <Import Project="..\packages\Icu4c.Win.Fw.Lib.54.1.22-beta\build\Icu4c.Win.Fw.Lib.targets" Condition="Exists('..\packages\Icu4c.Win.Fw.Lib.54.1.22-beta\build\Icu4c.Win.Fw.Lib.targets')" />
-  <Import Project="..\packages\Icu4c.Win.Fw.Bin.54.1.22-beta\build\Icu4c.Win.Fw.Bin.targets" Condition="Exists('..\packages\Icu4c.Win.Fw.Bin.54.1.22-beta\build\Icu4c.Win.Fw.Bin.targets')" />
-  <Import Project="..\packages\NHunspell.Patched.1.2.5554\build\NHunspell.Patched.targets" Condition="Exists('..\packages\NHunspell.Patched.1.2.5554\build\NHunspell.Patched.targets')" />
-  <Import Project="..\packages\SIL.Chorus.Mercurial.3.0.3\build\SIL.Chorus.Mercurial.targets" Condition="Exists('..\packages\SIL.Chorus.Mercurial.3.0.3\build\SIL.Chorus.Mercurial.targets')" />
-  <Import Project="..\packages\SIL.Windows.Forms.Keyboarding.9.0.0-beta0154\build\SIL.Windows.Forms.Keyboarding.targets" Condition="Exists('..\packages\SIL.Windows.Forms.Keyboarding.9.0.0-beta0154\build\SIL.Windows.Forms.Keyboarding.targets')" />
-  <Import Project="..\packages\SIL.Windows.Forms.9.0.0-beta0154\build\SIL.Windows.Forms.targets" Condition="Exists('..\packages\SIL.Windows.Forms.9.0.0-beta0154\build\SIL.Windows.Forms.targets')" />
+  <Import Project="..\..\packages\Mono.Posix.5.4.0.201\build\net45\Mono.Posix.targets" Condition="Exists('..\..\packages\Mono.Posix.5.4.0.201\build\net45\Mono.Posix.targets')" />
+  <Import Project="..\..\packages\Icu4c.Win.Min.59.1.7\build\Icu4c.Win.Min.targets" Condition="Exists('..\..\packages\Icu4c.Win.Min.59.1.7\build\Icu4c.Win.Min.targets')" />
+  <Import Project="..\..\packages\Icu4c.Win.Fw.Lib.54.1.22-beta\build\Icu4c.Win.Fw.Lib.targets" Condition="Exists('..\..\packages\Icu4c.Win.Fw.Lib.54.1.22-beta\build\Icu4c.Win.Fw.Lib.targets')" />
+  <Import Project="..\..\packages\Icu4c.Win.Fw.Bin.54.1.22-beta\build\Icu4c.Win.Fw.Bin.targets" Condition="Exists('..\..\packages\Icu4c.Win.Fw.Bin.54.1.22-beta\build\Icu4c.Win.Fw.Bin.targets')" />
+  <Import Project="..\..\packages\NHunspell.Patched.1.2.5554\build\NHunspell.Patched.targets" Condition="Exists('..\..\packages\NHunspell.Patched.1.2.5554\build\NHunspell.Patched.targets')" />
+  <Import Project="..\..\packages\SIL.Chorus.Mercurial.3.0.3\build\SIL.Chorus.Mercurial.targets" Condition="Exists('..\..\packages\SIL.Chorus.Mercurial.3.0.3\build\SIL.Chorus.Mercurial.targets')" />
+  <Import Project="..\..\packages\SIL.Windows.Forms.Keyboarding.9.0.0-beta0154\build\SIL.Windows.Forms.Keyboarding.targets" Condition="Exists('..\..\packages\SIL.Windows.Forms.Keyboarding.9.0.0-beta0154\build\SIL.Windows.Forms.Keyboarding.targets')" />
+  <Import Project="..\..\packages\SIL.Windows.Forms.9.0.0-beta0154\build\SIL.Windows.Forms.targets" Condition="Exists('..\..\packages\SIL.Windows.Forms.9.0.0-beta0154\build\SIL.Windows.Forms.targets')" />
   <!-- To modify your build process, add your task inside one of the targets below and uncomment it.
 	   Other similar extension points exist, see Microsoft.Common.targets.
   <Target Name="BeforeBuild">
diff --git a/src/WeSay.Data.Tests/WeSay.Data.Tests.csproj b/src/WeSay.Data.Tests/WeSay.Data.Tests.csproj
index 317da54f9..8f23ff136 100644
--- a/src/WeSay.Data.Tests/WeSay.Data.Tests.csproj
+++ b/src/WeSay.Data.Tests/WeSay.Data.Tests.csproj
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="12.0">
-  <Import Project="..\packages\NUnit.3.13.1\build\NUnit.props" Condition="Exists('..\packages\NUnit.3.13.1\build\NUnit.props')" />
+  <Import Project="..\..\packages\NUnit.3.13.1\build\NUnit.props" Condition="Exists('..\..\packages\NUnit.3.13.1\build\NUnit.props')" />
   <PropertyGroup>
     <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
@@ -89,44 +89,44 @@
   </ItemGroup>
   <ItemGroup>
     <Reference Include="icu.net, Version=2.7.0.0, Culture=neutral, PublicKeyToken=416fdd914afa6b66, processorArchitecture=MSIL">
-      <HintPath>..\packages\icu.net.2.7.1\lib\net451\icu.net.dll</HintPath>
+      <HintPath>..\..\packages\icu.net.2.7.1\lib\net451\icu.net.dll</HintPath>
     </Reference>
     <Reference Include="Microsoft.DotNet.PlatformAbstractions, Version=2.0.4.0, Culture=neutral, PublicKeyToken=adb9793829ddae60, processorArchitecture=MSIL">
-      <HintPath>..\packages\Microsoft.DotNet.PlatformAbstractions.2.0.4\lib\net45\Microsoft.DotNet.PlatformAbstractions.dll</HintPath>
+      <HintPath>..\..\packages\Microsoft.DotNet.PlatformAbstractions.2.0.4\lib\net45\Microsoft.DotNet.PlatformAbstractions.dll</HintPath>
     </Reference>
     <Reference Include="Microsoft.Extensions.DependencyModel, Version=2.0.4.0, Culture=neutral, PublicKeyToken=adb9793829ddae60, processorArchitecture=MSIL">
-      <HintPath>..\packages\Microsoft.Extensions.DependencyModel.2.0.4\lib\net451\Microsoft.Extensions.DependencyModel.dll</HintPath>
+      <HintPath>..\..\packages\Microsoft.Extensions.DependencyModel.2.0.4\lib\net451\Microsoft.Extensions.DependencyModel.dll</HintPath>
     </Reference>
     <Reference Include="Mono.Posix, Version=7.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
-      <HintPath>..\packages\Mono.Posix.7.0.0-alpha2.21278.1\lib\net45\Mono.Posix.dll</HintPath>
+      <HintPath>..\..\packages\Mono.Posix.7.0.0-alpha2.21278.1\lib\net45\Mono.Posix.dll</HintPath>
     </Reference>
     <Reference Include="Mono.Unix, Version=7.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
-      <HintPath>..\packages\Mono.Unix.7.0.0-alpha2.21278.1\lib\net45\Mono.Unix.dll</HintPath>
+      <HintPath>..\..\packages\Mono.Unix.7.0.0-alpha2.21278.1\lib\net45\Mono.Unix.dll</HintPath>
     </Reference>
     <Reference Include="Newtonsoft.Json, Version=12.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
-      <HintPath>..\packages\Newtonsoft.Json.12.0.3\lib\net45\Newtonsoft.Json.dll</HintPath>
+      <HintPath>..\..\packages\Newtonsoft.Json.12.0.3\lib\net45\Newtonsoft.Json.dll</HintPath>
     </Reference>
     <Reference Include="nunit.framework, Version=3.13.1.0, Culture=neutral, PublicKeyToken=2638cd05610744eb, processorArchitecture=MSIL">
-      <HintPath>..\packages\NUnit.3.13.1\lib\net45\nunit.framework.dll</HintPath>
+      <HintPath>..\..\packages\NUnit.3.13.1\lib\net45\nunit.framework.dll</HintPath>
     </Reference>
     <Reference Include="SIL.Core, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
-      <HintPath>..\packages\SIL.Core.9.0.0-beta0154\lib\net461\SIL.Core.dll</HintPath>
+      <HintPath>..\..\packages\SIL.Core.9.0.0-beta0154\lib\net461\SIL.Core.dll</HintPath>
     </Reference>
     <Reference Include="SIL.Core.Desktop">
       <SpecificVersion>False</SpecificVersion>
-      <HintPath>..\packages\SIL.Core.Desktop.9.0.0-beta0154\lib\net461\SIL.Core.Desktop.dll</HintPath>
+      <HintPath>..\..\packages\SIL.Core.Desktop.9.0.0-beta0154\lib\net461\SIL.Core.Desktop.dll</HintPath>
     </Reference>
     <Reference Include="SIL.Core.Tests, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
-      <HintPath>..\packages\SIL.Core.Tests.9.0.0-beta0154\lib\net461\SIL.Core.Tests.dll</HintPath>
+      <HintPath>..\..\packages\SIL.Core.Tests.9.0.0-beta0154\lib\net461\SIL.Core.Tests.dll</HintPath>
     </Reference>
     <Reference Include="SIL.TestUtilities, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
-      <HintPath>..\packages\SIL.TestUtilities.9.0.0-beta0154\lib\net461\SIL.TestUtilities.dll</HintPath>
+      <HintPath>..\..\packages\SIL.TestUtilities.9.0.0-beta0154\lib\net461\SIL.TestUtilities.dll</HintPath>
     </Reference>
     <Reference Include="SIL.WritingSystems, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
-      <HintPath>..\packages\SIL.WritingSystems.9.0.0-beta0154\lib\net461\SIL.WritingSystems.dll</HintPath>
+      <HintPath>..\..\packages\SIL.WritingSystems.9.0.0-beta0154\lib\net461\SIL.WritingSystems.dll</HintPath>
     </Reference>
     <Reference Include="Spart, Version=1.0.0.0, Culture=neutral, PublicKeyToken=14d24e064e474331, processorArchitecture=MSIL">
-      <HintPath>..\packages\Spart.1.0.0\lib\net461\Spart.dll</HintPath>
+      <HintPath>..\..\packages\Spart.1.0.0\lib\net461\Spart.dll</HintPath>
     </Reference>
     <Reference Include="System" />
     <Reference Include="System.Core">
@@ -134,16 +134,16 @@
     </Reference>
     <Reference Include="System.Data" />
     <Reference Include="System.IO.FileSystem.AccessControl, Version=4.0.5.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
-      <HintPath>..\packages\System.IO.FileSystem.AccessControl.4.7.0\lib\net461\System.IO.FileSystem.AccessControl.dll</HintPath>
+      <HintPath>..\..\packages\System.IO.FileSystem.AccessControl.4.7.0\lib\net461\System.IO.FileSystem.AccessControl.dll</HintPath>
     </Reference>
     <Reference Include="System.Security.AccessControl, Version=4.1.3.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
-      <HintPath>..\packages\System.Security.AccessControl.4.7.0\lib\net461\System.Security.AccessControl.dll</HintPath>
+      <HintPath>..\..\packages\System.Security.AccessControl.4.7.0\lib\net461\System.Security.AccessControl.dll</HintPath>
     </Reference>
     <Reference Include="System.Security.Principal.Windows, Version=4.1.3.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
-      <HintPath>..\packages\System.Security.Principal.Windows.4.7.0\lib\net461\System.Security.Principal.Windows.dll</HintPath>
+      <HintPath>..\..\packages\System.Security.Principal.Windows.4.7.0\lib\net461\System.Security.Principal.Windows.dll</HintPath>
     </Reference>
     <Reference Include="System.ValueTuple, Version=4.0.3.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
-      <HintPath>..\packages\System.ValueTuple.4.5.0\lib\net461\System.ValueTuple.dll</HintPath>
+      <HintPath>..\..\packages\System.ValueTuple.4.5.0\lib\net461\System.ValueTuple.dll</HintPath>
     </Reference>
     <Reference Include="System.Web" />
     <Reference Include="System.Xml" />
@@ -176,8 +176,8 @@
     <PropertyGroup>
       <ErrorText>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}.</ErrorText>
     </PropertyGroup>
-    <Error Condition="!Exists('..\packages\NUnit.3.13.1\build\NUnit.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\NUnit.3.13.1\build\NUnit.props'))" />
-    <Error Condition="!Exists('..\packages\Mono.Unix.7.0.0-alpha2.21278.1\build\Mono.Unix.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Mono.Unix.7.0.0-alpha2.21278.1\build\Mono.Unix.targets'))" />
+    <Error Condition="!Exists('..\..\packages\NUnit.3.13.1\build\NUnit.props')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\NUnit.3.13.1\build\NUnit.props'))" />
+    <Error Condition="!Exists('..\..\packages\Mono.Unix.7.0.0-alpha2.21278.1\build\Mono.Unix.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\Mono.Unix.7.0.0-alpha2.21278.1\build\Mono.Unix.targets'))" />
   </Target>
-  <Import Project="..\packages\Mono.Unix.7.0.0-alpha2.21278.1\build\Mono.Unix.targets" Condition="Exists('..\packages\Mono.Unix.7.0.0-alpha2.21278.1\build\Mono.Unix.targets')" />
+  <Import Project="..\..\packages\Mono.Unix.7.0.0-alpha2.21278.1\build\Mono.Unix.targets" Condition="Exists('..\..\packages\Mono.Unix.7.0.0-alpha2.21278.1\build\Mono.Unix.targets')" />
 </Project>
\ No newline at end of file
diff --git a/src/WeSay.Data/WeSay.Data.csproj b/src/WeSay.Data/WeSay.Data.csproj
index b52996a49..57d4cfeb2 100755
--- a/src/WeSay.Data/WeSay.Data.csproj
+++ b/src/WeSay.Data/WeSay.Data.csproj
@@ -92,14 +92,14 @@
   <ItemGroup>
     <Reference Include="Newtonsoft.Json, Version=12.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
       <SpecificVersion>False</SpecificVersion>
-      <HintPath>..\packages\Newtonsoft.Json.12.0.3\lib\net45\Newtonsoft.Json.dll</HintPath>
+      <HintPath>..\..\packages\Newtonsoft.Json.12.0.3\lib\net45\Newtonsoft.Json.dll</HintPath>
     </Reference>
     <Reference Include="SIL.Core, Version=2.6.0.0, Culture=neutral, processorArchitecture=x86">
       <SpecificVersion>False</SpecificVersion>
-      <HintPath>..\packages\SIL.Core.9.0.0-beta0154\lib\net461\SIL.Core.dll</HintPath>
+      <HintPath>..\..\packages\SIL.Core.9.0.0-beta0154\lib\net461\SIL.Core.dll</HintPath>
     </Reference>
     <Reference Include="SIL.Core.Desktop">
-      <HintPath>..\packages\SIL.Core.Desktop.9.0.0-beta0154\lib\net461\SIL.Core.Desktop.dll</HintPath>
+      <HintPath>..\..\packages\SIL.Core.Desktop.9.0.0-beta0154\lib\net461\SIL.Core.Desktop.dll</HintPath>
     </Reference>
     <Reference Include="System" />
     <Reference Include="System.Data" />
diff --git a/src/WeSay.Foundation.Tests/WeSay.Foundation.Tests.csproj b/src/WeSay.Foundation.Tests/WeSay.Foundation.Tests.csproj
index 9b0853e42..0c5815fae 100644
--- a/src/WeSay.Foundation.Tests/WeSay.Foundation.Tests.csproj
+++ b/src/WeSay.Foundation.Tests/WeSay.Foundation.Tests.csproj
@@ -1,5 +1,5 @@
 <Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="3.5">
-  <Import Project="..\packages\NUnit.3.13.1\build\NUnit.props" Condition="Exists('..\packages\NUnit.3.13.1\build\NUnit.props')" />
+  <Import Project="..\..\packages\NUnit.3.13.1\build\NUnit.props" Condition="Exists('..\..\packages\NUnit.3.13.1\build\NUnit.props')" />
   <PropertyGroup>
 	<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
 	<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
@@ -51,26 +51,26 @@
   </PropertyGroup>
   <ItemGroup>
 	<Reference Include="ICSharpCode.SharpZipLib, Version=0.86.0.518, Culture=neutral, PublicKeyToken=1b03e6acf1164f73, processorArchitecture=MSIL">
-	  <HintPath>..\packages\SharpZipLib.0.86.0\lib\20\ICSharpCode.SharpZipLib.dll</HintPath>
+	  <HintPath>..\..\packages\SharpZipLib.0.86.0\lib\20\ICSharpCode.SharpZipLib.dll</HintPath>
 	</Reference>
 	<Reference Include="NetReflector, Version=1.0.0.0, Culture=neutral">
 	  <SpecificVersion>False</SpecificVersion>
-	  <HintPath>>../packages/NetReflector.1.1.2009/lib/net20/NetReflector.dll</HintPath>
+	  <HintPath>>../../packages/NetReflector.1.1.2009/lib/net20/NetReflector.dll</HintPath>
 	</Reference>
     <Reference Include="nunit.framework, Version=3.13.1.0, Culture=neutral, PublicKeyToken=2638cd05610744eb, processorArchitecture=MSIL">
-      <HintPath>..\packages\NUnit.3.13.1\lib\net45\nunit.framework.dll</HintPath>
+      <HintPath>..\..\packages\NUnit.3.13.1\lib\net45\nunit.framework.dll</HintPath>
     </Reference>
 	<Reference Include="SIL.Core, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
 	  <SpecificVersion>False</SpecificVersion>
-      <HintPath>..\packages\SIL.Core.9.0.0-beta0154\lib\net461\SIL.Core.dll</HintPath>
+      <HintPath>..\..\packages\SIL.Core.9.0.0-beta0154\lib\net461\SIL.Core.dll</HintPath>
 	</Reference>
 	<Reference Include="SIL.TestUtilities, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
 	  <SpecificVersion>False</SpecificVersion>
-      <HintPath>..\packages\SIL.TestUtilities.9.0.0-beta0154\lib\net461\SIL.TestUtilities.dll</HintPath>
+      <HintPath>..\..\packages\SIL.TestUtilities.9.0.0-beta0154\lib\net461\SIL.TestUtilities.dll</HintPath>
 	</Reference>
 	<Reference Include="SIL.Windows.Forms, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
 	  <SpecificVersion>False</SpecificVersion>
-      <HintPath>..\packages\SIL.Windows.Forms.9.0.0-beta0154\lib\net461\SIL.Windows.Forms.dll</HintPath>
+      <HintPath>..\..\packages\SIL.Windows.Forms.9.0.0-beta0154\lib\net461\SIL.Windows.Forms.dll</HintPath>
 	</Reference>
 	<Reference Include="System" />
 	<Reference Include="System.Data" />
diff --git a/src/WeSay.Project.Tests/WeSay.Project.Tests.csproj b/src/WeSay.Project.Tests/WeSay.Project.Tests.csproj
index d8dc633aa..3ab0beabf 100755
--- a/src/WeSay.Project.Tests/WeSay.Project.Tests.csproj
+++ b/src/WeSay.Project.Tests/WeSay.Project.Tests.csproj
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="12.0">
-  <Import Project="..\packages\NUnit.3.13.1\build\NUnit.props" Condition="Exists('..\packages\NUnit.3.13.1\build\NUnit.props')" />
+  <Import Project="..\..\packages\NUnit.3.13.1\build\NUnit.props" Condition="Exists('..\..\packages\NUnit.3.13.1\build\NUnit.props')" />
   <PropertyGroup>
     <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
@@ -75,94 +75,94 @@
   </PropertyGroup>
   <ItemGroup>
     <Reference Include="Autofac, Version=4.1.1.0, Culture=neutral, PublicKeyToken=17863af14b0044da, processorArchitecture=MSIL">
-      <HintPath>..\packages\Autofac.4.1.1\lib\net45\Autofac.dll</HintPath>
+      <HintPath>..\..\packages\Autofac.4.1.1\lib\net45\Autofac.dll</HintPath>
     </Reference>
     <Reference Include="Chorus, Version=5.0.0.0, Culture=neutral, PublicKeyToken=f1447bae1e63f485, processorArchitecture=MSIL">
-      <HintPath>..\packages\SIL.Chorus.App.5.0.0-beta0017\lib\net461\Chorus.exe</HintPath>
+      <HintPath>..\..\packages\SIL.Chorus.App.5.0.0-beta0017\lib\net461\Chorus.exe</HintPath>
     </Reference>
     <Reference Include="Commons.Xml.Relaxng, Version=4.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756, processorArchitecture=MSIL">
-      <HintPath>..\packages\RelaxNG.3.2.3\lib\net40\Commons.Xml.Relaxng.dll</HintPath>
+      <HintPath>..\..\packages\RelaxNG.3.2.3\lib\net40\Commons.Xml.Relaxng.dll</HintPath>
     </Reference>
     <Reference Include="DialogAdapters, Version=0.1.9.0, Culture=neutral, PublicKeyToken=7dc842182b0626dc, processorArchitecture=MSIL">
-      <HintPath>..\packages\DialogAdapters.Gtk2.0.1.9\lib\net461\DialogAdapters.dll</HintPath>
+      <HintPath>..\..\packages\DialogAdapters.Gtk2.0.1.9\lib\net461\DialogAdapters.dll</HintPath>
     </Reference>
     <None Include="..\..\lib\common\Enchant.Net.dll.config">
       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
     </None>
     <Reference Include="Enchant.Net, Version=1.4.0.0, Culture=neutral, PublicKeyToken=ae135aeb3d479ab9, processorArchitecture=MSIL">
-      <HintPath>..\packages\Enchant.Net.1.4.2\lib\net461\Enchant.Net.dll</HintPath>
+      <HintPath>..\..\packages\Enchant.Net.1.4.2\lib\net461\Enchant.Net.dll</HintPath>
     </Reference>
     <Reference Include="icu.net, Version=2.7.0.0, Culture=neutral, PublicKeyToken=416fdd914afa6b66, processorArchitecture=MSIL">
       <SpecificVersion>False</SpecificVersion>
-      <HintPath>..\packages\icu.net.2.7.1\lib\net451\icu.net.dll</HintPath>
+      <HintPath>..\..\packages\icu.net.2.7.1\lib\net451\icu.net.dll</HintPath>
     </Reference>
     <Reference Include="JetBrains.Annotations, Version=2021.2.0.0, Culture=neutral, PublicKeyToken=1010a0d8d6380325, processorArchitecture=MSIL">
-      <HintPath>..\packages\JetBrains.Annotations.2021.2.0\lib\net20\JetBrains.Annotations.dll</HintPath>
+      <HintPath>..\..\packages\JetBrains.Annotations.2021.2.0\lib\net20\JetBrains.Annotations.dll</HintPath>
     </Reference>
     <Reference Include="L10NSharp, Version=5.0.0.0, Culture=neutral, PublicKeyToken=fd0b3e309a5b7c28, processorArchitecture=MSIL">
-      <HintPath>..\packages\L10NSharp.5.0.0-beta0086\lib\net461\L10NSharp.dll</HintPath>
+      <HintPath>..\..\packages\L10NSharp.5.0.0-beta0086\lib\net461\L10NSharp.dll</HintPath>
     </Reference>
     <Reference Include="LibChorus, Version=5.0.0.0, Culture=neutral, PublicKeyToken=f1447bae1e63f485, processorArchitecture=MSIL">
-      <HintPath>..\packages\SIL.Chorus.LibChorus.5.0.0-beta0017\lib\net461\LibChorus.dll</HintPath>
+      <HintPath>..\..\packages\SIL.Chorus.LibChorus.5.0.0-beta0017\lib\net461\LibChorus.dll</HintPath>
     </Reference>
     <Reference Include="Markdig.Signed, Version=0.22.0.0, Culture=neutral, PublicKeyToken=870da25a133885f8, processorArchitecture=MSIL">
-      <HintPath>..\packages\Markdig.Signed.0.22.0\lib\net452\Markdig.Signed.dll</HintPath>
+      <HintPath>..\..\packages\Markdig.Signed.0.22.0\lib\net452\Markdig.Signed.dll</HintPath>
     </Reference>
     <Reference Include="Microsoft.DotNet.PlatformAbstractions, Version=2.0.4.0, Culture=neutral, PublicKeyToken=adb9793829ddae60, processorArchitecture=MSIL">
-      <HintPath>..\packages\Microsoft.DotNet.PlatformAbstractions.2.0.4\lib\net45\Microsoft.DotNet.PlatformAbstractions.dll</HintPath>
+      <HintPath>..\..\packages\Microsoft.DotNet.PlatformAbstractions.2.0.4\lib\net45\Microsoft.DotNet.PlatformAbstractions.dll</HintPath>
     </Reference>
     <Reference Include="Microsoft.Extensions.DependencyModel, Version=2.0.4.0, Culture=neutral, PublicKeyToken=adb9793829ddae60, processorArchitecture=MSIL">
-      <HintPath>..\packages\Microsoft.Extensions.DependencyModel.2.0.4\lib\net451\Microsoft.Extensions.DependencyModel.dll</HintPath>
+      <HintPath>..\..\packages\Microsoft.Extensions.DependencyModel.2.0.4\lib\net451\Microsoft.Extensions.DependencyModel.dll</HintPath>
     </Reference>
     <Reference Include="NDesk.DBus, Version=1.0.0.0, Culture=neutral, PublicKeyToken=f6716e4f9b2ed099, processorArchitecture=MSIL">
-      <HintPath>..\packages\NDesk.DBus.0.15.0\lib\NDesk.DBus.dll</HintPath>
+      <HintPath>..\..\packages\NDesk.DBus.0.15.0\lib\NDesk.DBus.dll</HintPath>
     </Reference>
     <Reference Include="NetReflector, Version=1.1.2009.1214, Culture=neutral, PublicKeyToken=2f4dd8b32acbcd8e, processorArchitecture=MSIL">
       <SpecificVersion>False</SpecificVersion>
-      <HintPath>..\packages\NetReflector.1.1.2009\lib\net20\NetReflector.dll</HintPath>
+      <HintPath>..\..\packages\NetReflector.1.1.2009\lib\net20\NetReflector.dll</HintPath>
     </Reference>
     <Reference Include="netstandard, Version=2.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51" />
     <Reference Include="Newtonsoft.Json, Version=12.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
       <SpecificVersion>False</SpecificVersion>
-      <HintPath>..\packages\Newtonsoft.Json.12.0.3\lib\net45\Newtonsoft.Json.dll</HintPath>
+      <HintPath>..\..\packages\Newtonsoft.Json.12.0.3\lib\net45\Newtonsoft.Json.dll</HintPath>
     </Reference>
     <Reference Include="nunit.framework, Version=3.13.1.0, Culture=neutral, PublicKeyToken=2638cd05610744eb, processorArchitecture=MSIL">
       <SpecificVersion>False</SpecificVersion>
-      <HintPath>..\packages\NUnit.3.13.1\lib\net45\nunit.framework.dll</HintPath>
+      <HintPath>..\..\packages\NUnit.3.13.1\lib\net45\nunit.framework.dll</HintPath>
     </Reference>
     <Reference Include="SIL.Core, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
-      <HintPath>..\packages\SIL.Core.9.0.0-beta0154\lib\net461\SIL.Core.dll</HintPath>
+      <HintPath>..\..\packages\SIL.Core.9.0.0-beta0154\lib\net461\SIL.Core.dll</HintPath>
     </Reference>
     <Reference Include="SIL.Core.Desktop, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
-      <HintPath>..\packages\SIL.Core.Desktop.9.0.0-beta0154\lib\net461\SIL.Core.Desktop.dll</HintPath>
+      <HintPath>..\..\packages\SIL.Core.Desktop.9.0.0-beta0154\lib\net461\SIL.Core.Desktop.dll</HintPath>
     </Reference>
     <Reference Include="SIL.DictionaryServices, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
-      <HintPath>..\packages\SIL.DictionaryServices.9.0.0-beta0154\lib\net461\SIL.DictionaryServices.dll</HintPath>
+      <HintPath>..\..\packages\SIL.DictionaryServices.9.0.0-beta0154\lib\net461\SIL.DictionaryServices.dll</HintPath>
     </Reference>
     <Reference Include="SIL.Lexicon, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
-      <HintPath>..\packages\SIL.Lexicon.9.0.0-beta0154\lib\net461\SIL.Lexicon.dll</HintPath>
+      <HintPath>..\..\packages\SIL.Lexicon.9.0.0-beta0154\lib\net461\SIL.Lexicon.dll</HintPath>
     </Reference>
     <Reference Include="SIL.Lift, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
-      <HintPath>..\packages\SIL.Lift.9.0.0-beta0154\lib\net461\SIL.Lift.dll</HintPath>
+      <HintPath>..\..\packages\SIL.Lift.9.0.0-beta0154\lib\net461\SIL.Lift.dll</HintPath>
     </Reference>
     <Reference Include="SIL.TestUtilities, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
-      <HintPath>..\packages\SIL.TestUtilities.9.0.0-beta0154\lib\net461\SIL.TestUtilities.dll</HintPath>
+      <HintPath>..\..\packages\SIL.TestUtilities.9.0.0-beta0154\lib\net461\SIL.TestUtilities.dll</HintPath>
     </Reference>
     <Reference Include="SIL.Windows.Forms, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
-      <HintPath>..\packages\SIL.Windows.Forms.9.0.0-beta0154\lib\net461\SIL.Windows.Forms.dll</HintPath>
+      <HintPath>..\..\packages\SIL.Windows.Forms.9.0.0-beta0154\lib\net461\SIL.Windows.Forms.dll</HintPath>
     </Reference>
     <Reference Include="SIL.WritingSystems, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
-      <HintPath>..\packages\SIL.WritingSystems.9.0.0-beta0154\lib\net461\SIL.WritingSystems.dll</HintPath>
+      <HintPath>..\..\packages\SIL.WritingSystems.9.0.0-beta0154\lib\net461\SIL.WritingSystems.dll</HintPath>
     </Reference>
     <Reference Include="SIL.WritingSystems.Tests, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
-      <HintPath>..\packages\SIL.WritingSystems.Tests.9.0.0-beta0154\lib\net461\SIL.WritingSystems.Tests.dll</HintPath>
+      <HintPath>..\..\packages\SIL.WritingSystems.Tests.9.0.0-beta0154\lib\net461\SIL.WritingSystems.Tests.dll</HintPath>
     </Reference>
     <Reference Include="Spart, Version=1.0.0.0, Culture=neutral, PublicKeyToken=14d24e064e474331, processorArchitecture=MSIL">
-      <HintPath>..\packages\Spart.1.0.0\lib\net461\Spart.dll</HintPath>
+      <HintPath>..\..\packages\Spart.1.0.0\lib\net461\Spart.dll</HintPath>
     </Reference>
     <Reference Include="System" />
     <Reference Include="System.Buffers, Version=4.0.3.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
-      <HintPath>..\packages\System.Buffers.4.5.1\lib\net461\System.Buffers.dll</HintPath>
+      <HintPath>..\..\packages\System.Buffers.4.5.1\lib\net461\System.Buffers.dll</HintPath>
     </Reference>
     <Reference Include="System.ComponentModel.Composition" />
     <Reference Include="System.Configuration" />
@@ -171,33 +171,33 @@
     </Reference>
     <Reference Include="System.Data" />
     <Reference Include="System.Diagnostics.DiagnosticSource, Version=4.0.5.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
-      <HintPath>..\packages\System.Diagnostics.DiagnosticSource.4.7.1\lib\net46\System.Diagnostics.DiagnosticSource.dll</HintPath>
+      <HintPath>..\..\packages\System.Diagnostics.DiagnosticSource.4.7.1\lib\net46\System.Diagnostics.DiagnosticSource.dll</HintPath>
     </Reference>
     <Reference Include="System.Drawing" />
     <Reference Include="System.IO.FileSystem.AccessControl, Version=4.0.5.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
-      <HintPath>..\packages\System.IO.FileSystem.AccessControl.4.7.0\lib\net461\System.IO.FileSystem.AccessControl.dll</HintPath>
+      <HintPath>..\..\packages\System.IO.FileSystem.AccessControl.4.7.0\lib\net461\System.IO.FileSystem.AccessControl.dll</HintPath>
     </Reference>
     <Reference Include="System.Management" />
     <Reference Include="System.Memory, Version=4.0.1.1, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
-      <HintPath>..\packages\System.Memory.4.5.4\lib\net461\System.Memory.dll</HintPath>
+      <HintPath>..\..\packages\System.Memory.4.5.4\lib\net461\System.Memory.dll</HintPath>
     </Reference>
     <Reference Include="System.Numerics" />
     <Reference Include="System.Numerics.Vectors, Version=4.1.4.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
-      <HintPath>..\packages\System.Numerics.Vectors.4.5.0\lib\net46\System.Numerics.Vectors.dll</HintPath>
+      <HintPath>..\..\packages\System.Numerics.Vectors.4.5.0\lib\net46\System.Numerics.Vectors.dll</HintPath>
     </Reference>
     <Reference Include="System.Runtime.CompilerServices.Unsafe, Version=4.0.4.1, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
-      <HintPath>..\packages\System.Runtime.CompilerServices.Unsafe.4.5.3\lib\net461\System.Runtime.CompilerServices.Unsafe.dll</HintPath>
+      <HintPath>..\..\packages\System.Runtime.CompilerServices.Unsafe.4.5.3\lib\net461\System.Runtime.CompilerServices.Unsafe.dll</HintPath>
     </Reference>
     <Reference Include="System.Security" />
     <Reference Include="System.Security.AccessControl, Version=4.1.3.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
-      <HintPath>..\packages\System.Security.AccessControl.4.7.0\lib\net461\System.Security.AccessControl.dll</HintPath>
+      <HintPath>..\..\packages\System.Security.AccessControl.4.7.0\lib\net461\System.Security.AccessControl.dll</HintPath>
     </Reference>
     <Reference Include="System.Security.Principal.Windows, Version=4.1.3.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
-      <HintPath>..\packages\System.Security.Principal.Windows.4.7.0\lib\net461\System.Security.Principal.Windows.dll</HintPath>
+      <HintPath>..\..\packages\System.Security.Principal.Windows.4.7.0\lib\net461\System.Security.Principal.Windows.dll</HintPath>
     </Reference>
     <Reference Include="System.ServiceModel" />
     <Reference Include="System.ValueTuple, Version=4.0.3.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
-      <HintPath>..\packages\System.ValueTuple.4.5.0\lib\net461\System.ValueTuple.dll</HintPath>
+      <HintPath>..\..\packages\System.ValueTuple.4.5.0\lib\net461\System.ValueTuple.dll</HintPath>
     </Reference>
     <Reference Include="System.Web" />
     <Reference Include="System.Windows.Forms" />
@@ -205,10 +205,10 @@
     <Reference Include="System.Xml.Linq" />
     <None Include="packages.config" />
     <Reference Include="TagLibSharp, Version=2.2.0.0, Culture=neutral, PublicKeyToken=db62eba44689b5b0, processorArchitecture=MSIL">
-      <HintPath>..\packages\TagLibSharp.2.2.0\lib\net45\TagLibSharp.dll</HintPath>
+      <HintPath>..\..\packages\TagLibSharp.2.2.0\lib\net45\TagLibSharp.dll</HintPath>
     </Reference>
     <Reference Include="Vulcan.Uczniowie.HelpProvider, Version=1.0.0.0, Culture=neutral, PublicKeyToken=c5e47f534b8ee927, processorArchitecture=MSIL">
-      <HintPath>..\packages\Vulcan.Uczniowie.HelpProvider.1.0.16\lib\net461\Vulcan.Uczniowie.HelpProvider.dll</HintPath>
+      <HintPath>..\..\packages\Vulcan.Uczniowie.HelpProvider.1.0.16\lib\net461\Vulcan.Uczniowie.HelpProvider.dll</HintPath>
     </Reference>
   </ItemGroup>
   <ItemGroup>
@@ -284,22 +284,22 @@
     <Service Include="{82A7F48D-3B50-4B1E-B82E-3ADA8210C358}" />
   </ItemGroup>
   <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
-  <Import Project="..\packages\NDesk.DBus.0.15.0\build\NDesk.DBus.targets" Condition="Exists('..\packages\NDesk.DBus.0.15.0\build\NDesk.DBus.targets')" />
+  <Import Project="..\..\packages\NDesk.DBus.0.15.0\build\NDesk.DBus.targets" Condition="Exists('..\..\packages\NDesk.DBus.0.15.0\build\NDesk.DBus.targets')" />
   <Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
     <PropertyGroup>
       <ErrorText>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}.</ErrorText>
     </PropertyGroup>
-    <Error Condition="!Exists('..\packages\NDesk.DBus.0.15.0\build\NDesk.DBus.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\NDesk.DBus.0.15.0\build\NDesk.DBus.targets'))" />
-    <Error Condition="!Exists('..\packages\Mono.Posix.5.4.0.201\build\net45\Mono.Posix.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Mono.Posix.5.4.0.201\build\net45\Mono.Posix.targets'))" />
-    <Error Condition="!Exists('..\packages\NUnit.3.13.1\build\NUnit.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\NUnit.3.13.1\build\NUnit.props'))" />
-    <Error Condition="!Exists('..\packages\Icu4c.Win.Min.59.1.7\build\Icu4c.Win.Min.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Icu4c.Win.Min.59.1.7\build\Icu4c.Win.Min.targets'))" />
-    <Error Condition="!Exists('..\packages\SIL.Chorus.Mercurial.3.0.3\build\SIL.Chorus.Mercurial.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\SIL.Chorus.Mercurial.3.0.3\build\SIL.Chorus.Mercurial.targets'))" />
-    <Error Condition="!Exists('..\packages\SIL.Windows.Forms.9.0.0-beta0154\build\SIL.Windows.Forms.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\SIL.Windows.Forms.9.0.0-beta0154\build\SIL.Windows.Forms.targets'))" />
+    <Error Condition="!Exists('..\..\packages\NDesk.DBus.0.15.0\build\NDesk.DBus.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\NDesk.DBus.0.15.0\build\NDesk.DBus.targets'))" />
+    <Error Condition="!Exists('..\..\packages\Mono.Posix.5.4.0.201\build\net45\Mono.Posix.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\Mono.Posix.5.4.0.201\build\net45\Mono.Posix.targets'))" />
+    <Error Condition="!Exists('..\..\packages\NUnit.3.13.1\build\NUnit.props')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\NUnit.3.13.1\build\NUnit.props'))" />
+    <Error Condition="!Exists('..\..\packages\Icu4c.Win.Min.59.1.7\build\Icu4c.Win.Min.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\Icu4c.Win.Min.59.1.7\build\Icu4c.Win.Min.targets'))" />
+    <Error Condition="!Exists('..\..\packages\SIL.Chorus.Mercurial.3.0.3\build\SIL.Chorus.Mercurial.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\SIL.Chorus.Mercurial.3.0.3\build\SIL.Chorus.Mercurial.targets'))" />
+    <Error Condition="!Exists('..\..\packages\SIL.Windows.Forms.9.0.0-beta0154\build\SIL.Windows.Forms.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\SIL.Windows.Forms.9.0.0-beta0154\build\SIL.Windows.Forms.targets'))" />
   </Target>
-  <Import Project="..\packages\Mono.Posix.5.4.0.201\build\net45\Mono.Posix.targets" Condition="Exists('..\packages\Mono.Posix.5.4.0.201\build\net45\Mono.Posix.targets')" />
-  <Import Project="..\packages\Icu4c.Win.Min.59.1.7\build\Icu4c.Win.Min.targets" Condition="Exists('..\packages\Icu4c.Win.Min.59.1.7\build\Icu4c.Win.Min.targets')" />
-  <Import Project="..\packages\SIL.Chorus.Mercurial.3.0.3\build\SIL.Chorus.Mercurial.targets" Condition="Exists('..\packages\SIL.Chorus.Mercurial.3.0.3\build\SIL.Chorus.Mercurial.targets')" />
-  <Import Project="..\packages\SIL.Windows.Forms.9.0.0-beta0154\build\SIL.Windows.Forms.targets" Condition="Exists('..\packages\SIL.Windows.Forms.9.0.0-beta0154\build\SIL.Windows.Forms.targets')" />
+  <Import Project="..\..\packages\Mono.Posix.5.4.0.201\build\net45\Mono.Posix.targets" Condition="Exists('..\..\packages\Mono.Posix.5.4.0.201\build\net45\Mono.Posix.targets')" />
+  <Import Project="..\..\packages\Icu4c.Win.Min.59.1.7\build\Icu4c.Win.Min.targets" Condition="Exists('..\..\packages\Icu4c.Win.Min.59.1.7\build\Icu4c.Win.Min.targets')" />
+  <Import Project="..\..\packages\SIL.Chorus.Mercurial.3.0.3\build\SIL.Chorus.Mercurial.targets" Condition="Exists('..\..\packages\SIL.Chorus.Mercurial.3.0.3\build\SIL.Chorus.Mercurial.targets')" />
+  <Import Project="..\..\packages\SIL.Windows.Forms.9.0.0-beta0154\build\SIL.Windows.Forms.targets" Condition="Exists('..\..\packages\SIL.Windows.Forms.9.0.0-beta0154\build\SIL.Windows.Forms.targets')" />
   <!-- To modify your build process, add your task inside one of the targets below and uncomment it.
 	   Other similar extension points exist, see Microsoft.Common.targets.
   <Target Name="BeforeBuild">
diff --git a/src/WeSay.Project/WeSay.Project.csproj b/src/WeSay.Project/WeSay.Project.csproj
index efb2b6c36..61baf2492 100755
--- a/src/WeSay.Project/WeSay.Project.csproj
+++ b/src/WeSay.Project/WeSay.Project.csproj
@@ -73,97 +73,97 @@
   </PropertyGroup>
   <ItemGroup>
     <Reference Include="Autofac, Version=4.1.1.0, Culture=neutral, PublicKeyToken=17863af14b0044da, processorArchitecture=MSIL">
-      <HintPath>..\packages\Autofac.4.1.1\lib\net45\Autofac.dll</HintPath>
+      <HintPath>..\..\packages\Autofac.4.1.1\lib\net45\Autofac.dll</HintPath>
     </Reference>
     <Reference Include="Chorus, Version=5.0.0.0, Culture=neutral, PublicKeyToken=f1447bae1e63f485, processorArchitecture=MSIL">
-      <HintPath>..\packages\SIL.Chorus.App.5.0.0-beta0017\lib\net461\Chorus.exe</HintPath>
+      <HintPath>..\..\packages\SIL.Chorus.App.5.0.0-beta0017\lib\net461\Chorus.exe</HintPath>
     </Reference>
     <Reference Include="DialogAdapters, Version=0.1.9.0, Culture=neutral, PublicKeyToken=7dc842182b0626dc, processorArchitecture=MSIL">
-      <HintPath>..\packages\DialogAdapters.Gtk2.0.1.9\lib\net461\DialogAdapters.dll</HintPath>
+      <HintPath>..\..\packages\DialogAdapters.Gtk2.0.1.9\lib\net461\DialogAdapters.dll</HintPath>
     </Reference>
     <Reference Include="Commons.Xml.Relaxng, Version=2.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756, processorArchitecture=MSIL">
       <SpecificVersion>False</SpecificVersion>
-      <HintPath>..\packages\RelaxNG.3.2.3\lib\net40\Commons.Xml.Relaxng.dll</HintPath>
+      <HintPath>..\..\packages\RelaxNG.3.2.3\lib\net40\Commons.Xml.Relaxng.dll</HintPath>
     </Reference>
     <Reference Include="Enchant.Net, Version=1.4.0.0, Culture=neutral, PublicKeyToken=ae135aeb3d479ab9, processorArchitecture=MSIL">
-      <HintPath>..\packages\Enchant.Net.1.4.2\lib\net461\Enchant.Net.dll</HintPath>
+      <HintPath>..\..\packages\Enchant.Net.1.4.2\lib\net461\Enchant.Net.dll</HintPath>
     </Reference>
     <Reference Include="icu.net, Version=2.7.0.0, Culture=neutral, PublicKeyToken=416fdd914afa6b66, processorArchitecture=MSIL">
-      <HintPath>..\packages\icu.net.2.7.1\lib\net451\icu.net.dll</HintPath>
+      <HintPath>..\..\packages\icu.net.2.7.1\lib\net451\icu.net.dll</HintPath>
     </Reference>
     <Reference Include="JetBrains.Annotations, Version=2021.2.0.0, Culture=neutral, PublicKeyToken=1010a0d8d6380325, processorArchitecture=MSIL">
-      <HintPath>..\packages\JetBrains.Annotations.2021.2.0\lib\net20\JetBrains.Annotations.dll</HintPath>
+      <HintPath>..\..\packages\JetBrains.Annotations.2021.2.0\lib\net20\JetBrains.Annotations.dll</HintPath>
     </Reference>
     <Reference Include="L10NSharp, Version=5.0.0.0, Culture=neutral, PublicKeyToken=fd0b3e309a5b7c28, processorArchitecture=MSIL">
-      <HintPath>..\packages\L10NSharp.5.0.0-beta0086\lib\net461\L10NSharp.dll</HintPath>
+      <HintPath>..\..\packages\L10NSharp.5.0.0-beta0086\lib\net461\L10NSharp.dll</HintPath>
     </Reference>
     <Reference Include="LibChorus, Version=5.0.0.0, Culture=neutral, PublicKeyToken=f1447bae1e63f485, processorArchitecture=MSIL">
-      <HintPath>..\packages\SIL.Chorus.LibChorus.5.0.0-beta0017\lib\net461\LibChorus.dll</HintPath>
+      <HintPath>..\..\packages\SIL.Chorus.LibChorus.5.0.0-beta0017\lib\net461\LibChorus.dll</HintPath>
     </Reference>
     <Reference Include="Markdig.Signed, Version=0.22.0.0, Culture=neutral, PublicKeyToken=870da25a133885f8, processorArchitecture=MSIL">
-      <HintPath>..\packages\Markdig.Signed.0.22.0\lib\net452\Markdig.Signed.dll</HintPath>
+      <HintPath>..\..\packages\Markdig.Signed.0.22.0\lib\net452\Markdig.Signed.dll</HintPath>
     </Reference>
     <Reference Include="Microsoft.Bcl.AsyncInterfaces, Version=5.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
       <SpecificVersion>False</SpecificVersion>
-      <HintPath>..\packages\Microsoft.Bcl.AsyncInterfaces.5.0.0\lib\net461\Microsoft.Bcl.AsyncInterfaces.dll</HintPath>
+      <HintPath>..\..\packages\Microsoft.Bcl.AsyncInterfaces.5.0.0\lib\net461\Microsoft.Bcl.AsyncInterfaces.dll</HintPath>
     </Reference>
     <Reference Include="Microsoft.DotNet.PlatformAbstractions, Version=2.0.4.0, Culture=neutral, PublicKeyToken=adb9793829ddae60, processorArchitecture=MSIL">
-      <HintPath>..\packages\Microsoft.DotNet.PlatformAbstractions.2.0.4\lib\net45\Microsoft.DotNet.PlatformAbstractions.dll</HintPath>
+      <HintPath>..\..\packages\Microsoft.DotNet.PlatformAbstractions.2.0.4\lib\net45\Microsoft.DotNet.PlatformAbstractions.dll</HintPath>
     </Reference>
     <Reference Include="Microsoft.Extensions.DependencyModel, Version=2.0.4.0, Culture=neutral, PublicKeyToken=adb9793829ddae60, processorArchitecture=MSIL">
-      <HintPath>..\packages\Microsoft.Extensions.DependencyModel.2.0.4\lib\net451\Microsoft.Extensions.DependencyModel.dll</HintPath>
+      <HintPath>..\..\packages\Microsoft.Extensions.DependencyModel.2.0.4\lib\net451\Microsoft.Extensions.DependencyModel.dll</HintPath>
     </Reference>
     <Reference Include="Mono.Addins, Version=1.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756, processorArchitecture=MSIL">
       <SpecificVersion>False</SpecificVersion>
-      <HintPath>..\packages\Mono.Addins.1.3.8\lib\net45\Mono.Addins.dll</HintPath>
+      <HintPath>..\..\packages\Mono.Addins.1.3.8\lib\net45\Mono.Addins.dll</HintPath>
     </Reference>
     <Reference Include="NDesk.DBus, Version=1.0.0.0, Culture=neutral, PublicKeyToken=f6716e4f9b2ed099, processorArchitecture=MSIL">
-      <HintPath>..\packages\NDesk.DBus.0.15.0\lib\NDesk.DBus.dll</HintPath>
+      <HintPath>..\..\packages\NDesk.DBus.0.15.0\lib\NDesk.DBus.dll</HintPath>
     </Reference>
     <Reference Include="NetReflector, Version=1.1.2009.1214, Culture=neutral, PublicKeyToken=2f4dd8b32acbcd8e, processorArchitecture=MSIL">
       <SpecificVersion>False</SpecificVersion>
-      <HintPath>..\packages\NetReflector.1.1.2009\lib\net20\NetReflector.dll</HintPath>
+      <HintPath>..\..\packages\NetReflector.1.1.2009\lib\net20\NetReflector.dll</HintPath>
     </Reference>
     <Reference Include="Newtonsoft.Json, Version=12.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
       <SpecificVersion>False</SpecificVersion>
-      <HintPath>..\packages\Newtonsoft.Json.12.0.3\lib\net45\Newtonsoft.Json.dll</HintPath>
+      <HintPath>..\..\packages\Newtonsoft.Json.12.0.3\lib\net45\Newtonsoft.Json.dll</HintPath>
     </Reference>
     <Reference Include="SIL.Core, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
-      <HintPath>..\packages\SIL.Core.9.0.0-beta0154\lib\net461\SIL.Core.dll</HintPath>
+      <HintPath>..\..\packages\SIL.Core.9.0.0-beta0154\lib\net461\SIL.Core.dll</HintPath>
     </Reference>
     <Reference Include="SIL.Core.Desktop, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
-      <HintPath>..\packages\SIL.Core.Desktop.9.0.0-beta0154\lib\net461\SIL.Core.Desktop.dll</HintPath>
+      <HintPath>..\..\packages\SIL.Core.Desktop.9.0.0-beta0154\lib\net461\SIL.Core.Desktop.dll</HintPath>
     </Reference>
     <Reference Include="SIL.DictionaryServices, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
-      <HintPath>..\packages\SIL.DictionaryServices.9.0.0-beta0154\lib\net461\SIL.DictionaryServices.dll</HintPath>
+      <HintPath>..\..\packages\SIL.DictionaryServices.9.0.0-beta0154\lib\net461\SIL.DictionaryServices.dll</HintPath>
     </Reference>
     <Reference Include="SIL.Lexicon, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
-      <HintPath>..\packages\SIL.Lexicon.9.0.0-beta0154\lib\net461\SIL.Lexicon.dll</HintPath>
+      <HintPath>..\..\packages\SIL.Lexicon.9.0.0-beta0154\lib\net461\SIL.Lexicon.dll</HintPath>
     </Reference>
     <Reference Include="SIL.Lift, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
-      <HintPath>..\packages\SIL.Lift.9.0.0-beta0154\lib\net461\SIL.Lift.dll</HintPath>
+      <HintPath>..\..\packages\SIL.Lift.9.0.0-beta0154\lib\net461\SIL.Lift.dll</HintPath>
     </Reference>
     <Reference Include="SIL.Windows.Forms, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
-      <HintPath>..\packages\SIL.Windows.Forms.9.0.0-beta0154\lib\net461\SIL.Windows.Forms.dll</HintPath>
+      <HintPath>..\..\packages\SIL.Windows.Forms.9.0.0-beta0154\lib\net461\SIL.Windows.Forms.dll</HintPath>
     </Reference>
     <Reference Include="SIL.Windows.Forms.GeckoBrowserAdapter, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
-      <HintPath>..\packages\SIL.Windows.Forms.GeckoBrowserAdapter.9.0.0-beta0154\lib\net461\SIL.Windows.Forms.GeckoBrowserAdapter.dll</HintPath>
+      <HintPath>..\..\packages\SIL.Windows.Forms.GeckoBrowserAdapter.9.0.0-beta0154\lib\net461\SIL.Windows.Forms.GeckoBrowserAdapter.dll</HintPath>
     </Reference>
     <Reference Include="SIL.Windows.Forms.Keyboarding">
-      <HintPath>..\packages\SIL.Windows.Forms.Keyboarding.9.0.0-beta0154\lib\net461\SIL.Windows.Forms.Keyboarding.dll</HintPath>
+      <HintPath>..\..\packages\SIL.Windows.Forms.Keyboarding.9.0.0-beta0154\lib\net461\SIL.Windows.Forms.Keyboarding.dll</HintPath>
     </Reference>
     <None Include="..\..\lib\common\Enchant.Net.dll.config">
       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
     </None>
     <Reference Include="SIL.WritingSystems, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
-      <HintPath>..\packages\SIL.WritingSystems.9.0.0-beta0154\lib\net461\SIL.WritingSystems.dll</HintPath>
+      <HintPath>..\..\packages\SIL.WritingSystems.9.0.0-beta0154\lib\net461\SIL.WritingSystems.dll</HintPath>
     </Reference>
     <Reference Include="Spart, Version=1.0.0.0, Culture=neutral, PublicKeyToken=14d24e064e474331, processorArchitecture=MSIL">
-      <HintPath>..\packages\Spart.1.0.0\lib\net461\Spart.dll</HintPath>
+      <HintPath>..\..\packages\Spart.1.0.0\lib\net461\Spart.dll</HintPath>
     </Reference>
     <Reference Include="System" />
     <Reference Include="System.Buffers, Version=4.0.3.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
-      <HintPath>..\packages\System.Buffers.4.5.1\lib\net461\System.Buffers.dll</HintPath>
+      <HintPath>..\..\packages\System.Buffers.4.5.1\lib\net461\System.Buffers.dll</HintPath>
     </Reference>
     <Reference Include="System.ComponentModel.Composition" />
     <Reference Include="System.Configuration" />
@@ -173,42 +173,42 @@
     <Reference Include="System.Data" />
     <Reference Include="System.Drawing" />
     <Reference Include="System.IO.FileSystem.AccessControl, Version=4.0.5.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
-      <HintPath>..\packages\System.IO.FileSystem.AccessControl.4.7.0\lib\net461\System.IO.FileSystem.AccessControl.dll</HintPath>
+      <HintPath>..\..\packages\System.IO.FileSystem.AccessControl.4.7.0\lib\net461\System.IO.FileSystem.AccessControl.dll</HintPath>
     </Reference>
     <Reference Include="System.Management" />
     <Reference Include="System.Memory, Version=4.0.1.1, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
-      <HintPath>..\packages\System.Memory.4.5.4\lib\net461\System.Memory.dll</HintPath>
+      <HintPath>..\..\packages\System.Memory.4.5.4\lib\net461\System.Memory.dll</HintPath>
     </Reference>
     <Reference Include="System.Numerics" />
     <Reference Include="System.Numerics.Vectors, Version=4.1.4.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
-      <HintPath>..\packages\System.Numerics.Vectors.4.5.0\lib\net46\System.Numerics.Vectors.dll</HintPath>
+      <HintPath>..\..\packages\System.Numerics.Vectors.4.5.0\lib\net46\System.Numerics.Vectors.dll</HintPath>
     </Reference>
     <Reference Include="System.Runtime.CompilerServices.Unsafe, Version=4.0.4.1, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
-      <HintPath>..\packages\System.Runtime.CompilerServices.Unsafe.4.5.3\lib\net461\System.Runtime.CompilerServices.Unsafe.dll</HintPath>
+      <HintPath>..\..\packages\System.Runtime.CompilerServices.Unsafe.4.5.3\lib\net461\System.Runtime.CompilerServices.Unsafe.dll</HintPath>
     </Reference>
     <Reference Include="System.Security" />
     <Reference Include="System.Security.AccessControl, Version=4.1.3.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
-      <HintPath>..\packages\System.Security.AccessControl.4.7.0\lib\net461\System.Security.AccessControl.dll</HintPath>
+      <HintPath>..\..\packages\System.Security.AccessControl.4.7.0\lib\net461\System.Security.AccessControl.dll</HintPath>
     </Reference>
     <Reference Include="System.Security.Principal.Windows, Version=4.1.3.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
-      <HintPath>..\packages\System.Security.Principal.Windows.4.7.0\lib\net461\System.Security.Principal.Windows.dll</HintPath>
+      <HintPath>..\..\packages\System.Security.Principal.Windows.4.7.0\lib\net461\System.Security.Principal.Windows.dll</HintPath>
     </Reference>
     <Reference Include="System.ServiceModel" />
     <Reference Include="System.Threading.Tasks.Extensions, Version=4.2.0.1, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
-      <HintPath>..\packages\System.Threading.Tasks.Extensions.4.5.4\lib\net461\System.Threading.Tasks.Extensions.dll</HintPath>
+      <HintPath>..\..\packages\System.Threading.Tasks.Extensions.4.5.4\lib\net461\System.Threading.Tasks.Extensions.dll</HintPath>
     </Reference>
     <Reference Include="System.ValueTuple, Version=4.0.3.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
-      <HintPath>..\packages\System.ValueTuple.4.5.0\lib\net461\System.ValueTuple.dll</HintPath>
+      <HintPath>..\..\packages\System.ValueTuple.4.5.0\lib\net461\System.ValueTuple.dll</HintPath>
     </Reference>
     <Reference Include="System.Web" />
     <Reference Include="System.Windows.Forms" />
     <Reference Include="System.Xml" />
     <Reference Include="System.Xml.Linq" />
     <Reference Include="TagLibSharp, Version=2.2.0.0, Culture=neutral, PublicKeyToken=db62eba44689b5b0, processorArchitecture=MSIL">
-      <HintPath>..\packages\TagLibSharp.2.2.0\lib\net45\TagLibSharp.dll</HintPath>
+      <HintPath>..\..\packages\TagLibSharp.2.2.0\lib\net45\TagLibSharp.dll</HintPath>
     </Reference>
     <Reference Include="Vulcan.Uczniowie.HelpProvider, Version=1.0.0.0, Culture=neutral, PublicKeyToken=c5e47f534b8ee927, processorArchitecture=MSIL">
-      <HintPath>..\packages\Vulcan.Uczniowie.HelpProvider.1.0.16\lib\net461\Vulcan.Uczniowie.HelpProvider.dll</HintPath>
+      <HintPath>..\..\packages\Vulcan.Uczniowie.HelpProvider.1.0.16\lib\net461\Vulcan.Uczniowie.HelpProvider.dll</HintPath>
     </Reference>
   </ItemGroup>
   <ItemGroup>
@@ -316,19 +316,19 @@
     <EmbeddedResource Include="ConfigMigration\WeSayConfig\MigrateConfig9To10.xsl" />
   </ItemGroup>
   <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
-  <Import Project="..\packages\Icu4c.Win.Min.59.1.7\build\Icu4c.Win.Min.targets" Condition="Exists('..\packages\Icu4c.Win.Min.59.1.7\build\Icu4c.Win.Min.targets')" />
+  <Import Project="..\..\packages\Icu4c.Win.Min.59.1.7\build\Icu4c.Win.Min.targets" Condition="Exists('..\..\packages\Icu4c.Win.Min.59.1.7\build\Icu4c.Win.Min.targets')" />
   <Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
     <PropertyGroup>
       <ErrorText>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}.</ErrorText>
     </PropertyGroup>
-    <Error Condition="!Exists('..\packages\Icu4c.Win.Min.59.1.7\build\Icu4c.Win.Min.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Icu4c.Win.Min.59.1.7\build\Icu4c.Win.Min.targets'))" />
-    <Error Condition="!Exists('..\packages\NDesk.DBus.0.15.0\build\NDesk.DBus.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\NDesk.DBus.0.15.0\build\NDesk.DBus.targets'))" />
-    <Error Condition="!Exists('..\packages\SIL.Chorus.Mercurial.3.0.3\build\SIL.Chorus.Mercurial.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\SIL.Chorus.Mercurial.3.0.3\build\SIL.Chorus.Mercurial.targets'))" />
-    <Error Condition="!Exists('..\packages\SIL.Windows.Forms.9.0.0-beta0154\build\SIL.Windows.Forms.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\SIL.Windows.Forms.9.0.0-beta0154\build\SIL.Windows.Forms.targets'))" />
+    <Error Condition="!Exists('..\..\packages\Icu4c.Win.Min.59.1.7\build\Icu4c.Win.Min.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\Icu4c.Win.Min.59.1.7\build\Icu4c.Win.Min.targets'))" />
+    <Error Condition="!Exists('..\..\packages\NDesk.DBus.0.15.0\build\NDesk.DBus.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\NDesk.DBus.0.15.0\build\NDesk.DBus.targets'))" />
+    <Error Condition="!Exists('..\..\packages\SIL.Chorus.Mercurial.3.0.3\build\SIL.Chorus.Mercurial.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\SIL.Chorus.Mercurial.3.0.3\build\SIL.Chorus.Mercurial.targets'))" />
+    <Error Condition="!Exists('..\..\packages\SIL.Windows.Forms.9.0.0-beta0154\build\SIL.Windows.Forms.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\SIL.Windows.Forms.9.0.0-beta0154\build\SIL.Windows.Forms.targets'))" />
   </Target>
-  <Import Project="..\packages\NDesk.DBus.0.15.0\build\NDesk.DBus.targets" Condition="Exists('..\packages\NDesk.DBus.0.15.0\build\NDesk.DBus.targets')" />
-  <Import Project="..\packages\SIL.Chorus.Mercurial.3.0.3\build\SIL.Chorus.Mercurial.targets" Condition="Exists('..\packages\SIL.Chorus.Mercurial.3.0.3\build\SIL.Chorus.Mercurial.targets')" />
-  <Import Project="..\packages\SIL.Windows.Forms.9.0.0-beta0154\build\SIL.Windows.Forms.targets" Condition="Exists('..\packages\SIL.Windows.Forms.9.0.0-beta0154\build\SIL.Windows.Forms.targets')" />
+  <Import Project="..\..\packages\NDesk.DBus.0.15.0\build\NDesk.DBus.targets" Condition="Exists('..\..\packages\NDesk.DBus.0.15.0\build\NDesk.DBus.targets')" />
+  <Import Project="..\..\packages\SIL.Chorus.Mercurial.3.0.3\build\SIL.Chorus.Mercurial.targets" Condition="Exists('..\..\packages\SIL.Chorus.Mercurial.3.0.3\build\SIL.Chorus.Mercurial.targets')" />
+  <Import Project="..\..\packages\SIL.Windows.Forms.9.0.0-beta0154\build\SIL.Windows.Forms.targets" Condition="Exists('..\..\packages\SIL.Windows.Forms.9.0.0-beta0154\build\SIL.Windows.Forms.targets')" />
   <!-- To modify your build process, add your task inside one of the targets below and uncomment it.
 	   Other similar extension points exist, see Microsoft.Common.targets.
   <Target Name="BeforeBuild">
diff --git a/src/WeSay.TestUtilities/WeSay.TestUtilities.csproj b/src/WeSay.TestUtilities/WeSay.TestUtilities.csproj
index 3f9f687ce..8a394cb37 100755
--- a/src/WeSay.TestUtilities/WeSay.TestUtilities.csproj
+++ b/src/WeSay.TestUtilities/WeSay.TestUtilities.csproj
@@ -63,100 +63,100 @@
   </PropertyGroup>
   <ItemGroup>
     <Reference Include="Chorus">
-      <HintPath>..\packages\SIL.Chorus.App.5.0.0-beta0017\lib\net461\Chorus.exe</HintPath>
+      <HintPath>..\..\packages\SIL.Chorus.App.5.0.0-beta0017\lib\net461\Chorus.exe</HintPath>
     </Reference>
     <Reference Include="Commons.Xml.Relaxng, Version=4.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756, processorArchitecture=MSIL">
-      <HintPath>..\packages\RelaxNG.3.2.3\lib\net40\Commons.Xml.Relaxng.dll</HintPath>
+      <HintPath>..\..\packages\RelaxNG.3.2.3\lib\net40\Commons.Xml.Relaxng.dll</HintPath>
     </Reference>
     <Reference Include="DialogAdapters, Version=0.1.9.0, Culture=neutral, PublicKeyToken=7dc842182b0626dc, processorArchitecture=MSIL">
-      <HintPath>..\packages\DialogAdapters.Gtk2.0.1.9\lib\net461\DialogAdapters.dll</HintPath>
+      <HintPath>..\..\packages\DialogAdapters.Gtk2.0.1.9\lib\net461\DialogAdapters.dll</HintPath>
     </Reference>
     <Reference Include="Enchant.Net, Version=1.4.0.0, Culture=neutral, PublicKeyToken=ae135aeb3d479ab9, processorArchitecture=MSIL">
-      <HintPath>..\packages\Enchant.Net.1.4.2\lib\net461\Enchant.Net.dll</HintPath>
+      <HintPath>..\..\packages\Enchant.Net.1.4.2\lib\net461\Enchant.Net.dll</HintPath>
     </Reference>
     <Reference Include="icu.net, Version=2.7.0.0, Culture=neutral, PublicKeyToken=416fdd914afa6b66, processorArchitecture=MSIL">
-      <HintPath>..\packages\icu.net.2.7.1\lib\net451\icu.net.dll</HintPath>
+      <HintPath>..\..\packages\icu.net.2.7.1\lib\net451\icu.net.dll</HintPath>
     </Reference>
     <Reference Include="JetBrains.Annotations, Version=2021.2.0.0, Culture=neutral, PublicKeyToken=1010a0d8d6380325, processorArchitecture=MSIL">
-      <HintPath>..\packages\JetBrains.Annotations.2021.2.0\lib\net20\JetBrains.Annotations.dll</HintPath>
+      <HintPath>..\..\packages\JetBrains.Annotations.2021.2.0\lib\net20\JetBrains.Annotations.dll</HintPath>
     </Reference>
     <Reference Include="L10NSharp, Version=5.0.0.0, Culture=neutral, PublicKeyToken=fd0b3e309a5b7c28, processorArchitecture=MSIL">
-      <HintPath>..\packages\L10NSharp.5.0.0-beta0086\lib\net461\L10NSharp.dll</HintPath>
+      <HintPath>..\..\packages\L10NSharp.5.0.0-beta0086\lib\net461\L10NSharp.dll</HintPath>
     </Reference>
     <Reference Include="LibChorus, Version=5.0.0.0, Culture=neutral, PublicKeyToken=f1447bae1e63f485, processorArchitecture=MSIL">
       <SpecificVersion>False</SpecificVersion>
-      <HintPath>..\packages\SIL.Chorus.LibChorus.5.0.0-beta0017\lib\net461\LibChorus.dll</HintPath>
+      <HintPath>..\..\packages\SIL.Chorus.LibChorus.5.0.0-beta0017\lib\net461\LibChorus.dll</HintPath>
     </Reference>
     <Reference Include="Markdig.Signed, Version=0.22.0.0, Culture=neutral, PublicKeyToken=870da25a133885f8, processorArchitecture=MSIL">
-      <HintPath>..\packages\Markdig.Signed.0.22.0\lib\net452\Markdig.Signed.dll</HintPath>
+      <HintPath>..\..\packages\Markdig.Signed.0.22.0\lib\net452\Markdig.Signed.dll</HintPath>
     </Reference>
     <Reference Include="Microsoft.DotNet.PlatformAbstractions, Version=2.0.4.0, Culture=neutral, PublicKeyToken=adb9793829ddae60, processorArchitecture=MSIL">
-      <HintPath>..\packages\Microsoft.DotNet.PlatformAbstractions.2.0.4\lib\net45\Microsoft.DotNet.PlatformAbstractions.dll</HintPath>
+      <HintPath>..\..\packages\Microsoft.DotNet.PlatformAbstractions.2.0.4\lib\net45\Microsoft.DotNet.PlatformAbstractions.dll</HintPath>
     </Reference>
     <Reference Include="Microsoft.Extensions.DependencyModel, Version=2.0.4.0, Culture=neutral, PublicKeyToken=adb9793829ddae60, processorArchitecture=MSIL">
-      <HintPath>..\packages\Microsoft.Extensions.DependencyModel.2.0.4\lib\net451\Microsoft.Extensions.DependencyModel.dll</HintPath>
+      <HintPath>..\..\packages\Microsoft.Extensions.DependencyModel.2.0.4\lib\net451\Microsoft.Extensions.DependencyModel.dll</HintPath>
     </Reference>
     <Reference Include="NDesk.DBus, Version=1.0.0.0, Culture=neutral, PublicKeyToken=f6716e4f9b2ed099, processorArchitecture=MSIL">
-      <HintPath>..\packages\NDesk.DBus.0.15.0\lib\NDesk.DBus.dll</HintPath>
+      <HintPath>..\..\packages\NDesk.DBus.0.15.0\lib\NDesk.DBus.dll</HintPath>
     </Reference>
     <Reference Include="Newtonsoft.Json, Version=12.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
-      <HintPath>..\packages\Newtonsoft.Json.12.0.3\lib\net45\Newtonsoft.Json.dll</HintPath>
+      <HintPath>..\..\packages\Newtonsoft.Json.12.0.3\lib\net45\Newtonsoft.Json.dll</HintPath>
     </Reference>
     <Reference Include="SIL.Core, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
-      <HintPath>..\packages\SIL.Core.9.0.0-beta0154\lib\net461\SIL.Core.dll</HintPath>
+      <HintPath>..\..\packages\SIL.Core.9.0.0-beta0154\lib\net461\SIL.Core.dll</HintPath>
     </Reference>
     <Reference Include="SIL.Core.Desktop, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
-      <HintPath>..\packages\SIL.Core.Desktop.9.0.0-beta0154\lib\net461\SIL.Core.Desktop.dll</HintPath>
+      <HintPath>..\..\packages\SIL.Core.Desktop.9.0.0-beta0154\lib\net461\SIL.Core.Desktop.dll</HintPath>
     </Reference>
     <Reference Include="SIL.Lexicon, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
       <SpecificVersion>False</SpecificVersion>
-      <HintPath>..\packages\SIL.Lexicon.9.0.0-beta0154\lib\net461\SIL.Lexicon.dll</HintPath>
+      <HintPath>..\..\packages\SIL.Lexicon.9.0.0-beta0154\lib\net461\SIL.Lexicon.dll</HintPath>
     </Reference>
     <Reference Include="SIL.Lift, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
       <SpecificVersion>False</SpecificVersion>
-      <HintPath>..\packages\SIL.Lift.9.0.0-beta0154\lib\net461\SIL.Lift.dll</HintPath>
+      <HintPath>..\..\packages\SIL.Lift.9.0.0-beta0154\lib\net461\SIL.Lift.dll</HintPath>
     </Reference>
     <Reference Include="SIL.Windows.Forms, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
-      <HintPath>..\packages\SIL.Windows.Forms.9.0.0-beta0154\lib\net461\SIL.Windows.Forms.dll</HintPath>
+      <HintPath>..\..\packages\SIL.Windows.Forms.9.0.0-beta0154\lib\net461\SIL.Windows.Forms.dll</HintPath>
     </Reference>
     <Reference Include="SIL.WritingSystems, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
-      <HintPath>..\packages\SIL.WritingSystems.9.0.0-beta0154\lib\net461\SIL.WritingSystems.dll</HintPath>
+      <HintPath>..\..\packages\SIL.WritingSystems.9.0.0-beta0154\lib\net461\SIL.WritingSystems.dll</HintPath>
     </Reference>
     <Reference Include="Spart, Version=1.0.0.0, Culture=neutral, PublicKeyToken=14d24e064e474331, processorArchitecture=MSIL">
-      <HintPath>..\packages\Spart.1.0.0\lib\net461\Spart.dll</HintPath>
+      <HintPath>..\..\packages\Spart.1.0.0\lib\net461\Spart.dll</HintPath>
     </Reference>
     <Reference Include="System" />
     <Reference Include="System.Buffers, Version=4.0.3.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
-      <HintPath>..\packages\System.Buffers.4.5.1\lib\net461\System.Buffers.dll</HintPath>
+      <HintPath>..\..\packages\System.Buffers.4.5.1\lib\net461\System.Buffers.dll</HintPath>
     </Reference>
     <Reference Include="System.Configuration" />
     <Reference Include="System.Core">
       <RequiredTargetFramework>3.5</RequiredTargetFramework>
     </Reference>
     <Reference Include="System.IO.FileSystem.AccessControl, Version=4.0.5.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
-      <HintPath>..\packages\System.IO.FileSystem.AccessControl.4.7.0\lib\net461\System.IO.FileSystem.AccessControl.dll</HintPath>
+      <HintPath>..\..\packages\System.IO.FileSystem.AccessControl.4.7.0\lib\net461\System.IO.FileSystem.AccessControl.dll</HintPath>
     </Reference>
     <Reference Include="System.Management" />
     <Reference Include="System.Memory, Version=4.0.1.1, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
-      <HintPath>..\packages\System.Memory.4.5.4\lib\net461\System.Memory.dll</HintPath>
+      <HintPath>..\..\packages\System.Memory.4.5.4\lib\net461\System.Memory.dll</HintPath>
     </Reference>
     <Reference Include="System.Numerics" />
     <Reference Include="System.Numerics.Vectors, Version=4.1.4.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
-      <HintPath>..\packages\System.Numerics.Vectors.4.5.0\lib\net46\System.Numerics.Vectors.dll</HintPath>
+      <HintPath>..\..\packages\System.Numerics.Vectors.4.5.0\lib\net46\System.Numerics.Vectors.dll</HintPath>
     </Reference>
     <Reference Include="System.Runtime.CompilerServices.Unsafe, Version=4.0.4.1, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
-      <HintPath>..\packages\System.Runtime.CompilerServices.Unsafe.4.5.3\lib\net461\System.Runtime.CompilerServices.Unsafe.dll</HintPath>
+      <HintPath>..\..\packages\System.Runtime.CompilerServices.Unsafe.4.5.3\lib\net461\System.Runtime.CompilerServices.Unsafe.dll</HintPath>
     </Reference>
     <Reference Include="System.Security" />
     <Reference Include="System.Security.AccessControl, Version=4.1.3.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
-      <HintPath>..\packages\System.Security.AccessControl.4.7.0\lib\net461\System.Security.AccessControl.dll</HintPath>
+      <HintPath>..\..\packages\System.Security.AccessControl.4.7.0\lib\net461\System.Security.AccessControl.dll</HintPath>
     </Reference>
     <Reference Include="System.Security.Principal.Windows, Version=4.1.3.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
-      <HintPath>..\packages\System.Security.Principal.Windows.4.7.0\lib\net461\System.Security.Principal.Windows.dll</HintPath>
+      <HintPath>..\..\packages\System.Security.Principal.Windows.4.7.0\lib\net461\System.Security.Principal.Windows.dll</HintPath>
     </Reference>
     <Reference Include="System.ServiceModel" />
     <Reference Include="System.ValueTuple, Version=4.0.3.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
-      <HintPath>..\packages\System.ValueTuple.4.5.0\lib\net461\System.ValueTuple.dll</HintPath>
+      <HintPath>..\..\packages\System.ValueTuple.4.5.0\lib\net461\System.ValueTuple.dll</HintPath>
     </Reference>
     <Reference Include="System.Web" />
     <Reference Include="System.Windows.Forms" />
@@ -169,7 +169,7 @@
     <Reference Include="System.Data" />
     <Reference Include="System.Xml" />
     <Reference Include="TagLibSharp, Version=2.2.0.0, Culture=neutral, PublicKeyToken=db62eba44689b5b0, processorArchitecture=MSIL">
-      <HintPath>..\packages\TagLibSharp.2.2.0\lib\net45\TagLibSharp.dll</HintPath>
+      <HintPath>..\..\packages\TagLibSharp.2.2.0\lib\net45\TagLibSharp.dll</HintPath>
       <Private>True</Private>
     </Reference>
   </ItemGroup>
@@ -191,15 +191,15 @@
     <None Include="packages.config" />
   </ItemGroup>
   <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
-  <Import Project="..\packages\NDesk.DBus.0.15.0\build\NDesk.DBus.targets" Condition="Exists('..\packages\NDesk.DBus.0.15.0\build\NDesk.DBus.targets')" />
+  <Import Project="..\..\packages\NDesk.DBus.0.15.0\build\NDesk.DBus.targets" Condition="Exists('..\..\packages\NDesk.DBus.0.15.0\build\NDesk.DBus.targets')" />
   <Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
     <PropertyGroup>
       <ErrorText>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}.</ErrorText>
     </PropertyGroup>
-    <Error Condition="!Exists('..\packages\NDesk.DBus.0.15.0\build\NDesk.DBus.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\NDesk.DBus.0.15.0\build\NDesk.DBus.targets'))" />
-    <Error Condition="!Exists('..\packages\SIL.Windows.Forms.9.0.0-beta0154\build\SIL.Windows.Forms.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\SIL.Windows.Forms.9.0.0-beta0154\build\SIL.Windows.Forms.targets'))" />
+    <Error Condition="!Exists('..\..\packages\NDesk.DBus.0.15.0\build\NDesk.DBus.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\NDesk.DBus.0.15.0\build\NDesk.DBus.targets'))" />
+    <Error Condition="!Exists('..\..\packages\SIL.Windows.Forms.9.0.0-beta0154\build\SIL.Windows.Forms.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\SIL.Windows.Forms.9.0.0-beta0154\build\SIL.Windows.Forms.targets'))" />
   </Target>
-  <Import Project="..\packages\SIL.Windows.Forms.9.0.0-beta0154\build\SIL.Windows.Forms.targets" Condition="Exists('..\packages\SIL.Windows.Forms.9.0.0-beta0154\build\SIL.Windows.Forms.targets')" />
+  <Import Project="..\..\packages\SIL.Windows.Forms.9.0.0-beta0154\build\SIL.Windows.Forms.targets" Condition="Exists('..\..\packages\SIL.Windows.Forms.9.0.0-beta0154\build\SIL.Windows.Forms.targets')" />
   <!-- To modify your build process, add your task inside one of the targets below and uncomment it.
 	   Other similar extension points exist, see Microsoft.Common.targets.
   <Target Name="BeforeBuild">
diff --git a/src/WeSay.UI.Tests/WeSay.UI.Tests.csproj b/src/WeSay.UI.Tests/WeSay.UI.Tests.csproj
index 9b5a5096a..d40ff9009 100755
--- a/src/WeSay.UI.Tests/WeSay.UI.Tests.csproj
+++ b/src/WeSay.UI.Tests/WeSay.UI.Tests.csproj
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="12.0">
-  <Import Project="..\packages\NUnit.3.13.1\build\NUnit.props" Condition="Exists('..\packages\NUnit.3.13.1\build\NUnit.props')" />
+  <Import Project="..\..\packages\NUnit.3.13.1\build\NUnit.props" Condition="Exists('..\..\packages\NUnit.3.13.1\build\NUnit.props')" />
   <PropertyGroup>
     <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
@@ -77,27 +77,27 @@
   </PropertyGroup>
   <ItemGroup>
     <Reference Include="nunit.framework, Version=3.13.1.0, Culture=neutral, PublicKeyToken=2638cd05610744eb, processorArchitecture=MSIL">
-      <HintPath>..\packages\NUnit.3.13.1\lib\net45\nunit.framework.dll</HintPath>
+      <HintPath>..\..\packages\NUnit.3.13.1\lib\net45\nunit.framework.dll</HintPath>
     </Reference>
     <Reference Include="SIL.Core">
       <SpecificVersion>False</SpecificVersion>
-      <HintPath>..\packages\SIL.Core.9.0.0-beta0154\lib\net461\SIL.Core.dll</HintPath>
+      <HintPath>..\..\packages\SIL.Core.9.0.0-beta0154\lib\net461\SIL.Core.dll</HintPath>
     </Reference>
     <Reference Include="SIL.Core.Desktop">
       <SpecificVersion>False</SpecificVersion>
-      <HintPath>..\packages\SIL.Core.Desktop.9.0.0-beta0154\lib\net461\SIL.Core.Desktop.dll</HintPath>
+      <HintPath>..\..\packages\SIL.Core.Desktop.9.0.0-beta0154\lib\net461\SIL.Core.Desktop.dll</HintPath>
     </Reference>
     <Reference Include="SIL.Lift, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
       <SpecificVersion>False</SpecificVersion>
-      <HintPath>..\packages\SIL.Lift.9.0.0-beta0154\lib\net461\SIL.Lift.dll</HintPath>
+      <HintPath>..\..\packages\SIL.Lift.9.0.0-beta0154\lib\net461\SIL.Lift.dll</HintPath>
     </Reference>
     <Reference Include="SIL.Windows.Forms, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
       <SpecificVersion>False</SpecificVersion>
-      <HintPath>..\packages\SIL.Windows.Forms.9.0.0-beta0154\lib\net461\SIL.Windows.Forms.dll</HintPath>
+      <HintPath>..\..\packages\SIL.Windows.Forms.9.0.0-beta0154\lib\net461\SIL.Windows.Forms.dll</HintPath>
     </Reference>
     <Reference Include="SIL.WritingSystems, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
       <SpecificVersion>False</SpecificVersion>
-      <HintPath>..\packages\SIL.WritingSystems.9.0.0-beta0154\lib\net461\SIL.WritingSystems.dll</HintPath>
+      <HintPath>..\..\packages\SIL.WritingSystems.9.0.0-beta0154\lib\net461\SIL.WritingSystems.dll</HintPath>
     </Reference>
     <Reference Include="System" />
     <Reference Include="System.Core">
@@ -108,10 +108,10 @@
     <Reference Include="System.Windows.Forms" />
     <Reference Include="System.Xml" />
     <Reference Include="Geckofx-Core">
-      <HintPath>..\packages\Geckofx60.32.60.0.54\lib\net45\Geckofx-Core.dll</HintPath>
+      <HintPath>..\..\packages\Geckofx60.32.60.0.54\lib\net45\Geckofx-Core.dll</HintPath>
     </Reference>
     <Reference Include="Geckofx-Winforms">
-      <HintPath>..\packages\Geckofx60.32.60.0.54\lib\net45\Geckofx-Winforms.dll</HintPath>
+      <HintPath>..\..\packages\Geckofx60.32.60.0.54\lib\net45\Geckofx-Winforms.dll</HintPath>
     </Reference>
     <None Include="packages.config" />
   </ItemGroup>
@@ -176,7 +176,7 @@
     <PropertyGroup>
       <ErrorText>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}.</ErrorText>
     </PropertyGroup>
-    <Error Condition="!Exists('..\packages\NUnit.3.13.1\build\NUnit.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\NUnit.3.13.1\build\NUnit.props'))" />
+    <Error Condition="!Exists('..\..\packages\NUnit.3.13.1\build\NUnit.props')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\NUnit.3.13.1\build\NUnit.props'))" />
   </Target>
   <!-- To modify your build process, add your task inside one of the targets below and uncomment it.
 	   Other similar extension points exist, see Microsoft.Common.targets.
diff --git a/src/WeSay.UI/WeSay.UI.csproj b/src/WeSay.UI/WeSay.UI.csproj
index 1a5dc931e..e5349e604 100755
--- a/src/WeSay.UI/WeSay.UI.csproj
+++ b/src/WeSay.UI/WeSay.UI.csproj
@@ -70,71 +70,71 @@
   </PropertyGroup>
   <ItemGroup>
     <Reference Include="Commons.Xml.Relaxng, Version=4.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756, processorArchitecture=MSIL">
-      <HintPath>..\packages\RelaxNG.3.2.3\lib\net40\Commons.Xml.Relaxng.dll</HintPath>
+      <HintPath>..\..\packages\RelaxNG.3.2.3\lib\net40\Commons.Xml.Relaxng.dll</HintPath>
     </Reference>
     <Reference Include="Enchant.Net, Version=1.4.3.1, Culture=neutral, processorArchitecture=MSIL">
       <SpecificVersion>False</SpecificVersion>
-      <HintPath>..\packages\Enchant.Net.1.4.2\lib\net461\Enchant.Net.dll</HintPath>
+      <HintPath>..\..\packages\Enchant.Net.1.4.2\lib\net461\Enchant.Net.dll</HintPath>
     </Reference>
     <Reference Include="icu.net, Version=2.7.0.0, Culture=neutral, PublicKeyToken=416fdd914afa6b66, processorArchitecture=MSIL">
-      <HintPath>..\packages\icu.net.2.7.1\lib\net451\icu.net.dll</HintPath>
+      <HintPath>..\..\packages\icu.net.2.7.1\lib\net451\icu.net.dll</HintPath>
     </Reference>
     <Reference Include="Microsoft.DotNet.PlatformAbstractions, Version=2.0.4.0, Culture=neutral, PublicKeyToken=adb9793829ddae60, processorArchitecture=MSIL">
-      <HintPath>..\packages\Microsoft.DotNet.PlatformAbstractions.2.0.4\lib\net45\Microsoft.DotNet.PlatformAbstractions.dll</HintPath>
+      <HintPath>..\..\packages\Microsoft.DotNet.PlatformAbstractions.2.0.4\lib\net45\Microsoft.DotNet.PlatformAbstractions.dll</HintPath>
     </Reference>
     <Reference Include="Microsoft.Extensions.DependencyModel, Version=2.0.4.0, Culture=neutral, PublicKeyToken=adb9793829ddae60, processorArchitecture=MSIL">
-      <HintPath>..\packages\Microsoft.Extensions.DependencyModel.2.0.4\lib\net451\Microsoft.Extensions.DependencyModel.dll</HintPath>
+      <HintPath>..\..\packages\Microsoft.Extensions.DependencyModel.2.0.4\lib\net451\Microsoft.Extensions.DependencyModel.dll</HintPath>
     </Reference>
     <Reference Include="NAudio, Version=1.10.0.0, Culture=neutral, processorArchitecture=MSIL">
-      <HintPath>..\packages\NAudio.1.10.0\lib\net35\NAudio.dll</HintPath>
+      <HintPath>..\..\packages\NAudio.1.10.0\lib\net35\NAudio.dll</HintPath>
     </Reference>
     <Reference Include="NDesk.DBus, Version=1.0.0.0, Culture=neutral, PublicKeyToken=f6716e4f9b2ed099, processorArchitecture=MSIL">
-      <HintPath>..\packages\NDesk.DBus.0.15.0\lib\NDesk.DBus.dll</HintPath>
+      <HintPath>..\..\packages\NDesk.DBus.0.15.0\lib\NDesk.DBus.dll</HintPath>
     </Reference>
     <Reference Include="NetReflector, Version=1.1.2009.1214, Culture=neutral, PublicKeyToken=2f4dd8b32acbcd8e, processorArchitecture=MSIL">
       <SpecificVersion>False</SpecificVersion>
-      <HintPath>..\packages\NetReflector.1.1.2009\lib\net20\NetReflector.dll</HintPath>
+      <HintPath>..\..\packages\NetReflector.1.1.2009\lib\net20\NetReflector.dll</HintPath>
     </Reference>
     <Reference Include="Newtonsoft.Json, Version=11.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
-      <HintPath>..\packages\Newtonsoft.Json.11.0.1\lib\net45\Newtonsoft.Json.dll</HintPath>
+      <HintPath>..\..\packages\Newtonsoft.Json.11.0.1\lib\net45\Newtonsoft.Json.dll</HintPath>
     </Reference>
     <Reference Include="SIL.Core, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
-      <HintPath>..\packages\SIL.Core.9.0.0-beta0154\lib\net461\SIL.Core.dll</HintPath>
+      <HintPath>..\..\packages\SIL.Core.9.0.0-beta0154\lib\net461\SIL.Core.dll</HintPath>
     </Reference>
     <Reference Include="SIL.Core.Desktop, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
-      <HintPath>..\packages\SIL.Core.Desktop.9.0.0-beta0154\lib\net461\SIL.Core.Desktop.dll</HintPath>
+      <HintPath>..\..\packages\SIL.Core.Desktop.9.0.0-beta0154\lib\net461\SIL.Core.Desktop.dll</HintPath>
     </Reference>
     <Reference Include="SIL.DictionaryServices, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
-      <HintPath>..\packages\SIL.DictionaryServices.9.0.0-beta0154\lib\net461\SIL.DictionaryServices.dll</HintPath>
+      <HintPath>..\..\packages\SIL.DictionaryServices.9.0.0-beta0154\lib\net461\SIL.DictionaryServices.dll</HintPath>
     </Reference>
     <Reference Include="SIL.Lift, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
-      <HintPath>..\packages\SIL.Lift.9.0.0-beta0154\lib\net461\SIL.Lift.dll</HintPath>
+      <HintPath>..\..\packages\SIL.Lift.9.0.0-beta0154\lib\net461\SIL.Lift.dll</HintPath>
     </Reference>
     <Reference Include="SIL.Media, Version=9.0.0.0, Culture=neutral, processorArchitecture=MSIL">
-      <HintPath>..\packages\SIL.Media.9.0.0-beta0154\lib\net461\SIL.Media.dll</HintPath>
+      <HintPath>..\..\packages\SIL.Media.9.0.0-beta0154\lib\net461\SIL.Media.dll</HintPath>
     </Reference>
     <Reference Include="SIL.Windows.Forms, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
       <SpecificVersion>False</SpecificVersion>
-      <HintPath>..\packages\SIL.Windows.Forms.9.0.0-beta0154\lib\net461\SIL.Windows.Forms.dll</HintPath>
+      <HintPath>..\..\packages\SIL.Windows.Forms.9.0.0-beta0154\lib\net461\SIL.Windows.Forms.dll</HintPath>
     </Reference>
     <Reference Include="SIL.Windows.Forms.Keyboarding, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
       <SpecificVersion>False</SpecificVersion>
-      <HintPath>..\packages\SIL.Windows.Forms.Keyboarding.9.0.0-beta0154\lib\net461\SIL.Windows.Forms.Keyboarding.dll</HintPath>
+      <HintPath>..\..\packages\SIL.Windows.Forms.Keyboarding.9.0.0-beta0154\lib\net461\SIL.Windows.Forms.Keyboarding.dll</HintPath>
     </Reference>
     <None Include="..\..\lib\common\Enchant.Net.dll.config">
       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
     </None>
     <Reference Include="Geckofx-Core">
-      <HintPath>..\packages\Geckofx60.32.60.0.54\lib\net45\Geckofx-Core.dll</HintPath>
+      <HintPath>..\..\packages\Geckofx60.32.60.0.54\lib\net45\Geckofx-Core.dll</HintPath>
     </Reference>
     <Reference Include="Geckofx-Winforms">
-      <HintPath>..\packages\Geckofx60.32.60.0.54\lib\net45\Geckofx-Winforms.dll</HintPath>
+      <HintPath>..\..\packages\Geckofx60.32.60.0.54\lib\net45\Geckofx-Winforms.dll</HintPath>
     </Reference>
     <Reference Include="SIL.WritingSystems, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
-      <HintPath>..\packages\SIL.WritingSystems.9.0.0-beta0154\lib\net461\SIL.WritingSystems.dll</HintPath>
+      <HintPath>..\..\packages\SIL.WritingSystems.9.0.0-beta0154\lib\net461\SIL.WritingSystems.dll</HintPath>
     </Reference>
     <Reference Include="Spart, Version=1.0.0.0, Culture=neutral, PublicKeyToken=14d24e064e474331, processorArchitecture=MSIL">
-      <HintPath>..\packages\Spart.1.0.0\lib\net461\Spart.dll</HintPath>
+      <HintPath>..\..\packages\Spart.1.0.0\lib\net461\Spart.dll</HintPath>
     </Reference>
     <Reference Include="System" />
     <Reference Include="System.Configuration" />
@@ -144,18 +144,18 @@
     <Reference Include="System.Data" />
     <Reference Include="System.Drawing" />
     <Reference Include="System.IO.FileSystem.AccessControl, Version=4.0.5.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
-      <HintPath>..\packages\System.IO.FileSystem.AccessControl.4.7.0\lib\net461\System.IO.FileSystem.AccessControl.dll</HintPath>
+      <HintPath>..\..\packages\System.IO.FileSystem.AccessControl.4.7.0\lib\net461\System.IO.FileSystem.AccessControl.dll</HintPath>
     </Reference>
     <Reference Include="System.Management" />
     <Reference Include="System.Security" />
     <Reference Include="System.Security.AccessControl, Version=4.1.3.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
-      <HintPath>..\packages\System.Security.AccessControl.4.7.0\lib\net461\System.Security.AccessControl.dll</HintPath>
+      <HintPath>..\..\packages\System.Security.AccessControl.4.7.0\lib\net461\System.Security.AccessControl.dll</HintPath>
     </Reference>
     <Reference Include="System.Security.Principal.Windows, Version=4.1.3.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
-      <HintPath>..\packages\System.Security.Principal.Windows.4.7.0\lib\net461\System.Security.Principal.Windows.dll</HintPath>
+      <HintPath>..\..\packages\System.Security.Principal.Windows.4.7.0\lib\net461\System.Security.Principal.Windows.dll</HintPath>
     </Reference>
     <Reference Include="System.ValueTuple, Version=4.0.3.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
-      <HintPath>..\packages\System.ValueTuple.4.5.0\lib\net461\System.ValueTuple.dll</HintPath>
+      <HintPath>..\..\packages\System.ValueTuple.4.5.0\lib\net461\System.ValueTuple.dll</HintPath>
     </Reference>
     <Reference Include="System.Web" />
     <Reference Include="System.Windows.Forms" />
@@ -418,15 +418,15 @@
     <None Include="Resources\right-arrow.png" />
   </ItemGroup>
   <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
-  <Import Project="..\packages\NDesk.DBus.0.15.0\build\NDesk.DBus.targets" Condition="Exists('..\packages\NDesk.DBus.0.15.0\build\NDesk.DBus.targets')" />
+  <Import Project="..\..\packages\NDesk.DBus.0.15.0\build\NDesk.DBus.targets" Condition="Exists('..\..\packages\NDesk.DBus.0.15.0\build\NDesk.DBus.targets')" />
   <Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
     <PropertyGroup>
       <ErrorText>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}.</ErrorText>
     </PropertyGroup>
-    <Error Condition="!Exists('..\packages\NDesk.DBus.0.15.0\build\NDesk.DBus.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\NDesk.DBus.0.15.0\build\NDesk.DBus.targets'))" />
-    <Error Condition="!Exists('..\packages\SIL.Media.9.0.0-beta0154\build\SIL.Media.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\SIL.Media.9.0.0-beta0154\build\SIL.Media.targets'))" />
+    <Error Condition="!Exists('..\..\packages\NDesk.DBus.0.15.0\build\NDesk.DBus.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\NDesk.DBus.0.15.0\build\NDesk.DBus.targets'))" />
+    <Error Condition="!Exists('..\..\packages\SIL.Media.9.0.0-beta0154\build\SIL.Media.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\SIL.Media.9.0.0-beta0154\build\SIL.Media.targets'))" />
   </Target>
-  <Import Project="..\packages\SIL.Media.9.0.0-beta0154\build\SIL.Media.targets" Condition="Exists('..\packages\SIL.Media.9.0.0-beta0154\build\SIL.Media.targets')" />
+  <Import Project="..\..\packages\SIL.Media.9.0.0-beta0154\build\SIL.Media.targets" Condition="Exists('..\..\packages\SIL.Media.9.0.0-beta0154\build\SIL.Media.targets')" />
   <!-- To modify your build process, add your task inside one of the targets below and uncomment it.
 	   Other similar extension points exist, see Microsoft.Common.targets.
   <Target Name="BeforeBuild">

From 1bfa0737311ac035ce803d6aa6dccecc2f88d6e2 Mon Sep 17 00:00:00 2001
From: Kevin Hahn <hahn.kev@gmail.com>
Date: Tue, 27 Feb 2024 12:00:19 +0700
Subject: [PATCH 02/29] upgrade wesay to dotnet 8

---
 WeSay.sln                                     | 346 ++++-----
 src/.nuget/packages.config                    |   6 -
 .../Addin.Backup.Tests.csproj                 | 219 +-----
 .../Properties/AssemblyInfo.cs                |  35 -
 src/Addin.Backup.Tests/packages.config        |  27 -
 src/Addin.Backup/Addin.Backup.csproj          | 226 ++----
 src/Addin.Backup/BackupDialog.cs              |  11 +-
 src/Addin.Backup/Properties/AssemblyInfo.cs   |  41 --
 src/Addin.Backup/packages.config              |  35 -
 .../Addin.Transform.Tests.csproj              | 263 ++-----
 .../Properties/AssemblyInfo.cs                |  36 -
 src/Addin.Transform.Tests/packages.config     |  33 -
 src/Addin.Transform/Addin.Transform.csproj    | 341 ++-------
 src/Addin.Transform/LiftTransformer.cs        |  12 -
 .../Properties/AssemblyInfo.cs                |  41 --
 src/Addin.Transform/packages.config           |  33 -
 .../LexicalModel.Tests.csproj                 | 241 +-----
 .../Properties/AssemblyInfo.cs                |  38 -
 src/LexicalModel.Tests/packages.config        |  27 -
 .../Options/DdpOptionDisplayAdaptor.cs        |   1 -
 .../Options/OptionDisplayAdaptor.cs           |   1 -
 src/LexicalModel/LexicalModel.csproj          | 245 ++-----
 src/LexicalModel/Properties/AssemblyInfo.cs   |  44 --
 src/LexicalModel/packages.config              |  32 -
 .../LexicalTools.Tests.csproj                 | 311 ++------
 .../Properties/AssemblyInfo.cs                |  38 -
 src/LexicalTools.Tests/packages.config        |  41 --
 src/LexicalTools/Dashboard/Dash.cs            |  16 +-
 .../DictionaryControl.cs                      |  18 +-
 .../SearchBoxControl.cs                       |   9 +-
 src/LexicalTools/LexicalTools.csproj          | 450 ++----------
 src/LexicalTools/Properties/AssemblyInfo.cs   |  44 --
 src/LexicalTools/TaskConfigurationBase.cs     |   2 +-
 src/LexicalTools/packages.config              |  24 -
 src/Lift2WeSay/Properties/AssemblyInfo.cs     |  38 -
 src/Lift2WeSay/SampleDataProcessor.csproj     | 208 +-----
 src/Lift2WeSay/packages.config                |  27 -
 .../LiftWordList2Json.csproj                  | 230 +-----
 src/LiftWordList2Json/Options.cs              |  20 +-
 src/LiftWordList2Json/Program.cs              |  15 +-
 .../Properties/AssemblyInfo.cs                |  35 -
 src/LiftWordList2Json/packages.config         |  31 -
 .../Properties/AssemblyInfo.cs                |  22 -
 .../WeSay.AddinLib.Tests.csproj               |  94 +--
 src/WeSay.AddinLib.Tests/packages.config      |   5 -
 src/WeSay.AddinLib/Properties/AssemblyInfo.cs |  42 --
 src/WeSay.AddinLib/WeSay.AddinLib.csproj      | 137 +---
 src/WeSay.AddinLib/packages.config            |   4 -
 .../Properties/AssemblyInfo.cs                |  38 -
 src/WeSay.App.Tests/WeSay.App.Tests.csproj    | 266 ++-----
 src/WeSay.App.Tests/packages.config           |  34 -
 src/WeSay.App/Properties/AssemblyInfo.cs      |  42 --
 src/WeSay.App/WeSay.App.csproj                | 309 ++------
 src/WeSay.App/WeSayApp.cs                     |  39 +-
 src/WeSay.App/packages.config                 |  14 -
 .../Properties/AssemblyInfo.cs                |  38 -
 .../WeSay.ConfigTool.Tests.csproj             | 222 +-----
 src/WeSay.ConfigTool.Tests/packages.config    |  20 -
 .../Properties/AssemblyInfo.cs                |  38 -
 src/WeSay.ConfigTool/WeSay.ConfigTool.csproj  | 691 +++---------------
 src/WeSay.ConfigTool/packages.config          |  51 --
 .../Properties/AssemblyInfo.cs                |  24 -
 src/WeSay.Data.Tests/WeSay.Data.Tests.csproj  | 179 +----
 src/WeSay.Data.Tests/packages.config          |  19 -
 src/WeSay.Data/Properties/AssemblyInfo.cs     |  24 -
 src/WeSay.Data/WeSay.Data.csproj              | 113 +--
 src/WeSay.Data/packages.config                |   4 -
 .../Properties/AssemblyInfo.cs                |  42 --
 src/WeSay.Foundation/WeSay.Foundation.csproj  |  81 +-
 .../Properties/AssemblyInfo.cs                |  38 -
 .../WeSay.Project.Tests.csproj                | 323 ++------
 src/WeSay.Project.Tests/packages.config       |  45 --
 .../WeSayUserConfigV2MigrationStrategy.cs     |   1 +
 .../WeSayConfig/ConfigurationMigrator.cs      |   6 -
 .../WritingSystem/WritingSystem_V1.cs         |   1 +
 src/WeSay.Project/Properties/AssemblyInfo.cs  |  47 --
 src/WeSay.Project/WeSay.Project.csproj        | 336 ++-------
 src/WeSay.Project/WeSayWordsProject.cs        |  12 +-
 src/WeSay.Project/packages.config             |  42 --
 .../Properties/AssemblyInfo.cs                |  35 -
 .../WeSay.TestUtilities.csproj                | 208 +-----
 src/WeSay.TestUtilities/packages.config       |  27 -
 src/WeSay.UI.Tests/Properties/AssemblyInfo.cs |  38 -
 src/WeSay.UI.Tests/WeSay.UI.Tests.csproj      | 163 +----
 src/WeSay.UI.Tests/packages.config            |   4 -
 src/WeSay.UI/PictureControl.cs                |   6 +-
 src/WeSay.UI/Properties/AssemblyInfo.cs       |  44 --
 src/WeSay.UI/TextBoxes/MultiTextControl.cs    |   2 +-
 src/WeSay.UI/TextBoxes/WeSayTextBox.cs        |   1 +
 src/WeSay.UI/WeSay.UI.csproj                  | 419 ++---------
 src/WeSay.UI/packages.config                  |  24 -
 91 files changed, 1176 insertions(+), 7129 deletions(-)
 delete mode 100644 src/.nuget/packages.config
 delete mode 100644 src/Addin.Backup.Tests/Properties/AssemblyInfo.cs
 delete mode 100644 src/Addin.Backup.Tests/packages.config
 delete mode 100644 src/Addin.Backup/Properties/AssemblyInfo.cs
 delete mode 100644 src/Addin.Backup/packages.config
 delete mode 100644 src/Addin.Transform.Tests/Properties/AssemblyInfo.cs
 delete mode 100644 src/Addin.Transform.Tests/packages.config
 delete mode 100644 src/Addin.Transform/Properties/AssemblyInfo.cs
 delete mode 100644 src/Addin.Transform/packages.config
 delete mode 100644 src/LexicalModel.Tests/Properties/AssemblyInfo.cs
 delete mode 100644 src/LexicalModel.Tests/packages.config
 delete mode 100644 src/LexicalModel/Properties/AssemblyInfo.cs
 delete mode 100644 src/LexicalModel/packages.config
 delete mode 100644 src/LexicalTools.Tests/Properties/AssemblyInfo.cs
 delete mode 100644 src/LexicalTools.Tests/packages.config
 delete mode 100644 src/LexicalTools/Properties/AssemblyInfo.cs
 delete mode 100644 src/LexicalTools/packages.config
 delete mode 100644 src/Lift2WeSay/Properties/AssemblyInfo.cs
 delete mode 100644 src/Lift2WeSay/packages.config
 delete mode 100644 src/LiftWordList2Json/Properties/AssemblyInfo.cs
 delete mode 100644 src/LiftWordList2Json/packages.config
 delete mode 100644 src/WeSay.AddinLib.Tests/packages.config
 delete mode 100644 src/WeSay.AddinLib/Properties/AssemblyInfo.cs
 delete mode 100644 src/WeSay.AddinLib/packages.config
 delete mode 100644 src/WeSay.App.Tests/Properties/AssemblyInfo.cs
 delete mode 100644 src/WeSay.App.Tests/packages.config
 delete mode 100644 src/WeSay.App/Properties/AssemblyInfo.cs
 delete mode 100644 src/WeSay.App/packages.config
 delete mode 100644 src/WeSay.ConfigTool.Tests/Properties/AssemblyInfo.cs
 delete mode 100644 src/WeSay.ConfigTool.Tests/packages.config
 delete mode 100644 src/WeSay.ConfigTool/Properties/AssemblyInfo.cs
 delete mode 100644 src/WeSay.ConfigTool/packages.config
 delete mode 100644 src/WeSay.Data.Tests/packages.config
 delete mode 100644 src/WeSay.Data/packages.config
 delete mode 100644 src/WeSay.Foundation/Properties/AssemblyInfo.cs
 delete mode 100644 src/WeSay.Project.Tests/Properties/AssemblyInfo.cs
 delete mode 100644 src/WeSay.Project.Tests/packages.config
 delete mode 100644 src/WeSay.Project/Properties/AssemblyInfo.cs
 delete mode 100644 src/WeSay.Project/packages.config
 delete mode 100644 src/WeSay.TestUtilities/Properties/AssemblyInfo.cs
 delete mode 100644 src/WeSay.TestUtilities/packages.config
 delete mode 100644 src/WeSay.UI.Tests/Properties/AssemblyInfo.cs
 delete mode 100644 src/WeSay.UI.Tests/packages.config
 delete mode 100644 src/WeSay.UI/Properties/AssemblyInfo.cs
 delete mode 100644 src/WeSay.UI/packages.config

diff --git a/WeSay.sln b/WeSay.sln
index 684af9c52..09d674d6d 100644
--- a/WeSay.sln
+++ b/WeSay.sln
@@ -1,67 +1,68 @@
-
-Microsoft Visual Studio Solution File, Format Version 11.00
-# Visual Studio 2010
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WeSay.ConfigTool", "src\WeSay.ConfigTool\WeSay.ConfigTool.csproj", "{54C943DB-7725-4F52-BCE4-86C3D3D5A66E}"
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio Version 17
+VisualStudioVersion = 17.8.34511.84
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WeSay.ConfigTool", "src\WeSay.ConfigTool\WeSay.ConfigTool.csproj", "{54C943DB-7725-4F52-BCE4-86C3D3D5A66E}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WeSay.Foundation", "src\WeSay.Foundation\WeSay.Foundation.csproj", "{F12EB680-0990-4900-B77E-0FBF2E28A815}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WeSay.Foundation", "src\WeSay.Foundation\WeSay.Foundation.csproj", "{F12EB680-0990-4900-B77E-0FBF2E28A815}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Addin.Backup", "src\Addin.Backup\Addin.Backup.csproj", "{42FB4CC3-F2D1-4509-87DD-6BBD430CD4AB}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Addin.Backup", "src\Addin.Backup\Addin.Backup.csproj", "{42FB4CC3-F2D1-4509-87DD-6BBD430CD4AB}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WeSay.Project", "src\WeSay.Project\WeSay.Project.csproj", "{5CFD0BB3-5B2A-4911-B220-9C2286151BF0}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WeSay.Project", "src\WeSay.Project\WeSay.Project.csproj", "{5CFD0BB3-5B2A-4911-B220-9C2286151BF0}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WeSay.UI.Tests", "src\WeSay.UI.Tests\WeSay.UI.Tests.csproj", "{6AED6785-CC6F-4A6A-BDB1-1895C6DA1090}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WeSay.UI.Tests", "src\WeSay.UI.Tests\WeSay.UI.Tests.csproj", "{6AED6785-CC6F-4A6A-BDB1-1895C6DA1090}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LexicalTools", "src\LexicalTools\LexicalTools.csproj", "{87AF0B02-2983-486D-857F-D1859535C234}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LexicalTools", "src\LexicalTools\LexicalTools.csproj", "{87AF0B02-2983-486D-857F-D1859535C234}"
 	ProjectSection(ProjectDependencies) = postProject
 		{600D0FD4-D189-41A0-9BC5-FC79AD2CF1CD} = {600D0FD4-D189-41A0-9BC5-FC79AD2CF1CD}
 	EndProjectSection
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WeSay.AddinLib", "src\WeSay.AddinLib\WeSay.AddinLib.csproj", "{E651E83C-94DD-4D6D-ABA2-C9FDA34FBA55}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WeSay.AddinLib", "src\WeSay.AddinLib\WeSay.AddinLib.csproj", "{E651E83C-94DD-4D6D-ABA2-C9FDA34FBA55}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WeSay.UI", "src\WeSay.UI\WeSay.UI.csproj", "{AC8F284C-7B34-4AC9-A7DE-FAF765456DFF}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WeSay.UI", "src\WeSay.UI\WeSay.UI.csproj", "{AC8F284C-7B34-4AC9-A7DE-FAF765456DFF}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WeSay.Data", "src\WeSay.Data\WeSay.Data.csproj", "{600D0FD4-D189-41A0-9BC5-FC79AD2CF1CD}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WeSay.Data", "src\WeSay.Data\WeSay.Data.csproj", "{600D0FD4-D189-41A0-9BC5-FC79AD2CF1CD}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WeSay.App", "src\WeSay.App\WeSay.App.csproj", "{EFB9D66D-AF0F-4E45-A1AC-DB32981711D2}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WeSay.App", "src\WeSay.App\WeSay.App.csproj", "{EFB9D66D-AF0F-4E45-A1AC-DB32981711D2}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Addin.Transform.Tests", "src\Addin.Transform.Tests\Addin.Transform.Tests.csproj", "{19310CA3-6653-45E0-9EC8-F824629E2AD8}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Addin.Transform.Tests", "src\Addin.Transform.Tests\Addin.Transform.Tests.csproj", "{19310CA3-6653-45E0-9EC8-F824629E2AD8}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LexicalModel", "src\LexicalModel\LexicalModel.csproj", "{5F61C809-B6C0-4567-9603-B2198E1AD038}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LexicalModel", "src\LexicalModel\LexicalModel.csproj", "{5F61C809-B6C0-4567-9603-B2198E1AD038}"
 	ProjectSection(ProjectDependencies) = postProject
 		{600D0FD4-D189-41A0-9BC5-FC79AD2CF1CD} = {600D0FD4-D189-41A0-9BC5-FC79AD2CF1CD}
 	EndProjectSection
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WeSay.AddinLib.Tests", "src\WeSay.AddinLib.Tests\WeSay.AddinLib.Tests.csproj", "{74DF4C01-660C-4CF4-9343-9330337BCBEA}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WeSay.AddinLib.Tests", "src\WeSay.AddinLib.Tests\WeSay.AddinLib.Tests.csproj", "{74DF4C01-660C-4CF4-9343-9330337BCBEA}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LexicalModel.Tests", "src\LexicalModel.Tests\LexicalModel.Tests.csproj", "{123D695C-0D5D-46E5-893F-39EC4E0B01B8}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LexicalModel.Tests", "src\LexicalModel.Tests\LexicalModel.Tests.csproj", "{123D695C-0D5D-46E5-893F-39EC4E0B01B8}"
 	ProjectSection(ProjectDependencies) = postProject
 		{600D0FD4-D189-41A0-9BC5-FC79AD2CF1CD} = {600D0FD4-D189-41A0-9BC5-FC79AD2CF1CD}
 	EndProjectSection
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Addin.Backup.Tests", "src\Addin.Backup.Tests\Addin.Backup.Tests.csproj", "{EF37C48F-EABC-478B-B7C1-2BDB33968A21}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Addin.Backup.Tests", "src\Addin.Backup.Tests\Addin.Backup.Tests.csproj", "{EF37C48F-EABC-478B-B7C1-2BDB33968A21}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Addin.Transform", "src\Addin.Transform\Addin.Transform.csproj", "{9D196637-2D50-4604-A310-378083CEA809}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Addin.Transform", "src\Addin.Transform\Addin.Transform.csproj", "{9D196637-2D50-4604-A310-378083CEA809}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WeSay.ConfigTool.Tests", "src\WeSay.ConfigTool.Tests\WeSay.ConfigTool.Tests.csproj", "{FB7CFBB8-D7D0-4E9D-96CF-7D3D0D947EB5}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WeSay.ConfigTool.Tests", "src\WeSay.ConfigTool.Tests\WeSay.ConfigTool.Tests.csproj", "{FB7CFBB8-D7D0-4E9D-96CF-7D3D0D947EB5}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WeSay.Project.Tests", "src\WeSay.Project.Tests\WeSay.Project.Tests.csproj", "{F644C902-A952-4797-9E2D-19D6051DD032}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WeSay.Project.Tests", "src\WeSay.Project.Tests\WeSay.Project.Tests.csproj", "{F644C902-A952-4797-9E2D-19D6051DD032}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WeSay.Data.Tests", "src\WeSay.Data.Tests\WeSay.Data.Tests.csproj", "{8491FEEE-C311-4B64-BB30-A1F1C1802F45}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WeSay.Data.Tests", "src\WeSay.Data.Tests\WeSay.Data.Tests.csproj", "{8491FEEE-C311-4B64-BB30-A1F1C1802F45}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SampleDataProcessor", "src\Lift2WeSay\SampleDataProcessor.csproj", "{4408C857-0371-42BF-A635-E23C8A99A803}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SampleDataProcessor", "src\Lift2WeSay\SampleDataProcessor.csproj", "{4408C857-0371-42BF-A635-E23C8A99A803}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WeSay.App.Tests", "src\WeSay.App.Tests\WeSay.App.Tests.csproj", "{7DA57D98-255B-46DE-BF94-D163695A0568}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WeSay.App.Tests", "src\WeSay.App.Tests\WeSay.App.Tests.csproj", "{7DA57D98-255B-46DE-BF94-D163695A0568}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LexicalTools.Tests", "src\LexicalTools.Tests\LexicalTools.Tests.csproj", "{9936180C-90A7-467C-B761-EC184EFE1F9F}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LexicalTools.Tests", "src\LexicalTools.Tests\LexicalTools.Tests.csproj", "{9936180C-90A7-467C-B761-EC184EFE1F9F}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WeSay.TestUtilities", "src\WeSay.TestUtilities\WeSay.TestUtilities.csproj", "{FEC3014D-0067-4D59-A838-3B046EC3C352}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WeSay.TestUtilities", "src\WeSay.TestUtilities\WeSay.TestUtilities.csproj", "{FEC3014D-0067-4D59-A838-3B046EC3C352}"
 EndProject
 Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{DEFF1312-21E7-47EA-8EBF-0B3705FDD564}"
 	ProjectSection(SolutionItems) = preProject
 		src\.nuget\packages.config = src\.nuget\packages.config
 	EndProjectSection
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LiftWordList2Json", "src\LiftWordList2Json\LiftWordList2Json.csproj", "{4498EAF7-1736-40C3-AD20-6B2CD8D935DB}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LiftWordList2Json", "src\LiftWordList2Json\LiftWordList2Json.csproj", "{4498EAF7-1736-40C3-AD20-6B2CD8D935DB}"
 EndProject
 Global
 	GlobalSection(SolutionConfigurationPlatforms) = preSolution
@@ -73,265 +74,266 @@ Global
 		Release|x86 = Release|x86
 	EndGlobalSection
 	GlobalSection(ProjectConfigurationPlatforms) = postSolution
+		{54C943DB-7725-4F52-BCE4-86C3D3D5A66E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{54C943DB-7725-4F52-BCE4-86C3D3D5A66E}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{54C943DB-7725-4F52-BCE4-86C3D3D5A66E}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{54C943DB-7725-4F52-BCE4-86C3D3D5A66E}.Debug|x86.Build.0 = Debug|Any CPU
+		{54C943DB-7725-4F52-BCE4-86C3D3D5A66E}.minimal|Any CPU.ActiveCfg = Debug|Any CPU
+		{54C943DB-7725-4F52-BCE4-86C3D3D5A66E}.minimal|Any CPU.Build.0 = Debug|Any CPU
+		{54C943DB-7725-4F52-BCE4-86C3D3D5A66E}.minimal|x86.ActiveCfg = Release|Any CPU
+		{54C943DB-7725-4F52-BCE4-86C3D3D5A66E}.minimal|x86.Build.0 = Release|Any CPU
+		{54C943DB-7725-4F52-BCE4-86C3D3D5A66E}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{54C943DB-7725-4F52-BCE4-86C3D3D5A66E}.Release|Any CPU.Build.0 = Release|Any CPU
+		{54C943DB-7725-4F52-BCE4-86C3D3D5A66E}.Release|x86.ActiveCfg = Release|Any CPU
+		{54C943DB-7725-4F52-BCE4-86C3D3D5A66E}.Release|x86.Build.0 = Release|Any CPU
 		{F12EB680-0990-4900-B77E-0FBF2E28A815}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{F12EB680-0990-4900-B77E-0FBF2E28A815}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{F12EB680-0990-4900-B77E-0FBF2E28A815}.Debug|x86.ActiveCfg = Debug|x86
-		{F12EB680-0990-4900-B77E-0FBF2E28A815}.Debug|x86.Build.0 = Debug|x86
+		{F12EB680-0990-4900-B77E-0FBF2E28A815}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{F12EB680-0990-4900-B77E-0FBF2E28A815}.Debug|x86.Build.0 = Debug|Any CPU
 		{F12EB680-0990-4900-B77E-0FBF2E28A815}.minimal|Any CPU.ActiveCfg = Debug|Any CPU
 		{F12EB680-0990-4900-B77E-0FBF2E28A815}.minimal|Any CPU.Build.0 = Debug|Any CPU
-		{F12EB680-0990-4900-B77E-0FBF2E28A815}.minimal|x86.ActiveCfg = Release|x86
-		{F12EB680-0990-4900-B77E-0FBF2E28A815}.minimal|x86.Build.0 = Release|x86
+		{F12EB680-0990-4900-B77E-0FBF2E28A815}.minimal|x86.ActiveCfg = Release|Any CPU
+		{F12EB680-0990-4900-B77E-0FBF2E28A815}.minimal|x86.Build.0 = Release|Any CPU
 		{F12EB680-0990-4900-B77E-0FBF2E28A815}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{F12EB680-0990-4900-B77E-0FBF2E28A815}.Release|Any CPU.Build.0 = Release|Any CPU
-		{F12EB680-0990-4900-B77E-0FBF2E28A815}.Release|x86.ActiveCfg = Release|x86
-		{F12EB680-0990-4900-B77E-0FBF2E28A815}.Release|x86.Build.0 = Release|x86
+		{F12EB680-0990-4900-B77E-0FBF2E28A815}.Release|x86.ActiveCfg = Release|Any CPU
+		{F12EB680-0990-4900-B77E-0FBF2E28A815}.Release|x86.Build.0 = Release|Any CPU
 		{42FB4CC3-F2D1-4509-87DD-6BBD430CD4AB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{42FB4CC3-F2D1-4509-87DD-6BBD430CD4AB}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{42FB4CC3-F2D1-4509-87DD-6BBD430CD4AB}.Debug|x86.ActiveCfg = Debug|x86
-		{42FB4CC3-F2D1-4509-87DD-6BBD430CD4AB}.Debug|x86.Build.0 = Debug|x86
+		{42FB4CC3-F2D1-4509-87DD-6BBD430CD4AB}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{42FB4CC3-F2D1-4509-87DD-6BBD430CD4AB}.Debug|x86.Build.0 = Debug|Any CPU
 		{42FB4CC3-F2D1-4509-87DD-6BBD430CD4AB}.minimal|Any CPU.ActiveCfg = Debug|Any CPU
-		{42FB4CC3-F2D1-4509-87DD-6BBD430CD4AB}.minimal|x86.ActiveCfg = Release|x86
-		{42FB4CC3-F2D1-4509-87DD-6BBD430CD4AB}.minimal|x86.Build.0 = Release|x86
+		{42FB4CC3-F2D1-4509-87DD-6BBD430CD4AB}.minimal|x86.ActiveCfg = Release|Any CPU
+		{42FB4CC3-F2D1-4509-87DD-6BBD430CD4AB}.minimal|x86.Build.0 = Release|Any CPU
 		{42FB4CC3-F2D1-4509-87DD-6BBD430CD4AB}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{42FB4CC3-F2D1-4509-87DD-6BBD430CD4AB}.Release|Any CPU.Build.0 = Release|Any CPU
-		{42FB4CC3-F2D1-4509-87DD-6BBD430CD4AB}.Release|x86.ActiveCfg = Release|x86
-		{42FB4CC3-F2D1-4509-87DD-6BBD430CD4AB}.Release|x86.Build.0 = Release|x86
+		{42FB4CC3-F2D1-4509-87DD-6BBD430CD4AB}.Release|x86.ActiveCfg = Release|Any CPU
+		{42FB4CC3-F2D1-4509-87DD-6BBD430CD4AB}.Release|x86.Build.0 = Release|Any CPU
 		{5CFD0BB3-5B2A-4911-B220-9C2286151BF0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{5CFD0BB3-5B2A-4911-B220-9C2286151BF0}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{5CFD0BB3-5B2A-4911-B220-9C2286151BF0}.Debug|x86.ActiveCfg = Debug|x86
-		{5CFD0BB3-5B2A-4911-B220-9C2286151BF0}.Debug|x86.Build.0 = Debug|x86
+		{5CFD0BB3-5B2A-4911-B220-9C2286151BF0}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{5CFD0BB3-5B2A-4911-B220-9C2286151BF0}.Debug|x86.Build.0 = Debug|Any CPU
 		{5CFD0BB3-5B2A-4911-B220-9C2286151BF0}.minimal|Any CPU.ActiveCfg = Debug|Any CPU
-		{5CFD0BB3-5B2A-4911-B220-9C2286151BF0}.minimal|x86.ActiveCfg = Release|x86
-		{5CFD0BB3-5B2A-4911-B220-9C2286151BF0}.minimal|x86.Build.0 = Release|x86
+		{5CFD0BB3-5B2A-4911-B220-9C2286151BF0}.minimal|x86.ActiveCfg = Release|Any CPU
+		{5CFD0BB3-5B2A-4911-B220-9C2286151BF0}.minimal|x86.Build.0 = Release|Any CPU
 		{5CFD0BB3-5B2A-4911-B220-9C2286151BF0}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{5CFD0BB3-5B2A-4911-B220-9C2286151BF0}.Release|Any CPU.Build.0 = Release|Any CPU
-		{5CFD0BB3-5B2A-4911-B220-9C2286151BF0}.Release|x86.ActiveCfg = Release|x86
-		{5CFD0BB3-5B2A-4911-B220-9C2286151BF0}.Release|x86.Build.0 = Release|x86
+		{5CFD0BB3-5B2A-4911-B220-9C2286151BF0}.Release|x86.ActiveCfg = Release|Any CPU
+		{5CFD0BB3-5B2A-4911-B220-9C2286151BF0}.Release|x86.Build.0 = Release|Any CPU
 		{6AED6785-CC6F-4A6A-BDB1-1895C6DA1090}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{6AED6785-CC6F-4A6A-BDB1-1895C6DA1090}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{6AED6785-CC6F-4A6A-BDB1-1895C6DA1090}.Debug|x86.ActiveCfg = Debug|x86
-		{6AED6785-CC6F-4A6A-BDB1-1895C6DA1090}.Debug|x86.Build.0 = Debug|x86
+		{6AED6785-CC6F-4A6A-BDB1-1895C6DA1090}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{6AED6785-CC6F-4A6A-BDB1-1895C6DA1090}.Debug|x86.Build.0 = Debug|Any CPU
 		{6AED6785-CC6F-4A6A-BDB1-1895C6DA1090}.minimal|Any CPU.ActiveCfg = Debug|Any CPU
-		{6AED6785-CC6F-4A6A-BDB1-1895C6DA1090}.minimal|x86.ActiveCfg = Release|x86
-		{6AED6785-CC6F-4A6A-BDB1-1895C6DA1090}.minimal|x86.Build.0 = Release|x86
+		{6AED6785-CC6F-4A6A-BDB1-1895C6DA1090}.minimal|x86.ActiveCfg = Release|Any CPU
+		{6AED6785-CC6F-4A6A-BDB1-1895C6DA1090}.minimal|x86.Build.0 = Release|Any CPU
 		{6AED6785-CC6F-4A6A-BDB1-1895C6DA1090}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{6AED6785-CC6F-4A6A-BDB1-1895C6DA1090}.Release|Any CPU.Build.0 = Release|Any CPU
-		{6AED6785-CC6F-4A6A-BDB1-1895C6DA1090}.Release|x86.ActiveCfg = Release|x86
-		{6AED6785-CC6F-4A6A-BDB1-1895C6DA1090}.Release|x86.Build.0 = Release|x86
+		{6AED6785-CC6F-4A6A-BDB1-1895C6DA1090}.Release|x86.ActiveCfg = Release|Any CPU
+		{6AED6785-CC6F-4A6A-BDB1-1895C6DA1090}.Release|x86.Build.0 = Release|Any CPU
 		{87AF0B02-2983-486D-857F-D1859535C234}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{87AF0B02-2983-486D-857F-D1859535C234}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{87AF0B02-2983-486D-857F-D1859535C234}.Debug|x86.ActiveCfg = Debug|x86
-		{87AF0B02-2983-486D-857F-D1859535C234}.Debug|x86.Build.0 = Debug|x86
+		{87AF0B02-2983-486D-857F-D1859535C234}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{87AF0B02-2983-486D-857F-D1859535C234}.Debug|x86.Build.0 = Debug|Any CPU
 		{87AF0B02-2983-486D-857F-D1859535C234}.minimal|Any CPU.ActiveCfg = Debug|Any CPU
-		{87AF0B02-2983-486D-857F-D1859535C234}.minimal|x86.ActiveCfg = Release|x86
-		{87AF0B02-2983-486D-857F-D1859535C234}.minimal|x86.Build.0 = Release|x86
+		{87AF0B02-2983-486D-857F-D1859535C234}.minimal|x86.ActiveCfg = Release|Any CPU
+		{87AF0B02-2983-486D-857F-D1859535C234}.minimal|x86.Build.0 = Release|Any CPU
 		{87AF0B02-2983-486D-857F-D1859535C234}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{87AF0B02-2983-486D-857F-D1859535C234}.Release|Any CPU.Build.0 = Release|Any CPU
-		{87AF0B02-2983-486D-857F-D1859535C234}.Release|x86.ActiveCfg = Release|x86
-		{87AF0B02-2983-486D-857F-D1859535C234}.Release|x86.Build.0 = Release|x86
+		{87AF0B02-2983-486D-857F-D1859535C234}.Release|x86.ActiveCfg = Release|Any CPU
+		{87AF0B02-2983-486D-857F-D1859535C234}.Release|x86.Build.0 = Release|Any CPU
 		{E651E83C-94DD-4D6D-ABA2-C9FDA34FBA55}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{E651E83C-94DD-4D6D-ABA2-C9FDA34FBA55}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{E651E83C-94DD-4D6D-ABA2-C9FDA34FBA55}.Debug|x86.ActiveCfg = Debug|x86
-		{E651E83C-94DD-4D6D-ABA2-C9FDA34FBA55}.Debug|x86.Build.0 = Debug|x86
+		{E651E83C-94DD-4D6D-ABA2-C9FDA34FBA55}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{E651E83C-94DD-4D6D-ABA2-C9FDA34FBA55}.Debug|x86.Build.0 = Debug|Any CPU
 		{E651E83C-94DD-4D6D-ABA2-C9FDA34FBA55}.minimal|Any CPU.ActiveCfg = Debug|Any CPU
-		{E651E83C-94DD-4D6D-ABA2-C9FDA34FBA55}.minimal|x86.ActiveCfg = Release|x86
-		{E651E83C-94DD-4D6D-ABA2-C9FDA34FBA55}.minimal|x86.Build.0 = Release|x86
+		{E651E83C-94DD-4D6D-ABA2-C9FDA34FBA55}.minimal|x86.ActiveCfg = Release|Any CPU
+		{E651E83C-94DD-4D6D-ABA2-C9FDA34FBA55}.minimal|x86.Build.0 = Release|Any CPU
 		{E651E83C-94DD-4D6D-ABA2-C9FDA34FBA55}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{E651E83C-94DD-4D6D-ABA2-C9FDA34FBA55}.Release|Any CPU.Build.0 = Release|Any CPU
-		{E651E83C-94DD-4D6D-ABA2-C9FDA34FBA55}.Release|x86.ActiveCfg = Release|x86
-		{E651E83C-94DD-4D6D-ABA2-C9FDA34FBA55}.Release|x86.Build.0 = Release|x86
-		{54C943DB-7725-4F52-BCE4-86C3D3D5A66E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-		{54C943DB-7725-4F52-BCE4-86C3D3D5A66E}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{54C943DB-7725-4F52-BCE4-86C3D3D5A66E}.Debug|x86.ActiveCfg = Debug|x86
-		{54C943DB-7725-4F52-BCE4-86C3D3D5A66E}.Debug|x86.Build.0 = Debug|x86
-		{54C943DB-7725-4F52-BCE4-86C3D3D5A66E}.minimal|Any CPU.ActiveCfg = Debug|Any CPU
-		{54C943DB-7725-4F52-BCE4-86C3D3D5A66E}.minimal|Any CPU.Build.0 = Debug|Any CPU
-		{54C943DB-7725-4F52-BCE4-86C3D3D5A66E}.minimal|x86.ActiveCfg = Release|x86
-		{54C943DB-7725-4F52-BCE4-86C3D3D5A66E}.minimal|x86.Build.0 = Release|x86
-		{54C943DB-7725-4F52-BCE4-86C3D3D5A66E}.Release|Any CPU.ActiveCfg = Release|Any CPU
-		{54C943DB-7725-4F52-BCE4-86C3D3D5A66E}.Release|Any CPU.Build.0 = Release|Any CPU
-		{54C943DB-7725-4F52-BCE4-86C3D3D5A66E}.Release|x86.ActiveCfg = Release|x86
-		{54C943DB-7725-4F52-BCE4-86C3D3D5A66E}.Release|x86.Build.0 = Release|x86
+		{E651E83C-94DD-4D6D-ABA2-C9FDA34FBA55}.Release|x86.ActiveCfg = Release|Any CPU
+		{E651E83C-94DD-4D6D-ABA2-C9FDA34FBA55}.Release|x86.Build.0 = Release|Any CPU
 		{AC8F284C-7B34-4AC9-A7DE-FAF765456DFF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{AC8F284C-7B34-4AC9-A7DE-FAF765456DFF}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{AC8F284C-7B34-4AC9-A7DE-FAF765456DFF}.Debug|x86.ActiveCfg = Debug|x86
-		{AC8F284C-7B34-4AC9-A7DE-FAF765456DFF}.Debug|x86.Build.0 = Debug|x86
+		{AC8F284C-7B34-4AC9-A7DE-FAF765456DFF}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{AC8F284C-7B34-4AC9-A7DE-FAF765456DFF}.Debug|x86.Build.0 = Debug|Any CPU
 		{AC8F284C-7B34-4AC9-A7DE-FAF765456DFF}.minimal|Any CPU.ActiveCfg = Debug|Any CPU
-		{AC8F284C-7B34-4AC9-A7DE-FAF765456DFF}.minimal|x86.ActiveCfg = Release|x86
-		{AC8F284C-7B34-4AC9-A7DE-FAF765456DFF}.minimal|x86.Build.0 = Release|x86
+		{AC8F284C-7B34-4AC9-A7DE-FAF765456DFF}.minimal|x86.ActiveCfg = Release|Any CPU
+		{AC8F284C-7B34-4AC9-A7DE-FAF765456DFF}.minimal|x86.Build.0 = Release|Any CPU
 		{AC8F284C-7B34-4AC9-A7DE-FAF765456DFF}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{AC8F284C-7B34-4AC9-A7DE-FAF765456DFF}.Release|Any CPU.Build.0 = Release|Any CPU
-		{AC8F284C-7B34-4AC9-A7DE-FAF765456DFF}.Release|x86.ActiveCfg = Release|x86
-		{AC8F284C-7B34-4AC9-A7DE-FAF765456DFF}.Release|x86.Build.0 = Release|x86
+		{AC8F284C-7B34-4AC9-A7DE-FAF765456DFF}.Release|x86.ActiveCfg = Release|Any CPU
+		{AC8F284C-7B34-4AC9-A7DE-FAF765456DFF}.Release|x86.Build.0 = Release|Any CPU
 		{600D0FD4-D189-41A0-9BC5-FC79AD2CF1CD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{600D0FD4-D189-41A0-9BC5-FC79AD2CF1CD}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{600D0FD4-D189-41A0-9BC5-FC79AD2CF1CD}.Debug|x86.ActiveCfg = Debug|x86
-		{600D0FD4-D189-41A0-9BC5-FC79AD2CF1CD}.Debug|x86.Build.0 = Debug|x86
+		{600D0FD4-D189-41A0-9BC5-FC79AD2CF1CD}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{600D0FD4-D189-41A0-9BC5-FC79AD2CF1CD}.Debug|x86.Build.0 = Debug|Any CPU
 		{600D0FD4-D189-41A0-9BC5-FC79AD2CF1CD}.minimal|Any CPU.ActiveCfg = Debug|Any CPU
-		{600D0FD4-D189-41A0-9BC5-FC79AD2CF1CD}.minimal|x86.ActiveCfg = Release|x86
-		{600D0FD4-D189-41A0-9BC5-FC79AD2CF1CD}.minimal|x86.Build.0 = Release|x86
+		{600D0FD4-D189-41A0-9BC5-FC79AD2CF1CD}.minimal|x86.ActiveCfg = Release|Any CPU
+		{600D0FD4-D189-41A0-9BC5-FC79AD2CF1CD}.minimal|x86.Build.0 = Release|Any CPU
 		{600D0FD4-D189-41A0-9BC5-FC79AD2CF1CD}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{600D0FD4-D189-41A0-9BC5-FC79AD2CF1CD}.Release|Any CPU.Build.0 = Release|Any CPU
-		{600D0FD4-D189-41A0-9BC5-FC79AD2CF1CD}.Release|x86.ActiveCfg = Release|x86
-		{600D0FD4-D189-41A0-9BC5-FC79AD2CF1CD}.Release|x86.Build.0 = Release|x86
+		{600D0FD4-D189-41A0-9BC5-FC79AD2CF1CD}.Release|x86.ActiveCfg = Release|Any CPU
+		{600D0FD4-D189-41A0-9BC5-FC79AD2CF1CD}.Release|x86.Build.0 = Release|Any CPU
 		{EFB9D66D-AF0F-4E45-A1AC-DB32981711D2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{EFB9D66D-AF0F-4E45-A1AC-DB32981711D2}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{EFB9D66D-AF0F-4E45-A1AC-DB32981711D2}.Debug|x86.ActiveCfg = Debug|x86
-		{EFB9D66D-AF0F-4E45-A1AC-DB32981711D2}.Debug|x86.Build.0 = Debug|x86
+		{EFB9D66D-AF0F-4E45-A1AC-DB32981711D2}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{EFB9D66D-AF0F-4E45-A1AC-DB32981711D2}.Debug|x86.Build.0 = Debug|Any CPU
 		{EFB9D66D-AF0F-4E45-A1AC-DB32981711D2}.minimal|Any CPU.ActiveCfg = Debug|Any CPU
-		{EFB9D66D-AF0F-4E45-A1AC-DB32981711D2}.minimal|x86.ActiveCfg = Release|x86
-		{EFB9D66D-AF0F-4E45-A1AC-DB32981711D2}.minimal|x86.Build.0 = Release|x86
+		{EFB9D66D-AF0F-4E45-A1AC-DB32981711D2}.minimal|x86.ActiveCfg = Release|Any CPU
+		{EFB9D66D-AF0F-4E45-A1AC-DB32981711D2}.minimal|x86.Build.0 = Release|Any CPU
 		{EFB9D66D-AF0F-4E45-A1AC-DB32981711D2}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{EFB9D66D-AF0F-4E45-A1AC-DB32981711D2}.Release|Any CPU.Build.0 = Release|Any CPU
-		{EFB9D66D-AF0F-4E45-A1AC-DB32981711D2}.Release|x86.ActiveCfg = Release|x86
-		{EFB9D66D-AF0F-4E45-A1AC-DB32981711D2}.Release|x86.Build.0 = Release|x86
+		{EFB9D66D-AF0F-4E45-A1AC-DB32981711D2}.Release|x86.ActiveCfg = Release|Any CPU
+		{EFB9D66D-AF0F-4E45-A1AC-DB32981711D2}.Release|x86.Build.0 = Release|Any CPU
 		{19310CA3-6653-45E0-9EC8-F824629E2AD8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{19310CA3-6653-45E0-9EC8-F824629E2AD8}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{19310CA3-6653-45E0-9EC8-F824629E2AD8}.Debug|x86.ActiveCfg = Debug|x86
-		{19310CA3-6653-45E0-9EC8-F824629E2AD8}.Debug|x86.Build.0 = Debug|x86
+		{19310CA3-6653-45E0-9EC8-F824629E2AD8}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{19310CA3-6653-45E0-9EC8-F824629E2AD8}.Debug|x86.Build.0 = Debug|Any CPU
 		{19310CA3-6653-45E0-9EC8-F824629E2AD8}.minimal|Any CPU.ActiveCfg = Debug|Any CPU
-		{19310CA3-6653-45E0-9EC8-F824629E2AD8}.minimal|x86.ActiveCfg = Release|x86
-		{19310CA3-6653-45E0-9EC8-F824629E2AD8}.minimal|x86.Build.0 = Release|x86
+		{19310CA3-6653-45E0-9EC8-F824629E2AD8}.minimal|x86.ActiveCfg = Release|Any CPU
+		{19310CA3-6653-45E0-9EC8-F824629E2AD8}.minimal|x86.Build.0 = Release|Any CPU
 		{19310CA3-6653-45E0-9EC8-F824629E2AD8}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{19310CA3-6653-45E0-9EC8-F824629E2AD8}.Release|Any CPU.Build.0 = Release|Any CPU
-		{19310CA3-6653-45E0-9EC8-F824629E2AD8}.Release|x86.ActiveCfg = Release|x86
-		{19310CA3-6653-45E0-9EC8-F824629E2AD8}.Release|x86.Build.0 = Release|x86
+		{19310CA3-6653-45E0-9EC8-F824629E2AD8}.Release|x86.ActiveCfg = Release|Any CPU
+		{19310CA3-6653-45E0-9EC8-F824629E2AD8}.Release|x86.Build.0 = Release|Any CPU
 		{5F61C809-B6C0-4567-9603-B2198E1AD038}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{5F61C809-B6C0-4567-9603-B2198E1AD038}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{5F61C809-B6C0-4567-9603-B2198E1AD038}.Debug|x86.ActiveCfg = Debug|x86
-		{5F61C809-B6C0-4567-9603-B2198E1AD038}.Debug|x86.Build.0 = Debug|x86
+		{5F61C809-B6C0-4567-9603-B2198E1AD038}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{5F61C809-B6C0-4567-9603-B2198E1AD038}.Debug|x86.Build.0 = Debug|Any CPU
 		{5F61C809-B6C0-4567-9603-B2198E1AD038}.minimal|Any CPU.ActiveCfg = Debug|Any CPU
 		{5F61C809-B6C0-4567-9603-B2198E1AD038}.minimal|Any CPU.Build.0 = Debug|Any CPU
-		{5F61C809-B6C0-4567-9603-B2198E1AD038}.minimal|x86.ActiveCfg = Release|x86
-		{5F61C809-B6C0-4567-9603-B2198E1AD038}.minimal|x86.Build.0 = Release|x86
+		{5F61C809-B6C0-4567-9603-B2198E1AD038}.minimal|x86.ActiveCfg = Release|Any CPU
+		{5F61C809-B6C0-4567-9603-B2198E1AD038}.minimal|x86.Build.0 = Release|Any CPU
 		{5F61C809-B6C0-4567-9603-B2198E1AD038}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{5F61C809-B6C0-4567-9603-B2198E1AD038}.Release|Any CPU.Build.0 = Release|Any CPU
-		{5F61C809-B6C0-4567-9603-B2198E1AD038}.Release|x86.ActiveCfg = Release|x86
-		{5F61C809-B6C0-4567-9603-B2198E1AD038}.Release|x86.Build.0 = Release|x86
+		{5F61C809-B6C0-4567-9603-B2198E1AD038}.Release|x86.ActiveCfg = Release|Any CPU
+		{5F61C809-B6C0-4567-9603-B2198E1AD038}.Release|x86.Build.0 = Release|Any CPU
 		{74DF4C01-660C-4CF4-9343-9330337BCBEA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{74DF4C01-660C-4CF4-9343-9330337BCBEA}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{74DF4C01-660C-4CF4-9343-9330337BCBEA}.Debug|x86.ActiveCfg = Debug|x86
-		{74DF4C01-660C-4CF4-9343-9330337BCBEA}.Debug|x86.Build.0 = Debug|x86
+		{74DF4C01-660C-4CF4-9343-9330337BCBEA}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{74DF4C01-660C-4CF4-9343-9330337BCBEA}.Debug|x86.Build.0 = Debug|Any CPU
 		{74DF4C01-660C-4CF4-9343-9330337BCBEA}.minimal|Any CPU.ActiveCfg = Debug|Any CPU
-		{74DF4C01-660C-4CF4-9343-9330337BCBEA}.minimal|x86.ActiveCfg = Release|x86
-		{74DF4C01-660C-4CF4-9343-9330337BCBEA}.minimal|x86.Build.0 = Release|x86
+		{74DF4C01-660C-4CF4-9343-9330337BCBEA}.minimal|x86.ActiveCfg = Release|Any CPU
+		{74DF4C01-660C-4CF4-9343-9330337BCBEA}.minimal|x86.Build.0 = Release|Any CPU
 		{74DF4C01-660C-4CF4-9343-9330337BCBEA}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{74DF4C01-660C-4CF4-9343-9330337BCBEA}.Release|Any CPU.Build.0 = Release|Any CPU
-		{74DF4C01-660C-4CF4-9343-9330337BCBEA}.Release|x86.ActiveCfg = Release|x86
-		{74DF4C01-660C-4CF4-9343-9330337BCBEA}.Release|x86.Build.0 = Release|x86
+		{74DF4C01-660C-4CF4-9343-9330337BCBEA}.Release|x86.ActiveCfg = Release|Any CPU
+		{74DF4C01-660C-4CF4-9343-9330337BCBEA}.Release|x86.Build.0 = Release|Any CPU
 		{123D695C-0D5D-46E5-893F-39EC4E0B01B8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{123D695C-0D5D-46E5-893F-39EC4E0B01B8}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{123D695C-0D5D-46E5-893F-39EC4E0B01B8}.Debug|x86.ActiveCfg = Debug|x86
-		{123D695C-0D5D-46E5-893F-39EC4E0B01B8}.Debug|x86.Build.0 = Debug|x86
+		{123D695C-0D5D-46E5-893F-39EC4E0B01B8}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{123D695C-0D5D-46E5-893F-39EC4E0B01B8}.Debug|x86.Build.0 = Debug|Any CPU
 		{123D695C-0D5D-46E5-893F-39EC4E0B01B8}.minimal|Any CPU.ActiveCfg = Debug|Any CPU
 		{123D695C-0D5D-46E5-893F-39EC4E0B01B8}.minimal|Any CPU.Build.0 = Debug|Any CPU
-		{123D695C-0D5D-46E5-893F-39EC4E0B01B8}.minimal|x86.ActiveCfg = Release|x86
-		{123D695C-0D5D-46E5-893F-39EC4E0B01B8}.minimal|x86.Build.0 = Release|x86
+		{123D695C-0D5D-46E5-893F-39EC4E0B01B8}.minimal|x86.ActiveCfg = Release|Any CPU
+		{123D695C-0D5D-46E5-893F-39EC4E0B01B8}.minimal|x86.Build.0 = Release|Any CPU
 		{123D695C-0D5D-46E5-893F-39EC4E0B01B8}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{123D695C-0D5D-46E5-893F-39EC4E0B01B8}.Release|Any CPU.Build.0 = Release|Any CPU
-		{123D695C-0D5D-46E5-893F-39EC4E0B01B8}.Release|x86.ActiveCfg = Release|x86
-		{123D695C-0D5D-46E5-893F-39EC4E0B01B8}.Release|x86.Build.0 = Release|x86
+		{123D695C-0D5D-46E5-893F-39EC4E0B01B8}.Release|x86.ActiveCfg = Release|Any CPU
+		{123D695C-0D5D-46E5-893F-39EC4E0B01B8}.Release|x86.Build.0 = Release|Any CPU
 		{EF37C48F-EABC-478B-B7C1-2BDB33968A21}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{EF37C48F-EABC-478B-B7C1-2BDB33968A21}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{EF37C48F-EABC-478B-B7C1-2BDB33968A21}.Debug|x86.ActiveCfg = Debug|x86
-		{EF37C48F-EABC-478B-B7C1-2BDB33968A21}.Debug|x86.Build.0 = Debug|x86
+		{EF37C48F-EABC-478B-B7C1-2BDB33968A21}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{EF37C48F-EABC-478B-B7C1-2BDB33968A21}.Debug|x86.Build.0 = Debug|Any CPU
 		{EF37C48F-EABC-478B-B7C1-2BDB33968A21}.minimal|Any CPU.ActiveCfg = Release|Any CPU
 		{EF37C48F-EABC-478B-B7C1-2BDB33968A21}.minimal|Any CPU.Build.0 = Release|Any CPU
-		{EF37C48F-EABC-478B-B7C1-2BDB33968A21}.minimal|x86.ActiveCfg = Release|x86
-		{EF37C48F-EABC-478B-B7C1-2BDB33968A21}.minimal|x86.Build.0 = Release|x86
+		{EF37C48F-EABC-478B-B7C1-2BDB33968A21}.minimal|x86.ActiveCfg = Release|Any CPU
+		{EF37C48F-EABC-478B-B7C1-2BDB33968A21}.minimal|x86.Build.0 = Release|Any CPU
 		{EF37C48F-EABC-478B-B7C1-2BDB33968A21}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{EF37C48F-EABC-478B-B7C1-2BDB33968A21}.Release|Any CPU.Build.0 = Release|Any CPU
-		{EF37C48F-EABC-478B-B7C1-2BDB33968A21}.Release|x86.ActiveCfg = Release|x86
-		{EF37C48F-EABC-478B-B7C1-2BDB33968A21}.Release|x86.Build.0 = Release|x86
+		{EF37C48F-EABC-478B-B7C1-2BDB33968A21}.Release|x86.ActiveCfg = Release|Any CPU
+		{EF37C48F-EABC-478B-B7C1-2BDB33968A21}.Release|x86.Build.0 = Release|Any CPU
 		{9D196637-2D50-4604-A310-378083CEA809}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{9D196637-2D50-4604-A310-378083CEA809}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{9D196637-2D50-4604-A310-378083CEA809}.Debug|x86.ActiveCfg = Debug|x86
-		{9D196637-2D50-4604-A310-378083CEA809}.Debug|x86.Build.0 = Debug|x86
+		{9D196637-2D50-4604-A310-378083CEA809}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{9D196637-2D50-4604-A310-378083CEA809}.Debug|x86.Build.0 = Debug|Any CPU
 		{9D196637-2D50-4604-A310-378083CEA809}.minimal|Any CPU.ActiveCfg = Debug|Any CPU
 		{9D196637-2D50-4604-A310-378083CEA809}.minimal|Any CPU.Build.0 = Debug|Any CPU
-		{9D196637-2D50-4604-A310-378083CEA809}.minimal|x86.ActiveCfg = Release|x86
-		{9D196637-2D50-4604-A310-378083CEA809}.minimal|x86.Build.0 = Release|x86
+		{9D196637-2D50-4604-A310-378083CEA809}.minimal|x86.ActiveCfg = Release|Any CPU
+		{9D196637-2D50-4604-A310-378083CEA809}.minimal|x86.Build.0 = Release|Any CPU
 		{9D196637-2D50-4604-A310-378083CEA809}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{9D196637-2D50-4604-A310-378083CEA809}.Release|Any CPU.Build.0 = Release|Any CPU
-		{9D196637-2D50-4604-A310-378083CEA809}.Release|x86.ActiveCfg = Release|x86
-		{9D196637-2D50-4604-A310-378083CEA809}.Release|x86.Build.0 = Release|x86
+		{9D196637-2D50-4604-A310-378083CEA809}.Release|x86.ActiveCfg = Release|Any CPU
+		{9D196637-2D50-4604-A310-378083CEA809}.Release|x86.Build.0 = Release|Any CPU
 		{FB7CFBB8-D7D0-4E9D-96CF-7D3D0D947EB5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{FB7CFBB8-D7D0-4E9D-96CF-7D3D0D947EB5}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{FB7CFBB8-D7D0-4E9D-96CF-7D3D0D947EB5}.Debug|x86.ActiveCfg = Debug|x86
-		{FB7CFBB8-D7D0-4E9D-96CF-7D3D0D947EB5}.Debug|x86.Build.0 = Debug|x86
+		{FB7CFBB8-D7D0-4E9D-96CF-7D3D0D947EB5}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{FB7CFBB8-D7D0-4E9D-96CF-7D3D0D947EB5}.Debug|x86.Build.0 = Debug|Any CPU
 		{FB7CFBB8-D7D0-4E9D-96CF-7D3D0D947EB5}.minimal|Any CPU.ActiveCfg = Debug|Any CPU
-		{FB7CFBB8-D7D0-4E9D-96CF-7D3D0D947EB5}.minimal|x86.ActiveCfg = Release|x86
-		{FB7CFBB8-D7D0-4E9D-96CF-7D3D0D947EB5}.minimal|x86.Build.0 = Release|x86
+		{FB7CFBB8-D7D0-4E9D-96CF-7D3D0D947EB5}.minimal|x86.ActiveCfg = Release|Any CPU
+		{FB7CFBB8-D7D0-4E9D-96CF-7D3D0D947EB5}.minimal|x86.Build.0 = Release|Any CPU
 		{FB7CFBB8-D7D0-4E9D-96CF-7D3D0D947EB5}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{FB7CFBB8-D7D0-4E9D-96CF-7D3D0D947EB5}.Release|Any CPU.Build.0 = Release|Any CPU
-		{FB7CFBB8-D7D0-4E9D-96CF-7D3D0D947EB5}.Release|x86.ActiveCfg = Release|x86
-		{FB7CFBB8-D7D0-4E9D-96CF-7D3D0D947EB5}.Release|x86.Build.0 = Release|x86
+		{FB7CFBB8-D7D0-4E9D-96CF-7D3D0D947EB5}.Release|x86.ActiveCfg = Release|Any CPU
+		{FB7CFBB8-D7D0-4E9D-96CF-7D3D0D947EB5}.Release|x86.Build.0 = Release|Any CPU
 		{F644C902-A952-4797-9E2D-19D6051DD032}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{F644C902-A952-4797-9E2D-19D6051DD032}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{F644C902-A952-4797-9E2D-19D6051DD032}.Debug|x86.ActiveCfg = Debug|x86
-		{F644C902-A952-4797-9E2D-19D6051DD032}.Debug|x86.Build.0 = Debug|x86
+		{F644C902-A952-4797-9E2D-19D6051DD032}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{F644C902-A952-4797-9E2D-19D6051DD032}.Debug|x86.Build.0 = Debug|Any CPU
 		{F644C902-A952-4797-9E2D-19D6051DD032}.minimal|Any CPU.ActiveCfg = Debug|Any CPU
-		{F644C902-A952-4797-9E2D-19D6051DD032}.minimal|x86.ActiveCfg = Release|x86
-		{F644C902-A952-4797-9E2D-19D6051DD032}.minimal|x86.Build.0 = Release|x86
+		{F644C902-A952-4797-9E2D-19D6051DD032}.minimal|x86.ActiveCfg = Release|Any CPU
+		{F644C902-A952-4797-9E2D-19D6051DD032}.minimal|x86.Build.0 = Release|Any CPU
 		{F644C902-A952-4797-9E2D-19D6051DD032}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{F644C902-A952-4797-9E2D-19D6051DD032}.Release|Any CPU.Build.0 = Release|Any CPU
-		{F644C902-A952-4797-9E2D-19D6051DD032}.Release|x86.ActiveCfg = Release|x86
-		{F644C902-A952-4797-9E2D-19D6051DD032}.Release|x86.Build.0 = Release|x86
+		{F644C902-A952-4797-9E2D-19D6051DD032}.Release|x86.ActiveCfg = Release|Any CPU
+		{F644C902-A952-4797-9E2D-19D6051DD032}.Release|x86.Build.0 = Release|Any CPU
 		{8491FEEE-C311-4B64-BB30-A1F1C1802F45}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{8491FEEE-C311-4B64-BB30-A1F1C1802F45}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{8491FEEE-C311-4B64-BB30-A1F1C1802F45}.Debug|x86.ActiveCfg = Debug|x86
-		{8491FEEE-C311-4B64-BB30-A1F1C1802F45}.Debug|x86.Build.0 = Debug|x86
+		{8491FEEE-C311-4B64-BB30-A1F1C1802F45}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{8491FEEE-C311-4B64-BB30-A1F1C1802F45}.Debug|x86.Build.0 = Debug|Any CPU
 		{8491FEEE-C311-4B64-BB30-A1F1C1802F45}.minimal|Any CPU.ActiveCfg = Debug|Any CPU
-		{8491FEEE-C311-4B64-BB30-A1F1C1802F45}.minimal|x86.ActiveCfg = Release|x86
-		{8491FEEE-C311-4B64-BB30-A1F1C1802F45}.minimal|x86.Build.0 = Release|x86
+		{8491FEEE-C311-4B64-BB30-A1F1C1802F45}.minimal|x86.ActiveCfg = Release|Any CPU
+		{8491FEEE-C311-4B64-BB30-A1F1C1802F45}.minimal|x86.Build.0 = Release|Any CPU
 		{8491FEEE-C311-4B64-BB30-A1F1C1802F45}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{8491FEEE-C311-4B64-BB30-A1F1C1802F45}.Release|Any CPU.Build.0 = Release|Any CPU
-		{8491FEEE-C311-4B64-BB30-A1F1C1802F45}.Release|x86.ActiveCfg = Release|x86
-		{8491FEEE-C311-4B64-BB30-A1F1C1802F45}.Release|x86.Build.0 = Release|x86
+		{8491FEEE-C311-4B64-BB30-A1F1C1802F45}.Release|x86.ActiveCfg = Release|Any CPU
+		{8491FEEE-C311-4B64-BB30-A1F1C1802F45}.Release|x86.Build.0 = Release|Any CPU
 		{4408C857-0371-42BF-A635-E23C8A99A803}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{4408C857-0371-42BF-A635-E23C8A99A803}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{4408C857-0371-42BF-A635-E23C8A99A803}.Debug|x86.ActiveCfg = Debug|x86
-		{4408C857-0371-42BF-A635-E23C8A99A803}.Debug|x86.Build.0 = Debug|x86
+		{4408C857-0371-42BF-A635-E23C8A99A803}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{4408C857-0371-42BF-A635-E23C8A99A803}.Debug|x86.Build.0 = Debug|Any CPU
 		{4408C857-0371-42BF-A635-E23C8A99A803}.minimal|Any CPU.ActiveCfg = Debug|Any CPU
-		{4408C857-0371-42BF-A635-E23C8A99A803}.minimal|x86.ActiveCfg = Release|x86
-		{4408C857-0371-42BF-A635-E23C8A99A803}.minimal|x86.Build.0 = Release|x86
+		{4408C857-0371-42BF-A635-E23C8A99A803}.minimal|x86.ActiveCfg = Release|Any CPU
+		{4408C857-0371-42BF-A635-E23C8A99A803}.minimal|x86.Build.0 = Release|Any CPU
 		{4408C857-0371-42BF-A635-E23C8A99A803}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{4408C857-0371-42BF-A635-E23C8A99A803}.Release|Any CPU.Build.0 = Release|Any CPU
-		{4408C857-0371-42BF-A635-E23C8A99A803}.Release|x86.ActiveCfg = Release|x86
-		{4408C857-0371-42BF-A635-E23C8A99A803}.Release|x86.Build.0 = Release|x86
+		{4408C857-0371-42BF-A635-E23C8A99A803}.Release|x86.ActiveCfg = Release|Any CPU
+		{4408C857-0371-42BF-A635-E23C8A99A803}.Release|x86.Build.0 = Release|Any CPU
 		{7DA57D98-255B-46DE-BF94-D163695A0568}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{7DA57D98-255B-46DE-BF94-D163695A0568}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{7DA57D98-255B-46DE-BF94-D163695A0568}.Debug|x86.ActiveCfg = Debug|x86
-		{7DA57D98-255B-46DE-BF94-D163695A0568}.Debug|x86.Build.0 = Debug|x86
+		{7DA57D98-255B-46DE-BF94-D163695A0568}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{7DA57D98-255B-46DE-BF94-D163695A0568}.Debug|x86.Build.0 = Debug|Any CPU
 		{7DA57D98-255B-46DE-BF94-D163695A0568}.minimal|Any CPU.ActiveCfg = Debug|Any CPU
-		{7DA57D98-255B-46DE-BF94-D163695A0568}.minimal|x86.ActiveCfg = Release|x86
-		{7DA57D98-255B-46DE-BF94-D163695A0568}.minimal|x86.Build.0 = Release|x86
+		{7DA57D98-255B-46DE-BF94-D163695A0568}.minimal|x86.ActiveCfg = Release|Any CPU
+		{7DA57D98-255B-46DE-BF94-D163695A0568}.minimal|x86.Build.0 = Release|Any CPU
 		{7DA57D98-255B-46DE-BF94-D163695A0568}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{7DA57D98-255B-46DE-BF94-D163695A0568}.Release|Any CPU.Build.0 = Release|Any CPU
-		{7DA57D98-255B-46DE-BF94-D163695A0568}.Release|x86.ActiveCfg = Release|x86
-		{7DA57D98-255B-46DE-BF94-D163695A0568}.Release|x86.Build.0 = Release|x86
+		{7DA57D98-255B-46DE-BF94-D163695A0568}.Release|x86.ActiveCfg = Release|Any CPU
+		{7DA57D98-255B-46DE-BF94-D163695A0568}.Release|x86.Build.0 = Release|Any CPU
 		{9936180C-90A7-467C-B761-EC184EFE1F9F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{9936180C-90A7-467C-B761-EC184EFE1F9F}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{9936180C-90A7-467C-B761-EC184EFE1F9F}.Debug|x86.ActiveCfg = Debug|x86
-		{9936180C-90A7-467C-B761-EC184EFE1F9F}.Debug|x86.Build.0 = Debug|x86
+		{9936180C-90A7-467C-B761-EC184EFE1F9F}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{9936180C-90A7-467C-B761-EC184EFE1F9F}.Debug|x86.Build.0 = Debug|Any CPU
 		{9936180C-90A7-467C-B761-EC184EFE1F9F}.minimal|Any CPU.ActiveCfg = Debug|Any CPU
-		{9936180C-90A7-467C-B761-EC184EFE1F9F}.minimal|x86.ActiveCfg = Release|x86
-		{9936180C-90A7-467C-B761-EC184EFE1F9F}.minimal|x86.Build.0 = Release|x86
+		{9936180C-90A7-467C-B761-EC184EFE1F9F}.minimal|x86.ActiveCfg = Release|Any CPU
+		{9936180C-90A7-467C-B761-EC184EFE1F9F}.minimal|x86.Build.0 = Release|Any CPU
 		{9936180C-90A7-467C-B761-EC184EFE1F9F}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{9936180C-90A7-467C-B761-EC184EFE1F9F}.Release|Any CPU.Build.0 = Release|Any CPU
-		{9936180C-90A7-467C-B761-EC184EFE1F9F}.Release|x86.ActiveCfg = Release|x86
-		{9936180C-90A7-467C-B761-EC184EFE1F9F}.Release|x86.Build.0 = Release|x86
+		{9936180C-90A7-467C-B761-EC184EFE1F9F}.Release|x86.ActiveCfg = Release|Any CPU
+		{9936180C-90A7-467C-B761-EC184EFE1F9F}.Release|x86.Build.0 = Release|Any CPU
 		{FEC3014D-0067-4D59-A838-3B046EC3C352}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{FEC3014D-0067-4D59-A838-3B046EC3C352}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{FEC3014D-0067-4D59-A838-3B046EC3C352}.Debug|x86.ActiveCfg = Debug|x86
-		{FEC3014D-0067-4D59-A838-3B046EC3C352}.Debug|x86.Build.0 = Debug|x86
-		{FEC3014D-0067-4D59-A838-3B046EC3C352}.minimal|Any CPU.ActiveCfg = Release|x86
-		{FEC3014D-0067-4D59-A838-3B046EC3C352}.minimal|x86.ActiveCfg = Release|x86
-		{FEC3014D-0067-4D59-A838-3B046EC3C352}.minimal|x86.Build.0 = Release|x86
+		{FEC3014D-0067-4D59-A838-3B046EC3C352}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{FEC3014D-0067-4D59-A838-3B046EC3C352}.Debug|x86.Build.0 = Debug|Any CPU
+		{FEC3014D-0067-4D59-A838-3B046EC3C352}.minimal|Any CPU.ActiveCfg = Release|Any CPU
+		{FEC3014D-0067-4D59-A838-3B046EC3C352}.minimal|Any CPU.Build.0 = Release|Any CPU
+		{FEC3014D-0067-4D59-A838-3B046EC3C352}.minimal|x86.ActiveCfg = Release|Any CPU
+		{FEC3014D-0067-4D59-A838-3B046EC3C352}.minimal|x86.Build.0 = Release|Any CPU
 		{FEC3014D-0067-4D59-A838-3B046EC3C352}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{FEC3014D-0067-4D59-A838-3B046EC3C352}.Release|Any CPU.Build.0 = Release|Any CPU
-		{FEC3014D-0067-4D59-A838-3B046EC3C352}.Release|x86.ActiveCfg = Release|x86
-		{FEC3014D-0067-4D59-A838-3B046EC3C352}.Release|x86.Build.0 = Release|x86
+		{FEC3014D-0067-4D59-A838-3B046EC3C352}.Release|x86.ActiveCfg = Release|Any CPU
+		{FEC3014D-0067-4D59-A838-3B046EC3C352}.Release|x86.Build.0 = Release|Any CPU
 		{4498EAF7-1736-40C3-AD20-6B2CD8D935DB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{4498EAF7-1736-40C3-AD20-6B2CD8D935DB}.Debug|Any CPU.Build.0 = Debug|Any CPU
 		{4498EAF7-1736-40C3-AD20-6B2CD8D935DB}.Debug|x86.ActiveCfg = Debug|Any CPU
diff --git a/src/.nuget/packages.config b/src/.nuget/packages.config
deleted file mode 100644
index 23a62fd78..000000000
--- a/src/.nuget/packages.config
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<packages>
-  <package id="NUnit.Runners.Net4" version="2.6.4" />
-  <package id="MSBuildTasks" version="1.5.0.235" />
-  <package id="MSBuild.Extension.Pack" version="1.9.0" />
-</packages>
diff --git a/src/Addin.Backup.Tests/Addin.Backup.Tests.csproj b/src/Addin.Backup.Tests/Addin.Backup.Tests.csproj
index 7717256e6..75ad313d0 100755
--- a/src/Addin.Backup.Tests/Addin.Backup.Tests.csproj
+++ b/src/Addin.Backup.Tests/Addin.Backup.Tests.csproj
@@ -1,228 +1,65 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <Import Project="..\..\packages\NUnit.3.13.1\build\NUnit.props" Condition="Exists('..\..\packages\NUnit.3.13.1\build\NUnit.props')" />
+<Project Sdk="Microsoft.NET.Sdk">
   <PropertyGroup>
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
-    <ProductVersion>9.0.21022</ProductVersion>
-    <SchemaVersion>2.0</SchemaVersion>
-    <ProjectGuid>{EF37C48F-EABC-478B-B7C1-2BDB33968A21}</ProjectGuid>
+    <TargetFramework>net8.0-windows</TargetFramework>
     <OutputType>Library</OutputType>
-    <AppDesignerFolder>Properties</AppDesignerFolder>
-    <RootNamespace>Addin.Backup.Tests</RootNamespace>
-    <AssemblyName>Addin.Backup.Tests</AssemblyName>
-    <TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion>
-    <TargetFrameworkProfile />
     <AppConfig>..\AppForTests.config</AppConfig>
-    <FileAlignment>512</FileAlignment>
     <StartupObject>
     </StartupObject>
-    <FileUpgradeFlags>
-    </FileUpgradeFlags>
-    <OldToolsVersion>3.5</OldToolsVersion>
-    <UpgradeBackupLocation />
-    <NuGetPackageImportStamp>
-    </NuGetPackageImportStamp>
+    <GenerateAssemblyInfo>false</GenerateAssemblyInfo>
+    <UseWindowsForms>true</UseWindowsForms>
+    <ImportWindowsDesktopTargets>true</ImportWindowsDesktopTargets>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
-    <DebugSymbols>true</DebugSymbols>
-    <DebugType>full</DebugType>
-    <Optimize>false</Optimize>
     <OutputPath>..\..\output\Debug\</OutputPath>
-    <DefineConstants>DEBUG;TRACE</DefineConstants>
-    <ErrorReport>prompt</ErrorReport>
-    <WarningLevel>4</WarningLevel>
     <OutputType>Library</OutputType>
-    <AssemblyName>Addin.Backup.Tests</AssemblyName>
-    <RootNamespace>Addin.Backup.Tests</RootNamespace>
-    <AllowUnsafeBlocks>false</AllowUnsafeBlocks>
     <CheckForOverflowUnderflow>true</CheckForOverflowUnderflow>
     <PlatformTarget>x86</PlatformTarget>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
-    <DebugType>pdbonly</DebugType>
-    <Optimize>true</Optimize>
     <OutputPath>..\..\output\Release\</OutputPath>
-    <DefineConstants>TRACE</DefineConstants>
-    <ErrorReport>prompt</ErrorReport>
-    <WarningLevel>4</WarningLevel>
     <OutputType>Library</OutputType>
-    <AssemblyName>Addin.Backup.Tests</AssemblyName>
     <DebugSymbols>true</DebugSymbols>
-    <RootNamespace>Addin.Backup.Tests</RootNamespace>
-    <AllowUnsafeBlocks>false</AllowUnsafeBlocks>
     <CheckForOverflowUnderflow>true</CheckForOverflowUnderflow>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
-    <DebugSymbols>true</DebugSymbols>
     <OutputPath>..\..\output\Debug\</OutputPath>
-    <DefineConstants>DEBUG;TRACE</DefineConstants>
     <CheckForOverflowUnderflow>true</CheckForOverflowUnderflow>
-    <DebugType>full</DebugType>
-    <PlatformTarget>x86</PlatformTarget>
-    <ErrorReport>prompt</ErrorReport>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
     <DebugSymbols>true</DebugSymbols>
     <OutputPath>..\..\output\Release\</OutputPath>
-    <DefineConstants>TRACE</DefineConstants>
     <CheckForOverflowUnderflow>true</CheckForOverflowUnderflow>
-    <Optimize>true</Optimize>
-    <DebugType>pdbonly</DebugType>
-    <PlatformTarget>x86</PlatformTarget>
-    <ErrorReport>prompt</ErrorReport>
   </PropertyGroup>
   <PropertyGroup>
     <AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
   </PropertyGroup>
   <ItemGroup>
-    <Reference Include="Autofac, Version=4.1.1.0, Culture=neutral, PublicKeyToken=17863af14b0044da, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\Autofac.4.1.1\lib\net45\Autofac.dll</HintPath>
-    </Reference>
-    <Reference Include="ICSharpCode.SharpZipLib, Version=0.86.0.518, Culture=neutral, PublicKeyToken=1b03e6acf1164f73, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\SharpZipLib.0.86.0\lib\20\ICSharpCode.SharpZipLib.dll</HintPath>
-    </Reference>
-    <Reference Include="icu.net, Version=2.7.0.0, Culture=neutral, PublicKeyToken=416fdd914afa6b66, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\icu.net.2.7.1\lib\net451\icu.net.dll</HintPath>
-    </Reference>
-    <Reference Include="Microsoft.Bcl.AsyncInterfaces, Version=5.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\Microsoft.Bcl.AsyncInterfaces.5.0.0\lib\net461\Microsoft.Bcl.AsyncInterfaces.dll</HintPath>
-    </Reference>
-    <Reference Include="Microsoft.DotNet.PlatformAbstractions, Version=2.0.4.0, Culture=neutral, PublicKeyToken=adb9793829ddae60, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\Microsoft.DotNet.PlatformAbstractions.2.0.4\lib\net45\Microsoft.DotNet.PlatformAbstractions.dll</HintPath>
-    </Reference>
-    <Reference Include="Microsoft.Extensions.DependencyModel, Version=2.0.4.0, Culture=neutral, PublicKeyToken=adb9793829ddae60, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\Microsoft.Extensions.DependencyModel.2.0.4\lib\net451\Microsoft.Extensions.DependencyModel.dll</HintPath>
-    </Reference>
-    <Reference Include="Mono.Posix, Version=7.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\Mono.Posix.7.0.0-alpha2.21278.1\lib\net45\Mono.Posix.dll</HintPath>
-    </Reference>
-    <Reference Include="Mono.Unix, Version=7.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\Mono.Unix.7.0.0-alpha2.21278.1\lib\net45\Mono.Unix.dll</HintPath>
-    </Reference>
-    <Reference Include="nunit.framework, Version=3.13.1.0, Culture=neutral, PublicKeyToken=2638cd05610744eb, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\NUnit.3.13.1\lib\net45\nunit.framework.dll</HintPath>
-    </Reference>
-    <Reference Include="SIL.Core, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\SIL.Core.9.0.0-beta0154\lib\net461\SIL.Core.dll</HintPath>
-    </Reference>
-    <Reference Include="SIL.Core.Desktop, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
-      <SpecificVersion>False</SpecificVersion>
-      <HintPath>..\..\packages\SIL.Core.Desktop.9.0.0-beta0154\lib\net461\SIL.Core.Desktop.dll</HintPath>
-    </Reference>
-    <Reference Include="SIL.TestUtilities, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\SIL.TestUtilities.9.0.0-beta0154\lib\net461\SIL.TestUtilities.dll</HintPath>
-    </Reference>
-    <Reference Include="SIL.WritingSystems, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\SIL.WritingSystems.9.0.0-beta0154\lib\net461\SIL.WritingSystems.dll</HintPath>
-    </Reference>
-    <Reference Include="Spart, Version=1.0.0.0, Culture=neutral, PublicKeyToken=14d24e064e474331, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\Spart.1.0.0\lib\net461\Spart.dll</HintPath>
-    </Reference>
-    <Reference Include="System" />
-    <Reference Include="System.Buffers, Version=4.0.3.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\System.Buffers.4.5.1\lib\net461\System.Buffers.dll</HintPath>
-    </Reference>
-    <Reference Include="System.ComponentModel.Composition" />
-    <Reference Include="System.Core">
-      <RequiredTargetFramework>3.5</RequiredTargetFramework>
-    </Reference>
-    <Reference Include="System.Diagnostics.DiagnosticSource, Version=4.0.5.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\System.Diagnostics.DiagnosticSource.4.7.1\lib\net46\System.Diagnostics.DiagnosticSource.dll</HintPath>
-    </Reference>
-    <Reference Include="System.IO.FileSystem.AccessControl, Version=4.0.5.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\System.IO.FileSystem.AccessControl.4.7.0\lib\net461\System.IO.FileSystem.AccessControl.dll</HintPath>
-    </Reference>
-    <Reference Include="System.Memory, Version=4.0.1.1, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\System.Memory.4.5.4\lib\net461\System.Memory.dll</HintPath>
-    </Reference>
-    <Reference Include="System.Numerics" />
-    <Reference Include="System.Numerics.Vectors, Version=4.1.4.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\System.Numerics.Vectors.4.5.0\lib\net46\System.Numerics.Vectors.dll</HintPath>
-    </Reference>
-    <Reference Include="System.Runtime.CompilerServices.Unsafe, Version=4.0.4.1, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\System.Runtime.CompilerServices.Unsafe.4.5.3\lib\net461\System.Runtime.CompilerServices.Unsafe.dll</HintPath>
-    </Reference>
-    <Reference Include="System.Security.AccessControl, Version=4.1.3.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\System.Security.AccessControl.4.7.0\lib\net461\System.Security.AccessControl.dll</HintPath>
-    </Reference>
-    <Reference Include="System.Security.Principal.Windows, Version=4.1.3.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\System.Security.Principal.Windows.4.7.0\lib\net461\System.Security.Principal.Windows.dll</HintPath>
-    </Reference>
-    <Reference Include="System.Threading.Tasks.Extensions, Version=4.2.0.1, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\System.Threading.Tasks.Extensions.4.5.4\lib\net461\System.Threading.Tasks.Extensions.dll</HintPath>
-    </Reference>
-    <Reference Include="System.ValueTuple, Version=4.0.3.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\System.ValueTuple.4.5.0\lib\net461\System.ValueTuple.dll</HintPath>
-    </Reference>
-    <Reference Include="System.Web" />
-    <Reference Include="System.Xml.Linq">
-      <RequiredTargetFramework>3.5</RequiredTargetFramework>
-    </Reference>
-    <Reference Include="System.Data.DataSetExtensions">
-      <RequiredTargetFramework>3.5</RequiredTargetFramework>
-    </Reference>
-    <Reference Include="System.Data" />
-    <Reference Include="System.Deployment" />
-    <Reference Include="System.Drawing" />
-    <Reference Include="System.Windows.Forms" />
-    <Reference Include="System.Xml" />
+    <ProjectReference Include="..\Addin.Backup\Addin.Backup.csproj" />
+    <ProjectReference Include="..\WeSay.Project\WeSay.Project.csproj" />
+    <ProjectReference Include="..\WeSay.TestUtilities\WeSay.TestUtilities.csproj" />
   </ItemGroup>
   <ItemGroup>
-    <Compile Include="BackupMakerTests.cs" />
-    <Compile Include="Properties\AssemblyInfo.cs" />
-    <EmbeddedResource Include="Properties\Resources.resx">
-      <Generator>ResXFileCodeGenerator</Generator>
-      <LastGenOutput>Resources.Designer.cs</LastGenOutput>
-      <SubType>Designer</SubType>
-    </EmbeddedResource>
-    <Compile Include="Properties\Resources.Designer.cs">
-      <AutoGen>True</AutoGen>
-      <DependentUpon>Resources.resx</DependentUpon>
-      <DesignTime>True</DesignTime>
-    </Compile>
-    <None Include="Properties\Settings.settings">
-      <Generator>SettingsSingleFileGenerator</Generator>
-      <LastGenOutput>Settings.Designer.cs</LastGenOutput>
-    </None>
-    <Compile Include="Properties\Settings.Designer.cs">
-      <AutoGen>True</AutoGen>
-      <DependentUpon>Settings.settings</DependentUpon>
-      <DesignTimeSharedInput>True</DesignTimeSharedInput>
-    </Compile>
-    <None Include="packages.config" />
-  </ItemGroup>
-  <ItemGroup>
-    <ProjectReference Include="..\Addin.Backup\Addin.Backup.csproj">
-      <Project>{42FB4CC3-F2D1-4509-87DD-6BBD430CD4AB}</Project>
-      <Name>Addin.Backup</Name>
-    </ProjectReference>
-    <ProjectReference Include="..\WeSay.Project\WeSay.Project.csproj">
-      <Project>{5CFD0BB3-5B2A-4911-B220-9C2286151BF0}</Project>
-      <Name>WeSay.Project</Name>
-    </ProjectReference>
-    <ProjectReference Include="..\WeSay.TestUtilities\WeSay.TestUtilities.csproj">
-      <Project>{FEC3014D-0067-4D59-A838-3B046EC3C352}</Project>
-      <Name>WeSay.TestUtilities</Name>
-    </ProjectReference>
+    <Service Include="{82A7F48D-3B50-4B1E-B82E-3ADA8210C358}" />
   </ItemGroup>
   <ItemGroup>
-    <Service Include="{82A7F48D-3B50-4B1E-B82E-3ADA8210C358}" />
+    <PackageReference Include="Autofac" Version="4.9.4" />
+    <PackageReference Include="Geckofx60.64" Version="60.0.55" />
+    <PackageReference Include="icu.net" Version="2.8.1" />
+    <PackageReference Include="Microsoft.DotNet.PlatformAbstractions" Version="2.0.4" />
+    <PackageReference Include="NUnit" Version="3.13.3" />
+    <PackageReference Include="SharpZipLib" Version="1.4.2" />
+    <PackageReference Include="SIL.Core" Version="13.0.1" />
+    <PackageReference Include="SIL.TestUtilities" Version="13.0.1" />
+    <PackageReference Include="SIL.WritingSystems" Version="13.0.1" />
+    <PackageReference Include="Spart" Version="1.0.0" />
+    <PackageReference Include="System.ComponentModel.Composition" Version="8.0.0" />
+    <PackageReference Include="System.Data.DataSetExtensions" Version="4.5.0" />
+    <PackageReference Include="Microsoft.AspNetCore.SystemWebAdapters" Version="1.3.0" />
+    <PackageReference Include="Microsoft.Bcl.AsyncInterfaces" Version="8.0.0" />
+    <PackageReference Include="Microsoft.Extensions.DependencyModel" Version="8.0.0" />
+    <PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
+    <PackageReference Include="System.Diagnostics.DiagnosticSource" Version="8.0.0" />
+    <PackageReference Include="System.Runtime.CompilerServices.Unsafe" Version="6.0.0" />
+    <PackageReference Include="System.Security.AccessControl" Version="6.0.0" />
   </ItemGroup>
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
-  <Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
-    <PropertyGroup>
-      <ErrorText>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}.</ErrorText>
-    </PropertyGroup>
-    <Error Condition="!Exists('..\..\packages\NUnit.3.13.1\build\NUnit.props')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\NUnit.3.13.1\build\NUnit.props'))" />
-    <Error Condition="!Exists('..\..\packages\Mono.Unix.7.0.0-alpha2.21278.1\build\Mono.Unix.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\Mono.Unix.7.0.0-alpha2.21278.1\build\Mono.Unix.targets'))" />
-  </Target>
-  <Import Project="..\..\packages\Mono.Unix.7.0.0-alpha2.21278.1\build\Mono.Unix.targets" Condition="Exists('..\..\packages\Mono.Unix.7.0.0-alpha2.21278.1\build\Mono.Unix.targets')" />
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it.
-	   Other similar extension points exist, see Microsoft.Common.targets.
-  <Target Name="BeforeBuild">
-  </Target>
-  <Target Name="AfterBuild">
-  </Target>
-  -->
 </Project>
\ No newline at end of file
diff --git a/src/Addin.Backup.Tests/Properties/AssemblyInfo.cs b/src/Addin.Backup.Tests/Properties/AssemblyInfo.cs
deleted file mode 100644
index 6336f3e34..000000000
--- a/src/Addin.Backup.Tests/Properties/AssemblyInfo.cs
+++ /dev/null
@@ -1,35 +0,0 @@
-using System.Reflection;
-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("Addin.Backup.Tests")]
-[assembly: AssemblyDescription("")]
-[assembly: AssemblyConfiguration("")]
-[assembly: AssemblyCompany("")]
-[assembly: AssemblyProduct("Addin.Backup.Tests")]
-[assembly: AssemblyCopyright("Copyright ©  2009")]
-[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)]
-
-// The following GUID is for the ID of the typelib if this project is exposed to COM
-[assembly: Guid("80465a17-fb70-4a64-b8b0-95f9350d4b47")]
-
-// 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.9.0.10")]
-[assembly: AssemblyVersion("1.9.0.10")]
-[assembly: AssemblyFileVersion("1.9.0.10")]
diff --git a/src/Addin.Backup.Tests/packages.config b/src/Addin.Backup.Tests/packages.config
deleted file mode 100644
index 2924511e4..000000000
--- a/src/Addin.Backup.Tests/packages.config
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<packages>
-  <package id="Autofac" version="4.1.1" targetFramework="net461" />
-  <package id="icu.net" version="2.7.1" targetFramework="net461" />
-  <package id="Microsoft.Bcl.AsyncInterfaces" version="5.0.0" targetFramework="net461" />
-  <package id="Microsoft.DotNet.PlatformAbstractions" version="2.0.4" targetFramework="net461" />
-  <package id="Microsoft.Extensions.DependencyModel" version="2.0.4" targetFramework="net461" />
-  <package id="Mono.Posix" version="7.0.0-alpha2.21278.1" targetFramework="net461" />
-  <package id="Mono.Unix" version="7.0.0-alpha2.21278.1" targetFramework="net461" />
-  <package id="Newtonsoft.Json" version="12.0.3" targetFramework="net461" />
-  <package id="NUnit" version="3.13.1" targetFramework="net461" />
-  <package id="SharpZipLib" version="0.86.0" targetFramework="20" />
-  <package id="SIL.Core" version="9.0.0-beta0154" targetFramework="net461" />
-  <package id="SIL.TestUtilities" version="9.0.0-beta0154" targetFramework="net461" />
-  <package id="SIL.WritingSystems" version="9.0.0-beta0154" targetFramework="net461" />
-  <package id="Spart" version="1.0.0" targetFramework="net461" />
-  <package id="System.Buffers" version="4.5.1" targetFramework="net461" />
-  <package id="System.Diagnostics.DiagnosticSource" version="4.7.1" targetFramework="net461" />
-  <package id="System.IO.FileSystem.AccessControl" version="4.7.0" targetFramework="net461" />
-  <package id="System.Memory" version="4.5.4" targetFramework="net461" />
-  <package id="System.Numerics.Vectors" version="4.5.0" targetFramework="net461" />
-  <package id="System.Runtime.CompilerServices.Unsafe" version="4.5.3" targetFramework="net461" />
-  <package id="System.Security.AccessControl" version="4.7.0" targetFramework="net461" />
-  <package id="System.Security.Principal.Windows" version="4.7.0" targetFramework="net461" />
-  <package id="System.Threading.Tasks.Extensions" version="4.5.4" targetFramework="net461" />
-  <package id="System.ValueTuple" version="4.5.0" targetFramework="net461" />
-</packages>
\ No newline at end of file
diff --git a/src/Addin.Backup/Addin.Backup.csproj b/src/Addin.Backup/Addin.Backup.csproj
index 5e5caca47..1244e13b8 100755
--- a/src/Addin.Backup/Addin.Backup.csproj
+++ b/src/Addin.Backup/Addin.Backup.csproj
@@ -1,215 +1,79 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="12.0">
+<Project Sdk="Microsoft.NET.Sdk">
   <PropertyGroup>
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
-    <ProductVersion>9.0.21022</ProductVersion>
-    <SchemaVersion>2.0</SchemaVersion>
-    <ProjectGuid>{42FB4CC3-F2D1-4509-87DD-6BBD430CD4AB}</ProjectGuid>
+    <TargetFramework>net8.0-windows</TargetFramework>
     <OutputType>Library</OutputType>
-    <AppDesignerFolder>Properties</AppDesignerFolder>
-    <RootNamespace>Addin.Backup</RootNamespace>
-    <AssemblyName>Addin.Backup</AssemblyName>
-    <FileUpgradeFlags>
-    </FileUpgradeFlags>
-    <UpgradeBackupLocation>
-    </UpgradeBackupLocation>
-    <OldToolsVersion>3.5</OldToolsVersion>
-    <TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion>
-    <TargetFrameworkProfile />
-    <NuGetPackageImportStamp>
-    </NuGetPackageImportStamp>
+    <GenerateAssemblyInfo>false</GenerateAssemblyInfo>
+    <UseWindowsForms>true</UseWindowsForms>
+    <ImportWindowsDesktopTargets>true</ImportWindowsDesktopTargets>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
-    <DebugSymbols>true</DebugSymbols>
-    <DebugType>full</DebugType>
-    <Optimize>false</Optimize>
     <OutputPath>..\..\output\Debug\</OutputPath>
-    <DefineConstants>DEBUG;TRACE</DefineConstants>
-    <ErrorReport>prompt</ErrorReport>
-    <WarningLevel>4</WarningLevel>
     <OutputType>Library</OutputType>
-    <AssemblyName>Addin.Backup</AssemblyName>
-    <RootNamespace>Addin.Backup</RootNamespace>
-    <AllowUnsafeBlocks>false</AllowUnsafeBlocks>
     <CheckForOverflowUnderflow>true</CheckForOverflowUnderflow>
     <PlatformTarget>x86</PlatformTarget>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
-    <DebugType>pdbonly</DebugType>
-    <Optimize>true</Optimize>
     <OutputPath>..\..\output\Release\</OutputPath>
-    <DefineConstants>TRACE</DefineConstants>
-    <ErrorReport>prompt</ErrorReport>
-    <WarningLevel>4</WarningLevel>
     <OutputType>Library</OutputType>
-    <AssemblyName>Addin.Backup</AssemblyName>
     <DebugSymbols>true</DebugSymbols>
-    <RootNamespace>Addin.Backup</RootNamespace>
-    <AllowUnsafeBlocks>false</AllowUnsafeBlocks>
     <CheckForOverflowUnderflow>true</CheckForOverflowUnderflow>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
-    <DebugSymbols>true</DebugSymbols>
     <OutputPath>..\..\output\$(Configuration)\</OutputPath>
-    <DefineConstants>DEBUG;TRACE</DefineConstants>
     <CheckForOverflowUnderflow>true</CheckForOverflowUnderflow>
-    <DebugType>full</DebugType>
-    <PlatformTarget>x86</PlatformTarget>
-    <ErrorReport>prompt</ErrorReport>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
     <DebugSymbols>true</DebugSymbols>
     <OutputPath>..\..\output\Release\</OutputPath>
-    <DefineConstants>TRACE</DefineConstants>
     <CheckForOverflowUnderflow>true</CheckForOverflowUnderflow>
-    <Optimize>true</Optimize>
-    <DebugType>pdbonly</DebugType>
-    <PlatformTarget>x86</PlatformTarget>
-    <ErrorReport>prompt</ErrorReport>
   </PropertyGroup>
   <PropertyGroup>
     <AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
   </PropertyGroup>
   <ItemGroup>
-    <Reference Include="Enchant.Net">
-      <HintPath>..\..\packages\Enchant.Net.1.4.2\lib\net461\Enchant.Net.dll</HintPath>
-    </Reference>
-    <Reference Include="ICSharpCode.SharpZipLib, Version=0.86.0.518 Culture=neutral, PublicKeyToken=1b03e6acf1164f73, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\SharpZipLib.0.86.0\lib\20\ICSharpCode.SharpZipLib.dll</HintPath>
-    </Reference>
-    <Reference Include="JetBrains.Annotations, Version=2021.2.0.0, Culture=neutral, PublicKeyToken=1010a0d8d6380325, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\JetBrains.Annotations.2021.2.0\lib\net20\JetBrains.Annotations.dll</HintPath>
-    </Reference>
-    <Reference Include="L10NSharp, Version=5.0.0.0, Culture=neutral, PublicKeyToken=fd0b3e309a5b7c28, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\L10NSharp.5.0.0-beta0086\lib\net461\L10NSharp.dll</HintPath>
-    </Reference>
-    <Reference Include="LibChorus, Version=5.0.0.0, Culture=neutral, PublicKeyToken=f1447bae1e63f485, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\SIL.Chorus.LibChorus.5.0.0-beta0017\lib\net461\LibChorus.dll</HintPath>
-    </Reference>
-    <Reference Include="Mono.Addins, Version=1.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\Mono.Addins.1.3.8\lib\net45\Mono.Addins.dll</HintPath>
-    </Reference>
-    <None Include="..\..\lib\common\Enchant.Net.dll.config">
-      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
-    </None>
-    <Reference Include="SIL.Core, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\SIL.Core.9.0.0-beta0154\lib\net461\SIL.Core.dll</HintPath>
-    </Reference>
-    <Reference Include="SIL.Core.Desktop, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\SIL.Core.Desktop.9.0.0-beta0154\lib\net461\SIL.Core.Desktop.dll</HintPath>
-    </Reference>
-    <Reference Include="SIL.Lift, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\SIL.Lift.9.0.0-beta0154\lib\net461\SIL.Lift.dll</HintPath>
-    </Reference>
-    <Reference Include="SIL.Windows.Forms, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\SIL.Windows.Forms.9.0.0-beta0154\lib\net461\SIL.Windows.Forms.dll</HintPath>
-    </Reference>
-    <Reference Include="SIL.WritingSystems, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\SIL.WritingSystems.9.0.0-beta0154\lib\net461\SIL.WritingSystems.dll</HintPath>
-    </Reference>
-    <Reference Include="System" />
-    <Reference Include="System.ComponentModel.Composition" />
-    <Reference Include="System.Configuration" />
-    <Reference Include="System.Core">
-      <RequiredTargetFramework>3.5</RequiredTargetFramework>
-    </Reference>
-    <Reference Include="System.Data" />
-    <Reference Include="System.Drawing" />
-    <Reference Include="System.Management" />
-    <Reference Include="System.Security" />
-    <Reference Include="System.ServiceModel" />
-    <Reference Include="System.Web" />
-    <Reference Include="System.Windows.Forms" />
-    <Reference Include="System.Xml" />
+    <ProjectReference Include="..\LexicalModel\LexicalModel.csproj" />
+    <ProjectReference Include="..\WeSay.AddinLib\WeSay.AddinLib.csproj" />
+    <ProjectReference Include="..\WeSay.Data\WeSay.Data.csproj" />
+    <ProjectReference Include="..\WeSay.Foundation\WeSay.Foundation.csproj" />
+    <ProjectReference Include="..\WeSay.Project\WeSay.Project.csproj" />
+    <ProjectReference Include="..\WeSay.UI\WeSay.UI.csproj" />
   </ItemGroup>
   <ItemGroup>
-    <Compile Include="BackupMaker.cs" />
-    <Compile Include="BackupToDevice.cs" />
-    <Compile Include="BackupDialog.cs">
-      <SubType>Form</SubType>
-    </Compile>
-    <Compile Include="BackupDialog.Designer.cs">
-      <DependentUpon>BackupDialog.cs</DependentUpon>
-    </Compile>
-    <Compile Include="Properties\AssemblyInfo.cs" />
-    <Compile Include="Resources.Designer.cs">
-      <AutoGen>True</AutoGen>
-      <DesignTime>True</DesignTime>
-      <DependentUpon>Resources.resx</DependentUpon>
-    </Compile>
-    <Compile Include="SendProjectEmail.cs" />
-    <Compile Include="SendProjectEmailSettingsDialog.cs">
-      <SubType>Form</SubType>
-    </Compile>
-    <Compile Include="SendProjectEmailSettingsDialog.Designer.cs">
-      <DependentUpon>SendProjectEmailSettingsDialog.cs</DependentUpon>
-    </Compile>
-  </ItemGroup>
-  <ItemGroup>
-    <ProjectReference Include="..\LexicalModel\LexicalModel.csproj">
-      <Project>{5F61C809-B6C0-4567-9603-B2198E1AD038}</Project>
-      <Name>LexicalModel</Name>
-    </ProjectReference>
-    <ProjectReference Include="..\WeSay.AddinLib\WeSay.AddinLib.csproj">
-      <Project>{E651E83C-94DD-4D6D-ABA2-C9FDA34FBA55}</Project>
-      <Name>WeSay.AddinLib</Name>
-    </ProjectReference>
-    <ProjectReference Include="..\WeSay.Data\WeSay.Data.csproj">
-      <Project>{600D0FD4-D189-41A0-9BC5-FC79AD2CF1CD}</Project>
-      <Name>WeSay.Data</Name>
-    </ProjectReference>
-    <ProjectReference Include="..\WeSay.Foundation\WeSay.Foundation.csproj">
-      <Project>{F12EB680-0990-4900-B77E-0FBF2E28A815}</Project>
-      <Name>WeSay.Foundation</Name>
-    </ProjectReference>
-    <ProjectReference Include="..\WeSay.Project\WeSay.Project.csproj">
-      <Project>{5CFD0BB3-5B2A-4911-B220-9C2286151BF0}</Project>
-      <Name>WeSay.Project</Name>
-    </ProjectReference>
-    <ProjectReference Include="..\WeSay.UI\WeSay.UI.csproj">
-      <Project>{AC8F284C-7B34-4AC9-A7DE-FAF765456DFF}</Project>
-      <Name>WeSay.UI</Name>
-    </ProjectReference>
-  </ItemGroup>
-  <ItemGroup>
-    <EmbeddedResource Include="BackupDialog.resx">
-      <SubType>Designer</SubType>
-      <DependentUpon>BackupDialog.cs</DependentUpon>
-    </EmbeddedResource>
-    <EmbeddedResource Include="Resources.resx">
-      <SubType>Designer</SubType>
-      <Generator>ResXFileCodeGenerator</Generator>
-      <LastGenOutput>Resources.Designer.cs</LastGenOutput>
-    </EmbeddedResource>
-    <EmbeddedResource Include="SendProjectEmailSettingsDialog.resx">
-      <SubType>Designer</SubType>
-      <DependentUpon>SendProjectEmailSettingsDialog.cs</DependentUpon>
-    </EmbeddedResource>
+    <PackageReference Include="SIL.Windows.Forms" Version="13.0.1" GeneratePathProperty="true"/>
+    <Reference Include="SIL.Windows.Forms">
+      <HintPath>$(PkgSIL_Windows_Forms)\lib\net461\SIL.Windows.Forms.dll</HintPath>
+    </Reference>
   </ItemGroup>
   <ItemGroup>
-    <None Include="packages.config" />
-    <None Include="Resources\buttonImage.png" />
-    <None Include="Resources\emailAction.png" />
-    <None Include="Resources\greenSynchronize.png" />
-    <None Include="Resources\greenEmail.png" />
-    <None Include="Resources\greenUsbKey.png" />
+    <PackageReference Include="Autofac" Version="4.9.4" />
+    <PackageReference Include="icu.net" Version="2.8.1" />
+    <PackageReference Include="Icu4c.Win.Min" Version="59.1.7" />
+    <PackageReference Include="JetBrains.Annotations" Version="2021.2.0" />
+    <PackageReference Include="Microsoft.DotNet.PlatformAbstractions" Version="2.0.4" />
+    <PackageReference Include="Mono.Addins" Version="1.4.1" />
+    <PackageReference Include="NDesk.DBus" Version="0.15.0" />
+    <PackageReference Include="RelaxNG" Version="3.2.3" />
+    <PackageReference Include="SharpZipLib" Version="1.4.2" />
+    <PackageReference Include="SIL.Chorus.LibChorus" Version="5.1.0" />
+    <PackageReference Include="SIL.Chorus.Mercurial" Version="3.0.3.6" />
+    <PackageReference Include="SIL.Core" Version="13.0.1" />
+    <PackageReference Include="SIL.Core.Desktop" Version="13.0.1" />
+    <PackageReference Include="SIL.Lift" Version="13.0.1" />
+    <PackageReference Include="SIL.WritingSystems" Version="13.0.1" />
+    <PackageReference Include="Spart" Version="1.0.0" />
+    <PackageReference Include="System.ComponentModel.Composition" Version="8.0.0" />
+    <PackageReference Include="System.Management" Version="8.0.0" />
+    <PackageReference Include="Microsoft.AspNetCore.SystemWebAdapters" Version="1.3.0" />
+    <PackageReference Include="Microsoft.Extensions.DependencyModel" Version="8.0.0" />
+    <PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
+    <PackageReference Include="System.Runtime.CompilerServices.Unsafe" Version="6.0.0" />
+    <PackageReference Include="System.Security.AccessControl" Version="6.0.0" />
+    <PackageReference Include="System.Configuration.ConfigurationManager" Version="8.0.0" />
+    <PackageReference Include="System.ServiceModel.Primitives" Version="8.0.0" />
+    <PackageReference Include="System.ServiceModel.Http" Version="8.0.0" />
+    <PackageReference Include="System.ServiceModel.Duplex" Version="6.0.0" />
+    <PackageReference Include="System.ServiceModel.NetTcp" Version="8.0.0" />
+    <PackageReference Include="System.ServiceModel.Security" Version="6.0.0" />
+    <PackageReference Include="System.ServiceModel.Federation" Version="8.0.0" />
   </ItemGroup>
-  <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
-  <Import Project="..\..\packages\SIL.Chorus.Mercurial.3.0.3\build\SIL.Chorus.Mercurial.targets" Condition="Exists('..\..\packages\SIL.Chorus.Mercurial.3.0.3\build\SIL.Chorus.Mercurial.targets')" />
-  <Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
-    <PropertyGroup>
-      <ErrorText>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}.</ErrorText>
-    </PropertyGroup>
-    <Error Condition="!Exists('..\..\packages\SIL.Chorus.Mercurial.3.0.3\build\SIL.Chorus.Mercurial.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\SIL.Chorus.Mercurial.3.0.3\build\SIL.Chorus.Mercurial.targets'))" />
-    <Error Condition="!Exists('..\..\packages\SIL.Windows.Forms.9.0.0-beta0154\build\SIL.Windows.Forms.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\SIL.Windows.Forms.9.0.0-beta0154\build\SIL.Windows.Forms.targets'))" />
-  </Target>
-  <Import Project="..\..\packages\SIL.Windows.Forms.9.0.0-beta0154\build\SIL.Windows.Forms.targets" Condition="Exists('..\..\packages\SIL.Windows.Forms.9.0.0-beta0154\build\SIL.Windows.Forms.targets')" />
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it.
-	   Other similar extension points exist, see Microsoft.Common.targets.
-  <Target Name="BeforeBuild">
-  </Target>
-  <Target Name="AfterBuild">
-  </Target>
-  -->
 </Project>
\ No newline at end of file
diff --git a/src/Addin.Backup/BackupDialog.cs b/src/Addin.Backup/BackupDialog.cs
index 1429f1431..d19f3023b 100644
--- a/src/Addin.Backup/BackupDialog.cs
+++ b/src/Addin.Backup/BackupDialog.cs
@@ -1,10 +1,9 @@
 using SIL.i18n;
 using SIL.Reporting;
-using SIL.UsbDrive;
 using System;
-using System.Collections.Generic;
 using System.Drawing;
 using System.IO;
+using System.Linq;
 using System.Windows.Forms;
 using WeSay.AddinLib;
 
@@ -24,7 +23,7 @@ public BackupDialog(ProjectInfo projectInfo)
 			_cancelButton.Font = (Font)StringCatalog.LabelFont.Clone();
 		}
 
-		private void DoBackup(IUsbDriveInfo info)
+		private void DoBackup(DriveInfo info)
 		{
 			_checkForUsbKeyTimer.Enabled = false;
 			_noteLabel.Visible = false;
@@ -57,9 +56,9 @@ private void _cancelButton_Click(object sender, EventArgs e)
 			_checkForUsbKeyTimer.Enabled = false;
 		}
 
-		public List<IUsbDriveInfo> GetLogicalUsbDisks()
+		public DriveInfo[] GetLogicalUsbDisks()
 		{
-			return UsbDriveInfo.GetDrives();
+			return DriveInfo.GetDrives().Where(d => d.DriveType == DriveType.Removable).ToArray();
 		}
 
 		private void Dialog_Load(object sender, EventArgs e)
@@ -77,7 +76,7 @@ private void LookForTargetVolume()
 			try
 			{
 				var usbDrives = GetLogicalUsbDisks();
-				if ((usbDrives.Count > 0) && (usbDrives[0].IsReady))
+				if ((usbDrives.Length > 0) && (usbDrives[0].IsReady))
 				{
 					DoBackup(usbDrives[0]);
 				}
diff --git a/src/Addin.Backup/Properties/AssemblyInfo.cs b/src/Addin.Backup/Properties/AssemblyInfo.cs
deleted file mode 100644
index fc98e9123..000000000
--- a/src/Addin.Backup/Properties/AssemblyInfo.cs
+++ /dev/null
@@ -1,41 +0,0 @@
-using Mono.Addins;
-using System.Reflection;
-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("Addin.Backup")]
-[assembly: AssemblyDescription("")]
-[assembly: AssemblyConfiguration("")]
-[assembly: AssemblyCompany("SIL")]
-[assembly: AssemblyProduct("Addin.Backup")]
-[assembly: AssemblyCopyright("Copyright © SIL 2007")]
-[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)]
-
-// The following GUID is for the ID of the typelib if this project is exposed to COM
-
-[assembly: Guid("ad1eca7a-211c-4b64-87ba-5d43887a267c")]
-
-// 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 Revision and Build Numbers
-// by using the '*' as shown below:
-
-[assembly: AssemblyVersion("1.9.0.10")]
-[assembly: AssemblyFileVersion("1.9.0.10")]
-[assembly: Addin]
-[assembly: AddinDependency("WeSay.AddinLib", "1.0")]
\ No newline at end of file
diff --git a/src/Addin.Backup/packages.config b/src/Addin.Backup/packages.config
deleted file mode 100644
index 228f512c4..000000000
--- a/src/Addin.Backup/packages.config
+++ /dev/null
@@ -1,35 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<packages>
-  <package id="Autofac" version="4.1.1" targetFramework="net461" />
-  <package id="DialogAdapters.Gtk2" version="0.1.9" targetFramework="net461" />
-  <package id="Enchant.Net" version="1.4.2" targetFramework="net461" />
-  <package id="icu.net" version="2.7.1" targetFramework="net461" />
-  <package id="Icu4c.Win.Min" version="59.1.7" targetFramework="net461" />
-  <package id="JetBrains.Annotations" version="2021.2.0" targetFramework="net461" />
-  <package id="L10NSharp" version="5.0.0-beta0086" targetFramework="net461" />
-  <package id="Markdig.Signed" version="0.22.0" targetFramework="net461" />
-  <package id="Microsoft.DotNet.PlatformAbstractions" version="2.0.4" targetFramework="net461" />
-  <package id="Microsoft.Extensions.DependencyModel" version="2.0.4" targetFramework="net461" />
-  <package id="Mono.Addins" version="1.3.8" targetFramework="net461" />
-  <package id="NDesk.DBus" version="0.15.0" targetFramework="net461" />
-  <package id="Newtonsoft.Json" version="12.0.3" targetFramework="net461" />
-  <package id="RelaxNG" version="3.2.3" targetFramework="net461" />
-  <package id="SharpZipLib" version="0.86.0" targetFramework="net461" />
-  <package id="SIL.Chorus.LibChorus" version="5.0.0-beta0017" targetFramework="net461" />
-  <package id="SIL.Chorus.Mercurial" version="3.0.3" targetFramework="net461" />
-  <package id="SIL.Core" version="9.0.0-beta0154" targetFramework="net461" />
-  <package id="SIL.Core.Desktop" version="9.0.0-beta0154" targetFramework="net461" />
-  <package id="SIL.Lift" version="9.0.0-beta0154" targetFramework="net461" />
-  <package id="SIL.Windows.Forms" version="9.0.0-beta0154" targetFramework="net461" />
-  <package id="SIL.WritingSystems" version="9.0.0-beta0154" targetFramework="net461" />
-  <package id="Spart" version="1.0.0" targetFramework="net461" />
-  <package id="System.Buffers" version="4.5.1" targetFramework="net461" />
-  <package id="System.IO.FileSystem.AccessControl" version="4.7.0" targetFramework="net461" />
-  <package id="System.Memory" version="4.5.4" targetFramework="net461" />
-  <package id="System.Numerics.Vectors" version="4.5.0" targetFramework="net461" />
-  <package id="System.Runtime.CompilerServices.Unsafe" version="4.5.3" targetFramework="net461" />
-  <package id="System.Security.AccessControl" version="4.7.0" targetFramework="net461" />
-  <package id="System.Security.Principal.Windows" version="4.7.0" targetFramework="net461" />
-  <package id="System.ValueTuple" version="4.5.0" targetFramework="net461" />
-  <package id="TagLibSharp" version="2.2.0" targetFramework="net461" />
-</packages>
\ No newline at end of file
diff --git a/src/Addin.Transform.Tests/Addin.Transform.Tests.csproj b/src/Addin.Transform.Tests/Addin.Transform.Tests.csproj
index 437ea755b..4c71a4a22 100644
--- a/src/Addin.Transform.Tests/Addin.Transform.Tests.csproj
+++ b/src/Addin.Transform.Tests/Addin.Transform.Tests.csproj
@@ -1,260 +1,79 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="12.0">
+<Project Sdk="Microsoft.NET.Sdk">
   <PropertyGroup>
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
-    <ProductVersion>9.0.21022</ProductVersion>
-    <SchemaVersion>2.0</SchemaVersion>
-    <ProjectGuid>{19310CA3-6653-45E0-9EC8-F824629E2AD8}</ProjectGuid>
+    <TargetFramework>net8.0-windows</TargetFramework>
     <OutputType>Library</OutputType>
-    <AppDesignerFolder>Properties</AppDesignerFolder>
-    <RootNamespace>Addin.Transform.Tests</RootNamespace>
-    <AssemblyName>Addin.Transform.Tests</AssemblyName>
     <AppConfig>..\AppForTests.config</AppConfig>
     <StartupObject>
     </StartupObject>
-    <FileUpgradeFlags>
-    </FileUpgradeFlags>
-    <UpgradeBackupLocation>
-    </UpgradeBackupLocation>
-    <OldToolsVersion>3.5</OldToolsVersion>
-    <TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion>
-    <TargetFrameworkProfile />
-    <NuGetPackageImportStamp>
-    </NuGetPackageImportStamp>
+    <GenerateAssemblyInfo>false</GenerateAssemblyInfo>
+    <UseWindowsForms>true</UseWindowsForms>
+    <ImportWindowsDesktopTargets>true</ImportWindowsDesktopTargets>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
-    <DebugSymbols>true</DebugSymbols>
-    <DebugType>full</DebugType>
-    <Optimize>false</Optimize>
     <OutputPath>..\..\output\Debug\</OutputPath>
-    <DefineConstants>DEBUG;TRACE</DefineConstants>
-    <ErrorReport>prompt</ErrorReport>
-    <WarningLevel>4</WarningLevel>
     <OutputType>Library</OutputType>
-    <AssemblyName>Addin.Transform.Tests</AssemblyName>
-    <RootNamespace>Addin.Transform.Tests</RootNamespace>
-    <AllowUnsafeBlocks>false</AllowUnsafeBlocks>
     <CheckForOverflowUnderflow>true</CheckForOverflowUnderflow>
-    <PlatformTarget>x86</PlatformTarget>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
-    <DebugType>pdbonly</DebugType>
-    <Optimize>true</Optimize>
     <OutputPath>..\..\output\Release\</OutputPath>
-    <DefineConstants>TRACE</DefineConstants>
-    <ErrorReport>prompt</ErrorReport>
-    <WarningLevel>4</WarningLevel>
     <OutputType>Library</OutputType>
-    <AssemblyName>Addin.Transform.Tests</AssemblyName>
     <DebugSymbols>true</DebugSymbols>
-    <RootNamespace>Addin.Transform.Tests</RootNamespace>
-    <AllowUnsafeBlocks>false</AllowUnsafeBlocks>
     <CheckForOverflowUnderflow>true</CheckForOverflowUnderflow>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
-    <DebugSymbols>true</DebugSymbols>
     <OutputPath>..\..\output\Debug\</OutputPath>
-    <DefineConstants>DEBUG;TRACE</DefineConstants>
     <CheckForOverflowUnderflow>true</CheckForOverflowUnderflow>
-    <DebugType>full</DebugType>
-    <PlatformTarget>x86</PlatformTarget>
-    <ErrorReport>prompt</ErrorReport>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
     <DebugSymbols>true</DebugSymbols>
     <OutputPath>..\..\output\Release\</OutputPath>
-    <DefineConstants>TRACE</DefineConstants>
     <CheckForOverflowUnderflow>true</CheckForOverflowUnderflow>
-    <Optimize>true</Optimize>
-    <DebugType>pdbonly</DebugType>
-    <PlatformTarget>x86</PlatformTarget>
-    <ErrorReport>prompt</ErrorReport>
   </PropertyGroup>
   <PropertyGroup>
     <AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
   </PropertyGroup>
   <ItemGroup>
-    <Reference Include="Autofac, Version=4.1.1.0, Culture=neutral, PublicKeyToken=17863af14b0044da, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\Autofac.4.1.1\lib\net45\Autofac.dll</HintPath>
-    </Reference>
-    <Reference Include="Commons.Xml.Relaxng, Version=4.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\RelaxNG.3.2.3\lib\net40\Commons.Xml.Relaxng.dll</HintPath>
-    </Reference>
-    <Reference Include="DialogAdapters, Version=0.1.9.0, Culture=neutral, PublicKeyToken=7dc842182b0626dc, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\DialogAdapters.Gtk2.0.1.9\lib\net461\DialogAdapters.dll</HintPath>
-    </Reference>
-    <Reference Include="Enchant.Net, Version=1.4.0.0, Culture=neutral, PublicKeyToken=ae135aeb3d479ab9, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\Enchant.Net.1.4.2\lib\net461\Enchant.Net.dll</HintPath>
-    </Reference>
-    <Reference Include="ICSharpCode.SharpZipLib, Version=0.86.0.518, Culture=neutral, PublicKeyToken=1b03e6acf1164f73, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\SharpZipLib.0.86.0\lib\20\ICSharpCode.SharpZipLib.dll</HintPath>
-    </Reference>
-    <Reference Include="icu.net, Version=2.7.0.0, Culture=neutral, PublicKeyToken=416fdd914afa6b66, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\icu.net.2.7.1\lib\net451\icu.net.dll</HintPath>
-    </Reference>
-    <Reference Include="JetBrains.Annotations, Version=2021.2.0.0, Culture=neutral, PublicKeyToken=1010a0d8d6380325, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\JetBrains.Annotations.2021.2.0\lib\net20\JetBrains.Annotations.dll</HintPath>
-    </Reference>
-    <Reference Include="L10NSharp, Version=5.0.0.0, Culture=neutral, PublicKeyToken=fd0b3e309a5b7c28, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\L10NSharp.5.0.0-beta0086\lib\net461\L10NSharp.dll</HintPath>
-    </Reference>
-    <Reference Include="Markdig.Signed, Version=0.22.0.0, Culture=neutral, PublicKeyToken=870da25a133885f8, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\Markdig.Signed.0.22.0\lib\net452\Markdig.Signed.dll</HintPath>
-    </Reference>
-    <Reference Include="Microsoft.DotNet.PlatformAbstractions, Version=2.0.4.0, Culture=neutral, PublicKeyToken=adb9793829ddae60, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\Microsoft.DotNet.PlatformAbstractions.2.0.4\lib\net45\Microsoft.DotNet.PlatformAbstractions.dll</HintPath>
-    </Reference>
-    <Reference Include="Microsoft.Extensions.DependencyModel, Version=2.0.4.0, Culture=neutral, PublicKeyToken=adb9793829ddae60, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\Microsoft.Extensions.DependencyModel.2.0.4\lib\net451\Microsoft.Extensions.DependencyModel.dll</HintPath>
-    </Reference>
-    <Reference Include="NDesk.DBus, Version=1.0.0.0, Culture=neutral, PublicKeyToken=f6716e4f9b2ed099, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\NDesk.DBus.0.15.0\lib\NDesk.DBus.dll</HintPath>
-    </Reference>
-    <Reference Include="Newtonsoft.Json, Version=12.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\Newtonsoft.Json.12.0.3\lib\net45\Newtonsoft.Json.dll</HintPath>
-    </Reference>
-    <Reference Include="SIL.Core, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\SIL.Core.9.0.0-beta0154\lib\net461\SIL.Core.dll</HintPath>
-    </Reference>
-    <Reference Include="SIL.Core.Desktop, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\SIL.Core.Desktop.9.0.0-beta0154\lib\net461\SIL.Core.Desktop.dll</HintPath>
-    </Reference>
-    <Reference Include="SIL.DictionaryServices, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\SIL.DictionaryServices.9.0.0-beta0154\lib\net461\SIL.DictionaryServices.dll</HintPath>
-    </Reference>
-    <Reference Include="SIL.Lift, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\SIL.Lift.9.0.0-beta0154\lib\net461\SIL.Lift.dll</HintPath>
-    </Reference>
-    <Reference Include="SIL.TestUtilities, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
-      <SpecificVersion>False</SpecificVersion>
-      <HintPath>..\..\packages\SIL.TestUtilities.9.0.0-beta0154\lib\net461\SIL.TestUtilities.dll</HintPath>
-    </Reference>
-    <Reference Include="SIL.Windows.Forms, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\SIL.Windows.Forms.9.0.0-beta0154\lib\net461\SIL.Windows.Forms.dll</HintPath>
-    </Reference>
-    <Reference Include="SIL.WritingSystems, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\SIL.WritingSystems.9.0.0-beta0154\lib\net461\SIL.WritingSystems.dll</HintPath>
-    </Reference>
-    <Reference Include="Spart, Version=1.0.0.0, Culture=neutral, PublicKeyToken=14d24e064e474331, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\Spart.1.0.0\lib\net461\Spart.dll</HintPath>
-    </Reference>
-    <Reference Include="System" />
-    <Reference Include="System.Buffers, Version=4.0.3.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\System.Buffers.4.5.1\lib\net461\System.Buffers.dll</HintPath>
-    </Reference>
-    <Reference Include="System.Configuration" />
-    <Reference Include="System.Core">
-      <RequiredTargetFramework>3.5</RequiredTargetFramework>
-    </Reference>
-    <Reference Include="System.Data" />
-    <Reference Include="System.Deployment" />
-    <Reference Include="System.Drawing" />
-    <Reference Include="System.IO.FileSystem.AccessControl, Version=4.0.5.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\System.IO.FileSystem.AccessControl.4.7.0\lib\net461\System.IO.FileSystem.AccessControl.dll</HintPath>
-    </Reference>
-    <Reference Include="System.Management" />
-    <Reference Include="System.Memory, Version=4.0.1.1, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\System.Memory.4.5.4\lib\net461\System.Memory.dll</HintPath>
-    </Reference>
-    <Reference Include="System.Numerics" />
-    <Reference Include="System.Numerics.Vectors, Version=4.1.4.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\System.Numerics.Vectors.4.5.0\lib\net46\System.Numerics.Vectors.dll</HintPath>
-    </Reference>
-    <Reference Include="System.Runtime.CompilerServices.Unsafe, Version=4.0.4.1, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\System.Runtime.CompilerServices.Unsafe.4.5.3\lib\net461\System.Runtime.CompilerServices.Unsafe.dll</HintPath>
-    </Reference>
-    <Reference Include="System.Security" />
-    <Reference Include="System.Security.AccessControl, Version=4.1.3.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\System.Security.AccessControl.4.7.0\lib\net461\System.Security.AccessControl.dll</HintPath>
-    </Reference>
-    <Reference Include="System.Security.Principal.Windows, Version=4.1.3.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\System.Security.Principal.Windows.4.7.0\lib\net461\System.Security.Principal.Windows.dll</HintPath>
-    </Reference>
-    <Reference Include="System.ServiceModel" />
-    <Reference Include="System.ValueTuple, Version=4.0.3.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\System.ValueTuple.4.5.0\lib\net461\System.ValueTuple.dll</HintPath>
-    </Reference>
-    <Reference Include="System.Web" />
-    <Reference Include="System.Windows.Forms" />
-    <Reference Include="System.Xml" />
-    <Reference Include="nunit.framework">
-      <HintPath>..\..\packages\NUnit.3.13.1\lib\net45\nunit.framework.dll</HintPath>
-    </Reference>
-    <Reference Include="TagLibSharp, Version=2.2.0.0, Culture=neutral, PublicKeyToken=db62eba44689b5b0, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\TagLibSharp.2.2.0\lib\net45\TagLibSharp.dll</HintPath>
-    </Reference>
-  </ItemGroup>
-  <ItemGroup>
-    <Compile Include="FlexCompatibleHtmlWriterTests.cs" />
-    <Compile Include="HtmlTransformerTests.cs" />
-    <Compile Include="MultigraphParserTests.cs" />
-    <Compile Include="PLiftMakerTests.cs" />
-    <Compile Include="Properties\AssemblyInfo.cs" />
-    <Compile Include="SfmTransformerTests.cs" />
-    <Compile Include="OdfTransformerTests.cs" />
-    <Compile Include="PdfMakerTests.cs" />
-    <Compile Include="LibreOfficePdfTests.cs" />
+    <ProjectReference Include="..\Addin.Transform\Addin.Transform.csproj" />
+    <ProjectReference Include="..\LexicalModel.Tests\LexicalModel.Tests.csproj" />
+    <ProjectReference Include="..\LexicalModel\LexicalModel.csproj" />
+    <ProjectReference Include="..\WeSay.AddinLib\WeSay.AddinLib.csproj" />
+    <ProjectReference Include="..\WeSay.Data\WeSay.Data.csproj" />
+    <ProjectReference Include="..\WeSay.Foundation\WeSay.Foundation.csproj" />
+    <ProjectReference Include="..\WeSay.Project.Tests\WeSay.Project.Tests.csproj" />
+    <ProjectReference Include="..\WeSay.Project\WeSay.Project.csproj" />
+    <ProjectReference Include="..\WeSay.TestUtilities\WeSay.TestUtilities.csproj" />
   </ItemGroup>
   <ItemGroup>
-    <ProjectReference Include="..\Addin.Transform\Addin.Transform.csproj">
-      <Project>{9D196637-2D50-4604-A310-378083CEA809}</Project>
-      <Name>Addin.Transform</Name>
-    </ProjectReference>
-    <ProjectReference Include="..\LexicalModel.Tests\LexicalModel.Tests.csproj">
-      <Project>{123D695C-0D5D-46E5-893F-39EC4E0B01B8}</Project>
-      <Name>LexicalModel.Tests</Name>
-    </ProjectReference>
-    <ProjectReference Include="..\LexicalModel\LexicalModel.csproj">
-      <Project>{5F61C809-B6C0-4567-9603-B2198E1AD038}</Project>
-      <Name>LexicalModel</Name>
-    </ProjectReference>
-    <ProjectReference Include="..\WeSay.AddinLib\WeSay.AddinLib.csproj">
-      <Project>{E651E83C-94DD-4D6D-ABA2-C9FDA34FBA55}</Project>
-      <Name>WeSay.AddinLib</Name>
-    </ProjectReference>
-    <ProjectReference Include="..\WeSay.Data\WeSay.Data.csproj">
-      <Project>{600D0FD4-D189-41A0-9BC5-FC79AD2CF1CD}</Project>
-      <Name>WeSay.Data</Name>
-    </ProjectReference>
-    <ProjectReference Include="..\WeSay.Foundation\WeSay.Foundation.csproj">
-      <Project>{F12EB680-0990-4900-B77E-0FBF2E28A815}</Project>
-      <Name>WeSay.Foundation</Name>
-    </ProjectReference>
-    <ProjectReference Include="..\WeSay.Project.Tests\WeSay.Project.Tests.csproj">
-      <Project>{F644C902-A952-4797-9E2D-19D6051DD032}</Project>
-      <Name>WeSay.Project.Tests</Name>
-    </ProjectReference>
-    <ProjectReference Include="..\WeSay.Project\WeSay.Project.csproj">
-      <Project>{5CFD0BB3-5B2A-4911-B220-9C2286151BF0}</Project>
-      <Name>WeSay.Project</Name>
-    </ProjectReference>
-    <ProjectReference Include="..\WeSay.TestUtilities\WeSay.TestUtilities.csproj">
-      <Project>{FEC3014D-0067-4D59-A838-3B046EC3C352}</Project>
-      <Name>WeSay.TestUtilities</Name>
-    </ProjectReference>
+    <PackageReference Include="System.Management" Version="8.0.0" />
+    <PackageReference Include="Microsoft.AspNetCore.SystemWebAdapters" Version="1.3.0" />
+    <PackageReference Include="Microsoft.Extensions.DependencyModel" Version="8.0.0" />
+    <PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
+    <PackageReference Include="System.Runtime.CompilerServices.Unsafe" Version="6.0.0" />
+    <PackageReference Include="System.Security.AccessControl" Version="6.0.0" />
+    <PackageReference Include="System.Configuration.ConfigurationManager" Version="8.0.0" />
+    <PackageReference Include="System.ServiceModel.Primitives" Version="8.0.0" />
+    <PackageReference Include="System.ServiceModel.Http" Version="8.0.0" />
+    <PackageReference Include="System.ServiceModel.Duplex" Version="6.0.0" />
+    <PackageReference Include="System.ServiceModel.NetTcp" Version="8.0.0" />
+    <PackageReference Include="System.ServiceModel.Security" Version="6.0.0" />
+    <PackageReference Include="System.ServiceModel.Federation" Version="8.0.0" />
   </ItemGroup>
-  <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it.
-	   Other similar extension points exist, see Microsoft.Common.targets.
-  <Target Name="BeforeBuild">
-  </Target>
-  <Target Name="AfterBuild">
-  </Target>
-  -->
   <ItemGroup>
-    <None Include="packages.config" />
+    <Service Include="{82A7F48D-3B50-4B1E-B82E-3ADA8210C358}" />
   </ItemGroup>
   <ItemGroup>
-    <Service Include="{82A7F48D-3B50-4B1E-B82E-3ADA8210C358}" />
+    <PackageReference Include="Autofac" Version="4.9.4" />
+    <PackageReference Include="icu.net" Version="2.8.1" />
+    <PackageReference Include="JetBrains.Annotations" Version="2021.2.0" />
+    <PackageReference Include="Microsoft.DotNet.PlatformAbstractions" Version="2.0.4" />
+    <PackageReference Include="NDesk.DBus" Version="0.15.0" />
+    <PackageReference Include="NUnit" Version="3.13.3" />
+    <PackageReference Include="RelaxNG" Version="3.2.3" />
+    <PackageReference Include="SharpZipLib" Version="1.4.2" />
+    <PackageReference Include="SIL.Core" Version="13.0.1" />
+    <PackageReference Include="SIL.Core.Desktop" Version="13.0.1" />
+    <PackageReference Include="SIL.Lift" Version="13.0.1" />
+    <PackageReference Include="SIL.WritingSystems" Version="13.0.1" />
+    <PackageReference Include="Spart" Version="1.0.0" />
   </ItemGroup>
-  <Import Project="..\..\packages\NDesk.DBus.0.15.0\build\NDesk.DBus.targets" Condition="Exists('..\..\packages\NDesk.DBus.0.15.0\build\NDesk.DBus.targets')" />
-  <Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
-    <PropertyGroup>
-      <ErrorText>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}.</ErrorText>
-    </PropertyGroup>
-    <Error Condition="!Exists('..\..\packages\NDesk.DBus.0.15.0\build\NDesk.DBus.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\NDesk.DBus.0.15.0\build\NDesk.DBus.targets'))" />
-    <Error Condition="!Exists('..\..\packages\SIL.Windows.Forms.9.0.0-beta0154\build\SIL.Windows.Forms.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\SIL.Windows.Forms.9.0.0-beta0154\build\SIL.Windows.Forms.targets'))" />
-  </Target>
-  <Import Project="..\..\packages\SIL.Windows.Forms.9.0.0-beta0154\build\SIL.Windows.Forms.targets" Condition="Exists('..\..\packages\SIL.Windows.Forms.9.0.0-beta0154\build\SIL.Windows.Forms.targets')" />
 </Project>
\ No newline at end of file
diff --git a/src/Addin.Transform.Tests/Properties/AssemblyInfo.cs b/src/Addin.Transform.Tests/Properties/AssemblyInfo.cs
deleted file mode 100644
index cd240e859..000000000
--- a/src/Addin.Transform.Tests/Properties/AssemblyInfo.cs
+++ /dev/null
@@ -1,36 +0,0 @@
-using System.Reflection;
-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("Addin.Transform.Tests")]
-[assembly: AssemblyDescription("")]
-[assembly: AssemblyConfiguration("")]
-[assembly: AssemblyCompany("SIL")]
-[assembly: AssemblyProduct("Addin.Transform.Tests")]
-[assembly: AssemblyCopyright("Copyright © SIL 2007")]
-[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)]
-
-// The following GUID is for the ID of the typelib if this project is exposed to COM
-
-[assembly: Guid("7351069e-f724-4f9b-858b-908778e28ab4")]
-
-// Version information for an assembly consists of the following four values:
-//
-//      Major Version
-//      Minor Version
-//      Build Number
-//      Revision
-//
-
-[assembly: AssemblyVersion("1.9.0.10")]
-[assembly: AssemblyFileVersion("1.9.0.10")]
\ No newline at end of file
diff --git a/src/Addin.Transform.Tests/packages.config b/src/Addin.Transform.Tests/packages.config
deleted file mode 100644
index 9b71df9c6..000000000
--- a/src/Addin.Transform.Tests/packages.config
+++ /dev/null
@@ -1,33 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<packages>
-  <package id="Autofac" version="4.1.1" targetFramework="net461" />
-  <package id="DialogAdapters.Gtk2" version="0.1.9" targetFramework="net461" />
-  <package id="Enchant.Net" version="1.4.2" targetFramework="net461" />
-  <package id="icu.net" version="2.7.1" targetFramework="net461" />
-  <package id="JetBrains.Annotations" version="2021.2.0" targetFramework="net461" />
-  <package id="L10NSharp" version="5.0.0-beta0086" targetFramework="net461" />
-  <package id="Markdig.Signed" version="0.22.0" targetFramework="net461" />
-  <package id="Microsoft.DotNet.PlatformAbstractions" version="2.0.4" targetFramework="net461" />
-  <package id="Microsoft.Extensions.DependencyModel" version="2.0.4" targetFramework="net461" />
-  <package id="NDesk.DBus" version="0.15.0" targetFramework="net461" />
-  <package id="Newtonsoft.Json" version="12.0.3" targetFramework="net461" />
-  <package id="NUnit" version="3.13.1" targetFramework="net461" />
-  <package id="RelaxNG" version="3.2.3" targetFramework="net461" />
-  <package id="SharpZipLib" version="0.86.0" targetFramework="20" />
-  <package id="SIL.Core" version="9.0.0-beta0154" targetFramework="net461" />
-  <package id="SIL.Core.Desktop" version="9.0.0-beta0154" targetFramework="net461" />
-  <package id="SIL.DictionaryServices" version="9.0.0-beta0154" targetFramework="net461" />
-  <package id="SIL.Lift" version="9.0.0-beta0154" targetFramework="net461" />
-  <package id="SIL.Windows.Forms" version="9.0.0-beta0154" targetFramework="net461" />
-  <package id="SIL.WritingSystems" version="9.0.0-beta0154" targetFramework="net461" />
-  <package id="Spart" version="1.0.0" targetFramework="net461" />
-  <package id="System.Buffers" version="4.5.1" targetFramework="net461" />
-  <package id="System.IO.FileSystem.AccessControl" version="4.7.0" targetFramework="net461" />
-  <package id="System.Memory" version="4.5.4" targetFramework="net461" />
-  <package id="System.Numerics.Vectors" version="4.5.0" targetFramework="net461" />
-  <package id="System.Runtime.CompilerServices.Unsafe" version="4.5.3" targetFramework="net461" />
-  <package id="System.Security.AccessControl" version="4.7.0" targetFramework="net461" />
-  <package id="System.Security.Principal.Windows" version="4.7.0" targetFramework="net461" />
-  <package id="System.ValueTuple" version="4.5.0" targetFramework="net461" />
-  <package id="TagLibSharp" version="2.2.0" targetFramework="net461" />
-</packages>
\ No newline at end of file
diff --git a/src/Addin.Transform/Addin.Transform.csproj b/src/Addin.Transform/Addin.Transform.csproj
index 1df6cf3c4..a5d35cf69 100755
--- a/src/Addin.Transform/Addin.Transform.csproj
+++ b/src/Addin.Transform/Addin.Transform.csproj
@@ -1,22 +1,7 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="12.0">
+<Project Sdk="Microsoft.NET.Sdk">
   <PropertyGroup>
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
-    <ProductVersion>9.0.21022</ProductVersion>
-    <SchemaVersion>2.0</SchemaVersion>
-    <ProjectGuid>{9D196637-2D50-4604-A310-378083CEA809}</ProjectGuid>
+    <TargetFramework>net8.0-windows</TargetFramework>
     <OutputType>Library</OutputType>
-    <AppDesignerFolder>Properties</AppDesignerFolder>
-    <RootNamespace>Addin.Transform</RootNamespace>
-    <AssemblyName>Addin.Transform</AssemblyName>
-    <FileUpgradeFlags>
-    </FileUpgradeFlags>
-    <UpgradeBackupLocation>
-    </UpgradeBackupLocation>
-    <OldToolsVersion>3.5</OldToolsVersion>
-    <TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion>
-    <TargetFrameworkProfile />
     <PublishUrl>publish\</PublishUrl>
     <Install>true</Install>
     <InstallFrom>Disk</InstallFrom>
@@ -32,324 +17,94 @@
     <IsWebBootstrapper>false</IsWebBootstrapper>
     <UseApplicationTrust>false</UseApplicationTrust>
     <BootstrapperEnabled>true</BootstrapperEnabled>
-    <NuGetPackageImportStamp>
-    </NuGetPackageImportStamp>
+    <GenerateAssemblyInfo>false</GenerateAssemblyInfo>
+    <UseWindowsForms>true</UseWindowsForms>
+    <ImportWindowsDesktopTargets>true</ImportWindowsDesktopTargets>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
-    <DebugSymbols>true</DebugSymbols>
-    <DebugType>full</DebugType>
-    <Optimize>false</Optimize>
     <OutputPath>..\..\output\Debug\</OutputPath>
-    <DefineConstants>DEBUG;TRACE</DefineConstants>
-    <ErrorReport>prompt</ErrorReport>
-    <WarningLevel>4</WarningLevel>
     <OutputType>Library</OutputType>
-    <RootNamespace>Addin.Transform</RootNamespace>
     <CheckForOverflowUnderflow>true</CheckForOverflowUnderflow>
     <Commandlineparameters>/usr/share/wesay/WeSay.ConfigTool.exe /home/keith/WeSay/krstest/krstest.lift</Commandlineparameters>
     <Externalconsole>true</Externalconsole>
     <PlatformTarget>x86</PlatformTarget>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
-    <DebugType>pdbonly</DebugType>
-    <Optimize>true</Optimize>
     <OutputPath>..\..\output\Release\</OutputPath>
-    <DefineConstants>TRACE</DefineConstants>
-    <ErrorReport>prompt</ErrorReport>
-    <WarningLevel>4</WarningLevel>
     <OutputType>Library</OutputType>
     <DebugSymbols>true</DebugSymbols>
-    <RootNamespace>Addin.Transform</RootNamespace>
     <CheckForOverflowUnderflow>true</CheckForOverflowUnderflow>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
-    <DebugSymbols>true</DebugSymbols>
     <OutputPath>..\..\output\Debug\</OutputPath>
-    <DefineConstants>DEBUG;TRACE</DefineConstants>
     <CheckForOverflowUnderflow>true</CheckForOverflowUnderflow>
-    <DebugType>full</DebugType>
-    <PlatformTarget>x86</PlatformTarget>
-    <ErrorReport>prompt</ErrorReport>
-    <WarningLevel>4</WarningLevel>
-    <Optimize>false</Optimize>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
     <DebugSymbols>true</DebugSymbols>
     <OutputPath>..\..\output\Release\</OutputPath>
-    <DefineConstants>TRACE</DefineConstants>
     <CheckForOverflowUnderflow>true</CheckForOverflowUnderflow>
-    <Optimize>true</Optimize>
-    <DebugType>pdbonly</DebugType>
-    <PlatformTarget>x86</PlatformTarget>
-    <ErrorReport>prompt</ErrorReport>
-    <WarningLevel>4</WarningLevel>
   </PropertyGroup>
   <ItemGroup>
-    <Reference Include="Commons.Xml.Relaxng, Version=4.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\RelaxNG.3.2.3\lib\net40\Commons.Xml.Relaxng.dll</HintPath>
-    </Reference>
-    <Reference Include="DialogAdapters, Version=0.1.9.0, Culture=neutral, PublicKeyToken=7dc842182b0626dc, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\DialogAdapters.Gtk2.0.1.9\lib\net461\DialogAdapters.dll</HintPath>
-    </Reference>
-    <Reference Include="Enchant.Net, Version=1.4.0.0, Culture=neutral, PublicKeyToken=ae135aeb3d479ab9, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\Enchant.Net.1.4.2\lib\net461\Enchant.Net.dll</HintPath>
-    </Reference>
-    <Reference Include="icu.net, Version=2.7.0.0, Culture=neutral, PublicKeyToken=416fdd914afa6b66, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\icu.net.2.7.1\lib\net451\icu.net.dll</HintPath>
-    </Reference>
-    <Reference Include="JetBrains.Annotations, Version=2021.2.0.0, Culture=neutral, PublicKeyToken=1010a0d8d6380325, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\JetBrains.Annotations.2021.2.0\lib\net20\JetBrains.Annotations.dll</HintPath>
-    </Reference>
-    <Reference Include="L10NSharp, Version=5.0.0.0, Culture=neutral, PublicKeyToken=fd0b3e309a5b7c28, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\L10NSharp.5.0.0-beta0086\lib\net461\L10NSharp.dll</HintPath>
-    </Reference>
-    <Reference Include="Markdig.Signed, Version=0.22.0.0, Culture=neutral, PublicKeyToken=870da25a133885f8, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\Markdig.Signed.0.22.0\lib\net452\Markdig.Signed.dll</HintPath>
-    </Reference>
-    <Reference Include="Microsoft.DotNet.PlatformAbstractions, Version=2.0.4.0, Culture=neutral, PublicKeyToken=adb9793829ddae60, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\Microsoft.DotNet.PlatformAbstractions.2.0.4\lib\net45\Microsoft.DotNet.PlatformAbstractions.dll</HintPath>
-    </Reference>
-    <Reference Include="Microsoft.Extensions.DependencyModel, Version=2.0.4.0, Culture=neutral, PublicKeyToken=adb9793829ddae60, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\Microsoft.Extensions.DependencyModel.2.0.4\lib\net451\Microsoft.Extensions.DependencyModel.dll</HintPath>
-    </Reference>
-    <None Include="..\..\lib\common\Enchant.Net.dll.config">
-      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
-    </None>
-    <Reference Include="Mono.Addins, Version=1.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\Mono.Addins.1.3.8\lib\net45\Mono.Addins.dll</HintPath>
-    </Reference>
-    <Reference Include="NDesk.DBus, Version=1.0.0.0, Culture=neutral, PublicKeyToken=f6716e4f9b2ed099, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\NDesk.DBus.0.15.0\lib\NDesk.DBus.dll</HintPath>
-    </Reference>
-    <Reference Include="Newtonsoft.Json, Version=12.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
-      <SpecificVersion>False</SpecificVersion>
-      <HintPath>..\..\packages\Newtonsoft.Json.12.0.3\lib\net45\Newtonsoft.Json.dll</HintPath>
-    </Reference>
-    <Reference Include="SIL.Core, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\SIL.Core.9.0.0-beta0154\lib\net461\SIL.Core.dll</HintPath>
-    </Reference>
-    <Reference Include="SIL.Core.Desktop, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\SIL.Core.Desktop.9.0.0-beta0154\lib\net461\SIL.Core.Desktop.dll</HintPath>
-    </Reference>
-    <Reference Include="SIL.DictionaryServices, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\SIL.DictionaryServices.9.0.0-beta0154\lib\net461\SIL.DictionaryServices.dll</HintPath>
-    </Reference>
-    <Reference Include="SIL.Lexicon, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\SIL.Lexicon.9.0.0-beta0154\lib\net461\SIL.Lexicon.dll</HintPath>
-    </Reference>
-    <Reference Include="SIL.Lift, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\SIL.Lift.9.0.0-beta0154\lib\net461\SIL.Lift.dll</HintPath>
-    </Reference>
-    <Reference Include="SIL.Windows.Forms, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\SIL.Windows.Forms.9.0.0-beta0154\lib\net461\SIL.Windows.Forms.dll</HintPath>
-    </Reference>
-    <Reference Include="SIL.WritingSystems, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\SIL.WritingSystems.9.0.0-beta0154\lib\net461\SIL.WritingSystems.dll</HintPath>
-    </Reference>
-    <Reference Include="Spart, Version=1.0.0.0, Culture=neutral, PublicKeyToken=14d24e064e474331, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\Spart.1.0.0\lib\net461\Spart.dll</HintPath>
-    </Reference>
-    <Reference Include="System" />
-    <Reference Include="System.Buffers, Version=4.0.3.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\System.Buffers.4.5.1\lib\net461\System.Buffers.dll</HintPath>
-    </Reference>
-    <Reference Include="System.Configuration" />
-    <Reference Include="System.Core">
-      <RequiredTargetFramework>3.5</RequiredTargetFramework>
-    </Reference>
-    <Reference Include="System.Data" />
-    <Reference Include="System.Drawing" />
-    <Reference Include="System.IO.FileSystem.AccessControl, Version=4.0.5.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\System.IO.FileSystem.AccessControl.4.7.0\lib\net461\System.IO.FileSystem.AccessControl.dll</HintPath>
-    </Reference>
-    <Reference Include="System.Management" />
-    <Reference Include="System.Memory, Version=4.0.1.1, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\System.Memory.4.5.4\lib\net461\System.Memory.dll</HintPath>
-    </Reference>
-    <Reference Include="System.Numerics" />
-    <Reference Include="System.Numerics.Vectors, Version=4.1.4.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\System.Numerics.Vectors.4.5.0\lib\net46\System.Numerics.Vectors.dll</HintPath>
-    </Reference>
-    <Reference Include="System.Runtime.CompilerServices.Unsafe, Version=4.0.4.1, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\System.Runtime.CompilerServices.Unsafe.4.5.3\lib\net461\System.Runtime.CompilerServices.Unsafe.dll</HintPath>
-    </Reference>
-    <Reference Include="System.Security" />
-    <Reference Include="System.Security.AccessControl, Version=4.1.3.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\System.Security.AccessControl.4.7.0\lib\net461\System.Security.AccessControl.dll</HintPath>
-    </Reference>
-    <Reference Include="System.Security.Principal.Windows, Version=4.1.3.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\System.Security.Principal.Windows.4.7.0\lib\net461\System.Security.Principal.Windows.dll</HintPath>
-    </Reference>
-    <Reference Include="System.ServiceModel" />
-    <Reference Include="System.ValueTuple, Version=4.0.3.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\System.ValueTuple.4.5.0\lib\net461\System.ValueTuple.dll</HintPath>
-    </Reference>
-    <Reference Include="System.Web" />
-    <Reference Include="System.Windows.Forms" />
-    <Reference Include="System.Xml" />
-    <Reference Include="ICSharpCode.SharpZipLib, Version=0.86.0.518, Culture=neutral, PublicKeyToken=1b03e6acf1164f73">
-      <HintPath>..\..\packages\SharpZipLib.0.86.0\lib\20\ICSharpCode.SharpZipLib.dll</HintPath>
-    </Reference>
-    <Reference Include="TagLibSharp, Version=2.2.0.0, Culture=neutral, PublicKeyToken=db62eba44689b5b0, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\TagLibSharp.2.2.0\lib\net45\TagLibSharp.dll</HintPath>
-    </Reference>
-  </ItemGroup>
-  <ItemGroup>
-    <Compile Include="LameProgressDialog.cs">
-      <SubType>Form</SubType>
-    </Compile>
-    <Compile Include="LameProgressDialog.Designer.cs">
-      <DependentUpon>LameProgressDialog.cs</DependentUpon>
-    </Compile>
-    <Compile Include="PdfDictionary\AboutMakePdfDictionary.cs">
-      <SubType>Form</SubType>
-    </Compile>
-    <Compile Include="PdfDictionary\AboutMakePdfDictionary.Designer.cs">
-      <DependentUpon>AboutMakePdfDictionary.cs</DependentUpon>
-    </Compile>
-    <Compile Include="PdfDictionary\FLExCompatibleXhtmlWriter.cs" />
-    <Compile Include="LexiquePro\AboutLexiquePro.cs">
-      <SubType>Form</SubType>
-    </Compile>
-    <Compile Include="LexiquePro\AboutLexiquePro.Designer.cs">
-      <DependentUpon>AboutLexiquePro.cs</DependentUpon>
-    </Compile>
-    <Compile Include="LexiquePro\LexiqueProSender.cs" />
-    <Compile Include="PdfDictionary\MultigraphParser.cs" />
-    <Compile Include="PdfDictionary\PdfMaker.cs" />
-    <Compile Include="HtmlInWord.cs" />
-    <Compile Include="HtmlTransformer.cs" />
-    <Compile Include="PLiftMaker.cs" />
-    <Compile Include="PdfDictionary\PrinceXmlWrapper.cs" />
-    <Compile Include="PdfDictionary\Prince.cs" />
-    <Compile Include="Properties\AssemblyInfo.cs" />
-    <Compile Include="Resources.Designer.cs">
-      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
-      <AutoGen>True</AutoGen>
-      <DesignTime>True</DesignTime>
-      <DependentUpon>Resources.resx</DependentUpon>
-    </Compile>
-    <Compile Include="SFMChangesDialog.cs">
-      <SubType>Form</SubType>
-    </Compile>
-    <Compile Include="SFMChangesDialog.Designer.cs">
-      <DependentUpon>SFMChangesDialog.cs</DependentUpon>
-    </Compile>
-    <Compile Include="SfmTransformer.cs" />
-    <Compile Include="LiftTransformer.cs" />
-    <Compile Include="SfmTransformSettings.cs" />
-    <Compile Include="OpenOffice\OpenOfficeAddin.cs" />
-    <Compile Include="Xhtml\XHtml.cs" />
-    <Compile Include="PdfDictionary\LibreOfficePdf.cs" />
+    <ProjectReference Include="..\LexicalModel\LexicalModel.csproj" />
+    <ProjectReference Include="..\WeSay.AddinLib\WeSay.AddinLib.csproj" />
+    <ProjectReference Include="..\WeSay.Data\WeSay.Data.csproj" />
+    <ProjectReference Include="..\WeSay.Foundation\WeSay.Foundation.csproj" />
+    <ProjectReference Include="..\WeSay.Project\WeSay.Project.csproj" />
   </ItemGroup>
   <ItemGroup>
-    <ProjectReference Include="..\LexicalModel\LexicalModel.csproj">
-      <Project>{5F61C809-B6C0-4567-9603-B2198E1AD038}</Project>
-      <Name>LexicalModel</Name>
-    </ProjectReference>
-    <ProjectReference Include="..\WeSay.AddinLib\WeSay.AddinLib.csproj">
-      <Project>{E651E83C-94DD-4D6D-ABA2-C9FDA34FBA55}</Project>
-      <Name>WeSay.AddinLib</Name>
-    </ProjectReference>
-    <ProjectReference Include="..\WeSay.Data\WeSay.Data.csproj">
-      <Project>{600D0FD4-D189-41A0-9BC5-FC79AD2CF1CD}</Project>
-      <Name>WeSay.Data</Name>
-    </ProjectReference>
-    <ProjectReference Include="..\WeSay.Foundation\WeSay.Foundation.csproj">
-      <Project>{F12EB680-0990-4900-B77E-0FBF2E28A815}</Project>
-      <Name>WeSay.Foundation</Name>
-    </ProjectReference>
-    <ProjectReference Include="..\WeSay.Project\WeSay.Project.csproj">
-      <Project>{5CFD0BB3-5B2A-4911-B220-9C2286151BF0}</Project>
-      <Name>WeSay.Project</Name>
-    </ProjectReference>
-  </ItemGroup>
-  <ItemGroup>
-    <EmbeddedResource Include="Resources.resx">
-      <SubType>Designer</SubType>
-      <Generator>ResXFileCodeGenerator</Generator>
-      <LastGenOutput>Resources.Designer.cs</LastGenOutput>
-    </EmbeddedResource>
-    <EmbeddedResource Include="SFMChangesDialog.resx">
-      <DependentUpon>SFMChangesDialog.cs</DependentUpon>
-      <SubType>Designer</SubType>
-    </EmbeddedResource>
     <EmbeddedResource Include="lift2sfm.xsl">
       <CopyToOutputDirectory>Always</CopyToOutputDirectory>
     </EmbeddedResource>
-    <EmbeddedResource Include="LameProgressDialog.resx">
-      <DependentUpon>LameProgressDialog.cs</DependentUpon>
-      <SubType>Designer</SubType>
-    </EmbeddedResource>
-    <EmbeddedResource Include="LexiquePro\AboutLexiquePro.resx">
-      <DependentUpon>AboutLexiquePro.cs</DependentUpon>
-      <SubType>Designer</SubType>
-    </EmbeddedResource>
     <EmbeddedResource Include="plift2html.xsl">
       <CopyToOutputDirectory>Always</CopyToOutputDirectory>
     </EmbeddedResource>
-    <EmbeddedResource Include="PdfDictionary\AboutMakePdfDictionary.resx">
-      <DependentUpon>AboutMakePdfDictionary.cs</DependentUpon>
-      <SubType>Designer</SubType>
-    </EmbeddedResource>
     <EmbeddedResource Include="OpenOffice\lift2odfContent.xsl">
       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
     </EmbeddedResource>
   </ItemGroup>
-  <ItemGroup>
-    <None Include="packages.config" />
-    <None Include="Resources\genericAction.png" />
-    <None Include="Resources\printAction.png" />
-    <None Include="Resources\toolbox.png" />
-    <None Include="Resources\wordExport.png" />
-    <None Include="Resources\greenPrinter.png" />
-    <None Include="Resources\pdfdictionary.png" />
-    <None Include="Resources\lexiquePro.bmp" />
-    <None Include="Resources\greenLexiquePro.png" />
-    <None Include="Resources\greenPdf.png" />
-    <None Include="Resources\greenPdfDictionary.png" />
-  </ItemGroup>
   <ItemGroup>
     <EmbeddedResource Include="OpenOffice\ulsx2odfStyles.xsl">
       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
     </EmbeddedResource>
   </ItemGroup>
+
   <ItemGroup>
-    <BootstrapperPackage Include="Microsoft.Net.Client.3.5">
-      <Visible>False</Visible>
-      <ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName>
-      <Install>false</Install>
-    </BootstrapperPackage>
-    <BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
-      <Visible>False</Visible>
-      <ProductName>.NET Framework 3.5 SP1</ProductName>
-      <Install>true</Install>
-    </BootstrapperPackage>
-    <BootstrapperPackage Include="Microsoft.Windows.Installer.3.1">
-      <Visible>False</Visible>
-      <ProductName>Windows Installer 3.1</ProductName>
-      <Install>true</Install>
-    </BootstrapperPackage>
+    <PackageReference Include="SIL.Windows.Forms" Version="13.0.1" GeneratePathProperty="true"/>
+    <Reference Include="SIL.Windows.Forms">
+      <HintPath>$(PkgSIL_Windows_Forms)\lib\net461\SIL.Windows.Forms.dll</HintPath>
+    </Reference>
   </ItemGroup>
-  <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it.
-	   Other similar extension points exist, see Microsoft.Common.targets.
-  <Target Name="BeforeBuild">
-  </Target>
-  <Target Name="AfterBuild">
-  </Target>
-  -->
-  <PropertyGroup>
-    <PostBuildEvent>
-    </PostBuildEvent>
-  </PropertyGroup>
-  <Import Project="..\..\packages\NDesk.DBus.0.15.0\build\NDesk.DBus.targets" Condition="Exists('..\..\packages\NDesk.DBus.0.15.0\build\NDesk.DBus.targets')" />
-  <Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
-    <PropertyGroup>
-      <ErrorText>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}.</ErrorText>
-    </PropertyGroup>
-    <Error Condition="!Exists('..\..\packages\NDesk.DBus.0.15.0\build\NDesk.DBus.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\NDesk.DBus.0.15.0\build\NDesk.DBus.targets'))" />
-    <Error Condition="!Exists('..\..\packages\SIL.Windows.Forms.9.0.0-beta0154\build\SIL.Windows.Forms.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\SIL.Windows.Forms.9.0.0-beta0154\build\SIL.Windows.Forms.targets'))" />
-  </Target>
-  <Import Project="..\..\packages\SIL.Windows.Forms.9.0.0-beta0154\build\SIL.Windows.Forms.targets" Condition="Exists('..\..\packages\SIL.Windows.Forms.9.0.0-beta0154\build\SIL.Windows.Forms.targets')" />
+  <ItemGroup>
+    <PackageReference Include="icu.net" Version="2.8.1" />
+    <PackageReference Include="JetBrains.Annotations" Version="2021.2.0" />
+    <PackageReference Include="Microsoft.DotNet.PlatformAbstractions" Version="2.0.4" />
+    <PackageReference Include="Mono.Addins" Version="1.4.1" />
+    <PackageReference Include="NDesk.DBus" Version="0.15.0" />
+    <PackageReference Include="RelaxNG" Version="3.2.3" />
+    <PackageReference Include="SharpZipLib" Version="1.4.2" />
+    <PackageReference Include="SIL.Core" Version="13.0.1" />
+    <PackageReference Include="SIL.Core.Desktop" Version="13.0.1" />
+    <PackageReference Include="SIL.Lexicon" Version="13.0.1" />
+    <PackageReference Include="SIL.Lift" Version="13.0.1" />
+    <PackageReference Include="SIL.WritingSystems" Version="13.0.1" />
+    <PackageReference Include="Spart" Version="1.0.0" />
+    <PackageReference Include="System.Management" Version="8.0.0" />
+    <PackageReference Include="Microsoft.AspNetCore.SystemWebAdapters" Version="1.3.0" />
+    <PackageReference Include="Microsoft.Extensions.DependencyModel" Version="8.0.0" />
+    <PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
+    <PackageReference Include="System.Runtime.CompilerServices.Unsafe" Version="6.0.0" />
+    <PackageReference Include="System.Security.AccessControl" Version="6.0.0" />
+    <PackageReference Include="System.Configuration.ConfigurationManager" Version="8.0.0" />
+    <PackageReference Include="System.ServiceModel.Primitives" Version="8.0.0" />
+    <PackageReference Include="System.ServiceModel.Http" Version="8.0.0" />
+    <PackageReference Include="System.ServiceModel.Duplex" Version="6.0.0" />
+    <PackageReference Include="System.ServiceModel.NetTcp" Version="8.0.0" />
+    <PackageReference Include="System.ServiceModel.Security" Version="6.0.0" />
+    <PackageReference Include="System.ServiceModel.Federation" Version="8.0.0" />
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Remove="Resources1.Designer.cs" />
+    <EmbeddedResource Remove="OpenOffice\OpenOffice.resx" />
+  </ItemGroup>
+  <PropertyGroup />
 </Project>
\ No newline at end of file
diff --git a/src/Addin.Transform/LiftTransformer.cs b/src/Addin.Transform/LiftTransformer.cs
index bf5aabcad..de93f429a 100644
--- a/src/Addin.Transform/LiftTransformer.cs
+++ b/src/Addin.Transform/LiftTransformer.cs
@@ -265,18 +265,6 @@ private static void OnDoTransformWork(object sender, DoWorkEventArgs args)
 				progressState.WriteToLog(err.Message);
 				progressState.State = ProgressState.StateValue.StoppedWithError;
 			}
-			finally
-			{
-				if (transform != null)
-				{
-					progressState.StatusLabel = "Cleaning up...";
-					TempFileCollection tempfiles = transform.TemporaryFiles;
-					if (tempfiles != null) // tempfiles will be null when debugging is not enabled
-					{
-						tempfiles.Delete();
-					}
-				}
-			}
 		}
 
 		private static void OnXsltMessageEncountered(object sender,
diff --git a/src/Addin.Transform/Properties/AssemblyInfo.cs b/src/Addin.Transform/Properties/AssemblyInfo.cs
deleted file mode 100644
index 49cdcbb94..000000000
--- a/src/Addin.Transform/Properties/AssemblyInfo.cs
+++ /dev/null
@@ -1,41 +0,0 @@
-using Mono.Addins;
-using System.Reflection;
-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("Addin.XSLT")]
-[assembly: AssemblyDescription("")]
-[assembly: AssemblyConfiguration("")]
-[assembly: AssemblyCompany("SIL")]
-[assembly: AssemblyProduct("Addin.XSLT")]
-[assembly: AssemblyCopyright("Copyright © SIL 2007")]
-[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)]
-
-// The following GUID is for the ID of the typelib if this project is exposed to COM
-
-[assembly: Guid("a8757a37-99f8-4d54-a662-e7e6fdf666e0")]
-
-// 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 Revision and Build Numbers
-// by using the '*' as shown below:
-
-[assembly: AssemblyVersion("1.9.0.10")]
-[assembly: AssemblyFileVersion("1.9.0.10")]
-[assembly: Addin]
-[assembly: AddinDependency("WeSay.AddinLib", "1.0")]
\ No newline at end of file
diff --git a/src/Addin.Transform/packages.config b/src/Addin.Transform/packages.config
deleted file mode 100644
index bd805a407..000000000
--- a/src/Addin.Transform/packages.config
+++ /dev/null
@@ -1,33 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<packages>
-  <package id="DialogAdapters.Gtk2" version="0.1.9" targetFramework="net461" />
-  <package id="Enchant.Net" version="1.4.2" targetFramework="net461" />
-  <package id="icu.net" version="2.7.1" targetFramework="net461" />
-  <package id="JetBrains.Annotations" version="2021.2.0" targetFramework="net461" />
-  <package id="L10NSharp" version="5.0.0-beta0086" targetFramework="net461" />
-  <package id="Markdig.Signed" version="0.22.0" targetFramework="net461" />
-  <package id="Microsoft.DotNet.PlatformAbstractions" version="2.0.4" targetFramework="net461" />
-  <package id="Microsoft.Extensions.DependencyModel" version="2.0.4" targetFramework="net461" />
-  <package id="Mono.Addins" version="1.3.8" targetFramework="net461" />
-  <package id="NDesk.DBus" version="0.15.0" targetFramework="net461" />
-  <package id="Newtonsoft.Json" version="12.0.3" targetFramework="net461" />
-  <package id="RelaxNG" version="3.2.3" targetFramework="net461" />
-  <package id="SharpZipLib" version="0.86.0" targetFramework="20" />
-  <package id="SIL.Core" version="9.0.0-beta0154" targetFramework="net461" />
-  <package id="SIL.Core.Desktop" version="9.0.0-beta0154" targetFramework="net461" />
-  <package id="SIL.DictionaryServices" version="9.0.0-beta0154" targetFramework="net461" />
-  <package id="SIL.Lexicon" version="9.0.0-beta0154" targetFramework="net461" />
-  <package id="SIL.Lift" version="9.0.0-beta0154" targetFramework="net461" />
-  <package id="SIL.Windows.Forms" version="9.0.0-beta0154" targetFramework="net461" />
-  <package id="SIL.WritingSystems" version="9.0.0-beta0154" targetFramework="net461" />
-  <package id="Spart" version="1.0.0" targetFramework="net461" />
-  <package id="System.Buffers" version="4.5.1" targetFramework="net461" />
-  <package id="System.IO.FileSystem.AccessControl" version="4.7.0" targetFramework="net461" />
-  <package id="System.Memory" version="4.5.4" targetFramework="net461" />
-  <package id="System.Numerics.Vectors" version="4.5.0" targetFramework="net461" />
-  <package id="System.Runtime.CompilerServices.Unsafe" version="4.5.3" targetFramework="net461" />
-  <package id="System.Security.AccessControl" version="4.7.0" targetFramework="net461" />
-  <package id="System.Security.Principal.Windows" version="4.7.0" targetFramework="net461" />
-  <package id="System.ValueTuple" version="4.5.0" targetFramework="net461" />
-  <package id="TagLibSharp" version="2.2.0" targetFramework="net461" />
-</packages>
\ No newline at end of file
diff --git a/src/LexicalModel.Tests/LexicalModel.Tests.csproj b/src/LexicalModel.Tests/LexicalModel.Tests.csproj
index 8a265ae93..fe33b20c6 100755
--- a/src/LexicalModel.Tests/LexicalModel.Tests.csproj
+++ b/src/LexicalModel.Tests/LexicalModel.Tests.csproj
@@ -1,220 +1,42 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="12.0">
-  <Import Project="..\..\packages\NUnit.3.13.1\build\NUnit.props" Condition="Exists('..\..\packages\NUnit.3.13.1\build\NUnit.props')" />
+<Project Sdk="Microsoft.NET.Sdk">
   <PropertyGroup>
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
-    <ProductVersion>9.0.21022</ProductVersion>
-    <SchemaVersion>2.0</SchemaVersion>
-    <ProjectGuid>{123D695C-0D5D-46E5-893F-39EC4E0B01B8}</ProjectGuid>
+    <TargetFramework>net8.0-windows</TargetFramework>
     <OutputType>Library</OutputType>
-    <AppDesignerFolder>Properties</AppDesignerFolder>
     <RootNamespace>WeSay.LexicalModel.Tests</RootNamespace>
-    <AssemblyName>LexicalModel.Tests</AssemblyName>
     <AppConfig>..\AppForTests.config</AppConfig>
-    <FileUpgradeFlags>
-    </FileUpgradeFlags>
-    <UpgradeBackupLocation>
-    </UpgradeBackupLocation>
-    <OldToolsVersion>3.5</OldToolsVersion>
-    <TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion>
-    <TargetFrameworkProfile />
-    <NuGetPackageImportStamp>
-    </NuGetPackageImportStamp>
+    <GenerateAssemblyInfo>false</GenerateAssemblyInfo>
+    <UseWindowsForms>true</UseWindowsForms>
+    <ImportWindowsDesktopTargets>true</ImportWindowsDesktopTargets>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
-    <DebugSymbols>true</DebugSymbols>
-    <DebugType>full</DebugType>
-    <Optimize>false</Optimize>
     <OutputPath>..\..\output\Debug\</OutputPath>
-    <DefineConstants>DEBUG;TRACE</DefineConstants>
-    <ErrorReport>prompt</ErrorReport>
-    <WarningLevel>4</WarningLevel>
     <OutputType>Library</OutputType>
-    <AssemblyName>LexicalModel.Tests</AssemblyName>
     <RootNamespace>WeSay.LexicalModel.Tests</RootNamespace>
-    <AllowUnsafeBlocks>false</AllowUnsafeBlocks>
     <CheckForOverflowUnderflow>true</CheckForOverflowUnderflow>
     <PlatformTarget>x86</PlatformTarget>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
-    <DebugType>pdbonly</DebugType>
-    <Optimize>true</Optimize>
     <OutputPath>..\..\output\Release\</OutputPath>
-    <DefineConstants>TRACE</DefineConstants>
-    <ErrorReport>prompt</ErrorReport>
-    <WarningLevel>4</WarningLevel>
     <OutputType>Library</OutputType>
-    <AssemblyName>LexicalModel.Tests</AssemblyName>
     <DebugSymbols>true</DebugSymbols>
     <RootNamespace>WeSay.LexicalModel.Tests</RootNamespace>
-    <AllowUnsafeBlocks>false</AllowUnsafeBlocks>
     <CheckForOverflowUnderflow>true</CheckForOverflowUnderflow>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
-    <DebugSymbols>true</DebugSymbols>
     <OutputPath>..\..\output\Debug\</OutputPath>
-    <DefineConstants>DEBUG;TRACE</DefineConstants>
     <CheckForOverflowUnderflow>true</CheckForOverflowUnderflow>
-    <DebugType>full</DebugType>
-    <PlatformTarget>x86</PlatformTarget>
-    <ErrorReport>prompt</ErrorReport>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
     <DebugSymbols>true</DebugSymbols>
     <OutputPath>..\..\output\Release\</OutputPath>
-    <DefineConstants>TRACE</DefineConstants>
     <CheckForOverflowUnderflow>true</CheckForOverflowUnderflow>
-    <Optimize>true</Optimize>
-    <DebugType>pdbonly</DebugType>
-    <PlatformTarget>x86</PlatformTarget>
-    <ErrorReport>prompt</ErrorReport>
   </PropertyGroup>
   <ItemGroup>
-    <Reference Include="Commons.Xml.Relaxng, Version=4.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\RelaxNG.3.2.3\lib\net40\Commons.Xml.Relaxng.dll</HintPath>
-    </Reference>
-    <Reference Include="Enchant.Net, Version=1.4.3.1, Culture=neutral, processorArchitecture=MSIL">
-      <SpecificVersion>False</SpecificVersion>
-      <HintPath>..\..\packages\Enchant.Net.1.4.2\lib\net461\Enchant.Net.dll</HintPath>
-    </Reference>
-    <Reference Include="icu.net, Version=2.7.0.0, Culture=neutral, PublicKeyToken=416fdd914afa6b66, processorArchitecture=MSIL">
-      <SpecificVersion>False</SpecificVersion>
-      <HintPath>..\..\packages\icu.net.2.7.1\lib\net451\icu.net.dll</HintPath>
-    </Reference>
-    <Reference Include="Microsoft.DotNet.PlatformAbstractions, Version=2.0.4.0, Culture=neutral, PublicKeyToken=adb9793829ddae60, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\Microsoft.DotNet.PlatformAbstractions.2.0.4\lib\net45\Microsoft.DotNet.PlatformAbstractions.dll</HintPath>
-    </Reference>
-    <Reference Include="Microsoft.Extensions.DependencyModel, Version=2.0.4.0, Culture=neutral, PublicKeyToken=adb9793829ddae60, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\Microsoft.Extensions.DependencyModel.2.0.4\lib\net451\Microsoft.Extensions.DependencyModel.dll</HintPath>
-    </Reference>
-    <Reference Include="NDesk.DBus, Version=1.0.0.0, Culture=neutral, PublicKeyToken=f6716e4f9b2ed099, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\NDesk.DBus.0.15.0\lib\NDesk.DBus.dll</HintPath>
-    </Reference>
-    <Reference Include="NetReflector, Version=1.0.0.0, Culture=neutral">
-      <SpecificVersion>False</SpecificVersion>
-      <HintPath>../../packages/NetReflector.1.1.2009/lib/net20/NetReflector.dll</HintPath>
-    </Reference>
-    <Reference Include="Newtonsoft.Json, Version=12.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
-      <SpecificVersion>False</SpecificVersion>
-      <HintPath>..\..\packages\Newtonsoft.Json.12.0.3\lib\net45\Newtonsoft.Json.dll</HintPath>
-    </Reference>
-    <Reference Include="nunit.framework, Version=3.13.1.0, Culture=neutral, PublicKeyToken=2638cd05610744eb, processorArchitecture=MSIL">
-      <SpecificVersion>False</SpecificVersion>
-      <HintPath>..\..\packages\NUnit.3.13.1\lib\net45\nunit.framework.dll</HintPath>
-    </Reference>
-    <None Include="..\..\lib\common\Enchant.Net.dll.config">
-      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
-    </None>
-    <Reference Include="SIL.Core, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\SIL.Core.9.0.0-beta0154\lib\net461\SIL.Core.dll</HintPath>
-    </Reference>
-    <Reference Include="SIL.Core.Desktop, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\SIL.Core.Desktop.9.0.0-beta0154\lib\net461\SIL.Core.Desktop.dll</HintPath>
-    </Reference>
-    <Reference Include="SIL.Core.Tests, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\SIL.Core.Tests.9.0.0-beta0154\lib\net461\SIL.Core.Tests.dll</HintPath>
-    </Reference>
-    <Reference Include="SIL.DictionaryServices, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\SIL.DictionaryServices.9.0.0-beta0154\lib\net461\SIL.DictionaryServices.dll</HintPath>
-    </Reference>
-    <Reference Include="SIL.Lexicon, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\SIL.Lexicon.9.0.0-beta0154\lib\net461\SIL.Lexicon.dll</HintPath>
-    </Reference>
-    <Reference Include="SIL.Lift, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\SIL.Lift.9.0.0-beta0154\lib\net461\SIL.Lift.dll</HintPath>
-    </Reference>
-    <Reference Include="SIL.TestUtilities, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\SIL.TestUtilities.9.0.0-beta0154\lib\net461\SIL.TestUtilities.dll</HintPath>
-    </Reference>
-    <Reference Include="SIL.WritingSystems, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\SIL.WritingSystems.9.0.0-beta0154\lib\net461\SIL.WritingSystems.dll</HintPath>
-    </Reference>
-    <Reference Include="SIL.WritingSystems.Tests, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\SIL.WritingSystems.Tests.9.0.0-beta0154\lib\net461\SIL.WritingSystems.Tests.dll</HintPath>
-    </Reference>
-    <Reference Include="Spart, Version=1.0.0.0, Culture=neutral, PublicKeyToken=14d24e064e474331, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\Spart.1.0.0\lib\net461\Spart.dll</HintPath>
-    </Reference>
-    <Reference Include="System" />
-    <Reference Include="System.Configuration" />
-    <Reference Include="System.Core">
-      <RequiredTargetFramework>3.5</RequiredTargetFramework>
-    </Reference>
-    <Reference Include="System.Data" />
-    <Reference Include="System.Drawing" />
-    <Reference Include="System.IO.FileSystem.AccessControl, Version=4.0.5.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\System.IO.FileSystem.AccessControl.4.7.0\lib\net461\System.IO.FileSystem.AccessControl.dll</HintPath>
-    </Reference>
-    <Reference Include="System.Management" />
-    <Reference Include="System.Security" />
-    <Reference Include="System.Security.AccessControl, Version=4.1.3.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\System.Security.AccessControl.4.7.0\lib\net461\System.Security.AccessControl.dll</HintPath>
-    </Reference>
-    <Reference Include="System.Security.Principal.Windows, Version=4.1.3.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\System.Security.Principal.Windows.4.7.0\lib\net461\System.Security.Principal.Windows.dll</HintPath>
-    </Reference>
-    <Reference Include="System.ValueTuple, Version=4.0.3.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\System.ValueTuple.4.5.0\lib\net461\System.ValueTuple.dll</HintPath>
-    </Reference>
-    <Reference Include="System.Web" />
-    <Reference Include="System.Windows.Forms" />
-    <Reference Include="System.Xml" />
-    <None Include="packages.config" />
-  </ItemGroup>
-  <ItemGroup>
-    <Compile Include="ConstructorThrowTests.cs" />
-    <Compile Include="Foundation\Options\OptionList.Tests.cs" />
-    <Compile Include="Foundation\SpellCheckerIdToDisplayStringConverterTests.cs" />
-    <Compile Include="Foundation\TestResources.Designer.cs">
-      <DependentUpon>TestResources.resx</DependentUpon>
-      <AutoGen>True</AutoGen>
-      <DesignTime>True</DesignTime>
-    </Compile>
-    <Compile Include="Foundation\WritingSystemInfoTests.cs" />
-    <Compile Include="LexEntryRepositoryCachingTests.cs" />
-    <Compile Include="LexEntryRepositoryCreatedFromPersistedData.cs" />
-    <Compile Include="LexEntryRepositoryCreateItemTransitionTests.cs" />
-    <Compile Include="LexEntryRepositoryDeleteAllItemsTransitionTests.cs" />
-    <Compile Include="LexEntryRepositoryDeleteIdTransitionTests.cs" />
-    <Compile Include="LexEntryRepositoryDeleteItemTransitionTests.cs" />
-    <Compile Include="LexEntryRepositoryEventTests.cs" />
-    <Compile Include="LexEntryRepositoryStateUnitializedTests.cs" />
-    <Compile Include="LexEntryRepository_GetMissingItemTests.cs" />
-    <Compile Include="FieldTests.cs" />
-    <Compile Include="LexEntryRepositoryTests.cs" />
-    <Compile Include="EventsAndDates.cs" />
-    <Compile Include="MissingItemFilterTests.cs" />
-    <Compile Include="Properties\AssemblyInfo.cs" />
-  </ItemGroup>
-  <ItemGroup>
-    <ProjectReference Include="..\LexicalModel\LexicalModel.csproj">
-      <Project>{5F61C809-B6C0-4567-9603-B2198E1AD038}</Project>
-      <Name>LexicalModel</Name>
-    </ProjectReference>
-    <ProjectReference Include="..\WeSay.Data.Tests\WeSay.Data.Tests.csproj">
-      <Project>{8491FEEE-C311-4B64-BB30-A1F1C1802F45}</Project>
-      <Name>WeSay.Data.Tests</Name>
-    </ProjectReference>
-    <ProjectReference Include="..\WeSay.Data\WeSay.Data.csproj">
-      <Project>{600D0FD4-D189-41A0-9BC5-FC79AD2CF1CD}</Project>
-      <Name>WeSay.Data</Name>
-    </ProjectReference>
-    <ProjectReference Include="..\WeSay.Project.Tests\WeSay.Project.Tests.csproj">
-      <Project>{F644C902-A952-4797-9E2D-19D6051DD032}</Project>
-      <Name>WeSay.Project.Tests</Name>
-    </ProjectReference>
-    <ProjectReference Include="..\WeSay.Project\WeSay.Project.csproj">
-      <Project>{5CFD0BB3-5B2A-4911-B220-9C2286151BF0}</Project>
-      <Name>WeSay.Project</Name>
-    </ProjectReference>
-  </ItemGroup>
-  <ItemGroup>
-    <EmbeddedResource Include="Foundation\TestResources.resx">
-      <Generator>ResXFileCodeGenerator</Generator>
-      <LastGenOutput>TestResources.Designer.cs</LastGenOutput>
-      <SubType>Designer</SubType>
-    </EmbeddedResource>
+    <ProjectReference Include="..\LexicalModel\LexicalModel.csproj" />
+    <ProjectReference Include="..\WeSay.Data.Tests\WeSay.Data.Tests.csproj" />
+    <ProjectReference Include="..\WeSay.Data\WeSay.Data.csproj" />
+    <ProjectReference Include="..\WeSay.Project.Tests\WeSay.Project.Tests.csproj" />
+    <ProjectReference Include="..\WeSay.Project\WeSay.Project.csproj" />
   </ItemGroup>
   <ItemGroup>
     <Service Include="{82A7F48D-3B50-4B1E-B82E-3ADA8210C358}" />
@@ -222,24 +44,27 @@
   <ItemGroup>
     <None Include="icu4c.readme.txt" />
   </ItemGroup>
-  <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
-  <Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
-    <PropertyGroup>
-      <ErrorText>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}.</ErrorText>
-    </PropertyGroup>
-    <Error Condition="!Exists('..\..\packages\Mono.Posix.5.4.0.201\build\net45\Mono.Posix.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\Mono.Posix.5.4.0.201\build\net45\Mono.Posix.targets'))" />
-    <Error Condition="!Exists('..\..\packages\NDesk.DBus.0.15.0\build\NDesk.DBus.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\NDesk.DBus.0.15.0\build\NDesk.DBus.targets'))" />
-    <Error Condition="!Exists('..\..\packages\NUnit.3.13.1\build\NUnit.props')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\NUnit.3.13.1\build\NUnit.props'))" />
-    <Error Condition="!Exists('..\..\packages\Icu4c.Win.Min.59.1.7\build\Icu4c.Win.Min.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\Icu4c.Win.Min.59.1.7\build\Icu4c.Win.Min.targets'))" />
-  </Target>
-  <Import Project="..\..\packages\Mono.Posix.5.4.0.201\build\net45\Mono.Posix.targets" Condition="Exists('..\..\packages\Mono.Posix.5.4.0.201\build\net45\Mono.Posix.targets')" />
-  <Import Project="..\..\packages\NDesk.DBus.0.15.0\build\NDesk.DBus.targets" Condition="Exists('..\..\packages\NDesk.DBus.0.15.0\build\NDesk.DBus.targets')" />
-  <Import Project="..\..\packages\Icu4c.Win.Min.59.1.7\build\Icu4c.Win.Min.targets" Condition="Exists('..\..\packages\Icu4c.Win.Min.59.1.7\build\Icu4c.Win.Min.targets')" />
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it.
-	   Other similar extension points exist, see Microsoft.Common.targets.
-  <Target Name="BeforeBuild">
-  </Target>
-  <Target Name="AfterBuild">
-  </Target>
-  -->
+  <ItemGroup>
+    <PackageReference Include="icu.net" Version="2.8.1" />
+    <PackageReference Include="Icu4c.Win.Min" Version="59.1.7" />
+    <PackageReference Include="Microsoft.DotNet.PlatformAbstractions" Version="2.0.4" />
+    <PackageReference Include="Mono.Posix" Version="5.4.0.201" />
+    <PackageReference Include="NDesk.DBus" Version="0.15.0" />
+    <PackageReference Include="NetReflector" Version="1.1.2009" />
+    <PackageReference Include="NUnit" Version="3.13.3" />
+    <PackageReference Include="RelaxNG" Version="3.2.3" />
+    <PackageReference Include="SIL.Core" Version="13.0.1" />
+    <PackageReference Include="SIL.Core.Desktop" Version="13.0.1" />
+    <PackageReference Include="SIL.Lexicon" Version="13.0.1" />
+    <PackageReference Include="SIL.Lift" Version="13.0.1" />
+    <PackageReference Include="SIL.TestUtilities" Version="13.0.1" />
+    <PackageReference Include="SIL.WritingSystems" Version="13.0.1" />
+    <PackageReference Include="Spart" Version="1.0.0" />
+    <PackageReference Include="System.Management" Version="8.0.0" />
+    <PackageReference Include="Microsoft.AspNetCore.SystemWebAdapters" Version="1.3.0" />
+    <PackageReference Include="Microsoft.Extensions.DependencyModel" Version="8.0.0" />
+    <PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
+    <PackageReference Include="System.Security.AccessControl" Version="6.0.0" />
+    <PackageReference Include="System.Configuration.ConfigurationManager" Version="8.0.0" />
+  </ItemGroup>
 </Project>
\ No newline at end of file
diff --git a/src/LexicalModel.Tests/Properties/AssemblyInfo.cs b/src/LexicalModel.Tests/Properties/AssemblyInfo.cs
deleted file mode 100644
index 983eb46c2..000000000
--- a/src/LexicalModel.Tests/Properties/AssemblyInfo.cs
+++ /dev/null
@@ -1,38 +0,0 @@
-using System.Reflection;
-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("LexicalModel.Tests")]
-[assembly: AssemblyDescription("")]
-[assembly: AssemblyConfiguration("")]
-[assembly: AssemblyCompany("")]
-[assembly: AssemblyProduct("WeSay.Tests")]
-[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)]
-
-// The following GUID is for the ID of the typelib if this project is exposed to COM
-
-[assembly: Guid("052ecd1b-d5d4-40a4-ad84-412e7fb43f63")]
-
-// 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 Revision and Build Numbers
-// by using the '*' as shown below:
-
-[assembly: AssemblyVersion("1.9.0.10")]
-[assembly: AssemblyFileVersion("1.9.0.10")]
\ No newline at end of file
diff --git a/src/LexicalModel.Tests/packages.config b/src/LexicalModel.Tests/packages.config
deleted file mode 100644
index 354586863..000000000
--- a/src/LexicalModel.Tests/packages.config
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<packages>
-  <package id="icu.net" version="2.7.1" targetFramework="net461" />
-  <package id="Icu4c.Win.Min" version="59.1.7" targetFramework="net461" />
-  <package id="Microsoft.DotNet.PlatformAbstractions" version="2.0.4" targetFramework="net461" />
-  <package id="Microsoft.Extensions.DependencyModel" version="2.0.4" targetFramework="net461" />
-  <package id="Mono.Posix" version="5.4.0.201" targetFramework="net461" />
-  <package id="NDesk.DBus" version="0.15.0" targetFramework="net461" />
-  <package id="NetReflector" version="1.1.2009" requireReinstallation="true" />
-  <package id="Newtonsoft.Json" version="12.0.3" targetFramework="net461" />
-  <package id="NUnit" version="3.13.1" targetFramework="net461" />
-  <package id="RelaxNG" version="3.2.3" targetFramework="net461" />
-  <package id="SIL.Core" version="9.0.0-beta0154" targetFramework="net461" />
-  <package id="SIL.Core.Desktop" version="9.0.0-beta0154" targetFramework="net461" />
-  <package id="SIL.Core.Tests" version="9.0.0-beta0154" targetFramework="net461" />
-  <package id="SIL.DictionaryServices" version="9.0.0-beta0154" targetFramework="net461" />
-  <package id="SIL.Lexicon" version="9.0.0-beta0154" targetFramework="net461" />
-  <package id="SIL.Lift" version="9.0.0-beta0154" targetFramework="net461" />
-  <package id="SIL.TestUtilities" version="9.0.0-beta0154" targetFramework="net461" />
-  <package id="SIL.WritingSystems" version="9.0.0-beta0154" targetFramework="net461" />
-  <package id="SIL.WritingSystems.Tests" version="9.0.0-beta0154" targetFramework="net461" />
-  <package id="Spart" version="1.0.0" targetFramework="net461" />
-  <package id="System.IO.FileSystem.AccessControl" version="4.7.0" targetFramework="net461" />
-  <package id="System.Security.AccessControl" version="4.7.0" targetFramework="net461" />
-  <package id="System.Security.Principal.Windows" version="4.7.0" targetFramework="net461" />
-  <package id="System.ValueTuple" version="4.5.0" targetFramework="net461" />
-</packages>
\ No newline at end of file
diff --git a/src/LexicalModel/Foundation/Options/DdpOptionDisplayAdaptor.cs b/src/LexicalModel/Foundation/Options/DdpOptionDisplayAdaptor.cs
index 308042b60..5d6868815 100644
--- a/src/LexicalModel/Foundation/Options/DdpOptionDisplayAdaptor.cs
+++ b/src/LexicalModel/Foundation/Options/DdpOptionDisplayAdaptor.cs
@@ -3,7 +3,6 @@
 
 namespace WeSay.LexicalModel.Foundation.Options
 {
-	[CLSCompliant(false)]
 	public class DdpOptionDisplayAdaptor : OptionDisplayAdaptor
 	{
 		public DdpOptionDisplayAdaptor(OptionsList allOptions, string preferredWritingSystemId)
diff --git a/src/LexicalModel/Foundation/Options/OptionDisplayAdaptor.cs b/src/LexicalModel/Foundation/Options/OptionDisplayAdaptor.cs
index 3a7647745..0607ef1e1 100644
--- a/src/LexicalModel/Foundation/Options/OptionDisplayAdaptor.cs
+++ b/src/LexicalModel/Foundation/Options/OptionDisplayAdaptor.cs
@@ -7,7 +7,6 @@
 
 namespace WeSay.LexicalModel.Foundation.Options
 {
-	[CLSCompliant(false)]
 	public class OptionDisplayAdaptor : IChoiceSystemAdaptor<Option, string, OptionRef>
 	{
 		protected readonly OptionsList _allOptions;
diff --git a/src/LexicalModel/LexicalModel.csproj b/src/LexicalModel/LexicalModel.csproj
index b4587124f..038f364d8 100755
--- a/src/LexicalModel/LexicalModel.csproj
+++ b/src/LexicalModel/LexicalModel.csproj
@@ -1,236 +1,73 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="12.0">
+<Project Sdk="Microsoft.NET.Sdk">
   <PropertyGroup>
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
-    <ProductVersion>9.0.21022</ProductVersion>
-    <SchemaVersion>2.0</SchemaVersion>
-    <ProjectGuid>{5F61C809-B6C0-4567-9603-B2198E1AD038}</ProjectGuid>
+    <TargetFramework>net8.0-windows</TargetFramework>
     <OutputType>Library</OutputType>
-    <AppDesignerFolder>Properties</AppDesignerFolder>
     <RootNamespace>WeSay.LexicalModel</RootNamespace>
-    <AssemblyName>LexicalModel</AssemblyName>
-    <FileUpgradeFlags>
-    </FileUpgradeFlags>
-    <UpgradeBackupLocation>
-    </UpgradeBackupLocation>
-    <OldToolsVersion>3.5</OldToolsVersion>
-    <TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion>
-    <TargetFrameworkProfile />
-    <NuGetPackageImportStamp>
-    </NuGetPackageImportStamp>
+    <GenerateAssemblyInfo>false</GenerateAssemblyInfo>
+    <UseWindowsForms>true</UseWindowsForms>
+    <ImportWindowsDesktopTargets>true</ImportWindowsDesktopTargets>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
-    <DebugSymbols>true</DebugSymbols>
-    <DebugType>full</DebugType>
-    <Optimize>false</Optimize>
     <OutputPath>..\..\output\Debug\</OutputPath>
-    <DefineConstants>DEBUG;TRACE</DefineConstants>
-    <ErrorReport>prompt</ErrorReport>
-    <WarningLevel>4</WarningLevel>
     <OutputType>Library</OutputType>
     <RootNamespace>WeSay.LexicalModel</RootNamespace>
-    <CustomCommands>
-      <CustomCommands>
-        <Command type="BeforeBuild" />
-      </CustomCommands>
-    </CustomCommands>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
-    <DebugType>pdbonly</DebugType>
-    <Optimize>true</Optimize>
     <OutputPath>..\..\output\Release\</OutputPath>
-    <DefineConstants>TRACE</DefineConstants>
-    <ErrorReport>prompt</ErrorReport>
-    <WarningLevel>4</WarningLevel>
     <OutputType>Library</OutputType>
     <DebugSymbols>true</DebugSymbols>
     <RootNamespace>WeSay.LexicalModel</RootNamespace>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
-    <DebugSymbols>true</DebugSymbols>
     <OutputPath>..\..\output\Debug\</OutputPath>
-    <DefineConstants>DEBUG;TRACE</DefineConstants>
-    <DebugType>full</DebugType>
-    <PlatformTarget>x86</PlatformTarget>
-    <ErrorReport>prompt</ErrorReport>
-    <WarningLevel>4</WarningLevel>
-    <Optimize>false</Optimize>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
     <DebugSymbols>true</DebugSymbols>
     <OutputPath>..\..\output\Release\</OutputPath>
-    <DefineConstants>TRACE</DefineConstants>
-    <Optimize>true</Optimize>
-    <DebugType>pdbonly</DebugType>
-    <PlatformTarget>x86</PlatformTarget>
-    <ErrorReport>prompt</ErrorReport>
-    <WarningLevel>4</WarningLevel>
   </PropertyGroup>
   <ItemGroup>
-    <Reference Include="Autofac, Version=4.1.1.0, Culture=neutral, PublicKeyToken=17863af14b0044da, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\Autofac.4.1.1\lib\net45\Autofac.dll</HintPath>
-    </Reference>
-    <Reference Include="Chorus, Version=3.1.0.0, Culture=neutral, PublicKeyToken=f1447bae1e63f485, processorArchitecture=MSIL">
-      <SpecificVersion>False</SpecificVersion>
-      <HintPath>..\..\packages\SIL.Chorus.App.LibChorus.5.0.0-beta0017\lib\net461\Chorus.exe</HintPath>
-    </Reference>
-    <Reference Include="Commons.Xml.Relaxng, Version=4.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\RelaxNG.3.2.3\lib\net40\Commons.Xml.Relaxng.dll</HintPath>
-    </Reference>
-    <None Include="packages.config" />
-    <Reference Include="Enchant.Net, Version=1.4.3.1, Culture=neutral, processorArchitecture=MSIL">
-      <SpecificVersion>False</SpecificVersion>
-      <HintPath>..\..\packages\Enchant.Net.1.4.2\lib\net461\Enchant.Net.dll</HintPath>
-    </Reference>
-    <Reference Include="icu.net, Version=2.7.0.0, Culture=neutral, PublicKeyToken=416fdd914afa6b66, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\icu.net.2.7.1\lib\net451\icu.net.dll</HintPath>
-    </Reference>
-    <Reference Include="L10NSharp, Version=5.0.0.0, Culture=neutral, PublicKeyToken=fd0b3e309a5b7c28, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\L10NSharp.5.0.0-beta0086\lib\net461\L10NSharp.dll</HintPath>
-    </Reference>
-    <Reference Include="LibChorus, Version=5.0.0.0, Culture=neutral, PublicKeyToken=f1447bae1e63f485, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\SIL.Chorus.LibChorus.5.0.0-beta0017\lib\net461\LibChorus.dll</HintPath>
-    </Reference>
-    <Reference Include="Microsoft.Bcl.AsyncInterfaces, Version=5.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\Microsoft.Bcl.AsyncInterfaces.5.0.0\lib\net461\Microsoft.Bcl.AsyncInterfaces.dll</HintPath>
-    </Reference>
-    <Reference Include="Microsoft.DotNet.PlatformAbstractions, Version=2.0.4.0, Culture=neutral, PublicKeyToken=adb9793829ddae60, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\Microsoft.DotNet.PlatformAbstractions.2.0.4\lib\net45\Microsoft.DotNet.PlatformAbstractions.dll</HintPath>
-    </Reference>
-    <Reference Include="Microsoft.Extensions.DependencyModel, Version=2.0.4.0, Culture=neutral, PublicKeyToken=adb9793829ddae60, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\Microsoft.Extensions.DependencyModel.2.0.4\lib\net451\Microsoft.Extensions.DependencyModel.dll</HintPath>
-    </Reference>
-    <Reference Include="NDesk.DBus, Version=1.0.0.0, Culture=neutral, PublicKeyToken=f6716e4f9b2ed099, processorArchitecture=MSIL">
-      <SpecificVersion>False</SpecificVersion>
-      <HintPath>..\..\packages\NDesk.DBus.0.15.0\lib\NDesk.DBus.dll</HintPath>
-    </Reference>
-    <Reference Include="NetReflector, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null">
-      <SpecificVersion>False</SpecificVersion>
-      <HintPath>../../packages/NetReflector.1.1.2009/lib/net20/NetReflector.dll</HintPath>
-    </Reference>
-    <Reference Include="Newtonsoft.Json, Version=12.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
-      <SpecificVersion>False</SpecificVersion>
-      <HintPath>..\..\packages\Newtonsoft.Json.12.0.3\lib\net45\Newtonsoft.Json.dll</HintPath>
-    </Reference>
-    <Reference Include="SIL.Core, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\SIL.Core.9.0.0-beta0154\lib\net461\SIL.Core.dll</HintPath>
-    </Reference>
-    <Reference Include="SIL.Core.Desktop, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\SIL.Core.Desktop.9.0.0-beta0154\lib\net461\SIL.Core.Desktop.dll</HintPath>
-    </Reference>
-    <Reference Include="SIL.DictionaryServices, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\SIL.DictionaryServices.9.0.0-beta0154\lib\net461\SIL.DictionaryServices.dll</HintPath>
-    </Reference>
-    <Reference Include="SIL.Lift, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\SIL.Lift.9.0.0-beta0154\lib\net461\SIL.Lift.dll</HintPath>
-    </Reference>
-    <Reference Include="SIL.Windows.Forms.Keyboarding">
-      <HintPath>..\..\packages\SIL.Windows.Forms.Keyboarding.9.0.0-beta0154\lib\net461\SIL.Windows.Forms.Keyboarding.dll</HintPath>
-    </Reference>
-    <Reference Include="SIL.Windows.Forms.WritingSystems">
-      <HintPath>..\..\packages\SIL.Windows.Forms.WritingSystems.9.0.0-beta0154\lib\net461\SIL.Windows.Forms.WritingSystems.dll</HintPath>
-    </Reference>
-    <Reference Include="SIL.WritingSystems, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\SIL.WritingSystems.9.0.0-beta0154\lib\net461\SIL.WritingSystems.dll</HintPath>
-    </Reference>
-    <Reference Include="Spart, Version=1.0.0.0, Culture=neutral, PublicKeyToken=14d24e064e474331, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\Spart.1.0.0\lib\net461\Spart.dll</HintPath>
-    </Reference>
-    <Reference Include="System" />
-    <Reference Include="System.Buffers, Version=4.0.3.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\System.Buffers.4.5.1\lib\net461\System.Buffers.dll</HintPath>
-    </Reference>
-    <Reference Include="System.ComponentModel.Composition" />
-    <Reference Include="System.Configuration" />
-    <Reference Include="System.Data" />
-    <Reference Include="System.Diagnostics.DiagnosticSource, Version=4.0.5.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\System.Diagnostics.DiagnosticSource.4.7.1\lib\net46\System.Diagnostics.DiagnosticSource.dll</HintPath>
-    </Reference>
-    <Reference Include="System.Drawing" />
-    <Reference Include="System.IO.FileSystem.AccessControl, Version=4.0.5.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\System.IO.FileSystem.AccessControl.4.7.0\lib\net461\System.IO.FileSystem.AccessControl.dll</HintPath>
-    </Reference>
-    <Reference Include="System.Management" />
-    <Reference Include="System.Memory, Version=4.0.1.1, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\System.Memory.4.5.4\lib\net461\System.Memory.dll</HintPath>
-    </Reference>
-    <Reference Include="System.Numerics" />
-    <Reference Include="System.Numerics.Vectors, Version=4.1.4.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\System.Numerics.Vectors.4.5.0\lib\net46\System.Numerics.Vectors.dll</HintPath>
-    </Reference>
-    <Reference Include="System.Runtime.CompilerServices.Unsafe, Version=4.0.4.1, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\System.Runtime.CompilerServices.Unsafe.4.5.3\lib\net461\System.Runtime.CompilerServices.Unsafe.dll</HintPath>
-    </Reference>
-    <Reference Include="System.Security" />
-    <Reference Include="System.Security.AccessControl, Version=4.1.3.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\System.Security.AccessControl.4.7.0\lib\net461\System.Security.AccessControl.dll</HintPath>
-    </Reference>
-    <Reference Include="System.Security.Principal.Windows, Version=4.1.3.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\System.Security.Principal.Windows.4.7.0\lib\net461\System.Security.Principal.Windows.dll</HintPath>
-    </Reference>
-    <Reference Include="System.ServiceModel" />
-    <Reference Include="System.Threading.Tasks.Extensions, Version=4.2.0.1, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\System.Threading.Tasks.Extensions.4.5.4\lib\net461\System.Threading.Tasks.Extensions.dll</HintPath>
-    </Reference>
-    <Reference Include="System.ValueTuple, Version=4.0.3.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\System.ValueTuple.4.5.0\lib\net461\System.ValueTuple.dll</HintPath>
-    </Reference>
-    <Reference Include="System.Web" />
-    <Reference Include="System.Windows.Forms" />
-    <Reference Include="System.Xml" />
-    <Reference Condition="'$(OS)' == 'Windows_NT'" Include="irrKlang.NET4, Version=1.1.2.0, Culture=neutral, PublicKeyToken=a854741bd80517c7">
-      <SpecificVersion>False</SpecificVersion>
-      <HintPath>..\..\packages\SIL.Media.9.0.0-beta0154\build\lib\win-x86\irrKlang.NET4.dll</HintPath>
-    </Reference>
-    <Reference Include="System.Core">
-      <RequiredTargetFramework>3.5</RequiredTargetFramework>
-    </Reference>
+    <ProjectReference Include="..\WeSay.Data\WeSay.Data.csproj" />
   </ItemGroup>
   <ItemGroup>
-    <Compile Include="Field.cs" />
-    <Compile Include="Foundation\Options\DdpListReader.cs" />
-    <Compile Include="Foundation\Options\DdpOptionDisplayAdaptor.cs" />
-    <Compile Include="Foundation\Options\GenericOptionListReader.cs" />
-    <Compile Include="Foundation\Options\OptionDisplayAdaptor.cs" />
-    <Compile Include="Foundation\SpellCheckerIdToDisplayStringConverter.cs" />
-    <Compile Include="Foundation\ChorusWritingSystemAdaptor.cs" />
-    <Compile Include="Foundation\WritingSystemInfo.cs" />
-    <Compile Include="IFieldQuery.cs" />
-    <Compile Include="LexEntryRepository.cs" />
-    <Compile Include="MissingFieldQuery.cs" />
-    <Compile Include="PairStringLexEntryIdDisplayProvider.cs" />
-    <Compile Include="Phonetic.cs" />
-    <Compile Include="Properties\AssemblyInfo.cs" />
-    <Compile Include="ResultSetToListOfStringsAdapter.cs" />
+    <PackageReference Include="Autofac" Version="4.9.4" />
+    <PackageReference Include="Enchant.Net" Version="1.4.2" />
+    <PackageReference Include="icu.net" Version="2.8.1" />
+    <PackageReference Include="Icu4c.Win.Min" Version="59.1.7" />
+    <PackageReference Include="Microsoft.DotNet.PlatformAbstractions" Version="2.0.4" />
+    <PackageReference Include="NDesk.DBus" Version="0.15.0" />
+    <PackageReference Include="NetReflector" Version="1.1.2009" />
+    <PackageReference Include="RelaxNG" Version="3.2.3" />
+    <PackageReference Include="SIL.Chorus.LibChorus" Version="5.1.0" />
+    <PackageReference Include="SIL.Chorus.Mercurial" Version="3.0.3.6" />
+    <PackageReference Include="SIL.Core" Version="13.0.1" />
+    <PackageReference Include="SIL.Core.Desktop" Version="13.0.1" />
+    <PackageReference Include="SIL.DictionaryServices" Version="13.0.1" />
+    <PackageReference Include="SIL.Lift" Version="13.0.1" />
+    <PackageReference Include="SIL.WritingSystems" Version="13.0.1" />
+    <PackageReference Include="Spart" Version="1.0.0" />
+    <PackageReference Include="System.ComponentModel.Composition" Version="8.0.0" />
+    <PackageReference Include="System.Management" Version="8.0.0" />
+    <PackageReference Include="Microsoft.AspNetCore.SystemWebAdapters" Version="1.3.0" />
+    <PackageReference Include="Microsoft.Bcl.AsyncInterfaces" Version="8.0.0" />
+    <PackageReference Include="Microsoft.Extensions.DependencyModel" Version="8.0.0" />
+    <PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
+    <PackageReference Include="System.Diagnostics.DiagnosticSource" Version="8.0.0" />
+    <PackageReference Include="System.Runtime.CompilerServices.Unsafe" Version="6.0.0" />
+    <PackageReference Include="System.Security.AccessControl" Version="6.0.0" />
+    <PackageReference Include="System.Configuration.ConfigurationManager" Version="8.0.0" />
+    <PackageReference Include="System.ServiceModel.Primitives" Version="8.0.0" />
+    <PackageReference Include="System.ServiceModel.Http" Version="8.0.0" />
+    <PackageReference Include="System.ServiceModel.Duplex" Version="6.0.0" />
+    <PackageReference Include="System.ServiceModel.NetTcp" Version="8.0.0" />
+    <PackageReference Include="System.ServiceModel.Security" Version="6.0.0" />
+    <PackageReference Include="System.ServiceModel.Federation" Version="8.0.0" />
   </ItemGroup>
   <ItemGroup>
-    <ProjectReference Include="..\WeSay.Data\WeSay.Data.csproj">
-      <Project>{600D0FD4-D189-41A0-9BC5-FC79AD2CF1CD}</Project>
-      <Name>WeSay.Data</Name>
-    </ProjectReference>
+    <Compile Remove="KeyToEntryIdInitializer.cs" />
+    <Compile Remove="LexEntryFinder.cs" />
+    <Compile Remove="SemanticDomainQuery.cs" />
   </ItemGroup>
-  <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it.
-	   Other similar extension points exist, see Microsoft.Common.targets.
-  <Target Name="BeforeBuild">
-  </Target>
-  <Target Name="AfterBuild">
-  </Target>
-  -->
   <PropertyGroup>
-    <ProjectGuid>{5F61C809-B6C0-4567-9603-B2198E1AD038}</ProjectGuid>
     <RootNamespace>WeSay.LexicalModel</RootNamespace>
   </PropertyGroup>
-  <Import Project="..\..\packages\NDesk.DBus.0.15.0\build\NDesk.DBus.targets" Condition="Exists('..\..\packages\NDesk.DBus.0.15.0\build\NDesk.DBus.targets')" />
-  <Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
-    <PropertyGroup>
-      <ErrorText>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}.</ErrorText>
-    </PropertyGroup>
-    <Error Condition="!Exists('..\..\packages\NDesk.DBus.0.15.0\build\NDesk.DBus.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\NDesk.DBus.0.15.0\build\NDesk.DBus.targets'))" />
-    <Error Condition="!Exists('..\..\packages\Icu4c.Win.Min.59.1.7\build\Icu4c.Win.Min.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\Icu4c.Win.Min.59.1.7\build\Icu4c.Win.Min.targets'))" />
-    <Error Condition="!Exists('..\..\packages\SIL.Chorus.Mercurial.3.0.3\build\SIL.Chorus.Mercurial.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\SIL.Chorus.Mercurial.3.0.3\build\SIL.Chorus.Mercurial.targets'))" />
-  </Target>
-  <Import Project="..\..\packages\Icu4c.Win.Min.59.1.7\build\Icu4c.Win.Min.targets" Condition="Exists('..\..\packages\Icu4c.Win.Min.59.1.7\build\Icu4c.Win.Min.targets')" />
-  <Import Project="..\..\packages\SIL.Chorus.Mercurial.3.0.3\build\SIL.Chorus.Mercurial.targets" Condition="Exists('..\..\packages\SIL.Chorus.Mercurial.3.0.3\build\SIL.Chorus.Mercurial.targets')" />
 </Project>
\ No newline at end of file
diff --git a/src/LexicalModel/Properties/AssemblyInfo.cs b/src/LexicalModel/Properties/AssemblyInfo.cs
deleted file mode 100644
index 96339a7bb..000000000
--- a/src/LexicalModel/Properties/AssemblyInfo.cs
+++ /dev/null
@@ -1,44 +0,0 @@
-using System;
-using System.Reflection;
-using System.Runtime.CompilerServices;
-using System.Runtime.InteropServices;
-using System.Security.Permissions;
-
-// 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("LexicalModel")]
-[assembly: AssemblyDescription("")]
-[assembly: AssemblyConfiguration("")]
-[assembly: AssemblyCompany("WeSay")]
-[assembly: AssemblyProduct("WeSay")]
-[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)]
-
-// The following GUID is for the ID of the typelib if this project is exposed to COM
-
-[assembly: Guid("ed11559b-b21b-4db2-8358-5b343da0db47")]
-
-// 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 Revision and Build Numbers
-// by using the '*' as shown below:
-
-[assembly: AssemblyVersion("1.9.0.10")]
-[assembly: AssemblyFileVersion("1.9.0.10")]
-[assembly: CLSCompliant(true)]
-[assembly: InternalsVisibleTo("LexicalModel.Tests")]
-[assembly: SecurityPermission(SecurityAction.RequestMinimum, Execution = true)]
\ No newline at end of file
diff --git a/src/LexicalModel/packages.config b/src/LexicalModel/packages.config
deleted file mode 100644
index a8089fbce..000000000
--- a/src/LexicalModel/packages.config
+++ /dev/null
@@ -1,32 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<packages>
-  <package id="Autofac" version="4.1.1" targetFramework="net461" />
-  <package id="icu.net" version="2.7.1" targetFramework="net461" />
-  <package id="Icu4c.Win.Min" version="59.1.7" targetFramework="net461" />
-  <package id="L10NSharp" version="5.0.0-beta0086" targetFramework="net461" />
-  <package id="Microsoft.Bcl.AsyncInterfaces" version="5.0.0" targetFramework="net461" />
-  <package id="Microsoft.DotNet.PlatformAbstractions" version="2.0.4" targetFramework="net461" />
-  <package id="Microsoft.Extensions.DependencyModel" version="2.0.4" targetFramework="net461" />
-  <package id="NDesk.DBus" version="0.15.0" targetFramework="net40-client" />
-  <package id="NetReflector" version="1.1.2009" requireReinstallation="true" />
-  <package id="Newtonsoft.Json" version="12.0.3" targetFramework="net461" />
-  <package id="RelaxNG" version="3.2.3" targetFramework="net461" />
-  <package id="SIL.Chorus.LibChorus" version="5.0.0-beta0017" targetFramework="net461" />
-  <package id="SIL.Chorus.Mercurial" version="3.0.3" targetFramework="net461" />
-  <package id="SIL.Core" version="9.0.0-beta0154" targetFramework="net461" />
-  <package id="SIL.Core.Desktop" version="9.0.0-beta0154" targetFramework="net461" />
-  <package id="SIL.DictionaryServices" version="9.0.0-beta0154" targetFramework="net461" />
-  <package id="SIL.Lift" version="9.0.0-beta0154" targetFramework="net461" />
-  <package id="SIL.WritingSystems" version="9.0.0-beta0154" targetFramework="net461" />
-  <package id="Spart" version="1.0.0" targetFramework="net461" />
-  <package id="System.Buffers" version="4.5.1" targetFramework="net461" />
-  <package id="System.Diagnostics.DiagnosticSource" version="4.7.1" targetFramework="net461" />
-  <package id="System.IO.FileSystem.AccessControl" version="4.7.0" targetFramework="net461" />
-  <package id="System.Memory" version="4.5.4" targetFramework="net461" />
-  <package id="System.Numerics.Vectors" version="4.5.0" targetFramework="net461" />
-  <package id="System.Runtime.CompilerServices.Unsafe" version="4.5.3" targetFramework="net461" />
-  <package id="System.Security.AccessControl" version="4.7.0" targetFramework="net461" />
-  <package id="System.Security.Principal.Windows" version="4.7.0" targetFramework="net461" />
-  <package id="System.Threading.Tasks.Extensions" version="4.5.4" targetFramework="net461" />
-  <package id="System.ValueTuple" version="4.5.0" targetFramework="net461" />
-</packages>
\ No newline at end of file
diff --git a/src/LexicalTools.Tests/LexicalTools.Tests.csproj b/src/LexicalTools.Tests/LexicalTools.Tests.csproj
index a23630356..d9d0e2639 100755
--- a/src/LexicalTools.Tests/LexicalTools.Tests.csproj
+++ b/src/LexicalTools.Tests/LexicalTools.Tests.csproj
@@ -1,272 +1,65 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="12.0">
-  <Import Project="..\..\packages\NUnit.3.13.1\build\NUnit.props" Condition="Exists('..\..\packages\NUnit.3.13.1\build\NUnit.props')" />
+<Project Sdk="Microsoft.NET.Sdk">
   <PropertyGroup>
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
-    <ProductVersion>9.0.21022</ProductVersion>
-    <SchemaVersion>2.0</SchemaVersion>
-    <ProjectGuid>{9936180C-90A7-467C-B761-EC184EFE1F9F}</ProjectGuid>
+    <TargetFramework>net8.0-windows</TargetFramework>
     <OutputType>Library</OutputType>
-    <AppDesignerFolder>Properties</AppDesignerFolder>
     <RootNamespace>WeSay.LexicalTools.Tests</RootNamespace>
-    <AssemblyName>LexicalTools.Tests</AssemblyName>
     <AppConfig>..\AppForTestsSTA.config</AppConfig>
-    <FileUpgradeFlags>
-    </FileUpgradeFlags>
-    <UpgradeBackupLocation>
-    </UpgradeBackupLocation>
-    <OldToolsVersion>3.5</OldToolsVersion>
-    <TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion>
-    <TargetFrameworkProfile />
-    <NuGetPackageImportStamp>
-    </NuGetPackageImportStamp>
+    <GenerateAssemblyInfo>false</GenerateAssemblyInfo>
+    <UseWindowsForms>true</UseWindowsForms>
+    <ImportWindowsDesktopTargets>true</ImportWindowsDesktopTargets>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
-    <DebugSymbols>true</DebugSymbols>
-    <DebugType>full</DebugType>
-    <Optimize>false</Optimize>
     <OutputPath>..\..\output\Debug\</OutputPath>
-    <DefineConstants>DEBUG;TRACE</DefineConstants>
-    <ErrorReport>prompt</ErrorReport>
-    <WarningLevel>4</WarningLevel>
     <OutputType>Library</OutputType>
-    <AssemblyName>LexicalTools.Tests</AssemblyName>
     <RootNamespace>WeSay.LexicalTools.Tests</RootNamespace>
-    <AllowUnsafeBlocks>false</AllowUnsafeBlocks>
     <CheckForOverflowUnderflow>true</CheckForOverflowUnderflow>
-    <PlatformTarget>x86</PlatformTarget>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
-    <DebugType>pdbonly</DebugType>
-    <Optimize>true</Optimize>
     <OutputPath>..\..\output\Release\</OutputPath>
-    <DefineConstants>TRACE</DefineConstants>
-    <ErrorReport>prompt</ErrorReport>
-    <WarningLevel>4</WarningLevel>
     <OutputType>Library</OutputType>
-    <AssemblyName>LexicalTools.Tests</AssemblyName>
     <DebugSymbols>true</DebugSymbols>
     <RootNamespace>WeSay.LexicalTools.Tests</RootNamespace>
-    <AllowUnsafeBlocks>false</AllowUnsafeBlocks>
     <CheckForOverflowUnderflow>true</CheckForOverflowUnderflow>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
-    <DebugSymbols>true</DebugSymbols>
     <OutputPath>..\..\output\Debug\</OutputPath>
-    <DefineConstants>DEBUG;TRACE</DefineConstants>
     <CheckForOverflowUnderflow>true</CheckForOverflowUnderflow>
-    <DebugType>full</DebugType>
-    <PlatformTarget>x86</PlatformTarget>
-    <ErrorReport>prompt</ErrorReport>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
     <DebugSymbols>true</DebugSymbols>
     <OutputPath>..\..\output\Release\</OutputPath>
-    <DefineConstants>TRACE</DefineConstants>
     <CheckForOverflowUnderflow>true</CheckForOverflowUnderflow>
-    <Optimize>true</Optimize>
-    <DebugType>pdbonly</DebugType>
-    <PlatformTarget>x86</PlatformTarget>
-    <ErrorReport>prompt</ErrorReport>
   </PropertyGroup>
   <PropertyGroup>
     <AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
   </PropertyGroup>
   <ItemGroup>
-    <Reference Include="Autofac, Version=4.1.1.0, Culture=neutral, PublicKeyToken=17863af14b0044da, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\Autofac.4.1.1\lib\net45\Autofac.dll</HintPath>
-    </Reference>
-    <Reference Include="Chorus, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
-      <SpecificVersion>False</SpecificVersion>
-      <ExecutableExtension>.exe</ExecutableExtension>
-      <HintPath>..\..\packages\SIL.Chorus.App.5.0.0-beta0017\lib\net461\Chorus.exe</HintPath>
-    </Reference>
-    <Reference Include="Commons.Xml.Relaxng, Version=4.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\RelaxNG.3.2.3\lib\net40\Commons.Xml.Relaxng.dll</HintPath>
-    </Reference>
-    <Reference Include="DialogAdapters, Version=0.1.9.0, Culture=neutral, PublicKeyToken=7dc842182b0626dc, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\DialogAdapters.Gtk2.0.1.9\lib\net461\DialogAdapters.dll</HintPath>
-    </Reference>
-    <Reference Include="Enchant.Net, Version=1.4.0.0, Culture=neutral, PublicKeyToken=ae135aeb3d479ab9, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\Enchant.Net.1.4.2\lib\net461\Enchant.Net.dll</HintPath>
-    </Reference>
-    <Reference Include="ibusdotnet, Version=2.0.0.0, Culture=neutral, PublicKeyToken=c9ab93f7b23223fb, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\ibusdotnet.2.0.3\lib\net461\ibusdotnet.dll</HintPath>
-    </Reference>
-    <Reference Include="icu.net, Version=2.7.0.0, Culture=neutral, PublicKeyToken=416fdd914afa6b66, processorArchitecture=MSIL">
-      <SpecificVersion>False</SpecificVersion>
-      <HintPath>..\..\packages\icu.net.2.7.1\lib\net451\icu.net.dll</HintPath>
-    </Reference>
-    <Reference Include="JetBrains.Annotations, Version=2021.2.0.0, Culture=neutral, PublicKeyToken=1010a0d8d6380325, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\JetBrains.Annotations.2021.2.0\lib\net20\JetBrains.Annotations.dll</HintPath>
-    </Reference>
-    <Reference Include="L10NSharp, Version=5.0.0.0, Culture=neutral, PublicKeyToken=fd0b3e309a5b7c28, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\L10NSharp.5.0.0-beta0086\lib\net461\L10NSharp.dll</HintPath>
-    </Reference>
-    <Reference Include="LibChorus, Version=5.0.0.0, Culture=neutral, PublicKeyToken=f1447bae1e63f485, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\SIL.Chorus.LibChorus.5.0.0-beta0017\lib\net461\LibChorus.dll</HintPath>
-    </Reference>
-    <Reference Include="Markdig.Signed, Version=0.22.0.0, Culture=neutral, PublicKeyToken=870da25a133885f8, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\Markdig.Signed.0.22.0\lib\net452\Markdig.Signed.dll</HintPath>
-    </Reference>
-    <Reference Include="Microsoft.Bcl.AsyncInterfaces, Version=5.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\Microsoft.Bcl.AsyncInterfaces.5.0.0\lib\net461\Microsoft.Bcl.AsyncInterfaces.dll</HintPath>
-    </Reference>
-    <Reference Include="Microsoft.DotNet.PlatformAbstractions, Version=2.0.4.0, Culture=neutral, PublicKeyToken=adb9793829ddae60, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\Microsoft.DotNet.PlatformAbstractions.2.0.4\lib\net45\Microsoft.DotNet.PlatformAbstractions.dll</HintPath>
-    </Reference>
-    <Reference Include="Microsoft.Extensions.DependencyModel, Version=2.0.4.0, Culture=neutral, PublicKeyToken=adb9793829ddae60, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\Microsoft.Extensions.DependencyModel.2.0.4\lib\net451\Microsoft.Extensions.DependencyModel.dll</HintPath>
-    </Reference>
-    <Reference Include="Microsoft.VisualBasic" />
-    <Reference Include="NDesk.DBus, Version=1.0.0.0, Culture=neutral, PublicKeyToken=f6716e4f9b2ed099, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\NDesk.DBus.0.15.0\lib\NDesk.DBus.dll</HintPath>
-    </Reference>
-    <Reference Include="Newtonsoft.Json, Version=12.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
-      <SpecificVersion>False</SpecificVersion>
-      <HintPath>..\..\packages\Newtonsoft.Json.12.0.3\lib\net45\Newtonsoft.Json.dll</HintPath>
-    </Reference>
-    <Reference Include="nunit.framework, Version=3.13.1.0, Culture=neutral, PublicKeyToken=2638cd05610744eb, processorArchitecture=MSIL">
-      <SpecificVersion>False</SpecificVersion>
-      <HintPath>..\..\packages\NUnit.3.13.1\lib\net45\nunit.framework.dll</HintPath>
-    </Reference>
-    <Reference Include="SIL.Core, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\SIL.Core.9.0.0-beta0154\lib\net461\SIL.Core.dll</HintPath>
-    </Reference>
-    <Reference Include="SIL.Core.Desktop, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\SIL.Core.Desktop.9.0.0-beta0154\lib\net461\SIL.Core.Desktop.dll</HintPath>
-    </Reference>
-    <Reference Include="SIL.DictionaryServices, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\SIL.DictionaryServices.9.0.0-beta0154\lib\net461\SIL.DictionaryServices.dll</HintPath>
-    </Reference>
-    <Reference Include="SIL.Lift, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\SIL.Lift.9.0.0-beta0154\lib\net461\SIL.Lift.dll</HintPath>
-    </Reference>
-    <Reference Include="SIL.TestUtilities, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\SIL.TestUtilities.9.0.0-beta0154\lib\net461\SIL.TestUtilities.dll</HintPath>
-    </Reference>
-    <Reference Include="SIL.Windows.Forms, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\SIL.Windows.Forms.9.0.0-beta0154\lib\net461\SIL.Windows.Forms.dll</HintPath>
-    </Reference>
-    <Reference Include="SIL.Windows.Forms.Keyboarding, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\SIL.Windows.Forms.Keyboarding.9.0.0-beta0154\lib\net461\SIL.Windows.Forms.Keyboarding.dll</HintPath>
-    </Reference>
-    <Reference Include="SIL.WritingSystems, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\SIL.WritingSystems.9.0.0-beta0154\lib\net461\SIL.WritingSystems.dll</HintPath>
-    </Reference>
-    <Reference Include="Spart, Version=1.0.0.0, Culture=neutral, PublicKeyToken=14d24e064e474331, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\Spart.1.0.0\lib\net461\Spart.dll</HintPath>
-    </Reference>
-    <Reference Include="System" />
-    <Reference Include="System.Buffers, Version=4.0.3.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\System.Buffers.4.5.1\lib\net461\System.Buffers.dll</HintPath>
-    </Reference>
-    <Reference Include="System.ComponentModel.Composition" />
-    <Reference Include="System.Configuration" />
-    <Reference Include="System.Core">
-      <RequiredTargetFramework>3.5</RequiredTargetFramework>
-    </Reference>
-    <Reference Include="System.Data" />
-    <Reference Include="System.Drawing" />
-    <Reference Include="System.IO.FileSystem.AccessControl, Version=4.0.5.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\System.IO.FileSystem.AccessControl.4.7.0\lib\net461\System.IO.FileSystem.AccessControl.dll</HintPath>
-    </Reference>
-    <Reference Include="System.Management" />
-    <Reference Include="System.Memory, Version=4.0.1.1, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\System.Memory.4.5.4\lib\net461\System.Memory.dll</HintPath>
-    </Reference>
-    <Reference Include="System.Numerics" />
-    <Reference Include="System.Numerics.Vectors, Version=4.1.4.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\System.Numerics.Vectors.4.5.0\lib\net46\System.Numerics.Vectors.dll</HintPath>
-    </Reference>
-    <Reference Include="System.Runtime.CompilerServices.Unsafe, Version=4.0.4.1, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\System.Runtime.CompilerServices.Unsafe.4.5.3\lib\net461\System.Runtime.CompilerServices.Unsafe.dll</HintPath>
-    </Reference>
-    <Reference Include="System.Security" />
-    <Reference Include="System.Security.AccessControl, Version=4.1.3.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\System.Security.AccessControl.4.7.0\lib\net461\System.Security.AccessControl.dll</HintPath>
-    </Reference>
-    <Reference Include="System.Security.Principal.Windows, Version=4.1.3.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\System.Security.Principal.Windows.4.7.0\lib\net461\System.Security.Principal.Windows.dll</HintPath>
-    </Reference>
-    <Reference Include="System.ServiceModel" />
-    <Reference Include="System.Threading.Tasks.Extensions, Version=4.2.0.1, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\System.Threading.Tasks.Extensions.4.5.4\lib\net461\System.Threading.Tasks.Extensions.dll</HintPath>
-    </Reference>
-    <Reference Include="System.ValueTuple, Version=4.0.3.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\System.ValueTuple.4.5.0\lib\net461\System.ValueTuple.dll</HintPath>
-    </Reference>
-    <Reference Include="System.Web" />
-    <Reference Include="System.Windows.Forms" />
-    <Reference Include="System.Xml" />
-    <Reference Include="TagLibSharp, Version=2.2.0.0, Culture=neutral, PublicKeyToken=db62eba44689b5b0, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\TagLibSharp.2.2.0\lib\net45\TagLibSharp.dll</HintPath>
-    </Reference>
-  </ItemGroup>
-  <ItemGroup>
-    <Compile Include="AddPicturesTasksTests.cs" />
-    <Compile Include="HtmlRendererTests.cs" />
-    <Compile Include="TestConfirmDelete.cs" />
-    <Compile Include="DashBoardTests.cs" />
-    <Compile Include="DashTests.cs" />
-    <Compile Include="GatherBySemanticDomainTaskTests.cs" />
-    <Compile Include="MissingEntryRelationFieldFilterTests.cs" />
-    <Compile Include="MissingInfoconfigurationTests.cs" />
-    <Compile Include="MissingLexicalFormFilterTests.cs" />
-    <Compile Include="MissingExampleTranslationFilterTests.cs" />
-    <Compile Include="MissingCustomFieldFilterTests.cs" />
-    <Compile Include="DictionaryTaskTests.cs" />
-    <Compile Include="GatherWordListTaskTests.cs" />
-    <Compile Include="MissingInfoControlTests.cs" />
-    <Compile Include="MissingInfoTaskTests.cs" />
-    <Compile Include="MissingExampleSentenceFilterTests.cs" />
-    <Compile Include="MissingMeaningFilterTests.cs" />
-    <Compile Include="RelationControllerTests.cs" />
-    <Compile Include="TaskBaseTests.cs" />
-    <Compile Include="EntryViewControlTests.cs" />
-    <Compile Include="LayouterTests.cs" />
-    <Compile Include="TaskMemoryRepositoryTests.cs" />
-    <Compile Include="TestEntryView.cs" />
-    <Compile Include="Properties\AssemblyInfo.cs" />
-    <Compile Include="WordListCatalogTests.cs" />
+    <ProjectReference Include="..\LexicalModel.Tests\LexicalModel.Tests.csproj" />
+    <ProjectReference Include="..\LexicalModel\LexicalModel.csproj" />
+    <ProjectReference Include="..\LexicalTools\LexicalTools.csproj" />
+    <ProjectReference Include="..\WeSay.Data\WeSay.Data.csproj" />
+    <ProjectReference Include="..\WeSay.Foundation\WeSay.Foundation.csproj" />
+    <ProjectReference Include="..\WeSay.Project\WeSay.Project.csproj" />
+    <ProjectReference Include="..\WeSay.TestUtilities\WeSay.TestUtilities.csproj" />
+    <ProjectReference Include="..\WeSay.UI\WeSay.UI.csproj" />
   </ItemGroup>
   <ItemGroup>
-    <ProjectReference Include="..\LexicalModel.Tests\LexicalModel.Tests.csproj">
-      <Project>{123D695C-0D5D-46E5-893F-39EC4E0B01B8}</Project>
-      <Name>LexicalModel.Tests</Name>
-    </ProjectReference>
-    <ProjectReference Include="..\LexicalModel\LexicalModel.csproj">
-      <Project>{5F61C809-B6C0-4567-9603-B2198E1AD038}</Project>
-      <Name>LexicalModel</Name>
-    </ProjectReference>
-    <ProjectReference Include="..\LexicalTools\LexicalTools.csproj">
-      <Project>{87AF0B02-2983-486D-857F-D1859535C234}</Project>
-      <Name>LexicalTools</Name>
-    </ProjectReference>
-    <ProjectReference Include="..\WeSay.Data\WeSay.Data.csproj">
-      <Project>{600D0FD4-D189-41A0-9BC5-FC79AD2CF1CD}</Project>
-      <Name>WeSay.Data</Name>
-    </ProjectReference>
-    <ProjectReference Include="..\WeSay.Foundation\WeSay.Foundation.csproj">
-      <Project>{F12EB680-0990-4900-B77E-0FBF2E28A815}</Project>
-      <Name>WeSay.Foundation</Name>
-    </ProjectReference>
-    <ProjectReference Include="..\WeSay.Project\WeSay.Project.csproj">
-      <Project>{5CFD0BB3-5B2A-4911-B220-9C2286151BF0}</Project>
-      <Name>WeSay.Project</Name>
-    </ProjectReference>
-    <ProjectReference Include="..\WeSay.TestUtilities\WeSay.TestUtilities.csproj">
-      <Project>{FEC3014D-0067-4D59-A838-3B046EC3C352}</Project>
-      <Name>WeSay.TestUtilities</Name>
-    </ProjectReference>
-    <ProjectReference Include="..\WeSay.UI\WeSay.UI.csproj">
-      <Project>{AC8F284C-7B34-4AC9-A7DE-FAF765456DFF}</Project>
-      <Name>WeSay.UI</Name>
-    </ProjectReference>
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="packages.config" />
+    <PackageReference Include="Microsoft.VisualBasic" Version="10.3.0" />
+    <PackageReference Include="System.ComponentModel.Composition" Version="8.0.0" />
+    <PackageReference Include="System.Management" Version="8.0.0" />
+    <PackageReference Include="Microsoft.AspNetCore.SystemWebAdapters" Version="1.3.0" />
+    <PackageReference Include="Microsoft.Bcl.AsyncInterfaces" Version="8.0.0" />
+    <PackageReference Include="Microsoft.Extensions.DependencyModel" Version="8.0.0" />
+    <PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
+    <PackageReference Include="System.Runtime.CompilerServices.Unsafe" Version="6.0.0" />
+    <PackageReference Include="System.Security.AccessControl" Version="6.0.0" />
+    <PackageReference Include="System.Configuration.ConfigurationManager" Version="8.0.0" />
+    <PackageReference Include="System.ServiceModel.Primitives" Version="8.0.0" />
+    <PackageReference Include="System.ServiceModel.Http" Version="8.0.0" />
+    <PackageReference Include="System.ServiceModel.Duplex" Version="6.0.0" />
+    <PackageReference Include="System.ServiceModel.NetTcp" Version="8.0.0" />
+    <PackageReference Include="System.ServiceModel.Security" Version="6.0.0" />
+    <PackageReference Include="System.ServiceModel.Federation" Version="8.0.0" />
   </ItemGroup>
   <ItemGroup>
     <Service Include="{82A7F48D-3B50-4B1E-B82E-3ADA8210C358}" />
@@ -274,30 +67,24 @@
   <ItemGroup>
     <None Include="icu4c.readme.txt" />
   </ItemGroup>
-  <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
-  <Import Project="..\..\packages\NDesk.DBus.0.15.0\build\NDesk.DBus.targets" Condition="Exists('..\..\packages\NDesk.DBus.0.15.0\build\NDesk.DBus.targets')" />
-  <Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
-    <PropertyGroup>
-      <ErrorText>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}.</ErrorText>
-    </PropertyGroup>
-    <Error Condition="!Exists('..\..\packages\NDesk.DBus.0.15.0\build\NDesk.DBus.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\NDesk.DBus.0.15.0\build\NDesk.DBus.targets'))" />
-    <Error Condition="!Exists('..\..\packages\Mono.Posix.5.4.0.201\build\net45\Mono.Posix.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\Mono.Posix.5.4.0.201\build\net45\Mono.Posix.targets'))" />
-    <Error Condition="!Exists('..\..\packages\NUnit.3.13.1\build\NUnit.props')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\NUnit.3.13.1\build\NUnit.props'))" />
-    <Error Condition="!Exists('..\..\packages\Icu4c.Win.Min.59.1.7\build\Icu4c.Win.Min.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\Icu4c.Win.Min.59.1.7\build\Icu4c.Win.Min.targets'))" />
-    <Error Condition="!Exists('..\..\packages\SIL.Chorus.Mercurial.3.0.3\build\SIL.Chorus.Mercurial.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\SIL.Chorus.Mercurial.3.0.3\build\SIL.Chorus.Mercurial.targets'))" />
-    <Error Condition="!Exists('..\..\packages\SIL.Windows.Forms.Keyboarding.9.0.0-beta0154\build\SIL.Windows.Forms.Keyboarding.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\SIL.Windows.Forms.Keyboarding.9.0.0-beta0154\build\SIL.Windows.Forms.Keyboarding.targets'))" />
-    <Error Condition="!Exists('..\..\packages\SIL.Windows.Forms.9.0.0-beta0154\build\SIL.Windows.Forms.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\SIL.Windows.Forms.9.0.0-beta0154\build\SIL.Windows.Forms.targets'))" />
-  </Target>
-  <Import Project="..\..\packages\Mono.Posix.5.4.0.201\build\net45\Mono.Posix.targets" Condition="Exists('..\..\packages\Mono.Posix.5.4.0.201\build\net45\Mono.Posix.targets')" />
-  <Import Project="..\..\packages\Icu4c.Win.Min.59.1.7\build\Icu4c.Win.Min.targets" Condition="Exists('..\..\packages\Icu4c.Win.Min.59.1.7\build\Icu4c.Win.Min.targets')" />
-  <Import Project="..\..\packages\SIL.Chorus.Mercurial.3.0.3\build\SIL.Chorus.Mercurial.targets" Condition="Exists('..\..\packages\SIL.Chorus.Mercurial.3.0.3\build\SIL.Chorus.Mercurial.targets')" />
-  <Import Project="..\..\packages\SIL.Windows.Forms.Keyboarding.9.0.0-beta0154\build\SIL.Windows.Forms.Keyboarding.targets" Condition="Exists('..\..\packages\SIL.Windows.Forms.Keyboarding.9.0.0-beta0154\build\SIL.Windows.Forms.Keyboarding.targets')" />
-  <Import Project="..\..\packages\SIL.Windows.Forms.9.0.0-beta0154\build\SIL.Windows.Forms.targets" Condition="Exists('..\..\packages\SIL.Windows.Forms.9.0.0-beta0154\build\SIL.Windows.Forms.targets')" />
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it.
-	   Other similar extension points exist, see Microsoft.Common.targets.
-  <Target Name="BeforeBuild">
-  </Target>
-  <Target Name="AfterBuild">
-  </Target>
-  -->
+  <ItemGroup>
+    <PackageReference Include="Autofac" Version="4.9.4" />
+    <PackageReference Include="ibusdotnet" Version="2.0.3" />
+    <PackageReference Include="icu.net" Version="2.8.1" />
+    <PackageReference Include="Icu4c.Win.Min" Version="59.1.7" />
+    <PackageReference Include="JetBrains.Annotations" Version="2021.2.0" />
+    <PackageReference Include="Microsoft.DotNet.PlatformAbstractions" Version="2.0.4" />
+    <PackageReference Include="Mono.Posix" Version="5.4.0.201" />
+    <PackageReference Include="NDesk.DBus" Version="0.15.0" />
+    <PackageReference Include="NUnit" Version="3.13.3" />
+    <PackageReference Include="RelaxNG" Version="3.2.3" />
+    <PackageReference Include="SIL.Chorus.LibChorus" Version="5.1.0" />
+    <PackageReference Include="SIL.Chorus.Mercurial" Version="3.0.3.6" />
+    <PackageReference Include="SIL.Core" Version="13.0.1" />
+    <PackageReference Include="SIL.Core.Desktop" Version="13.0.1" />
+    <PackageReference Include="SIL.Lift" Version="13.0.1" />
+    <PackageReference Include="SIL.TestUtilities" Version="13.0.1" />
+    <PackageReference Include="SIL.WritingSystems" Version="13.0.1" />
+    <PackageReference Include="Spart" Version="1.0.0" />
+  </ItemGroup>
 </Project>
\ No newline at end of file
diff --git a/src/LexicalTools.Tests/Properties/AssemblyInfo.cs b/src/LexicalTools.Tests/Properties/AssemblyInfo.cs
deleted file mode 100644
index 6ce6b515d..000000000
--- a/src/LexicalTools.Tests/Properties/AssemblyInfo.cs
+++ /dev/null
@@ -1,38 +0,0 @@
-using System.Reflection;
-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("LexicalTools.Tests")]
-[assembly: AssemblyDescription("")]
-[assembly: AssemblyConfiguration("")]
-[assembly: AssemblyCompany("WeSay")]
-[assembly: AssemblyProduct("WeSay.Tests")]
-[assembly: AssemblyCopyright("Copyright © WeSay 2006")]
-[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)]
-
-// The following GUID is for the ID of the typelib if this project is exposed to COM
-
-[assembly: Guid("188870c0-23e2-48a2-afda-51e69164d4ed")]
-
-// 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 Revision and Build Numbers
-// by using the '*' as shown below:
-
-[assembly: AssemblyVersion("1.9.0.10")]
-[assembly: AssemblyFileVersion("1.9.0.10")]
\ No newline at end of file
diff --git a/src/LexicalTools.Tests/packages.config b/src/LexicalTools.Tests/packages.config
deleted file mode 100644
index 928c08f7d..000000000
--- a/src/LexicalTools.Tests/packages.config
+++ /dev/null
@@ -1,41 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<packages>
-  <package id="Autofac" version="4.1.1" targetFramework="net461" />
-  <package id="DialogAdapters.Gtk2" version="0.1.9" targetFramework="net461" />
-  <package id="Enchant.Net" version="1.4.2" targetFramework="net461" />
-  <package id="ibusdotnet" version="2.0.3" targetFramework="net461" />
-  <package id="icu.net" version="2.7.1" targetFramework="net461" />
-  <package id="Icu4c.Win.Min" version="59.1.7" targetFramework="net461" />
-  <package id="JetBrains.Annotations" version="2021.2.0" targetFramework="net461" />
-  <package id="L10NSharp" version="5.0.0-beta0086" targetFramework="net461" />
-  <package id="Markdig.Signed" version="0.22.0" targetFramework="net461" />
-  <package id="Microsoft.Bcl.AsyncInterfaces" version="5.0.0" targetFramework="net461" />
-  <package id="Microsoft.DotNet.PlatformAbstractions" version="2.0.4" targetFramework="net461" />
-  <package id="Microsoft.Extensions.DependencyModel" version="2.0.4" targetFramework="net461" />
-  <package id="Mono.Posix" version="5.4.0.201" targetFramework="net461" />
-  <package id="NDesk.DBus" version="0.15.0" targetFramework="net461" />
-  <package id="Newtonsoft.Json" version="12.0.3" targetFramework="net461" />
-  <package id="NUnit" version="3.13.1" targetFramework="net461" />
-  <package id="RelaxNG" version="3.2.3" targetFramework="net461" />
-  <package id="SIL.Chorus.LibChorus" version="5.0.0-beta0017" targetFramework="net461" />
-  <package id="SIL.Chorus.Mercurial" version="3.0.3" targetFramework="net461" />
-  <package id="SIL.Core" version="9.0.0-beta0154" targetFramework="net461" />
-  <package id="SIL.Core.Desktop" version="9.0.0-beta0154" targetFramework="net461" />
-  <package id="SIL.DictionaryServices" version="9.0.0-beta0154" targetFramework="net461" />
-  <package id="SIL.Lift" version="9.0.0-beta0154" targetFramework="net461" />
-  <package id="SIL.TestUtilities" version="9.0.0-beta0154" targetFramework="net461" />
-  <package id="SIL.Windows.Forms" version="9.0.0-beta0154" targetFramework="net461" />
-  <package id="SIL.Windows.Forms.Keyboarding" version="9.0.0-beta0154" targetFramework="net461" />
-  <package id="SIL.WritingSystems" version="9.0.0-beta0154" targetFramework="net461" />
-  <package id="Spart" version="1.0.0" targetFramework="net461" />
-  <package id="System.Buffers" version="4.5.1" targetFramework="net461" />
-  <package id="System.IO.FileSystem.AccessControl" version="4.7.0" targetFramework="net461" />
-  <package id="System.Memory" version="4.5.4" targetFramework="net461" />
-  <package id="System.Numerics.Vectors" version="4.5.0" targetFramework="net461" />
-  <package id="System.Runtime.CompilerServices.Unsafe" version="4.5.3" targetFramework="net461" />
-  <package id="System.Security.AccessControl" version="4.7.0" targetFramework="net461" />
-  <package id="System.Security.Principal.Windows" version="4.7.0" targetFramework="net461" />
-  <package id="System.Threading.Tasks.Extensions" version="4.5.4" targetFramework="net461" />
-  <package id="System.ValueTuple" version="4.5.0" targetFramework="net461" />
-  <package id="TagLibSharp" version="2.2.0" targetFramework="net461" />
-</packages>
\ No newline at end of file
diff --git a/src/LexicalTools/Dashboard/Dash.cs b/src/LexicalTools/Dashboard/Dash.cs
index d4b577bc7..c0fb51269 100644
--- a/src/LexicalTools/Dashboard/Dash.cs
+++ b/src/LexicalTools/Dashboard/Dash.cs
@@ -55,16 +55,22 @@ public Dash(LexEntryRepository RecordListManager, ICurrentWorkTask currentWorkTa
 
 		private void InitializeContextMenu()
 		{
-			ContextMenu = new ContextMenu();
-			ContextMenu.MenuItems.Add("Configure this project...", OnRunConfigureTool);
-			ContextMenu.MenuItems.Add("Use projector-friendly colors", OnToggleColorScheme);
-			ContextMenu.MenuItems[1].Checked = DisplaySettings.Default.UsingProjectorScheme;
+			ContextMenuStrip = new ContextMenuStrip();
+			ContextMenuStrip.Items.Add("Configure this project...", null, OnRunConfigureTool);
+			var toolStripMenuItem = new ToolStripMenuItem
+			{
+				Text = "Use projector-friendly colors",
+			};
+			toolStripMenuItem.Click +=  OnToggleColorScheme;
+			ContextMenuStrip.Items.Add(toolStripMenuItem);
+			toolStripMenuItem.Checked = DisplaySettings.Default.UsingProjectorScheme;
 		}
 
 		private void OnToggleColorScheme(object sender, EventArgs e)
 		{
 			DisplaySettings.Default.ToggleColorScheme();
-			ContextMenu.MenuItems[1].Checked = DisplaySettings.Default.UsingProjectorScheme;
+			var menuItem = (ToolStripMenuItem)sender;
+			menuItem.Checked = DisplaySettings.Default.UsingProjectorScheme;
 			Invalidate(true);
 		}
 
diff --git a/src/LexicalTools/DictionaryBrowseAndEdit/DictionaryControl.cs b/src/LexicalTools/DictionaryBrowseAndEdit/DictionaryControl.cs
index 88e61b551..b44e304f2 100644
--- a/src/LexicalTools/DictionaryBrowseAndEdit/DictionaryControl.cs
+++ b/src/LexicalTools/DictionaryBrowseAndEdit/DictionaryControl.cs
@@ -13,6 +13,7 @@
 using System.ComponentModel;
 using System.Diagnostics;
 using System.Drawing;
+using System.Linq;
 using System.Text.RegularExpressions;
 using System.Windows.Forms;
 using WeSay.LexicalModel;
@@ -202,18 +203,18 @@ private void RegisterFieldWithPicker(string fieldName)
 
 		private void AddWritingSystemToPicker(WritingSystemDefinition writingSystem, Field field)
 		{
-			var item = new MenuItem(
-				writingSystem.Abbreviation + "\t" + StringCatalog.Get(field.DisplayName),
-				OnWritingSystemMenuItemClicked
+			var item = new ToolStripMenuItem(
+				writingSystem.Abbreviation + "\t" + StringCatalog.Get(field.DisplayName)
 			);
-			item.RadioCheck = true;
+			item.Click += OnWritingSystemMenuItemClicked;
 			item.Tag = writingSystem;
-			SearchModeMenu.MenuItems.Add(item);
+			//todo radio button check removed
+			SearchModeMenu.Items.Add(item);
 		}
 
 		private bool WritingSystemExistsInPicker(WritingSystemDefinition writingSystem)
 		{
-			foreach (MenuItem item in SearchModeMenu.MenuItems)
+			foreach (var item in SearchModeMenu.Items.OfType<ToolStripItem>())
 			{
 				if (writingSystem.LanguageTag == ((WritingSystemDefinition)item.Tag).LanguageTag)
 				{
@@ -223,7 +224,7 @@ private bool WritingSystemExistsInPicker(WritingSystemDefinition writingSystem)
 			return false;
 		}
 
-		protected ContextMenu SearchModeMenu
+		protected ContextMenuStrip SearchModeMenu
 		{
 			get { return _searchTextBoxControl.SearchModeMenu; }
 		}
@@ -365,7 +366,8 @@ private static IEnumerable FindClosestAndNextClosestAndPrefixedForms(string text
 
 		private void OnWritingSystemMenuItemClicked(object sender, EventArgs e)
 		{
-			var item = (MenuItem)sender;
+			// TODO MenuItem is no longer supported. Use ToolStripMenuItem instead. For more details see https://docs.microsoft.com/en-us/dotnet/core/compatibility/winforms#removed-controls
+			var item = (ToolStripItem)sender;
 			if (_listWritingSystem != item.Tag)
 			{
 				SetListWritingSystem((WritingSystemDefinition)item.Tag);
diff --git a/src/LexicalTools/DictionaryBrowseAndEdit/SearchBoxControl.cs b/src/LexicalTools/DictionaryBrowseAndEdit/SearchBoxControl.cs
index 68b6aa503..80ce243ff 100644
--- a/src/LexicalTools/DictionaryBrowseAndEdit/SearchBoxControl.cs
+++ b/src/LexicalTools/DictionaryBrowseAndEdit/SearchBoxControl.cs
@@ -2,6 +2,7 @@
 using System;
 using System.ComponentModel;
 using System.Drawing;
+using System.Linq;
 using System.Windows.Forms;
 using WeSay.LexicalTools.Properties;
 using WeSay.UI;
@@ -11,13 +12,13 @@ namespace WeSay.LexicalTools.DictionaryBrowseAndEdit
 {
 	public partial class SearchBoxControl : UserControl
 	{
-		private readonly ContextMenu _searchModeMenu;
+		private readonly ContextMenuStrip _searchModeMenu;
 
 		public SearchBoxControl()
 		{
 			InitializeComponent();
 			BackColor = Color.White;
-			_searchModeMenu = new ContextMenu();
+			_searchModeMenu = new ContextMenuStrip();
 			_selectedWritingSystemLabel.ForeColor = DisplaySettings.Default.WritingSystemLabelColor;
 			_writingSystemChooser.Image = Resources.Expand.GetThumbnailImage(6,
 																			 6,
@@ -41,7 +42,7 @@ public IWeSayAutoCompleteTextBox TextBox
 
 		[Browsable(false)]
 		[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
-		public ContextMenu SearchModeMenu
+		public ContextMenuStrip SearchModeMenu
 		{
 			get { return _searchModeMenu; }
 		}
@@ -112,7 +113,7 @@ private Size GetAbbreviationSize()
 
 		private void OnWritingSystemChooser_Click(object sender, EventArgs e)
 		{
-			foreach (MenuItem menuItem in _searchModeMenu.MenuItems)
+			foreach (var menuItem in _searchModeMenu.Items.OfType<ToolStripMenuItem>())
 			{
 				menuItem.Checked = (ListWritingSystem == menuItem.Tag);
 			}
diff --git a/src/LexicalTools/LexicalTools.csproj b/src/LexicalTools/LexicalTools.csproj
index 374caea54..5429a4231 100755
--- a/src/LexicalTools/LexicalTools.csproj
+++ b/src/LexicalTools/LexicalTools.csproj
@@ -1,469 +1,135 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="12.0">
+<Project Sdk="Microsoft.NET.Sdk">
   <PropertyGroup>
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
-    <ProductVersion>9.0.21022</ProductVersion>
-    <SchemaVersion>2.0</SchemaVersion>
-    <ProjectGuid>{87AF0B02-2983-486D-857F-D1859535C234}</ProjectGuid>
+    <TargetFramework>net8.0-windows</TargetFramework>
     <OutputType>Library</OutputType>
-    <AppDesignerFolder>Properties</AppDesignerFolder>
     <RootNamespace>WeSay.LexicalTools</RootNamespace>
-    <AssemblyName>LexicalTools</AssemblyName>
-    <FileUpgradeFlags>
-    </FileUpgradeFlags>
-    <UpgradeBackupLocation>
-    </UpgradeBackupLocation>
-    <OldToolsVersion>3.5</OldToolsVersion>
-    <TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion>
-    <TargetFrameworkProfile />
-    <NuGetPackageImportStamp>
-    </NuGetPackageImportStamp>
+    <GenerateAssemblyInfo>false</GenerateAssemblyInfo>
+    <UseWindowsForms>true</UseWindowsForms>
+    <ImportWindowsDesktopTargets>true</ImportWindowsDesktopTargets>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
-    <DebugSymbols>true</DebugSymbols>
-    <DebugType>full</DebugType>
-    <Optimize>false</Optimize>
     <OutputPath>..\..\output\Debug\</OutputPath>
-    <DefineConstants>DEBUG;TRACE</DefineConstants>
-    <ErrorReport>prompt</ErrorReport>
-    <WarningLevel>4</WarningLevel>
     <OutputType>Library</OutputType>
-    <AssemblyName>LexicalTools</AssemblyName>
     <RootNamespace>WeSay.LexicalTools</RootNamespace>
-    <AllowUnsafeBlocks>false</AllowUnsafeBlocks>
     <CheckForOverflowUnderflow>true</CheckForOverflowUnderflow>
     <PlatformTarget>x86</PlatformTarget>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
-    <DebugType>pdbonly</DebugType>
-    <Optimize>true</Optimize>
     <OutputPath>..\..\output\Release\</OutputPath>
-    <DefineConstants>TRACE</DefineConstants>
-    <ErrorReport>prompt</ErrorReport>
-    <WarningLevel>4</WarningLevel>
     <OutputType>Library</OutputType>
-    <AssemblyName>LexicalTools</AssemblyName>
     <DebugSymbols>true</DebugSymbols>
     <RootNamespace>WeSay.LexicalTools</RootNamespace>
-    <AllowUnsafeBlocks>false</AllowUnsafeBlocks>
     <CheckForOverflowUnderflow>true</CheckForOverflowUnderflow>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
-    <DebugSymbols>true</DebugSymbols>
     <OutputPath>..\..\output\Debug\</OutputPath>
-    <DefineConstants>DEBUG;TRACE</DefineConstants>
     <CheckForOverflowUnderflow>true</CheckForOverflowUnderflow>
-    <DebugType>full</DebugType>
-    <PlatformTarget>x86</PlatformTarget>
-    <ErrorReport>prompt</ErrorReport>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
     <DebugSymbols>true</DebugSymbols>
     <OutputPath>..\..\output\Release\</OutputPath>
-    <DefineConstants>TRACE</DefineConstants>
     <CheckForOverflowUnderflow>true</CheckForOverflowUnderflow>
-    <Optimize>true</Optimize>
-    <DebugType>pdbonly</DebugType>
-    <PlatformTarget>x86</PlatformTarget>
-    <ErrorReport>prompt</ErrorReport>
   </PropertyGroup>
   <ItemGroup>
-    <Reference Include="Autofac, Version=4.1.1.0, Culture=neutral, PublicKeyToken=17863af14b0044da, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\Autofac.4.1.1\lib\net45\Autofac.dll</HintPath>
-    </Reference>
-    <Reference Include="Chorus, Version=3.1.0.0, Culture=neutral, PublicKeyToken=f1447bae1e63f485, processorArchitecture=MSIL">
-      <SpecificVersion>False</SpecificVersion>
-      <HintPath>..\..\packages\SIL.Chorus.App.5.0.0-beta0017\lib\net461\Chorus.exe</HintPath>
-    </Reference>
-    <Reference Include="Commons.Xml.Relaxng, Version=4.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\RelaxNG.3.2.3\lib\net40\Commons.Xml.Relaxng.dll</HintPath>
-    </Reference>
-    <Reference Include="Enchant.Net, Version=1.4.3.1, Culture=neutral, processorArchitecture=MSIL">
-      <SpecificVersion>False</SpecificVersion>
-      <HintPath>..\..\packages\Enchant.Net.1.4.2\lib\net461\Enchant.Net.dll</HintPath>
-    </Reference>
-    <Reference Include="icu.net, Version=2.7.0.0, Culture=neutral, PublicKeyToken=416fdd914afa6b66, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\icu.net.2.7.1\lib\net451\icu.net.dll</HintPath>
-    </Reference>
-    <Reference Include="LibChorus, Version=5.0.0.0, Culture=neutral, PublicKeyToken=f1447bae1e63f485, processorArchitecture=MSIL">
-      <SpecificVersion>False</SpecificVersion>
-      <HintPath>..\..\packages\SIL.Chorus.LibChorus.5.0.0-beta0017\lib\net461\LibChorus.dll</HintPath>
-    </Reference>
-    <Reference Include="Microsoft.Bcl.AsyncInterfaces, Version=5.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\Microsoft.Bcl.AsyncInterfaces.5.0.0\lib\net461\Microsoft.Bcl.AsyncInterfaces.dll</HintPath>
-    </Reference>
-    <Reference Include="Microsoft.DotNet.PlatformAbstractions, Version=2.0.4.0, Culture=neutral, PublicKeyToken=adb9793829ddae60, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\Microsoft.DotNet.PlatformAbstractions.2.0.4\lib\net45\Microsoft.DotNet.PlatformAbstractions.dll</HintPath>
-    </Reference>
-    <Reference Include="Microsoft.Extensions.DependencyModel, Version=2.0.4.0, Culture=neutral, PublicKeyToken=adb9793829ddae60, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\Microsoft.Extensions.DependencyModel.2.0.4\lib\net451\Microsoft.Extensions.DependencyModel.dll</HintPath>
-    </Reference>
-    <Reference Include="Mono.Addins, Version=1.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\Mono.Addins.1.3.8\lib\net45\Mono.Addins.dll</HintPath>
-    </Reference>
-    <Reference Include="Newtonsoft.Json, Version=11.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\Newtonsoft.Json.11.0.1\lib\net45\Newtonsoft.Json.dll</HintPath>
-    </Reference>
-    <Reference Include="SIL.Core, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\SIL.Core.9.0.0-beta0154\lib\net461\SIL.Core.dll</HintPath>
-    </Reference>
-    <Reference Include="SIL.Core.Desktop, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\SIL.Core.Desktop.9.0.0-beta0154\lib\net461\SIL.Core.Desktop.dll</HintPath>
-    </Reference>
-    <Reference Include="SIL.DictionaryServices, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\SIL.DictionaryServices.9.0.0-beta0154\lib\net461\SIL.DictionaryServices.dll</HintPath>
-    </Reference>
-    <Reference Include="SIL.Lift, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\SIL.Lift.9.0.0-beta0154\lib\net461\SIL.Lift.dll</HintPath>
-    </Reference>
-    <Reference Include="SIL.Windows.Forms, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
-      <SpecificVersion>False</SpecificVersion>
-      <HintPath>..\..\packages\SIL.Windows.Forms.9.0.0-beta0154\lib\net461\SIL.Windows.Forms.dll</HintPath>
-    </Reference>
-    <Reference Include="SIL.Windows.Forms.Keyboarding, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
-      <SpecificVersion>False</SpecificVersion>
-      <HintPath>..\..\packages\SIL.Windows.Forms.Keyboarding.9.0.0-beta0154\lib\net461\SIL.Windows.Forms.Keyboarding.dll</HintPath>
-    </Reference>
-    <Reference Include="SIL.WritingSystems, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\SIL.WritingSystems.9.0.0-beta0154\lib\net461\SIL.WritingSystems.dll</HintPath>
-    </Reference>
-    <Reference Include="Spart, Version=1.0.0.0, Culture=neutral, PublicKeyToken=14d24e064e474331, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\Spart.1.0.0\lib\net461\Spart.dll</HintPath>
-    </Reference>
-    <Reference Include="System" />
-    <Reference Include="System.ComponentModel.Composition" />
-    <Reference Include="System.Configuration" />
-    <Reference Include="System.Core">
-      <RequiredTargetFramework>3.5</RequiredTargetFramework>
-    </Reference>
-    <Reference Include="System.Data" />
-    <Reference Include="System.Drawing" />
-    <Reference Include="System.IO.FileSystem.AccessControl, Version=4.0.5.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\System.IO.FileSystem.AccessControl.4.7.0\lib\net461\System.IO.FileSystem.AccessControl.dll</HintPath>
-    </Reference>
-    <Reference Include="System.Management" />
-    <Reference Include="System.Runtime.CompilerServices.Unsafe, Version=4.0.4.1, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\System.Runtime.CompilerServices.Unsafe.4.5.3\lib\net461\System.Runtime.CompilerServices.Unsafe.dll</HintPath>
-    </Reference>
-    <Reference Include="System.Security" />
-    <Reference Include="System.Security.AccessControl, Version=4.1.3.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\System.Security.AccessControl.4.7.0\lib\net461\System.Security.AccessControl.dll</HintPath>
-    </Reference>
-    <Reference Include="System.Security.Principal.Windows, Version=4.1.3.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\System.Security.Principal.Windows.4.7.0\lib\net461\System.Security.Principal.Windows.dll</HintPath>
-    </Reference>
-    <Reference Include="System.Threading.Tasks.Extensions, Version=4.2.0.1, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\System.Threading.Tasks.Extensions.4.5.4\lib\net461\System.Threading.Tasks.Extensions.dll</HintPath>
-    </Reference>
-    <Reference Include="System.ValueTuple, Version=4.0.3.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\System.ValueTuple.4.5.0\lib\net461\System.ValueTuple.dll</HintPath>
-    </Reference>
-    <Reference Include="System.Web" />
-    <Reference Include="System.Windows.Forms" />
-    <Reference Include="System.Xml" />
-    <Reference Include="System.Xml.Linq" />
-  </ItemGroup>
-  <ItemGroup>
-    <Compile Include="AddMissingInfo\MissingInfoConfiguration.cs" />
-    <Compile Include="AddMissingInfo\MissingInfoViewMaker.cs" />
-    <Compile Include="AddPictures\AddPicturesConfig.cs" />
-    <Compile Include="AddPictures\AddPicturesControl.cs">
+    <Compile Update="AddPictures\AddPicturesControl.cs">
       <SubType>UserControl</SubType>
     </Compile>
-    <Compile Include="AddPictures\AddPicturesControl.Designer.cs">
-      <DependentUpon>AddPicturesControl.cs</DependentUpon>
-    </Compile>
-    <Compile Include="AddPictures\AddPicturesTask.cs" />
-    <Compile Include="Dashboard\Dash.cs">
+    <Compile Update="Dashboard\Dash.cs">
       <SubType>UserControl</SubType>
     </Compile>
-    <Compile Include="Dashboard\Dash.Designer.cs">
-      <DependentUpon>Dash.cs</DependentUpon>
-    </Compile>
-    <Compile Include="Dashboard\DashboardButton.cs">
+    <Compile Update="Dashboard\DashboardButton.cs">
       <SubType>UserControl</SubType>
     </Compile>
-    <Compile Include="Dashboard\DashboardButton.designer.cs">
-      <DependentUpon>DashboardButton.cs</DependentUpon>
-    </Compile>
-    <Compile Include="Dashboard\DashboardButtonWithIcon.cs">
+    <Compile Update="Dashboard\DashboardButtonWithIcon.cs">
       <SubType>UserControl</SubType>
     </Compile>
-    <Compile Include="Dashboard\DashboardConfiguration.cs" />
-    <Compile Include="Dashboard\DictionaryStatusControl.cs">
+    <Compile Update="Dashboard\DictionaryStatusControl.cs">
       <SubType>UserControl</SubType>
     </Compile>
-    <Compile Include="Dashboard\DictionaryStatusControl.designer.cs">
-      <DependentUpon>DictionaryStatusControl.cs</DependentUpon>
-    </Compile>
-    <Compile Include="Dashboard\GroupHeader.cs">
+    <Compile Update="Dashboard\GroupHeader.cs">
       <SubType>UserControl</SubType>
     </Compile>
-    <Compile Include="Dashboard\GroupHeader.designer.cs">
-      <DependentUpon>GroupHeader.cs</DependentUpon>
-    </Compile>
-    <Compile Include="Dashboard\ItemsToDoIndicator.cs">
+    <Compile Update="Dashboard\ItemsToDoIndicator.cs">
       <SubType>UserControl</SubType>
     </Compile>
-    <Compile Include="Dashboard\ItemsToDoIndicator.designer.cs">
-      <DependentUpon>ItemsToDoIndicator.cs</DependentUpon>
-    </Compile>
-    <Compile Include="Dashboard\ShapeControl.cs">
+    <Compile Update="Dashboard\ShapeControl.cs">
       <SubType>Component</SubType>
     </Compile>
-    <Compile Include="Dashboard\TaskIndicator.cs">
+    <Compile Update="Dashboard\TaskIndicator.cs">
       <SubType>UserControl</SubType>
     </Compile>
-    <Compile Include="Dashboard\TaskIndicator.designer.cs">
-      <DependentUpon>TaskIndicator.cs</DependentUpon>
-    </Compile>
-    <Compile Include="DictionaryBrowseAndEdit\SearchBoxControl.cs">
+    <Compile Update="DictionaryBrowseAndEdit\SearchBoxControl.cs">
       <SubType>UserControl</SubType>
     </Compile>
-    <Compile Include="DictionaryBrowseAndEdit\SearchBoxControl.Designer.cs">
-      <DependentUpon>SearchBoxControl.cs</DependentUpon>
-    </Compile>
-    <Compile Include="EntryHeaderView.cs">
+    <Compile Update="EntryHeaderView.cs">
       <SubType>UserControl</SubType>
     </Compile>
-    <Compile Include="EntryHeaderView.Designer.cs">
-      <DependentUpon>EntryHeaderView.cs</DependentUpon>
-    </Compile>
-    <Compile Include="HtmlRenderer.cs" />
-    <Compile Include="IConfirmDelete.cs" />
-    <Compile Include="LayoutInfoProvider.cs" />
-    <Compile Include="Review\AdvancedHistory\AdvancedHistoryConfig.cs" />
-    <Compile Include="Review\AdvancedHistory\AdvancedHistoryTask.cs" />
-    <Compile Include="Review\NotesBrowser\NotesBrowserConfig.cs" />
-    <Compile Include="Review\NotesBrowser\NotesBrowserTask.cs" />
-    <Compile Include="TaskConfigurationBase.cs" />
-    <Compile Include="DictionaryBrowseAndEdit\ConfirmDelete.cs">
-      <SubType>Form</SubType>
-    </Compile>
-    <Compile Include="DictionaryBrowseAndEdit\ConfirmDelete.Designer.cs">
-      <DependentUpon>ConfirmDelete.cs</DependentUpon>
-    </Compile>
-    <Compile Include="CongratulationsControl.cs">
+    <Compile Update="CongratulationsControl.cs">
       <SubType>UserControl</SubType>
     </Compile>
-    <Compile Include="CongratulationsControl.Designer.cs">
-      <DependentUpon>CongratulationsControl.cs</DependentUpon>
-    </Compile>
-    <Compile Include="DictionaryBrowseAndEdit\DictionaryBrowseAndEditConfiguration.cs" />
-    <Compile Include="GatherBySemanticDomains\GatherBySemanticDomainConfig.cs" />
-    <Compile Include="GatherBySemanticDomains\GatherBySemanticDomainTask.cs" />
-    <Compile Include="DictionaryBrowseAndEdit\DictionaryControl.Designer.cs">
-      <DependentUpon>DictionaryControl.cs</DependentUpon>
-    </Compile>
-    <Compile Include="GatherBySemanticDomains\GatherBySemanticDomainsControl.cs">
+    <Compile Update="GatherBySemanticDomains\GatherBySemanticDomainsControl.cs">
       <SubType>UserControl</SubType>
     </Compile>
-    <Compile Include="GatherBySemanticDomains\GatherBySemanticDomainsControl.Designer.cs">
-      <DependentUpon>GatherBySemanticDomainsControl.cs</DependentUpon>
-    </Compile>
-    <Compile Include="GatherByWordList\GatherWordListConfig.cs" />
-    <Compile Include="GatherByWordList\GatherWordListControl.cs">
+    <Compile Update="GatherByWordList\GatherWordListControl.cs">
       <SubType>UserControl</SubType>
     </Compile>
-    <Compile Include="GatherByWordList\GatherWordListControl.Designer.cs">
-      <DependentUpon>GatherWordListControl.cs</DependentUpon>
-    </Compile>
-    <Compile Include="GatherByWordList\GatherWordListTask.cs" />
-    <Compile Include="AddMissingInfo\MissingInfoControl.cs">
+    <Compile Update="AddMissingInfo\MissingInfoControl.cs">
       <SubType>UserControl</SubType>
     </Compile>
-    <Compile Include="AddMissingInfo\MissingInfoControl.Designer.cs">
-      <DependentUpon>MissingInfoControl.cs</DependentUpon>
-    </Compile>
-    <Compile Include="AddMissingInfo\MissingInfoTask.cs">
-    </Compile>
-    <Compile Include="DictionaryBrowseAndEdit\DictionaryTask.cs">
-    </Compile>
-    <Compile Include="DictionaryBrowseAndEdit\DictionaryControl.cs">
+    <Compile Update="DictionaryBrowseAndEdit\DictionaryControl.cs">
       <SubType>UserControl</SubType>
     </Compile>
-    <Compile Include="Layouter.cs" />
-    <Compile Include="LexEntryLayouter.cs" />
-    <Compile Include="LexExampleSentenceLayouter.cs" />
-    <Compile Include="EntryViewControl.cs">
+    <Compile Update="EntryViewControl.cs">
       <SubType>UserControl</SubType>
     </Compile>
-    <Compile Include="EntryViewControl.Designer.cs">
-      <DependentUpon>EntryViewControl.cs</DependentUpon>
-    </Compile>
-    <Compile Include="LexSenseLayouter.cs" />
-    <Compile Include="Properties\AssemblyInfo.cs" />
-    <Compile Include="Properties\Resources.Designer.cs">
-      <AutoGen>True</AutoGen>
-      <DesignTime>True</DesignTime>
-      <DependentUpon>Resources.resx</DependentUpon>
-    </Compile>
-    <Compile Include="RelationController.cs" />
-    <Compile Include="RtfRenderer.cs" />
-    <Compile Include="TaskBase.cs" />
-    <Compile Include="TaskMemoryRepository.cs" />
-    <Compile Include="WordGatheringTaskBase.cs" />
-  </ItemGroup>
-  <ItemGroup>
-    <ProjectReference Include="..\LexicalModel\LexicalModel.csproj">
-      <Project>{5F61C809-B6C0-4567-9603-B2198E1AD038}</Project>
-      <Name>LexicalModel</Name>
-    </ProjectReference>
-    <ProjectReference Include="..\WeSay.AddinLib\WeSay.AddinLib.csproj">
-      <Project>{E651E83C-94DD-4D6D-ABA2-C9FDA34FBA55}</Project>
-      <Name>WeSay.AddinLib</Name>
-    </ProjectReference>
-    <ProjectReference Include="..\WeSay.Data\WeSay.Data.csproj">
-      <Project>{600D0FD4-D189-41A0-9BC5-FC79AD2CF1CD}</Project>
-      <Name>WeSay.Data</Name>
-    </ProjectReference>
-    <ProjectReference Include="..\WeSay.Foundation\WeSay.Foundation.csproj">
-      <Project>{F12EB680-0990-4900-B77E-0FBF2E28A815}</Project>
-      <Name>WeSay.Foundation</Name>
-    </ProjectReference>
-    <ProjectReference Include="..\WeSay.Project\WeSay.Project.csproj">
-      <Project>{5CFD0BB3-5B2A-4911-B220-9C2286151BF0}</Project>
-      <Name>WeSay.Project</Name>
-    </ProjectReference>
-    <ProjectReference Include="..\WeSay.UI\WeSay.UI.csproj">
-      <Project>{AC8F284C-7B34-4AC9-A7DE-FAF765456DFF}</Project>
-      <Name>WeSay.UI</Name>
-    </ProjectReference>
-  </ItemGroup>
-  <ItemGroup>
-    <EmbeddedResource Include="AddPictures\AddPicturesControl.resx">
-      <DependentUpon>AddPicturesControl.cs</DependentUpon>
-      <SubType>Designer</SubType>
-    </EmbeddedResource>
-    <EmbeddedResource Include="Dashboard\Dash.resx">
-      <DependentUpon>Dash.cs</DependentUpon>
-      <SubType>Designer</SubType>
-    </EmbeddedResource>
-    <EmbeddedResource Include="Dashboard\DashboardButton.resx">
-      <DependentUpon>DashboardButton.cs</DependentUpon>
-      <SubType>Designer</SubType>
-    </EmbeddedResource>
-    <EmbeddedResource Include="Dashboard\DashboardButtonWithIcon.resx">
-      <DependentUpon>DashboardButtonWithIcon.cs</DependentUpon>
-      <SubType>Designer</SubType>
-    </EmbeddedResource>
-    <EmbeddedResource Include="Dashboard\DictionaryStatusControl.resx">
-      <DependentUpon>DictionaryStatusControl.cs</DependentUpon>
-      <SubType>Designer</SubType>
-    </EmbeddedResource>
-    <EmbeddedResource Include="Dashboard\GroupHeader.resx">
-      <DependentUpon>GroupHeader.cs</DependentUpon>
-      <SubType>Designer</SubType>
-    </EmbeddedResource>
-    <EmbeddedResource Include="Dashboard\ItemsToDoIndicator.resx">
-      <DependentUpon>ItemsToDoIndicator.cs</DependentUpon>
-      <SubType>Designer</SubType>
-    </EmbeddedResource>
-    <EmbeddedResource Include="Dashboard\TaskIndicator.resx">
-      <DependentUpon>TaskIndicator.cs</DependentUpon>
-      <SubType>Designer</SubType>
-    </EmbeddedResource>
-    <EmbeddedResource Include="DictionaryBrowseAndEdit\ConfirmDelete.resx">
-      <DependentUpon>ConfirmDelete.cs</DependentUpon>
-      <SubType>Designer</SubType>
-    </EmbeddedResource>
-    <EmbeddedResource Include="CongratulationsControl.resx">
-      <SubType>Designer</SubType>
-      <DependentUpon>CongratulationsControl.cs</DependentUpon>
-    </EmbeddedResource>
-    <EmbeddedResource Include="DictionaryBrowseAndEdit\DictionaryControl.resx">
-      <SubType>Designer</SubType>
-      <DependentUpon>DictionaryControl.cs</DependentUpon>
-    </EmbeddedResource>
-    <EmbeddedResource Include="DictionaryBrowseAndEdit\SearchBoxControl.resx">
-      <DependentUpon>SearchBoxControl.cs</DependentUpon>
-      <SubType>Designer</SubType>
-    </EmbeddedResource>
-    <EmbeddedResource Include="EntryHeaderView.resx">
-      <DependentUpon>EntryHeaderView.cs</DependentUpon>
-      <SubType>Designer</SubType>
-    </EmbeddedResource>
-    <EmbeddedResource Include="GatherByWordList\GatherWordListControl.resx">
-      <SubType>Designer</SubType>
-      <DependentUpon>GatherWordListControl.cs</DependentUpon>
-    </EmbeddedResource>
-    <EmbeddedResource Include="AddMissingInfo\MissingInfoControl.resx">
-      <SubType>Designer</SubType>
-      <DependentUpon>MissingInfoControl.cs</DependentUpon>
-    </EmbeddedResource>
-    <EmbeddedResource Include="EntryViewControl.resx">
-      <DependentUpon>EntryViewControl.cs</DependentUpon>
-      <SubType>Designer</SubType>
-    </EmbeddedResource>
-    <EmbeddedResource Include="Properties\Resources.resx">
-      <SubType>Designer</SubType>
-      <Generator>ResXFileCodeGenerator</Generator>
-      <LastGenOutput>Resources.Designer.cs</LastGenOutput>
-    </EmbeddedResource>
-    <EmbeddedResource Include="GatherBySemanticDomains\GatherBySemanticDomainsControl.resx">
-      <DependentUpon>GatherBySemanticDomainsControl.cs</DependentUpon>
-      <SubType>Designer</SubType>
-    </EmbeddedResource>
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="packages.config" />
-    <None Include="Resources\blueDictionary.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="Resources\WeSay64x64.png" />
-    <None Include="Resources\blueWeSay.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="Resources\HistoryOrange.png" />
   </ItemGroup>
   <ItemGroup>
-    <None Include="Resources\calendar.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="Resources\Add18x16.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="Resources\notesBrowser.svg" />
-    <None Include="Resources\search18x18.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="Resources\noteBrowser32x32.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="Resources\DeleteIconBW.bmp" />
+    <ProjectReference Include="..\LexicalModel\LexicalModel.csproj" />
+    <ProjectReference Include="..\WeSay.AddinLib\WeSay.AddinLib.csproj" />
+    <ProjectReference Include="..\WeSay.Data\WeSay.Data.csproj" />
+    <ProjectReference Include="..\WeSay.Foundation\WeSay.Foundation.csproj" />
+    <ProjectReference Include="..\WeSay.Project\WeSay.Project.csproj" />
+    <ProjectReference Include="..\WeSay.UI\WeSay.UI.csproj" />
   </ItemGroup>
   <ItemGroup>
     <None Include="Resources\delete-word-bw.png" />
   </ItemGroup>
   <ItemGroup>
-    <None Include="Resources\delete-word.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="Resources\right-arrow.png" />
+    <None Include="Resources\plus.png" />
   </ItemGroup>
   <ItemGroup>
-    <None Include="Resources\left-arrow.png" />
+    <PackageReference Include="SIL.Windows.Forms" Version="13.0.1" GeneratePathProperty="true"/>
+    <Reference Include="SIL.Windows.Forms">
+      <HintPath>$(PkgSIL_Windows_Forms)\lib\net461\SIL.Windows.Forms.dll</HintPath>
+    </Reference>
+    <PackageReference Include="SIL.Windows.Forms.Keyboarding" Version="13.0.1" GeneratePathProperty="true"/>
+    <Reference Include="SIL.Windows.Forms.Keyboarding">
+      <HintPath>$(PkgSIL_Windows_Forms_Keyboarding)\lib\net461\SIL.Windows.Forms.Keyboarding.dll</HintPath>
+    </Reference>
   </ItemGroup>
   <ItemGroup>
-    <None Include="Resources\plus.png" />
+    <PackageReference Include="Autofac" Version="4.9.4" />
+    <PackageReference Include="icu.net" Version="2.8.1" />
+    <PackageReference Include="Microsoft.DotNet.PlatformAbstractions" Version="2.0.4" />
+    <PackageReference Include="Mono.Addins" Version="1.4.1" />
+    <PackageReference Include="NDesk.DBus" Version="0.15.0" />
+    <PackageReference Include="RelaxNG" Version="3.2.3" />
+    <PackageReference Include="SIL.Core" Version="13.0.1" />
+    <PackageReference Include="SIL.Core.Desktop" Version="13.0.1" />
+    <PackageReference Include="SIL.Lift" Version="13.0.1" />
+    <PackageReference Include="SIL.WritingSystems" Version="13.0.1" />
+    <PackageReference Include="Spart" Version="1.0.0" />
+    <PackageReference Include="System.ComponentModel.Composition" Version="8.0.0" />
+    <PackageReference Include="System.Management" Version="8.0.0" />
+    <PackageReference Include="Microsoft.AspNetCore.SystemWebAdapters" Version="1.3.0" />
+    <PackageReference Include="Microsoft.Bcl.AsyncInterfaces" Version="8.0.0" />
+    <PackageReference Include="Microsoft.Extensions.DependencyModel" Version="8.0.0" />
+    <PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
+    <PackageReference Include="System.Runtime.CompilerServices.Unsafe" Version="6.0.0" />
+    <PackageReference Include="System.Security.AccessControl" Version="6.0.0" />
+    <PackageReference Include="System.Configuration.ConfigurationManager" Version="8.0.0" />
   </ItemGroup>
   <ItemGroup>
-    <None Include="Resources\AddWord.png" />
+    <Compile Remove="LexEntrySorter.cs" />
   </ItemGroup>
-  <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
-  <Import Project="..\..\packages\NDesk.DBus.0.15.0\build\NDesk.DBus.targets" Condition="Exists('..\..\packages\NDesk.DBus.0.15.0\build\NDesk.DBus.targets')" />
-  <Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
-    <PropertyGroup>
-      <ErrorText>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}.</ErrorText>
-    </PropertyGroup>
-    <Error Condition="!Exists('..\..\packages\NDesk.DBus.0.15.0\build\NDesk.DBus.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\NDesk.DBus.0.15.0\build\NDesk.DBus.targets'))" />
-  </Target>
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it.
-	   Other similar extension points exist, see Microsoft.Common.targets.
-  <Target Name="BeforeBuild">
-  </Target>
-  <Target Name="AfterBuild">
-  </Target>
-  -->
 </Project>
\ No newline at end of file
diff --git a/src/LexicalTools/Properties/AssemblyInfo.cs b/src/LexicalTools/Properties/AssemblyInfo.cs
deleted file mode 100644
index 2c252d6e9..000000000
--- a/src/LexicalTools/Properties/AssemblyInfo.cs
+++ /dev/null
@@ -1,44 +0,0 @@
-using System;
-using System.Reflection;
-using System.Runtime.CompilerServices;
-using System.Runtime.InteropServices;
-using System.Security.Permissions;
-
-// 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("LexicalTools")]
-[assembly: AssemblyDescription("")]
-[assembly: AssemblyConfiguration("")]
-[assembly: AssemblyCompany("WeSay")]
-[assembly: AssemblyProduct("WeSay")]
-[assembly: AssemblyCopyright("Copyright © WeSay 2006")]
-[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)]
-
-// The following GUID is for the ID of the typelib if this project is exposed to COM
-
-[assembly: Guid("d25df040-ef5a-4374-a324-3bb8984c0c70")]
-
-// 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 Revision and Build Numbers
-// by using the '*' as shown below:
-
-[assembly: AssemblyVersion("1.9.0.10")]
-[assembly: AssemblyFileVersion("1.9.0.10")]
-[assembly: CLSCompliant(false)]
-[assembly: SecurityPermission(SecurityAction.RequestMinimum, Execution = true)]
-[assembly: InternalsVisibleTo("LexicalTools.Tests")]
diff --git a/src/LexicalTools/TaskConfigurationBase.cs b/src/LexicalTools/TaskConfigurationBase.cs
index cf0f0622a..7fc3a550e 100644
--- a/src/LexicalTools/TaskConfigurationBase.cs
+++ b/src/LexicalTools/TaskConfigurationBase.cs
@@ -19,7 +19,7 @@ public TaskConfigurationBase(string xml)
 		}
 		public string TaskName
 		{
-			get { return XmlUtils.GetManditoryAttributeValue(_xmlDoc.FirstChild, "taskName"); }
+			get { return XmlUtils.GetMandatoryAttributeValue(_xmlDoc.FirstChild, "taskName"); }
 		}
 
 		public virtual bool IsOptional
diff --git a/src/LexicalTools/packages.config b/src/LexicalTools/packages.config
deleted file mode 100644
index a2a6a391b..000000000
--- a/src/LexicalTools/packages.config
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<packages>
-  <package id="Autofac" version="4.1.1" targetFramework="net461" />
-  <package id="icu.net" version="2.7.1" targetFramework="net461" />
-  <package id="Microsoft.Bcl.AsyncInterfaces" version="5.0.0" targetFramework="net461" />
-  <package id="Microsoft.DotNet.PlatformAbstractions" version="2.0.4" targetFramework="net461" />
-  <package id="Microsoft.Extensions.DependencyModel" version="2.0.4" targetFramework="net461" />
-  <package id="Mono.Addins" version="1.3.8" targetFramework="net461" />
-  <package id="NDesk.DBus" version="0.15.0" targetFramework="net40-client" />
-  <package id="Newtonsoft.Json" version="11.0.1" targetFramework="net461" />
-  <package id="RelaxNG" version="3.2.3" targetFramework="net461" />
-  <package id="SIL.Core" version="9.0.0-beta0154" targetFramework="net461" />
-  <package id="SIL.Core.Desktop" version="9.0.0-beta0154" targetFramework="net461" />
-  <package id="SIL.DictionaryServices" version="9.0.0-beta0154" targetFramework="net461" />
-  <package id="SIL.Lift" version="9.0.0-beta0154" targetFramework="net461" />
-  <package id="SIL.WritingSystems" version="9.0.0-beta0154" targetFramework="net461" />
-  <package id="Spart" version="1.0.0" targetFramework="net461" />
-  <package id="System.IO.FileSystem.AccessControl" version="4.7.0" targetFramework="net461" />
-  <package id="System.Runtime.CompilerServices.Unsafe" version="4.5.3" targetFramework="net461" />
-  <package id="System.Security.AccessControl" version="4.7.0" targetFramework="net461" />
-  <package id="System.Security.Principal.Windows" version="4.7.0" targetFramework="net461" />
-  <package id="System.Threading.Tasks.Extensions" version="4.5.4" targetFramework="net461" />
-  <package id="System.ValueTuple" version="4.5.0" targetFramework="net461" />
-</packages>
\ No newline at end of file
diff --git a/src/Lift2WeSay/Properties/AssemblyInfo.cs b/src/Lift2WeSay/Properties/AssemblyInfo.cs
deleted file mode 100644
index f87faaf47..000000000
--- a/src/Lift2WeSay/Properties/AssemblyInfo.cs
+++ /dev/null
@@ -1,38 +0,0 @@
-using System;
-using System.Reflection;
-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("WeSay.SampleDataProcessor")]
-[assembly: AssemblyDescription("")]
-[assembly: AssemblyConfiguration("")]
-[assembly: AssemblyCompany("WeSay")]
-[assembly: AssemblyProduct("WeSay.SampleDataProcessor")]
-[assembly: AssemblyCopyright("Copyright © WeSay 2006")]
-[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)]
-
-// The following GUID is for the ID of the typelib if this project is exposed to COM
-
-[assembly: Guid("6bae76d1-d7af-4ec0-a68d-1b2fa6c563f0")]
-
-// Version information for an assembly consists of the following four values:
-//
-//      Major Version
-//      Minor Version
-//      Build Number
-//      Revision
-//
-
-[assembly: AssemblyVersion("1.9.0.10")]
-[assembly: AssemblyFileVersion("1.9.0.10")]
-[assembly: CLSCompliant(true)]
\ No newline at end of file
diff --git a/src/Lift2WeSay/SampleDataProcessor.csproj b/src/Lift2WeSay/SampleDataProcessor.csproj
index 2af26afbf..d55b18d68 100755
--- a/src/Lift2WeSay/SampleDataProcessor.csproj
+++ b/src/Lift2WeSay/SampleDataProcessor.csproj
@@ -1,208 +1,66 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="12.0">
+<Project Sdk="Microsoft.NET.Sdk">
   <PropertyGroup>
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
-    <ProductVersion>9.0.21022</ProductVersion>
-    <SchemaVersion>2.0</SchemaVersion>
-    <ProjectGuid>{4408C857-0371-42BF-A635-E23C8A99A803}</ProjectGuid>
+    <TargetFramework>net8.0-windows</TargetFramework>
     <OutputType>Exe</OutputType>
-    <AppDesignerFolder>Properties</AppDesignerFolder>
-    <RootNamespace>SampleDataProcessor</RootNamespace>
-    <AssemblyName>SampleDataProcessor</AssemblyName>
     <AppConfig>..\AppCommon.config</AppConfig>
-    <FileUpgradeFlags>
-    </FileUpgradeFlags>
-    <UpgradeBackupLocation>
-    </UpgradeBackupLocation>
-    <OldToolsVersion>3.5</OldToolsVersion>
-    <TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion>
-    <TargetFrameworkProfile />
-    <NuGetPackageImportStamp>
-    </NuGetPackageImportStamp>
+    <GenerateAssemblyInfo>false</GenerateAssemblyInfo>
+    <UseWindowsForms>true</UseWindowsForms>
+    <ImportWindowsDesktopTargets>true</ImportWindowsDesktopTargets>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
-    <DebugSymbols>true</DebugSymbols>
-    <DebugType>full</DebugType>
-    <Optimize>false</Optimize>
     <OutputPath>..\..\output\Debug\</OutputPath>
-    <DefineConstants>DEBUG;TRACE</DefineConstants>
-    <ErrorReport>prompt</ErrorReport>
-    <WarningLevel>4</WarningLevel>
     <OutputType>Exe</OutputType>
-    <AssemblyName>SampleDataProcessor</AssemblyName>
-    <RootNamespace>SampleDataProcessor</RootNamespace>
-    <AllowUnsafeBlocks>false</AllowUnsafeBlocks>
     <CheckForOverflowUnderflow>true</CheckForOverflowUnderflow>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
-    <DebugType>pdbonly</DebugType>
-    <Optimize>true</Optimize>
     <OutputPath>..\..\output\Release\</OutputPath>
-    <DefineConstants>TRACE</DefineConstants>
-    <ErrorReport>prompt</ErrorReport>
-    <WarningLevel>4</WarningLevel>
     <OutputType>Exe</OutputType>
-    <AssemblyName>SampleDataProcessor</AssemblyName>
     <DebugSymbols>true</DebugSymbols>
-    <RootNamespace>SampleDataProcessor</RootNamespace>
-    <AllowUnsafeBlocks>false</AllowUnsafeBlocks>
     <CheckForOverflowUnderflow>true</CheckForOverflowUnderflow>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
-    <DebugSymbols>true</DebugSymbols>
     <OutputPath>..\..\output\$(Configuration)\</OutputPath>
-    <DefineConstants>DEBUG;TRACE</DefineConstants>
     <CheckForOverflowUnderflow>true</CheckForOverflowUnderflow>
-    <DebugType>full</DebugType>
-    <PlatformTarget>x86</PlatformTarget>
-    <ErrorReport>prompt</ErrorReport>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
     <DebugSymbols>true</DebugSymbols>
     <OutputPath>..\..\output\Release\</OutputPath>
-    <DefineConstants>TRACE</DefineConstants>
     <CheckForOverflowUnderflow>true</CheckForOverflowUnderflow>
-    <Optimize>true</Optimize>
-    <DebugType>pdbonly</DebugType>
-    <PlatformTarget>x86</PlatformTarget>
-    <ErrorReport>prompt</ErrorReport>
   </PropertyGroup>
   <ItemGroup>
-    <Reference Include="DialogAdapters, Version=0.1.9.0, Culture=neutral, PublicKeyToken=7dc842182b0626dc, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\DialogAdapters.Gtk2.0.1.9\lib\net461\DialogAdapters.dll</HintPath>
-    </Reference>
-    <Reference Include="Enchant.Net, Version=1.4.0.0, Culture=neutral, PublicKeyToken=ae135aeb3d479ab9, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\Enchant.Net.1.4.2\lib\net461\Enchant.Net.dll</HintPath>
-    </Reference>
-    <Reference Include="icu.net, Version=2.7.0.0, Culture=neutral, PublicKeyToken=416fdd914afa6b66, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\icu.net.2.7.1\lib\net451\icu.net.dll</HintPath>
-    </Reference>
-    <Reference Include="JetBrains.Annotations, Version=2021.2.0.0, Culture=neutral, PublicKeyToken=1010a0d8d6380325, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\JetBrains.Annotations.2021.2.0\lib\net20\JetBrains.Annotations.dll</HintPath>
-    </Reference>
-    <Reference Include="L10NSharp, Version=5.0.0.0, Culture=neutral, PublicKeyToken=fd0b3e309a5b7c28, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\L10NSharp.5.0.0-beta0086\lib\net461\L10NSharp.dll</HintPath>
-    </Reference>
-    <Reference Include="Markdig.Signed, Version=0.22.0.0, Culture=neutral, PublicKeyToken=870da25a133885f8, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\Markdig.Signed.0.22.0\lib\net452\Markdig.Signed.dll</HintPath>
-    </Reference>
-    <Reference Include="Microsoft.DotNet.PlatformAbstractions, Version=2.0.4.0, Culture=neutral, PublicKeyToken=adb9793829ddae60, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\Microsoft.DotNet.PlatformAbstractions.2.0.4\lib\net45\Microsoft.DotNet.PlatformAbstractions.dll</HintPath>
-    </Reference>
-    <Reference Include="Microsoft.Extensions.DependencyModel, Version=2.0.4.0, Culture=neutral, PublicKeyToken=adb9793829ddae60, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\Microsoft.Extensions.DependencyModel.2.0.4\lib\net451\Microsoft.Extensions.DependencyModel.dll</HintPath>
-    </Reference>
-    <Reference Include="NDesk.DBus, Version=1.0.0.0, Culture=neutral, PublicKeyToken=f6716e4f9b2ed099, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\NDesk.DBus.0.15.0\lib\NDesk.DBus.dll</HintPath>
-    </Reference>
-    <Reference Include="Newtonsoft.Json, Version=12.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\Newtonsoft.Json.12.0.3\lib\net45\Newtonsoft.Json.dll</HintPath>
-    </Reference>
-    <Reference Include="SIL.Core, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\SIL.Core.9.0.0-beta0154\lib\net461\SIL.Core.dll</HintPath>
-    </Reference>
-    <Reference Include="SIL.Core.Desktop, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\SIL.Core.Desktop.9.0.0-beta0154\lib\net461\SIL.Core.Desktop.dll</HintPath>
-    </Reference>
-    <Reference Include="SIL.Windows.Forms, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\SIL.Windows.Forms.9.0.0-beta0154\lib\net461\SIL.Windows.Forms.dll</HintPath>
-    </Reference>
-    <Reference Include="SIL.WritingSystems, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\SIL.WritingSystems.9.0.0-beta0154\lib\net461\SIL.WritingSystems.dll</HintPath>
-    </Reference>
-    <Reference Include="Spart, Version=1.0.0.0, Culture=neutral, PublicKeyToken=14d24e064e474331, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\Spart.1.0.0\lib\net461\Spart.dll</HintPath>
-    </Reference>
-    <Reference Include="System" />
-    <Reference Include="System.Buffers, Version=4.0.3.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\System.Buffers.4.5.1\lib\net461\System.Buffers.dll</HintPath>
-    </Reference>
-    <Reference Include="System.Configuration" />
-    <Reference Include="System.Core">
-      <RequiredTargetFramework>3.5</RequiredTargetFramework>
-    </Reference>
-    <Reference Include="System.Data" />
-    <Reference Include="System.IO.FileSystem.AccessControl, Version=4.0.5.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\System.IO.FileSystem.AccessControl.4.7.0\lib\net461\System.IO.FileSystem.AccessControl.dll</HintPath>
-    </Reference>
-    <Reference Include="System.Management" />
-    <Reference Include="System.Memory, Version=4.0.1.1, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\System.Memory.4.5.4\lib\net461\System.Memory.dll</HintPath>
-    </Reference>
-    <Reference Include="System.Numerics" />
-    <Reference Include="System.Numerics.Vectors, Version=4.1.4.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\System.Numerics.Vectors.4.5.0\lib\net46\System.Numerics.Vectors.dll</HintPath>
-    </Reference>
-    <Reference Include="System.Runtime.CompilerServices.Unsafe, Version=4.0.4.1, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\System.Runtime.CompilerServices.Unsafe.4.5.3\lib\net461\System.Runtime.CompilerServices.Unsafe.dll</HintPath>
-    </Reference>
-    <Reference Include="System.Security" />
-    <Reference Include="System.Security.AccessControl, Version=4.1.3.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\System.Security.AccessControl.4.7.0\lib\net461\System.Security.AccessControl.dll</HintPath>
-    </Reference>
-    <Reference Include="System.Security.Principal.Windows, Version=4.1.3.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\System.Security.Principal.Windows.4.7.0\lib\net461\System.Security.Principal.Windows.dll</HintPath>
-    </Reference>
-    <Reference Include="System.ServiceModel" />
-    <Reference Include="System.ValueTuple, Version=4.0.3.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\System.ValueTuple.4.5.0\lib\net461\System.ValueTuple.dll</HintPath>
-    </Reference>
-    <Reference Include="System.Web" />
-    <Reference Include="System.Windows.Forms" />
-    <Reference Include="System.Xml" />
-    <Reference Include="TagLibSharp, Version=2.2.0.0, Culture=neutral, PublicKeyToken=db62eba44689b5b0, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\TagLibSharp.2.2.0\lib\net45\TagLibSharp.dll</HintPath>
-    </Reference>
+    <ProjectReference Include="..\LexicalModel\LexicalModel.csproj" />
+    <ProjectReference Include="..\WeSay.App\WeSay.App.csproj" />
+    <ProjectReference Include="..\WeSay.Data\WeSay.Data.csproj" />
+    <ProjectReference Include="..\WeSay.Foundation\WeSay.Foundation.csproj" />
+    <ProjectReference Include="..\WeSay.Project\WeSay.Project.csproj" />
+    <ProjectReference Include="..\WeSay.ConfigTool\WeSay.ConfigTool.csproj" />
   </ItemGroup>
   <ItemGroup>
-    <Compile Include="SampleDataProcessor.cs" />
-    <Compile Include="Properties\AssemblyInfo.cs" />
+    <PackageReference Include="System.Management" Version="8.0.0" />
+    <PackageReference Include="Microsoft.AspNetCore.SystemWebAdapters" Version="1.3.0" />
+    <PackageReference Include="Microsoft.Extensions.DependencyModel" Version="8.0.0" />
+    <PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
+    <PackageReference Include="System.Runtime.CompilerServices.Unsafe" Version="6.0.0" />
+    <PackageReference Include="System.Security.AccessControl" Version="6.0.0" />
+    <PackageReference Include="System.Configuration.ConfigurationManager" Version="8.0.0" />
+    <PackageReference Include="System.ServiceModel.Primitives" Version="8.0.0" />
+    <PackageReference Include="System.ServiceModel.Http" Version="8.0.0" />
+    <PackageReference Include="System.ServiceModel.Duplex" Version="6.0.0" />
+    <PackageReference Include="System.ServiceModel.NetTcp" Version="8.0.0" />
+    <PackageReference Include="System.ServiceModel.Security" Version="6.0.0" />
+    <PackageReference Include="System.ServiceModel.Federation" Version="8.0.0" />
   </ItemGroup>
   <ItemGroup>
-    <ProjectReference Include="..\LexicalModel\LexicalModel.csproj">
-      <Project>{5F61C809-B6C0-4567-9603-B2198E1AD038}</Project>
-      <Name>LexicalModel</Name>
-    </ProjectReference>
-    <ProjectReference Include="..\WeSay.App\WeSay.App.csproj">
-      <Project>{EFB9D66D-AF0F-4E45-A1AC-DB32981711D2}</Project>
-      <Name>WeSay.App</Name>
-    </ProjectReference>
-    <ProjectReference Include="..\WeSay.Data\WeSay.Data.csproj">
-      <Project>{600D0FD4-D189-41A0-9BC5-FC79AD2CF1CD}</Project>
-      <Name>WeSay.Data</Name>
-    </ProjectReference>
-    <ProjectReference Include="..\WeSay.Foundation\WeSay.Foundation.csproj">
-      <Project>{F12EB680-0990-4900-B77E-0FBF2E28A815}</Project>
-      <Name>WeSay.Foundation</Name>
-    </ProjectReference>
-    <ProjectReference Include="..\WeSay.Project\WeSay.Project.csproj">
-      <Project>{5CFD0BB3-5B2A-4911-B220-9C2286151BF0}</Project>
-      <Name>WeSay.Project</Name>
-    </ProjectReference>
-    <ProjectReference Include="..\WeSay.ConfigTool\WeSay.ConfigTool.csproj">
-      <Project>{54C943DB-7725-4F52-BCE4-86C3D3D5A66E}</Project>
-      <Name>WeSay.ConfigTool</Name>
-    </ProjectReference>
+    <PackageReference Include="icu.net" Version="2.8.1" />
+    <PackageReference Include="JetBrains.Annotations" Version="2021.2.0" />
+    <PackageReference Include="Microsoft.DotNet.PlatformAbstractions" Version="2.0.4" />
+    <PackageReference Include="NDesk.DBus" Version="0.15.0" />
+    <PackageReference Include="SIL.Core" Version="13.0.1" />
+    <PackageReference Include="SIL.Core.Desktop" Version="13.0.1" />
+    <PackageReference Include="SIL.WritingSystems" Version="13.0.1" />
+    <PackageReference Include="Spart" Version="1.0.0" />
   </ItemGroup>
   <ItemGroup>
-    <None Include="packages.config" />
+    <Compile Remove="ConsoleProgressState.cs" />
   </ItemGroup>
-  <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
-  <Import Project="..\..\packages\NDesk.DBus.0.15.0\build\NDesk.DBus.targets" Condition="Exists('..\..\packages\NDesk.DBus.0.15.0\build\NDesk.DBus.targets')" />
-  <Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
-    <PropertyGroup>
-      <ErrorText>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}.</ErrorText>
-    </PropertyGroup>
-    <Error Condition="!Exists('..\..\packages\NDesk.DBus.0.15.0\build\NDesk.DBus.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\NDesk.DBus.0.15.0\build\NDesk.DBus.targets'))" />
-    <Error Condition="!Exists('..\..\packages\SIL.Windows.Forms.9.0.0-beta0154\build\SIL.Windows.Forms.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\SIL.Windows.Forms.9.0.0-beta0154\build\SIL.Windows.Forms.targets'))" />
-  </Target>
-  <Import Project="..\..\packages\SIL.Windows.Forms.9.0.0-beta0154\build\SIL.Windows.Forms.targets" Condition="Exists('..\..\packages\SIL.Windows.Forms.9.0.0-beta0154\build\SIL.Windows.Forms.targets')" />
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it.
-	   Other similar extension points exist, see Microsoft.Common.targets.
-  <Target Name="BeforeBuild">
-  </Target>
-  <Target Name="AfterBuild">
-  </Target>
-  -->
 </Project>
\ No newline at end of file
diff --git a/src/Lift2WeSay/packages.config b/src/Lift2WeSay/packages.config
deleted file mode 100644
index dccc5908c..000000000
--- a/src/Lift2WeSay/packages.config
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<packages>
-  <package id="DialogAdapters.Gtk2" version="0.1.9" targetFramework="net461" />
-  <package id="Enchant.Net" version="1.4.2" targetFramework="net461" />
-  <package id="icu.net" version="2.7.1" targetFramework="net461" />
-  <package id="JetBrains.Annotations" version="2021.2.0" targetFramework="net461" />
-  <package id="L10NSharp" version="5.0.0-beta0086" targetFramework="net461" />
-  <package id="Markdig.Signed" version="0.22.0" targetFramework="net461" />
-  <package id="Microsoft.DotNet.PlatformAbstractions" version="2.0.4" targetFramework="net461" />
-  <package id="Microsoft.Extensions.DependencyModel" version="2.0.4" targetFramework="net461" />
-  <package id="NDesk.DBus" version="0.15.0" targetFramework="net461" />
-  <package id="Newtonsoft.Json" version="12.0.3" targetFramework="net461" />
-  <package id="SIL.Core" version="9.0.0-beta0154" targetFramework="net461" />
-  <package id="SIL.Core.Desktop" version="9.0.0-beta0154" targetFramework="net461" />
-  <package id="SIL.Windows.Forms" version="9.0.0-beta0154" targetFramework="net461" />
-  <package id="SIL.WritingSystems" version="9.0.0-beta0154" targetFramework="net461" />
-  <package id="Spart" version="1.0.0" targetFramework="net461" />
-  <package id="System.Buffers" version="4.5.1" targetFramework="net461" />
-  <package id="System.IO.FileSystem.AccessControl" version="4.7.0" targetFramework="net461" />
-  <package id="System.Memory" version="4.5.4" targetFramework="net461" />
-  <package id="System.Numerics.Vectors" version="4.5.0" targetFramework="net461" />
-  <package id="System.Runtime.CompilerServices.Unsafe" version="4.5.3" targetFramework="net461" />
-  <package id="System.Security.AccessControl" version="4.7.0" targetFramework="net461" />
-  <package id="System.Security.Principal.Windows" version="4.7.0" targetFramework="net461" />
-  <package id="System.ValueTuple" version="4.5.0" targetFramework="net461" />
-  <package id="TagLibSharp" version="2.2.0" targetFramework="net461" />
-</packages>
\ No newline at end of file
diff --git a/src/LiftWordList2Json/LiftWordList2Json.csproj b/src/LiftWordList2Json/LiftWordList2Json.csproj
index 253b828ba..9d54383bb 100644
--- a/src/LiftWordList2Json/LiftWordList2Json.csproj
+++ b/src/LiftWordList2Json/LiftWordList2Json.csproj
@@ -1,19 +1,8 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
+<Project Sdk="Microsoft.NET.Sdk">
   <PropertyGroup>
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
-    <ProjectGuid>{4498EAF7-1736-40C3-AD20-6B2CD8D935DB}</ProjectGuid>
+    <TargetFramework>net8.0-windows</TargetFramework>
     <OutputType>Exe</OutputType>
-    <AppDesignerFolder>Properties</AppDesignerFolder>
-    <RootNamespace>LiftWordList2Json</RootNamespace>
-    <AssemblyName>LiftWordList2Json</AssemblyName>
-    <TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion>
-    <TargetFrameworkProfile />
     <AppConfig>..\AppCommon.config</AppConfig>
-    <FileAlignment>512</FileAlignment>
-    <AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
     <PublishUrl>publish\</PublishUrl>
     <Install>true</Install>
     <InstallFrom>Disk</InstallFrom>
@@ -29,196 +18,53 @@
     <IsWebBootstrapper>false</IsWebBootstrapper>
     <UseApplicationTrust>false</UseApplicationTrust>
     <BootstrapperEnabled>true</BootstrapperEnabled>
-    <NuGetPackageImportStamp>
-    </NuGetPackageImportStamp>
+    <GenerateAssemblyInfo>false</GenerateAssemblyInfo>
+    <UseWindowsForms>true</UseWindowsForms>
+    <ImportWindowsDesktopTargets>true</ImportWindowsDesktopTargets>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
-    <PlatformTarget>x86</PlatformTarget>
-    <DebugSymbols>true</DebugSymbols>
-    <DebugType>full</DebugType>
-    <Optimize>false</Optimize>
     <OutputPath>..\..\output\Debug</OutputPath>
-    <DefineConstants>DEBUG;TRACE</DefineConstants>
-    <ErrorReport>prompt</ErrorReport>
-    <WarningLevel>4</WarningLevel>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
-    <PlatformTarget>AnyCPU</PlatformTarget>
-    <DebugType>pdbonly</DebugType>
-    <Optimize>true</Optimize>
     <OutputPath>..\..\output\Release</OutputPath>
-    <DefineConstants>TRACE</DefineConstants>
-    <ErrorReport>prompt</ErrorReport>
-    <WarningLevel>4</WarningLevel>
   </PropertyGroup>
   <ItemGroup>
-    <Reference Include="DialogAdapters, Version=0.1.9.0, Culture=neutral, PublicKeyToken=7dc842182b0626dc, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\DialogAdapters.Gtk2.0.1.9\lib\net461\DialogAdapters.dll</HintPath>
-    </Reference>
-    <Reference Include="Enchant.Net, Version=1.4.0.0, Culture=neutral, PublicKeyToken=ae135aeb3d479ab9, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\Enchant.Net.1.4.2\lib\net461\Enchant.Net.dll</HintPath>
-    </Reference>
-    <Reference Include="icu.net, Version=2.7.0.0, Culture=neutral, PublicKeyToken=416fdd914afa6b66, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\icu.net.2.7.1\lib\net451\icu.net.dll</HintPath>
-    </Reference>
-    <Reference Include="JetBrains.Annotations, Version=2021.2.0.0, Culture=neutral, PublicKeyToken=1010a0d8d6380325, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\JetBrains.Annotations.2021.2.0\lib\net20\JetBrains.Annotations.dll</HintPath>
-    </Reference>
-    <Reference Include="L10NSharp, Version=5.0.0.0, Culture=neutral, PublicKeyToken=fd0b3e309a5b7c28, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\L10NSharp.5.0.0-beta0086\lib\net461\L10NSharp.dll</HintPath>
-    </Reference>
-    <Reference Include="Markdig.Signed, Version=0.22.0.0, Culture=neutral, PublicKeyToken=870da25a133885f8, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\Markdig.Signed.0.22.0\lib\net452\Markdig.Signed.dll</HintPath>
-    </Reference>
-    <Reference Include="Microsoft.DotNet.PlatformAbstractions, Version=2.0.4.0, Culture=neutral, PublicKeyToken=adb9793829ddae60, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\Microsoft.DotNet.PlatformAbstractions.2.0.4\lib\net45\Microsoft.DotNet.PlatformAbstractions.dll</HintPath>
-    </Reference>
-    <Reference Include="Microsoft.Extensions.DependencyModel, Version=2.0.4.0, Culture=neutral, PublicKeyToken=adb9793829ddae60, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\Microsoft.Extensions.DependencyModel.2.0.4\lib\net451\Microsoft.Extensions.DependencyModel.dll</HintPath>
-    </Reference>
-    <Reference Include="NDesk.DBus, Version=1.0.0.0, Culture=neutral, PublicKeyToken=f6716e4f9b2ed099, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\NDesk.DBus.0.15.0\lib\NDesk.DBus.dll</HintPath>
-    </Reference>
-    <Reference Include="Newtonsoft.Json, Version=12.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
-      <SpecificVersion>False</SpecificVersion>
-      <HintPath>..\..\packages\Newtonsoft.Json.12.0.3\lib\net45\Newtonsoft.Json.dll</HintPath>
-    </Reference>
-    <Reference Include="SIL.Core, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\SIL.Core.9.0.0-beta0154\lib\net461\SIL.Core.dll</HintPath>
-    </Reference>
-    <Reference Include="SIL.Core.Desktop, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\SIL.Core.Desktop.9.0.0-beta0154\lib\net461\SIL.Core.Desktop.dll</HintPath>
-    </Reference>
-    <Reference Include="SIL.DictionaryServices, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\SIL.DictionaryServices.9.0.0-beta0154\lib\net461\SIL.DictionaryServices.dll</HintPath>
-    </Reference>
-    <Reference Include="SIL.Lift, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\SIL.Lift.9.0.0-beta0154\lib\net461\SIL.Lift.dll</HintPath>
-    </Reference>
-    <Reference Include="SIL.Windows.Forms, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\SIL.Windows.Forms.9.0.0-beta0154\lib\net461\SIL.Windows.Forms.dll</HintPath>
-    </Reference>
-    <Reference Include="SIL.WritingSystems, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\SIL.WritingSystems.9.0.0-beta0154\lib\net461\SIL.WritingSystems.dll</HintPath>
-    </Reference>
-    <Reference Include="Spart, Version=1.0.0.0, Culture=neutral, PublicKeyToken=14d24e064e474331, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\Spart.1.0.0\lib\net461\Spart.dll</HintPath>
-    </Reference>
-    <Reference Include="System" />
-    <Reference Include="System.Buffers, Version=4.0.3.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\System.Buffers.4.5.1\lib\net461\System.Buffers.dll</HintPath>
-    </Reference>
-    <Reference Include="System.Configuration" />
-    <Reference Include="System.Core" />
-    <Reference Include="System.IO.FileSystem.AccessControl, Version=4.0.5.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\System.IO.FileSystem.AccessControl.4.7.0\lib\net461\System.IO.FileSystem.AccessControl.dll</HintPath>
-    </Reference>
-    <Reference Include="System.Management" />
-    <Reference Include="System.Memory, Version=4.0.1.1, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\System.Memory.4.5.4\lib\net461\System.Memory.dll</HintPath>
-    </Reference>
-    <Reference Include="System.Numerics" />
-    <Reference Include="System.Numerics.Vectors, Version=4.1.4.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\System.Numerics.Vectors.4.5.0\lib\net46\System.Numerics.Vectors.dll</HintPath>
-    </Reference>
-    <Reference Include="System.Runtime.CompilerServices.Unsafe, Version=4.0.4.1, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\System.Runtime.CompilerServices.Unsafe.4.5.3\lib\net461\System.Runtime.CompilerServices.Unsafe.dll</HintPath>
-    </Reference>
-    <Reference Include="System.Security" />
-    <Reference Include="System.Security.AccessControl, Version=4.1.3.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\System.Security.AccessControl.4.7.0\lib\net461\System.Security.AccessControl.dll</HintPath>
-    </Reference>
-    <Reference Include="System.Security.Principal.Windows, Version=4.1.3.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\System.Security.Principal.Windows.4.7.0\lib\net461\System.Security.Principal.Windows.dll</HintPath>
-    </Reference>
-    <Reference Include="System.ServiceModel" />
-    <Reference Include="System.ValueTuple, Version=4.0.3.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\System.ValueTuple.4.5.0\lib\net461\System.ValueTuple.dll</HintPath>
-    </Reference>
-    <Reference Include="System.Web" />
-    <Reference Include="System.Windows.Forms" />
-    <Reference Include="System.Xml.Linq" />
-    <Reference Include="System.Data.DataSetExtensions" />
-    <Reference Include="Microsoft.CSharp" />
-    <Reference Include="System.Data" />
-    <Reference Include="System.Net.Http" />
-    <Reference Include="System.Xml" />
-    <Reference Include="CommandLine">
-      <HintPath>..\..\packages\CommandLineParser.1.9.71\lib\net40\CommandLine.dll</HintPath>
-    </Reference>
-    <Reference Include="Commons.Xml.Relaxng, Version=2.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756, processorArchitecture=MSIL">
-      <SpecificVersion>False</SpecificVersion>
-      <HintPath>..\..\packages\RelaxNG.3.2.3\lib\net40\Commons.Xml.Relaxng.dll</HintPath>
-    </Reference>
-    <Reference Include="TagLibSharp, Version=2.2.0.0, Culture=neutral, PublicKeyToken=db62eba44689b5b0, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\TagLibSharp.2.2.0\lib\net45\TagLibSharp.dll</HintPath>
-    </Reference>
+    <PackageReference Include="Microsoft.CSharp" Version="4.7.0" />
+    <PackageReference Include="System.Data.DataSetExtensions" Version="4.5.0" />
+    <PackageReference Include="System.Management" Version="8.0.0" />
+    <PackageReference Include="Microsoft.AspNetCore.SystemWebAdapters" Version="1.3.0" />
+    <PackageReference Include="Microsoft.Extensions.DependencyModel" Version="8.0.0" />
+    <PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
+    <PackageReference Include="System.Runtime.CompilerServices.Unsafe" Version="6.0.0" />
+    <PackageReference Include="System.Security.AccessControl" Version="6.0.0" />
+    <PackageReference Include="System.Configuration.ConfigurationManager" Version="8.0.0" />
+    <PackageReference Include="System.ServiceModel.Primitives" Version="8.0.0" />
+    <PackageReference Include="System.ServiceModel.Http" Version="8.0.0" />
+    <PackageReference Include="System.ServiceModel.Duplex" Version="6.0.0" />
+    <PackageReference Include="System.ServiceModel.NetTcp" Version="8.0.0" />
+    <PackageReference Include="System.ServiceModel.Security" Version="6.0.0" />
+    <PackageReference Include="System.ServiceModel.Federation" Version="8.0.0" />
   </ItemGroup>
   <ItemGroup>
-    <Compile Include="Options.cs" />
-    <Compile Include="Program.cs" />
-    <Compile Include="Properties\AssemblyInfo.cs" />
+    <ProjectReference Include="..\LexicalModel\LexicalModel.csproj" />
+    <ProjectReference Include="..\LexicalTools\LexicalTools.csproj" />
+    <ProjectReference Include="..\WeSay.Data\WeSay.Data.csproj" />
+    <ProjectReference Include="..\WeSay.Data.Tests\WeSay.Data.Tests.csproj" />
+    <ProjectReference Include="..\WeSay.Foundation\WeSay.Foundation.csproj" />
+    <ProjectReference Include="..\WeSay.Project\WeSay.Project.csproj" />
+    <ProjectReference Include="..\WeSay.Project.Tests\WeSay.Project.Tests.csproj" />
   </ItemGroup>
   <ItemGroup>
-    <None Include="packages.config" />
+    <PackageReference Include="CommandLineParser" Version="2.9.1" />
+    <PackageReference Include="icu.net" Version="2.8.1" />
+    <PackageReference Include="JetBrains.Annotations" Version="2021.2.0" />
+    <PackageReference Include="Microsoft.DotNet.PlatformAbstractions" Version="2.0.4" />
+    <PackageReference Include="NDesk.DBus" Version="0.15.0" />
+    <PackageReference Include="RelaxNG" Version="3.2.3" />
+    <PackageReference Include="SIL.Core" Version="13.0.1" />
+    <PackageReference Include="SIL.Core.Desktop" Version="13.0.1" />
+    <PackageReference Include="SIL.Lift" Version="13.0.1" />
+    <PackageReference Include="SIL.WritingSystems" Version="13.0.1" />
+    <PackageReference Include="Spart" Version="1.0.0" />
   </ItemGroup>
-  <ItemGroup>
-    <ProjectReference Include="..\LexicalModel\LexicalModel.csproj">
-      <Project>{5F61C809-B6C0-4567-9603-B2198E1AD038}</Project>
-      <Name>LexicalModel</Name>
-    </ProjectReference>
-    <ProjectReference Include="..\LexicalTools\LexicalTools.csproj">
-      <Project>{87af0b02-2983-486d-857f-d1859535c234}</Project>
-      <Name>LexicalTools</Name>
-    </ProjectReference>
-    <ProjectReference Include="..\WeSay.Data\WeSay.Data.csproj">
-      <Project>{600D0FD4-D189-41A0-9BC5-FC79AD2CF1CD}</Project>
-      <Name>WeSay.Data</Name>
-    </ProjectReference>
-    <ProjectReference Include="..\WeSay.Data.Tests\WeSay.Data.Tests.csproj">
-      <Project>{8491FEEE-C311-4B64-BB30-A1F1C1802F45}</Project>
-      <Name>WeSay.Data.Tests</Name>
-    </ProjectReference>
-    <ProjectReference Include="..\WeSay.Foundation\WeSay.Foundation.csproj">
-      <Project>{F12EB680-0990-4900-B77E-0FBF2E28A815}</Project>
-      <Name>WeSay.Foundation</Name>
-    </ProjectReference>
-    <ProjectReference Include="..\WeSay.Project\WeSay.Project.csproj">
-      <Project>{5CFD0BB3-5B2A-4911-B220-9C2286151BF0}</Project>
-      <Name>WeSay.Project</Name>
-    </ProjectReference>
-    <ProjectReference Include="..\WeSay.Project.Tests\WeSay.Project.Tests.csproj">
-      <Project>{F644C902-A952-4797-9E2D-19D6051DD032}</Project>
-      <Name>WeSay.Project.Tests</Name>
-    </ProjectReference>
-  </ItemGroup>
-  <ItemGroup>
-    <BootstrapperPackage Include=".NETFramework,Version=v4.5.2">
-      <Visible>False</Visible>
-      <ProductName>Microsoft .NET Framework 4.5.2 %28x86 and x64%29</ProductName>
-      <Install>true</Install>
-    </BootstrapperPackage>
-    <BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
-      <Visible>False</Visible>
-      <ProductName>.NET Framework 3.5 SP1</ProductName>
-      <Install>false</Install>
-    </BootstrapperPackage>
-  </ItemGroup>
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
-  <Import Project="..\..\packages\NDesk.DBus.0.15.0\build\NDesk.DBus.targets" Condition="Exists('..\..\packages\NDesk.DBus.0.15.0\build\NDesk.DBus.targets')" />
-  <Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
-    <PropertyGroup>
-      <ErrorText>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}.</ErrorText>
-    </PropertyGroup>
-    <Error Condition="!Exists('..\..\packages\NDesk.DBus.0.15.0\build\NDesk.DBus.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\NDesk.DBus.0.15.0\build\NDesk.DBus.targets'))" />
-    <Error Condition="!Exists('..\..\packages\SIL.Windows.Forms.9.0.0-beta0154\build\SIL.Windows.Forms.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\SIL.Windows.Forms.9.0.0-beta0154\build\SIL.Windows.Forms.targets'))" />
-  </Target>
-  <Import Project="..\..\packages\SIL.Windows.Forms.9.0.0-beta0154\build\SIL.Windows.Forms.targets" Condition="Exists('..\..\packages\SIL.Windows.Forms.9.0.0-beta0154\build\SIL.Windows.Forms.targets')" />
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it.
-       Other similar extension points exist, see Microsoft.Common.targets.
-  <Target Name="BeforeBuild">
-  </Target>
-  <Target Name="AfterBuild">
-  </Target>
-  -->
 </Project>
\ No newline at end of file
diff --git a/src/LiftWordList2Json/Options.cs b/src/LiftWordList2Json/Options.cs
index c3846e9f5..7441f721c 100644
--- a/src/LiftWordList2Json/Options.cs
+++ b/src/LiftWordList2Json/Options.cs
@@ -8,20 +8,24 @@ namespace Lift2Json
 {
 	class Options
 	{
-		[Option('i', "input", DefaultValue = "Wordlist.lift", HelpText = "Wordlist in lift format with id and glosses in different source languages.")]
-		public string InputFile { get; set; }
+		[Option('i',
+			"input",
+			HelpText =
+				"Wordlist in lift format with id and glosses in different source languages.")]
+		public string InputFile { get; set; } = "Wordlist.lift";
 
-		[Option('o', "output", DefaultValue = "Wordlist.json", HelpText = "Output file to write.")]
-		public string OutputFile { get; set; }
+		[Option('o',
+			"output",
+			HelpText = "Output file to write.")]
+		public string OutputFile { get; set; } = "Wordlist.json";
 
-		[Option('v', "verbose", DefaultValue = false, HelpText = "Verbose output.")]
-		public bool Verbose { get; set; }
+		[Option('v', "verbose", HelpText = "Verbose output.")]
+		public bool Verbose { get; set; } = false;
 
 		[Option('h', null, HelpText = "Display this help screen.")]
 		public bool ShowHelp { get; set; }
 
 
-		[HelpOption]
 		public string GetUsage()
 		{
 			var help = new HelpText
@@ -34,7 +38,7 @@ public string GetUsage()
 			//help.AddPreOptionsLine("<<license details here.>>");
 			//help.AddPreOptionsLine("Usage: app -p Someone");
 			help.AddPreOptionsLine("Lift2Json will convert a lift format wordlist to json.");
-			help.AddOptions(this);
+			// help.AddOptions(this);
 			//var usage = new StringBuilder();
 			//usage.AppendLine("LanguageData (c) 2016 SIL International");
 			//usage.AppendLine("LanguageData will process Ethnologue, IANA subtag and ISO693-3 data to a single language data index file.");
diff --git a/src/LiftWordList2Json/Program.cs b/src/LiftWordList2Json/Program.cs
index 0c58a549a..7ad8ed294 100644
--- a/src/LiftWordList2Json/Program.cs
+++ b/src/LiftWordList2Json/Program.cs
@@ -16,10 +16,9 @@ class Program
 	{
 		static int Main(string[] args)
 		{
-			var options = new Options();
-			var isValid = CommandLine.Parser.Default.ParseArgumentsStrict(args, options);
-			if (isValid)
-			{
+			var result = CommandLine.Parser.Default.ParseArguments<Options>(args);
+			var options = result.Value;
+
 				if (options.ShowHelp)
 				{
 					Console.WriteLine(options.GetUsage());
@@ -42,14 +41,6 @@ static int Main(string[] args)
 					Console.WriteLine("Output file: {0}", options.OutputFile);
 				}
 
-			}
-			else
-			{
-				// Display the default usage information
-				Console.WriteLine("command line parsing failed");
-				Console.WriteLine(options.GetUsage());
-				return 1;
-			}
 
 			List<LexEntry> _words;
 			_words = new List<LexEntry>();
diff --git a/src/LiftWordList2Json/Properties/AssemblyInfo.cs b/src/LiftWordList2Json/Properties/AssemblyInfo.cs
deleted file mode 100644
index 78f54fbaa..000000000
--- a/src/LiftWordList2Json/Properties/AssemblyInfo.cs
+++ /dev/null
@@ -1,35 +0,0 @@
-using System.Reflection;
-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("LiftWordList2Json")]
-[assembly: AssemblyDescription("")]
-[assembly: AssemblyConfiguration("")]
-[assembly: AssemblyCompany("")]
-[assembly: AssemblyProduct("LiftWordList2Json")]
-[assembly: AssemblyCopyright("Copyright © SIL International 2018")]
-[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)]
-
-// The following GUID is for the ID of the typelib if this project is exposed to COM
-[assembly: Guid("4498eaf7-1736-40c3-ad20-6b2cd8d935db")]
-
-// 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.9.0.10")]
-[assembly: AssemblyVersion("1.9.0.10")]
-[assembly: AssemblyFileVersion("1.9.0.10")]
diff --git a/src/LiftWordList2Json/packages.config b/src/LiftWordList2Json/packages.config
deleted file mode 100644
index 67e20cfa8..000000000
--- a/src/LiftWordList2Json/packages.config
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<packages>
-  <package id="CommandLineParser" version="1.9.71" targetFramework="net40" requireReinstallation="true" />
-  <package id="DialogAdapters.Gtk2" version="0.1.9" targetFramework="net461" />
-  <package id="Enchant.Net" version="1.4.2" targetFramework="net461" />
-  <package id="icu.net" version="2.7.1" targetFramework="net461" />
-  <package id="JetBrains.Annotations" version="2021.2.0" targetFramework="net461" />
-  <package id="L10NSharp" version="5.0.0-beta0086" targetFramework="net461" />
-  <package id="Markdig.Signed" version="0.22.0" targetFramework="net461" />
-  <package id="Microsoft.DotNet.PlatformAbstractions" version="2.0.4" targetFramework="net461" />
-  <package id="Microsoft.Extensions.DependencyModel" version="2.0.4" targetFramework="net461" />
-  <package id="NDesk.DBus" version="0.15.0" targetFramework="net461" />
-  <package id="Newtonsoft.Json" version="12.0.3" targetFramework="net461" />
-  <package id="RelaxNG" version="3.2.3" requireReinstallation="true" />
-  <package id="SIL.Core" version="9.0.0-beta0154" targetFramework="net461" />
-  <package id="SIL.Core.Desktop" version="9.0.0-beta0154" targetFramework="net461" />
-  <package id="SIL.DictionaryServices" version="9.0.0-beta0154" targetFramework="net461" />
-  <package id="SIL.Lift" version="9.0.0-beta0154" targetFramework="net461" />
-  <package id="SIL.Windows.Forms" version="9.0.0-beta0154" targetFramework="net461" />
-  <package id="SIL.WritingSystems" version="9.0.0-beta0154" targetFramework="net461" />
-  <package id="Spart" version="1.0.0" targetFramework="net461" />
-  <package id="System.Buffers" version="4.5.1" targetFramework="net461" />
-  <package id="System.IO.FileSystem.AccessControl" version="4.7.0" targetFramework="net461" />
-  <package id="System.Memory" version="4.5.4" targetFramework="net461" />
-  <package id="System.Numerics.Vectors" version="4.5.0" targetFramework="net461" />
-  <package id="System.Runtime.CompilerServices.Unsafe" version="4.5.3" targetFramework="net461" />
-  <package id="System.Security.AccessControl" version="4.7.0" targetFramework="net461" />
-  <package id="System.Security.Principal.Windows" version="4.7.0" targetFramework="net461" />
-  <package id="System.ValueTuple" version="4.5.0" targetFramework="net461" />
-  <package id="TagLibSharp" version="2.2.0" targetFramework="net461" />
-</packages>
\ No newline at end of file
diff --git a/src/WeSay.AddinLib.Tests/Properties/AssemblyInfo.cs b/src/WeSay.AddinLib.Tests/Properties/AssemblyInfo.cs
index fcd32b1fe..741d3264c 100644
--- a/src/WeSay.AddinLib.Tests/Properties/AssemblyInfo.cs
+++ b/src/WeSay.AddinLib.Tests/Properties/AssemblyInfo.cs
@@ -1,16 +1,5 @@
 using System.Reflection;
 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("WeSay.AddinLib.Tests")]
-[assembly: AssemblyDescription("")]
-[assembly: AssemblyConfiguration("")]
-[assembly: AssemblyCompany("SIL")]
-[assembly: AssemblyProduct("WeSay.AddinLib.Tests")]
-[assembly: AssemblyCopyright("Copyright © SIL 2007")]
 [assembly: AssemblyTrademark("")]
 [assembly: AssemblyCulture("")]
 
@@ -23,14 +12,3 @@
 // The following GUID is for the ID of the typelib if this project is exposed to COM
 
 [assembly: Guid("7ab94996-9548-4a17-9c85-4c6634b89072")]
-
-// Version information for an assembly consists of the following four values:
-//
-//      Major Version
-//      Minor Version
-//      Build Number
-//      Revision
-//
-
-[assembly: AssemblyVersion("1.9.0.10")]
-[assembly: AssemblyFileVersion("1.9.0.10")]
\ No newline at end of file
diff --git a/src/WeSay.AddinLib.Tests/WeSay.AddinLib.Tests.csproj b/src/WeSay.AddinLib.Tests/WeSay.AddinLib.Tests.csproj
index 1474a0e64..f0d20ca88 100644
--- a/src/WeSay.AddinLib.Tests/WeSay.AddinLib.Tests.csproj
+++ b/src/WeSay.AddinLib.Tests/WeSay.AddinLib.Tests.csproj
@@ -1,112 +1,50 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="12.0">
+<Project Sdk="Microsoft.NET.Sdk">
   <PropertyGroup>
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
-    <ProductVersion>9.0.21022</ProductVersion>
-    <SchemaVersion>2.0</SchemaVersion>
-    <ProjectGuid>{74DF4C01-660C-4CF4-9343-9330337BCBEA}</ProjectGuid>
+    <TargetFramework>net8.0-windows</TargetFramework>
     <OutputType>Library</OutputType>
-    <AppDesignerFolder>Properties</AppDesignerFolder>
-    <RootNamespace>WeSay.AddinLib.Tests</RootNamespace>
-    <AssemblyName>WeSay.AddinLib.Tests</AssemblyName>
     <AppConfig>..\AppForTests.config</AppConfig>
     <StartupObject>
     </StartupObject>
-    <FileUpgradeFlags>
-    </FileUpgradeFlags>
-    <UpgradeBackupLocation>
-    </UpgradeBackupLocation>
-    <OldToolsVersion>3.5</OldToolsVersion>
-    <TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion>
-    <TargetFrameworkProfile />
+    <GenerateAssemblyInfo>false</GenerateAssemblyInfo>
+    <UseWindowsForms>true</UseWindowsForms>
+    <ImportWindowsDesktopTargets>true</ImportWindowsDesktopTargets>
+    <AssemblyTitle>WeSay.AddinLib.Tests</AssemblyTitle>
+    <Company>SIL</Company>
+    <Product>WeSay.AddinLib.Tests</Product>
+    <Copyright>Copyright © SIL 2007</Copyright>
+    <AssemblyVersion>1.9.0.10</AssemblyVersion>
+    <FileVersion>1.9.0.10</FileVersion>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
-    <DebugSymbols>true</DebugSymbols>
-    <DebugType>full</DebugType>
-    <Optimize>false</Optimize>
     <OutputPath>..\..\output\Debug\</OutputPath>
-    <DefineConstants>DEBUG;TRACE</DefineConstants>
-    <ErrorReport>prompt</ErrorReport>
-    <WarningLevel>4</WarningLevel>
     <OutputType>Library</OutputType>
-    <AssemblyName>WeSay.AddinLib.Tests</AssemblyName>
-    <RootNamespace>WeSay.AddinLib.Tests</RootNamespace>
-    <AllowUnsafeBlocks>false</AllowUnsafeBlocks>
     <CheckForOverflowUnderflow>true</CheckForOverflowUnderflow>
     <PlatformTarget>x86</PlatformTarget>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
-    <DebugType>pdbonly</DebugType>
-    <Optimize>true</Optimize>
     <OutputPath>..\..\output\Release\</OutputPath>
-    <DefineConstants>TRACE</DefineConstants>
-    <ErrorReport>prompt</ErrorReport>
-    <WarningLevel>4</WarningLevel>
     <OutputType>Library</OutputType>
-    <AssemblyName>WeSay.AddinLib.Tests</AssemblyName>
     <DebugSymbols>true</DebugSymbols>
-    <RootNamespace>WeSay.AddinLib.Tests</RootNamespace>
-    <AllowUnsafeBlocks>false</AllowUnsafeBlocks>
     <CheckForOverflowUnderflow>true</CheckForOverflowUnderflow>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
-    <DebugSymbols>true</DebugSymbols>
     <OutputPath>..\..\output\Debug\</OutputPath>
-    <DefineConstants>DEBUG;TRACE</DefineConstants>
     <CheckForOverflowUnderflow>true</CheckForOverflowUnderflow>
-    <DebugType>full</DebugType>
-    <PlatformTarget>x86</PlatformTarget>
-    <ErrorReport>prompt</ErrorReport>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
     <DebugSymbols>true</DebugSymbols>
     <OutputPath>..\..\output\Release\</OutputPath>
-    <DefineConstants>TRACE</DefineConstants>
     <CheckForOverflowUnderflow>true</CheckForOverflowUnderflow>
-    <Optimize>true</Optimize>
-    <DebugType>pdbonly</DebugType>
-    <PlatformTarget>x86</PlatformTarget>
-    <ErrorReport>prompt</ErrorReport>
   </PropertyGroup>
   <ItemGroup>
-    <Reference Include="Newtonsoft.Json, Version=12.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\Newtonsoft.Json.12.0.3\lib\net45\Newtonsoft.Json.dll</HintPath>
-    </Reference>
-    <Reference Include="System" />
-    <Reference Include="System.Core">
-      <RequiredTargetFramework>3.5</RequiredTargetFramework>
-    </Reference>
-    <Reference Include="System.Data" />
-    <Reference Include="System.Deployment" />
-    <Reference Include="System.Xml" />
-    <Reference Include="nunit.framework">
-      <HintPath>..\..\packages\NUnit.3.13.1\lib\net45\nunit.framework.dll</HintPath>
-    </Reference>
-  </ItemGroup>
-  <ItemGroup>
-    <Compile Include="Properties\AssemblyInfo.cs" />
-    <Compile Include="SettingsTests.cs" />
+    <ProjectReference Include="..\Addin.Transform\Addin.Transform.csproj" />
+    <ProjectReference Include="..\WeSay.AddinLib\WeSay.AddinLib.csproj" />
   </ItemGroup>
   <ItemGroup>
-    <ProjectReference Include="..\Addin.Transform\Addin.Transform.csproj">
-      <Project>{9D196637-2D50-4604-A310-378083CEA809}</Project>
-      <Name>Addin.Transform</Name>
-    </ProjectReference>
-    <ProjectReference Include="..\WeSay.AddinLib\WeSay.AddinLib.csproj">
-      <Project>{E651E83C-94DD-4D6D-ABA2-C9FDA34FBA55}</Project>
-      <Name>WeSay.AddinLib</Name>
-    </ProjectReference>
+    <PackageReference Include="NUnit" Version="3.13.3" />
+    <PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
   </ItemGroup>
-  <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it.
-	   Other similar extension points exist, see Microsoft.Common.targets.
-  <Target Name="BeforeBuild">
-  </Target>
-  <Target Name="AfterBuild">
-  </Target>
-  -->
   <ItemGroup>
-    <None Include="packages.config" />
+    <Compile Remove="Program.cs" />
   </ItemGroup>
 </Project>
\ No newline at end of file
diff --git a/src/WeSay.AddinLib.Tests/packages.config b/src/WeSay.AddinLib.Tests/packages.config
deleted file mode 100644
index 65caa6755..000000000
--- a/src/WeSay.AddinLib.Tests/packages.config
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<packages>
-  <package id="Newtonsoft.Json" version="12.0.3" targetFramework="net461" />
-  <package id="NUnit" version="3.13.1" targetFramework="net461" />
-</packages>
\ No newline at end of file
diff --git a/src/WeSay.AddinLib/Properties/AssemblyInfo.cs b/src/WeSay.AddinLib/Properties/AssemblyInfo.cs
deleted file mode 100644
index cde528137..000000000
--- a/src/WeSay.AddinLib/Properties/AssemblyInfo.cs
+++ /dev/null
@@ -1,42 +0,0 @@
-using Mono.Addins;
-using System;
-using System.Reflection;
-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("WeSay.AddinLib")]
-[assembly: AssemblyDescription("")]
-[assembly: AssemblyConfiguration("")]
-[assembly: AssemblyCompany("WeSay")]
-[assembly: AssemblyProduct("WeSay Preview 3")]
-[assembly: AssemblyCopyright("Copyright © WeSay 2006")]
-[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)]
-
-// The following GUID is for the ID of the typelib if this project is exposed to COM
-
-[assembly: Guid("96fa6dc5-f691-4d65-b494-48212180128d")]
-
-// 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 Revision and Build Numbers
-// by using the '*' as shown below:
-
-[assembly: AssemblyVersion("1.9.0.10")]
-[assembly: AssemblyFileVersion("1.9.0.10")]
-[assembly: AddinRoot("WeSay.AddinLib", "1.0")]
-[assembly: CLSCompliant(true)]
\ No newline at end of file
diff --git a/src/WeSay.AddinLib/WeSay.AddinLib.csproj b/src/WeSay.AddinLib/WeSay.AddinLib.csproj
index 1b1eb1295..c6cb3cd9d 100755
--- a/src/WeSay.AddinLib/WeSay.AddinLib.csproj
+++ b/src/WeSay.AddinLib/WeSay.AddinLib.csproj
@@ -1,169 +1,50 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="12.0">
+<Project Sdk="Microsoft.NET.Sdk">
   <PropertyGroup>
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
-    <ProductVersion>9.0.21022</ProductVersion>
-    <SchemaVersion>2.0</SchemaVersion>
-    <ProjectGuid>{E651E83C-94DD-4D6D-ABA2-C9FDA34FBA55}</ProjectGuid>
+    <TargetFramework>net8.0-windows</TargetFramework>
     <OutputType>Library</OutputType>
-    <AppDesignerFolder>Properties</AppDesignerFolder>
-    <RootNamespace>WeSay.AddinLib</RootNamespace>
-    <AssemblyName>WeSay.AddinLib</AssemblyName>
-    <FileUpgradeFlags>
-    </FileUpgradeFlags>
-    <UpgradeBackupLocation>
-    </UpgradeBackupLocation>
-    <OldToolsVersion>3.5</OldToolsVersion>
-    <TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion>
-    <TargetFrameworkProfile />
+    <GenerateAssemblyInfo>false</GenerateAssemblyInfo>
+    <UseWindowsForms>true</UseWindowsForms>
+    <ImportWindowsDesktopTargets>true</ImportWindowsDesktopTargets>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
-    <DebugSymbols>true</DebugSymbols>
-    <DebugType>full</DebugType>
-    <Optimize>false</Optimize>
     <OutputPath>..\..\output\Debug\</OutputPath>
-    <DefineConstants>DEBUG;TRACE</DefineConstants>
-    <ErrorReport>prompt</ErrorReport>
-    <WarningLevel>4</WarningLevel>
     <OutputType>Library</OutputType>
-    <AssemblyName>WeSay.AddinLib</AssemblyName>
-    <RootNamespace>WeSay.AddinLib</RootNamespace>
-    <AllowUnsafeBlocks>false</AllowUnsafeBlocks>
     <CheckForOverflowUnderflow>true</CheckForOverflowUnderflow>
     <PlatformTarget>x86</PlatformTarget>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
-    <DebugType>pdbonly</DebugType>
-    <Optimize>true</Optimize>
     <OutputPath>..\..\output\Release\</OutputPath>
-    <DefineConstants>TRACE</DefineConstants>
-    <ErrorReport>prompt</ErrorReport>
-    <WarningLevel>4</WarningLevel>
     <OutputType>Library</OutputType>
-    <AssemblyName>WeSay.AddinLib</AssemblyName>
     <DebugSymbols>true</DebugSymbols>
-    <RootNamespace>WeSay.AddinLib</RootNamespace>
-    <AllowUnsafeBlocks>false</AllowUnsafeBlocks>
     <CheckForOverflowUnderflow>true</CheckForOverflowUnderflow>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
-    <DebugSymbols>true</DebugSymbols>
     <OutputPath>..\..\output\Debug\</OutputPath>
-    <DefineConstants>DEBUG;TRACE</DefineConstants>
     <CheckForOverflowUnderflow>true</CheckForOverflowUnderflow>
-    <DebugType>full</DebugType>
-    <PlatformTarget>x86</PlatformTarget>
-    <ErrorReport>prompt</ErrorReport>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
     <DebugSymbols>true</DebugSymbols>
     <OutputPath>..\..\output\Release\</OutputPath>
-    <DefineConstants>TRACE</DefineConstants>
     <CheckForOverflowUnderflow>true</CheckForOverflowUnderflow>
-    <Optimize>true</Optimize>
-    <DebugType>pdbonly</DebugType>
-    <PlatformTarget>x86</PlatformTarget>
-    <ErrorReport>prompt</ErrorReport>
   </PropertyGroup>
   <PropertyGroup>
     <AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
   </PropertyGroup>
   <ItemGroup>
-    <Reference Include="Mono.Addins, Version=1.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\Mono.Addins.1.3.8\lib\net45\Mono.Addins.dll</HintPath>
-    </Reference>
-    <Reference Include="SIL.Core">
-      <SpecificVersion>False</SpecificVersion>
-      <HintPath>..\..\packages\SIL.Core.9.0.0-beta0154\lib\net461\SIL.Core.dll</HintPath>
-    </Reference>
-    <Reference Include="SIL.Core.Desktop">
-      <SpecificVersion>False</SpecificVersion>
-      <HintPath>..\..\packages\SIL.Core.Desktop.9.0.0-beta0154\lib\net461\SIL.Core.Desktop.dll</HintPath>
-    </Reference>
-    <Reference Include="SIL.Windows.Forms">
-      <SpecificVersion>False</SpecificVersion>
-      <HintPath>..\..\packages\SIL.Windows.Forms.9.0.0-beta0154\lib\net461\SIL.Windows.Forms.dll</HintPath>
-    </Reference>
-    <Reference Include="SIL.WritingSystems">
-      <SpecificVersion>False</SpecificVersion>
-      <HintPath>..\..\packages\SIL.WritingSystems.9.0.0-beta0154\lib\net461\SIL.WritingSystems.dll</HintPath>
-    </Reference>
     <None Include="..\..\lib\common\Enchant.Net.dll.config">
       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
     </None>
-    <Reference Include="System" />
-    <Reference Include="System.Core">
-      <RequiredTargetFramework>3.5</RequiredTargetFramework>
-    </Reference>
-    <Reference Include="System.Data" />
-    <Reference Include="System.Drawing" />
-    <Reference Include="System.Windows.Forms" />
-    <Reference Include="System.Xml" />
-    <Reference Include="System.Xml.Linq" />
   </ItemGroup>
   <ItemGroup>
-    <Compile Include="ActionItemControl.cs">
+    <Compile Update="ActionItemControl.cs">
       <SubType>UserControl</SubType>
     </Compile>
-    <Compile Include="ActionItemControl.designer.cs">
-      <DependentUpon>ActionItemControl.cs</DependentUpon>
-    </Compile>
-    <Compile Include="ActionSetupDialog.cs">
-      <SubType>Form</SubType>
-    </Compile>
-    <Compile Include="ActionSetupDialog.Designer.cs">
-      <DependentUpon>ActionSetupDialog.cs</DependentUpon>
-    </Compile>
-    <Compile Include="AddinSet.cs" />
-    <Compile Include="ComingSomedayAddin.cs" />
-    <Compile Include="IWeSayAddin.cs" />
-    <Compile Include="ProjectInfo.cs" />
-    <Compile Include="Properties\AssemblyInfo.cs" />
-    <Compile Include="Properties\Resources.Designer.cs">
-      <AutoGen>True</AutoGen>
-      <DesignTime>True</DesignTime>
-      <DependentUpon>Resources.resx</DependentUpon>
-    </Compile>
-  </ItemGroup>
-  <ItemGroup>
-    <EmbeddedResource Include="ActionItemControl.resx">
-      <DependentUpon>ActionItemControl.cs</DependentUpon>
-      <SubType>Designer</SubType>
-    </EmbeddedResource>
-    <EmbeddedResource Include="ActionSetupDialog.resx">
-      <SubType>Designer</SubType>
-      <DependentUpon>ActionSetupDialog.cs</DependentUpon>
-    </EmbeddedResource>
-    <EmbeddedResource Include="Properties\Resources.resx">
-      <SubType>Designer</SubType>
-      <Generator>ResXFileCodeGenerator</Generator>
-      <LastGenOutput>Resources.Designer.cs</LastGenOutput>
-    </EmbeddedResource>
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="packages.config" />
-    <None Include="Resources\construction.png" />
   </ItemGroup>
   <ItemGroup>
-    <ProjectReference Include="..\LexicalModel\LexicalModel.csproj">
-      <Project>{5F61C809-B6C0-4567-9603-B2198E1AD038}</Project>
-      <Name>LexicalModel</Name>
-    </ProjectReference>
-    <ProjectReference Include="..\WeSay.Foundation\WeSay.Foundation.csproj">
-      <Project>{F12EB680-0990-4900-B77E-0FBF2E28A815}</Project>
-      <Name>WeSay.Foundation</Name>
-    </ProjectReference>
+    <ProjectReference Include="..\LexicalModel\LexicalModel.csproj" />
+    <ProjectReference Include="..\WeSay.Foundation\WeSay.Foundation.csproj" />
   </ItemGroup>
   <ItemGroup>
-    <None Include="Resources\WeSayMenuSized.png" />
+    <PackageReference Include="Mono.Addins" Version="1.4.1" />
   </ItemGroup>
-  <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it.
-	   Other similar extension points exist, see Microsoft.Common.targets.
-  <Target Name="BeforeBuild">
-  </Target>
-  <Target Name="AfterBuild">
-  </Target>
-  -->
 </Project>
\ No newline at end of file
diff --git a/src/WeSay.AddinLib/packages.config b/src/WeSay.AddinLib/packages.config
deleted file mode 100644
index 6b2829a30..000000000
--- a/src/WeSay.AddinLib/packages.config
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<packages>
-  <package id="Mono.Addins" version="1.3.8" targetFramework="net461" />
-</packages>
\ No newline at end of file
diff --git a/src/WeSay.App.Tests/Properties/AssemblyInfo.cs b/src/WeSay.App.Tests/Properties/AssemblyInfo.cs
deleted file mode 100644
index ca9e9a9d7..000000000
--- a/src/WeSay.App.Tests/Properties/AssemblyInfo.cs
+++ /dev/null
@@ -1,38 +0,0 @@
-using System.Reflection;
-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("WeSay.App.Tests")]
-[assembly: AssemblyDescription("")]
-[assembly: AssemblyConfiguration("")]
-[assembly: AssemblyCompany("WeSay")]
-[assembly: AssemblyProduct("WeSay.Tests")]
-[assembly: AssemblyCopyright("Copyright © WeSay 2006")]
-[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)]
-
-// The following GUID is for the ID of the typelib if this project is exposed to COM
-
-[assembly: Guid("1af96c77-11d2-452f-b68c-99412c9e7b78")]
-
-// 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 Revision and Build Numbers
-// by using the '*' as shown below:
-
-[assembly: AssemblyVersion("1.9.0.10")]
-[assembly: AssemblyFileVersion("1.9.0.10")]
\ No newline at end of file
diff --git a/src/WeSay.App.Tests/WeSay.App.Tests.csproj b/src/WeSay.App.Tests/WeSay.App.Tests.csproj
index 58a55cd42..3c79f4dc6 100644
--- a/src/WeSay.App.Tests/WeSay.App.Tests.csproj
+++ b/src/WeSay.App.Tests/WeSay.App.Tests.csproj
@@ -1,258 +1,80 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="12.0">
-  <Import Project="..\..\packages\NUnit.3.13.1\build\NUnit.props" Condition="Exists('..\..\packages\NUnit.3.13.1\build\NUnit.props')" />
+<Project Sdk="Microsoft.NET.Sdk">
   <PropertyGroup>
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
-    <ProductVersion>9.0.21022</ProductVersion>
-    <SchemaVersion>2.0</SchemaVersion>
-    <ProjectGuid>{7DA57D98-255B-46DE-BF94-D163695A0568}</ProjectGuid>
+    <TargetFramework>net8.0-windows</TargetFramework>
     <OutputType>Library</OutputType>
-    <AppDesignerFolder>Properties</AppDesignerFolder>
-    <RootNamespace>WeSay.App.Tests</RootNamespace>
-    <AssemblyName>WeSay.App.Tests</AssemblyName>
     <AppConfig>..\AppForTests.config</AppConfig>
-    <FileUpgradeFlags>
-    </FileUpgradeFlags>
-    <UpgradeBackupLocation>
-    </UpgradeBackupLocation>
-    <OldToolsVersion>3.5</OldToolsVersion>
-    <TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion>
-    <TargetFrameworkProfile />
-    <NuGetPackageImportStamp>
-    </NuGetPackageImportStamp>
+    <GenerateAssemblyInfo>false</GenerateAssemblyInfo>
+    <UseWindowsForms>true</UseWindowsForms>
+    <ImportWindowsDesktopTargets>true</ImportWindowsDesktopTargets>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
-    <DebugSymbols>true</DebugSymbols>
-    <DebugType>full</DebugType>
-    <Optimize>false</Optimize>
     <OutputPath>..\..\output\Debug\</OutputPath>
-    <DefineConstants>DEBUG;TRACE</DefineConstants>
-    <ErrorReport>prompt</ErrorReport>
-    <WarningLevel>4</WarningLevel>
     <OutputType>Library</OutputType>
-    <AssemblyName>WeSay.App.Tests</AssemblyName>
-    <RootNamespace>WeSay.App.Tests</RootNamespace>
-    <AllowUnsafeBlocks>false</AllowUnsafeBlocks>
     <CheckForOverflowUnderflow>true</CheckForOverflowUnderflow>
     <PlatformTarget>x86</PlatformTarget>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
-    <DebugType>pdbonly</DebugType>
-    <Optimize>true</Optimize>
     <OutputPath>..\..\output\Release\</OutputPath>
-    <DefineConstants>TRACE</DefineConstants>
-    <ErrorReport>prompt</ErrorReport>
-    <WarningLevel>4</WarningLevel>
     <OutputType>Library</OutputType>
-    <AssemblyName>WeSay.App.Tests</AssemblyName>
     <DebugSymbols>true</DebugSymbols>
-    <RootNamespace>WeSay.App.Tests</RootNamespace>
-    <AllowUnsafeBlocks>false</AllowUnsafeBlocks>
     <CheckForOverflowUnderflow>true</CheckForOverflowUnderflow>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
-    <DebugSymbols>true</DebugSymbols>
     <OutputPath>..\..\output\Debug\</OutputPath>
-    <DefineConstants>DEBUG;TRACE</DefineConstants>
     <CheckForOverflowUnderflow>true</CheckForOverflowUnderflow>
-    <DebugType>full</DebugType>
-    <PlatformTarget>x86</PlatformTarget>
-    <ErrorReport>prompt</ErrorReport>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
     <DebugSymbols>true</DebugSymbols>
     <OutputPath>..\..\output\Release\</OutputPath>
-    <DefineConstants>TRACE</DefineConstants>
     <CheckForOverflowUnderflow>true</CheckForOverflowUnderflow>
-    <Optimize>true</Optimize>
-    <DebugType>pdbonly</DebugType>
-    <PlatformTarget>x86</PlatformTarget>
-    <ErrorReport>prompt</ErrorReport>
   </PropertyGroup>
   <ItemGroup>
-    <Reference Include="Autofac, Version=4.1.1.0, Culture=neutral, PublicKeyToken=17863af14b0044da, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\Autofac.4.1.1\lib\net45\Autofac.dll</HintPath>
-    </Reference>
-    <Reference Include="Commons.Xml.Relaxng, Version=4.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\RelaxNG.3.2.3\lib\net40\Commons.Xml.Relaxng.dll</HintPath>
-    </Reference>
-    <Reference Include="DialogAdapters, Version=0.1.9.0, Culture=neutral, PublicKeyToken=7dc842182b0626dc, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\DialogAdapters.Gtk2.0.1.9\lib\net461\DialogAdapters.dll</HintPath>
-    </Reference>
-    <Reference Include="Enchant.Net, Version=1.4.0.0, Culture=neutral, PublicKeyToken=ae135aeb3d479ab9, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\Enchant.Net.1.4.2\lib\net461\Enchant.Net.dll</HintPath>
-    </Reference>
-    <Reference Include="icu.net, Version=2.7.0.0, Culture=neutral, PublicKeyToken=416fdd914afa6b66, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\icu.net.2.7.1\lib\net451\icu.net.dll</HintPath>
-    </Reference>
-    <Reference Include="JetBrains.Annotations, Version=2021.2.0.0, Culture=neutral, PublicKeyToken=1010a0d8d6380325, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\JetBrains.Annotations.2021.2.0\lib\net20\JetBrains.Annotations.dll</HintPath>
-    </Reference>
-    <Reference Include="L10NSharp, Version=5.0.0.0, Culture=neutral, PublicKeyToken=fd0b3e309a5b7c28, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\L10NSharp.5.0.0-beta0086\lib\net461\L10NSharp.dll</HintPath>
-    </Reference>
-    <Reference Include="Markdig.Signed, Version=0.22.0.0, Culture=neutral, PublicKeyToken=870da25a133885f8, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\Markdig.Signed.0.22.0\lib\net452\Markdig.Signed.dll</HintPath>
-    </Reference>
-    <Reference Include="Microsoft.Bcl.AsyncInterfaces, Version=5.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\Microsoft.Bcl.AsyncInterfaces.5.0.0\lib\net461\Microsoft.Bcl.AsyncInterfaces.dll</HintPath>
-    </Reference>
-    <Reference Include="Microsoft.DotNet.PlatformAbstractions, Version=2.0.4.0, Culture=neutral, PublicKeyToken=adb9793829ddae60, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\Microsoft.DotNet.PlatformAbstractions.2.0.4\lib\net45\Microsoft.DotNet.PlatformAbstractions.dll</HintPath>
-    </Reference>
-    <Reference Include="Microsoft.Extensions.DependencyModel, Version=2.0.4.0, Culture=neutral, PublicKeyToken=adb9793829ddae60, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\Microsoft.Extensions.DependencyModel.2.0.4\lib\net451\Microsoft.Extensions.DependencyModel.dll</HintPath>
-    </Reference>
-    <Reference Include="NDesk.DBus, Version=1.0.0.0, Culture=neutral, PublicKeyToken=f6716e4f9b2ed099, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\NDesk.DBus.0.15.0\lib\NDesk.DBus.dll</HintPath>
-    </Reference>
-    <Reference Include="Newtonsoft.Json, Version=12.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\Newtonsoft.Json.12.0.3\lib\net45\Newtonsoft.Json.dll</HintPath>
-    </Reference>
-    <Reference Include="nunit.framework, Version=3.13.1.0, Culture=neutral, PublicKeyToken=2638cd05610744eb, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\NUnit.3.13.1\lib\net45\nunit.framework.dll</HintPath>
-    </Reference>
-    <Reference Include="SIL.Core, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\SIL.Core.9.0.0-beta0154\lib\net461\SIL.Core.dll</HintPath>
-    </Reference>
-    <Reference Include="SIL.Core.Desktop, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\SIL.Core.Desktop.9.0.0-beta0154\lib\net461\SIL.Core.Desktop.dll</HintPath>
-    </Reference>
-    <Reference Include="SIL.DictionaryServices, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\SIL.DictionaryServices.9.0.0-beta0154\lib\net461\SIL.DictionaryServices.dll</HintPath>
-    </Reference>
-    <Reference Include="SIL.Lift, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\SIL.Lift.9.0.0-beta0154\lib\net461\SIL.Lift.dll</HintPath>
-    </Reference>
-    <Reference Include="SIL.Windows.Forms, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\SIL.Windows.Forms.9.0.0-beta0154\lib\net461\SIL.Windows.Forms.dll</HintPath>
-    </Reference>
-    <Reference Include="SIL.WritingSystems, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\SIL.WritingSystems.9.0.0-beta0154\lib\net461\SIL.WritingSystems.dll</HintPath>
-    </Reference>
-    <Reference Include="Spart, Version=1.0.0.0, Culture=neutral, PublicKeyToken=14d24e064e474331, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\Spart.1.0.0\lib\net461\Spart.dll</HintPath>
-    </Reference>
-    <Reference Include="System" />
-    <Reference Include="System.Buffers, Version=4.0.3.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\System.Buffers.4.5.1\lib\net461\System.Buffers.dll</HintPath>
-    </Reference>
-    <Reference Include="System.ComponentModel.Composition" />
-    <Reference Include="System.Configuration" />
-    <Reference Include="System.Core">
-      <RequiredTargetFramework>3.5</RequiredTargetFramework>
-    </Reference>
-    <Reference Include="System.Data" />
-    <Reference Include="System.Drawing" />
-    <Reference Include="System.IO.FileSystem.AccessControl, Version=4.0.5.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\System.IO.FileSystem.AccessControl.4.7.0\lib\net461\System.IO.FileSystem.AccessControl.dll</HintPath>
-    </Reference>
-    <Reference Include="System.Management" />
-    <Reference Include="System.Memory, Version=4.0.1.1, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\System.Memory.4.5.4\lib\net461\System.Memory.dll</HintPath>
-    </Reference>
-    <Reference Include="System.Numerics" />
-    <Reference Include="System.Numerics.Vectors, Version=4.1.4.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\System.Numerics.Vectors.4.5.0\lib\net46\System.Numerics.Vectors.dll</HintPath>
-    </Reference>
-    <Reference Include="System.Runtime.CompilerServices.Unsafe, Version=4.0.4.1, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\System.Runtime.CompilerServices.Unsafe.4.5.3\lib\net461\System.Runtime.CompilerServices.Unsafe.dll</HintPath>
-    </Reference>
-    <Reference Include="System.Security" />
-    <Reference Include="System.Security.AccessControl, Version=4.1.3.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\System.Security.AccessControl.4.7.0\lib\net461\System.Security.AccessControl.dll</HintPath>
-    </Reference>
-    <Reference Include="System.Security.Principal.Windows, Version=4.1.3.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\System.Security.Principal.Windows.4.7.0\lib\net461\System.Security.Principal.Windows.dll</HintPath>
-    </Reference>
-    <Reference Include="System.ServiceModel" />
-    <Reference Include="System.Threading.Tasks.Extensions, Version=4.2.0.1, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\System.Threading.Tasks.Extensions.4.5.4\lib\net461\System.Threading.Tasks.Extensions.dll</HintPath>
-    </Reference>
-    <Reference Include="System.ValueTuple, Version=4.0.3.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\System.ValueTuple.4.5.0\lib\net461\System.ValueTuple.dll</HintPath>
-    </Reference>
-    <Reference Include="System.Web" />
-    <Reference Include="System.Windows.Forms" />
-    <Reference Include="System.Xml" />
-    <Reference Include="TagLibSharp, Version=2.2.0.0, Culture=neutral, PublicKeyToken=db62eba44689b5b0, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\TagLibSharp.2.2.0\lib\net45\TagLibSharp.dll</HintPath>
-    </Reference>
-  </ItemGroup>
-  <ItemGroup>
-    <Compile Include="FullUIAppTests.cs" />
-    <Compile Include="TabbedFormNavigationTests.cs" />
-    <Compile Include="TabbedFormTests.cs" />
-    <Compile Include="Properties\AssemblyInfo.cs" />
-  </ItemGroup>
-  <ItemGroup>
-    <ProjectReference Include="..\LexicalModel.Tests\LexicalModel.Tests.csproj">
-      <Project>{123D695C-0D5D-46E5-893F-39EC4E0B01B8}</Project>
-      <Name>LexicalModel.Tests</Name>
-    </ProjectReference>
-    <ProjectReference Include="..\LexicalModel\LexicalModel.csproj">
-      <Project>{5F61C809-B6C0-4567-9603-B2198E1AD038}</Project>
-      <Name>LexicalModel</Name>
-    </ProjectReference>
-    <ProjectReference Include="..\LexicalTools\LexicalTools.csproj">
-      <Project>{87AF0B02-2983-486D-857F-D1859535C234}</Project>
-      <Name>LexicalTools</Name>
-    </ProjectReference>
-    <ProjectReference Include="..\WeSay.App\WeSay.App.csproj">
-      <Project>{EFB9D66D-AF0F-4E45-A1AC-DB32981711D2}</Project>
-      <Name>WeSay.App</Name>
-    </ProjectReference>
-    <ProjectReference Include="..\WeSay.Data\WeSay.Data.csproj">
-      <Project>{600D0FD4-D189-41A0-9BC5-FC79AD2CF1CD}</Project>
-      <Name>WeSay.Data</Name>
-    </ProjectReference>
-    <ProjectReference Include="..\WeSay.Foundation\WeSay.Foundation.csproj">
-      <Project>{F12EB680-0990-4900-B77E-0FBF2E28A815}</Project>
-      <Name>WeSay.Foundation</Name>
-    </ProjectReference>
-    <ProjectReference Include="..\WeSay.Project.Tests\WeSay.Project.Tests.csproj">
-      <Project>{F644C902-A952-4797-9E2D-19D6051DD032}</Project>
-      <Name>WeSay.Project.Tests</Name>
-    </ProjectReference>
-    <ProjectReference Include="..\WeSay.Project\WeSay.Project.csproj">
-      <Project>{5CFD0BB3-5B2A-4911-B220-9C2286151BF0}</Project>
-      <Name>WeSay.Project</Name>
-    </ProjectReference>
-    <ProjectReference Include="..\WeSay.TestUtilities\WeSay.TestUtilities.csproj">
-      <Project>{FEC3014D-0067-4D59-A838-3B046EC3C352}</Project>
-      <Name>WeSay.TestUtilities</Name>
-    </ProjectReference>
-    <ProjectReference Include="..\WeSay.UI\WeSay.UI.csproj">
-      <Project>{AC8F284C-7B34-4AC9-A7DE-FAF765456DFF}</Project>
-      <Name>WeSay.UI</Name>
-    </ProjectReference>
+    <ProjectReference Include="..\LexicalModel.Tests\LexicalModel.Tests.csproj" />
+    <ProjectReference Include="..\LexicalModel\LexicalModel.csproj" />
+    <ProjectReference Include="..\LexicalTools\LexicalTools.csproj" />
+    <ProjectReference Include="..\WeSay.App\WeSay.App.csproj" />
+    <ProjectReference Include="..\WeSay.Data\WeSay.Data.csproj" />
+    <ProjectReference Include="..\WeSay.Foundation\WeSay.Foundation.csproj" />
+    <ProjectReference Include="..\WeSay.Project.Tests\WeSay.Project.Tests.csproj" />
+    <ProjectReference Include="..\WeSay.Project\WeSay.Project.csproj" />
+    <ProjectReference Include="..\WeSay.TestUtilities\WeSay.TestUtilities.csproj" />
+    <ProjectReference Include="..\WeSay.UI\WeSay.UI.csproj" />
   </ItemGroup>
   <ItemGroup>
     <Folder Include="Services\" />
   </ItemGroup>
-  <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it.
-	   Other similar extension points exist, see Microsoft.Common.targets.
-  <Target Name="BeforeBuild">
-  </Target>
-  <Target Name="AfterBuild">
-  </Target>
-  -->
   <ItemGroup>
-    <None Include="packages.config" />
+    <PackageReference Include="System.ComponentModel.Composition" Version="8.0.0" />
+    <PackageReference Include="System.Management" Version="8.0.0" />
+    <PackageReference Include="Microsoft.AspNetCore.SystemWebAdapters" Version="1.3.0" />
+    <PackageReference Include="Microsoft.Bcl.AsyncInterfaces" Version="8.0.0" />
+    <PackageReference Include="Microsoft.Extensions.DependencyModel" Version="8.0.0" />
+    <PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
+    <PackageReference Include="System.Runtime.CompilerServices.Unsafe" Version="6.0.0" />
+    <PackageReference Include="System.Security.AccessControl" Version="6.0.0" />
+    <PackageReference Include="System.Configuration.ConfigurationManager" Version="8.0.0" />
+    <PackageReference Include="System.ServiceModel.Primitives" Version="8.0.0" />
+    <PackageReference Include="System.ServiceModel.Http" Version="8.0.0" />
+    <PackageReference Include="System.ServiceModel.Duplex" Version="6.0.0" />
+    <PackageReference Include="System.ServiceModel.NetTcp" Version="8.0.0" />
+    <PackageReference Include="System.ServiceModel.Security" Version="6.0.0" />
+    <PackageReference Include="System.ServiceModel.Federation" Version="8.0.0" />
   </ItemGroup>
   <ItemGroup>
     <Service Include="{82A7F48D-3B50-4B1E-B82E-3ADA8210C358}" />
   </ItemGroup>
-  <Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
-    <PropertyGroup>
-      <ErrorText>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}.</ErrorText>
-    </PropertyGroup>
-    <Error Condition="!Exists('..\..\packages\NUnit.3.13.1\build\NUnit.props')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\NUnit.3.13.1\build\NUnit.props'))" />
-    <Error Condition="!Exists('..\..\packages\NDesk.DBus.0.15.0\build\NDesk.DBus.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\NDesk.DBus.0.15.0\build\NDesk.DBus.targets'))" />
-    <Error Condition="!Exists('..\..\packages\SIL.Windows.Forms.9.0.0-beta0154\build\SIL.Windows.Forms.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\SIL.Windows.Forms.9.0.0-beta0154\build\SIL.Windows.Forms.targets'))" />
-  </Target>
-  <Import Project="..\..\packages\NDesk.DBus.0.15.0\build\NDesk.DBus.targets" Condition="Exists('..\..\packages\NDesk.DBus.0.15.0\build\NDesk.DBus.targets')" />
-  <Import Project="..\..\packages\SIL.Windows.Forms.9.0.0-beta0154\build\SIL.Windows.Forms.targets" Condition="Exists('..\..\packages\SIL.Windows.Forms.9.0.0-beta0154\build\SIL.Windows.Forms.targets')" />
+  <ItemGroup>
+    <PackageReference Include="Autofac" Version="4.9.4" />
+    <PackageReference Include="icu.net" Version="2.8.1" />
+    <PackageReference Include="JetBrains.Annotations" Version="2021.2.0" />
+    <PackageReference Include="Microsoft.DotNet.PlatformAbstractions" Version="2.0.4" />
+    <PackageReference Include="NDesk.DBus" Version="0.15.0" />
+    <PackageReference Include="NUnit" Version="3.13.3" />
+    <PackageReference Include="RelaxNG" Version="3.2.3" />
+    <PackageReference Include="SIL.Core" Version="13.0.1" />
+    <PackageReference Include="SIL.Core.Desktop" Version="13.0.1" />
+    <PackageReference Include="SIL.Lift" Version="13.0.1" />
+    <PackageReference Include="SIL.WritingSystems" Version="13.0.1" />
+    <PackageReference Include="Spart" Version="1.0.0" />
+  </ItemGroup>
 </Project>
\ No newline at end of file
diff --git a/src/WeSay.App.Tests/packages.config b/src/WeSay.App.Tests/packages.config
deleted file mode 100644
index b741cb59a..000000000
--- a/src/WeSay.App.Tests/packages.config
+++ /dev/null
@@ -1,34 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<packages>
-  <package id="Autofac" version="4.1.1" targetFramework="net461" />
-  <package id="DialogAdapters.Gtk2" version="0.1.9" targetFramework="net461" />
-  <package id="Enchant.Net" version="1.4.2" targetFramework="net461" />
-  <package id="icu.net" version="2.7.1" targetFramework="net461" />
-  <package id="JetBrains.Annotations" version="2021.2.0" targetFramework="net461" />
-  <package id="L10NSharp" version="5.0.0-beta0086" targetFramework="net461" />
-  <package id="Markdig.Signed" version="0.22.0" targetFramework="net461" />
-  <package id="Microsoft.Bcl.AsyncInterfaces" version="5.0.0" targetFramework="net461" />
-  <package id="Microsoft.DotNet.PlatformAbstractions" version="2.0.4" targetFramework="net461" />
-  <package id="Microsoft.Extensions.DependencyModel" version="2.0.4" targetFramework="net461" />
-  <package id="NDesk.DBus" version="0.15.0" targetFramework="net461" />
-  <package id="Newtonsoft.Json" version="12.0.3" targetFramework="net461" />
-  <package id="NUnit" version="3.13.1" targetFramework="net461" />
-  <package id="RelaxNG" version="3.2.3" targetFramework="net461" />
-  <package id="SIL.Core" version="9.0.0-beta0154" targetFramework="net461" />
-  <package id="SIL.Core.Desktop" version="9.0.0-beta0154" targetFramework="net461" />
-  <package id="SIL.DictionaryServices" version="9.0.0-beta0154" targetFramework="net461" />
-  <package id="SIL.Lift" version="9.0.0-beta0154" targetFramework="net461" />
-  <package id="SIL.Windows.Forms" version="9.0.0-beta0154" targetFramework="net461" />
-  <package id="SIL.WritingSystems" version="9.0.0-beta0154" targetFramework="net461" />
-  <package id="Spart" version="1.0.0" targetFramework="net461" />
-  <package id="System.Buffers" version="4.5.1" targetFramework="net461" />
-  <package id="System.IO.FileSystem.AccessControl" version="4.7.0" targetFramework="net461" />
-  <package id="System.Memory" version="4.5.4" targetFramework="net461" />
-  <package id="System.Numerics.Vectors" version="4.5.0" targetFramework="net461" />
-  <package id="System.Runtime.CompilerServices.Unsafe" version="4.5.3" targetFramework="net461" />
-  <package id="System.Security.AccessControl" version="4.7.0" targetFramework="net461" />
-  <package id="System.Security.Principal.Windows" version="4.7.0" targetFramework="net461" />
-  <package id="System.Threading.Tasks.Extensions" version="4.5.4" targetFramework="net461" />
-  <package id="System.ValueTuple" version="4.5.0" targetFramework="net461" />
-  <package id="TagLibSharp" version="2.2.0" targetFramework="net461" />
-</packages>
\ No newline at end of file
diff --git a/src/WeSay.App/Properties/AssemblyInfo.cs b/src/WeSay.App/Properties/AssemblyInfo.cs
deleted file mode 100644
index 6be4227fc..000000000
--- a/src/WeSay.App/Properties/AssemblyInfo.cs
+++ /dev/null
@@ -1,42 +0,0 @@
-using System;
-using System.Reflection;
-using System.Runtime.CompilerServices;
-using System.Runtime.InteropServices;
-using System.Security.Permissions;
-
-// 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("WeSay.App")]
-[assembly: AssemblyDescription("")]
-[assembly: AssemblyConfiguration("")]
-[assembly: AssemblyCompany("WeSay")]
-[assembly: AssemblyProduct("WeSay")]//NB: this name is used eventually in chorus display
-[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)]
-
-// The following GUID is for the ID of the typelib if this project is exposed to COM
-
-[assembly: Guid("d98ced23-3d7e-4631-8005-f2c7cbc57c29")]
-
-// Version information for an assembly consists of the following four values:
-//
-//      Major Version
-//      Minor Version
-//      Build Number
-//      Revision
-//
-
-[assembly: AssemblyVersion("1.9.0.10")]
-[assembly: AssemblyFileVersion("1.9.0.10")]
-[assembly: CLSCompliant(true)]
-[assembly: SecurityPermission(SecurityAction.RequestMinimum, Execution = true)]
-[assembly: InternalsVisibleTo("WeSay.App.Tests")]
\ No newline at end of file
diff --git a/src/WeSay.App/WeSay.App.csproj b/src/WeSay.App/WeSay.App.csproj
index 653f34594..aa151781d 100755
--- a/src/WeSay.App/WeSay.App.csproj
+++ b/src/WeSay.App/WeSay.App.csproj
@@ -1,23 +1,8 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="12.0">
+<Project Sdk="Microsoft.NET.Sdk">
   <PropertyGroup>
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
-    <ProductVersion>9.0.21022</ProductVersion>
-    <SchemaVersion>2.0</SchemaVersion>
-    <ProjectGuid>{EFB9D66D-AF0F-4E45-A1AC-DB32981711D2}</ProjectGuid>
+    <TargetFramework>net8.0-windows</TargetFramework>
     <OutputType>WinExe</OutputType>
-    <AppDesignerFolder>Properties</AppDesignerFolder>
-    <RootNamespace>WeSay.App</RootNamespace>
-    <AssemblyName>WeSay.App</AssemblyName>
     <ApplicationIcon>..\..\artwork\WeSay.ico</ApplicationIcon>
-    <FileUpgradeFlags>
-    </FileUpgradeFlags>
-    <UpgradeBackupLocation>
-    </UpgradeBackupLocation>
-    <OldToolsVersion>3.5</OldToolsVersion>
-    <TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion>
-    <TargetFrameworkProfile />
     <TargetZone>LocalIntranet</TargetZone>
     <GenerateManifests>false</GenerateManifests>
     <PublishUrl>publish\</PublishUrl>
@@ -35,298 +20,94 @@
     <IsWebBootstrapper>false</IsWebBootstrapper>
     <UseApplicationTrust>false</UseApplicationTrust>
     <BootstrapperEnabled>true</BootstrapperEnabled>
-    <NuGetPackageImportStamp>
-    </NuGetPackageImportStamp>
+    <GenerateAssemblyInfo>false</GenerateAssemblyInfo>
+    <UseWindowsForms>true</UseWindowsForms>
+    <ImportWindowsDesktopTargets>true</ImportWindowsDesktopTargets>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
-    <DebugSymbols>true</DebugSymbols>
-    <DebugType>full</DebugType>
-    <Optimize>false</Optimize>
     <OutputPath>..\..\output\Debug\</OutputPath>
-    <DefineConstants>DEBUG;TRACE</DefineConstants>
-    <ErrorReport>prompt</ErrorReport>
-    <WarningLevel>4</WarningLevel>
-    <OutputType>WinExe</OutputType>
-    <AssemblyName>WeSay.App</AssemblyName>
-    <RootNamespace>WeSay.App</RootNamespace>
-    <AllowUnsafeBlocks>false</AllowUnsafeBlocks>
     <CheckForOverflowUnderflow>true</CheckForOverflowUnderflow>
     <ApplicationIcon>..\..\artwork\WeSay.ico</ApplicationIcon>
     <UseVSHostingProcess>true</UseVSHostingProcess>
-    <PlatformTarget>AnyCPU</PlatformTarget>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
-    <DebugType>pdbonly</DebugType>
-    <Optimize>true</Optimize>
     <OutputPath>..\..\output\Release\</OutputPath>
-    <DefineConstants>TRACE</DefineConstants>
-    <ErrorReport>prompt</ErrorReport>
-    <WarningLevel>4</WarningLevel>
-    <OutputType>WinExe</OutputType>
-    <AssemblyName>WeSay.App</AssemblyName>
     <DebugSymbols>true</DebugSymbols>
-    <RootNamespace>WeSay.App</RootNamespace>
-    <AllowUnsafeBlocks>false</AllowUnsafeBlocks>
     <CheckForOverflowUnderflow>true</CheckForOverflowUnderflow>
     <ApplicationIcon>..\..\artwork\WeSay.ico</ApplicationIcon>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
-    <DebugSymbols>true</DebugSymbols>
     <OutputPath>..\..\output\Debug\</OutputPath>
-    <DefineConstants>DEBUG;TRACE</DefineConstants>
     <CheckForOverflowUnderflow>true</CheckForOverflowUnderflow>
-    <DebugType>full</DebugType>
-    <PlatformTarget>x86</PlatformTarget>
-    <ErrorReport>prompt</ErrorReport>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
     <DebugSymbols>true</DebugSymbols>
     <OutputPath>..\..\output\Release\</OutputPath>
-    <DefineConstants>TRACE</DefineConstants>
     <CheckForOverflowUnderflow>true</CheckForOverflowUnderflow>
-    <Optimize>true</Optimize>
-    <DebugType>pdbonly</DebugType>
-    <PlatformTarget>x86</PlatformTarget>
-    <ErrorReport>prompt</ErrorReport>
-  </PropertyGroup>
-  <PropertyGroup>
-    <AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
   </PropertyGroup>
   <ItemGroup>
-    <Reference Include="Autofac, Version=4.1.1.0, Culture=neutral, PublicKeyToken=17863af14b0044da, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\Autofac.4.1.1\lib\net45\Autofac.dll</HintPath>
-    </Reference>
-    <Reference Include="Chorus, Version=3.1.0.0, Culture=neutral, PublicKeyToken=f1447bae1e63f485, processorArchitecture=MSIL">
-      <SpecificVersion>False</SpecificVersion>
-      <HintPath>..\..\packages\SIL.Chorus.App.5.0.0-beta0017\lib\net461\Chorus.exe</HintPath>
-    </Reference>
-    <Reference Include="Enchant.Net, Version=1.4.3.1, Culture=neutral, processorArchitecture=MSIL">
-      <SpecificVersion>False</SpecificVersion>
-      <HintPath>..\..\packages\Enchant.Net.1.4.2\lib\net461\Enchant.Net.dll</HintPath>
-    </Reference>
-    <Reference Include="Geckofx-Core, Version=45.0.34.0, Culture=neutral, PublicKeyToken=3209ac31600d1857, processorArchitecture=x86">
-      <SpecificVersion>False</SpecificVersion>
-      <HintPath>..\..\packages\Geckofx60.32.60.0.54\lib\net45\Geckofx-Core.dll</HintPath>
-    </Reference>
-    <Reference Include="Geckofx-Winforms, Version=45.0.34.0, Culture=neutral, PublicKeyToken=3209ac31600d1857, processorArchitecture=x86">
-      <SpecificVersion>False</SpecificVersion>
-      <HintPath>..\..\packages\Geckofx60.32.60.0.54\lib\net45\Geckofx-Winforms.dll</HintPath>
-    </Reference>
-    <Reference Include="icu.net, Version=2.7.0.0, Culture=neutral, PublicKeyToken=416fdd914afa6b66, processorArchitecture=MSIL">
-      <SpecificVersion>False</SpecificVersion>
-      <HintPath>..\..\packages\icu.net.2.7.1\lib\net451\icu.net.dll</HintPath>
-    </Reference>
-    <Reference Include="LibChorus, Version=5.0.0.0, Culture=neutral, PublicKeyToken=f1447bae1e63f485, processorArchitecture=MSIL">
-      <SpecificVersion>False</SpecificVersion>
-      <HintPath>..\..\packages\SIL.Chorus.LibChorus.5.0.0-beta0017\lib\net461\LibChorus.dll</HintPath>
-    </Reference>
-    <Reference Include="Microsoft.Bcl.AsyncInterfaces, Version=5.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
-      <SpecificVersion>False</SpecificVersion>
-      <HintPath>..\..\packages\Microsoft.Bcl.AsyncInterfaces.5.0.0\lib\net461\Microsoft.Bcl.AsyncInterfaces.dll</HintPath>
-    </Reference>
-    <Reference Include="Microsoft.DotNet.PlatformAbstractions, Version=2.0.4.0, Culture=neutral, PublicKeyToken=adb9793829ddae60, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\Microsoft.DotNet.PlatformAbstractions.2.0.4\lib\net45\Microsoft.DotNet.PlatformAbstractions.dll</HintPath>
-    </Reference>
-    <Reference Include="Microsoft.Extensions.DependencyModel, Version=2.0.4.0, Culture=neutral, PublicKeyToken=adb9793829ddae60, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\Microsoft.Extensions.DependencyModel.2.0.4\lib\net451\Microsoft.Extensions.DependencyModel.dll</HintPath>
-    </Reference>
-    <Reference Include="Newtonsoft.Json, Version=12.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\Newtonsoft.Json.12.0.3\lib\net45\Newtonsoft.Json.dll</HintPath>
-    </Reference>
-    <Reference Include="SIL.Core">
-      <SpecificVersion>False</SpecificVersion>
-      <HintPath>..\..\packages\SIL.Core.9.0.0-beta0154\lib\net461\SIL.Core.dll</HintPath>
-    </Reference>
-    <Reference Include="SIL.Core.Desktop">
-      <SpecificVersion>False</SpecificVersion>
-      <HintPath>..\..\packages\SIL.Core.Desktop.9.0.0-beta0154\lib\net461\SIL.Core.Desktop.dll</HintPath>
-    </Reference>
-    <Reference Include="SIL.Lift">
-      <SpecificVersion>False</SpecificVersion>
-      <HintPath>..\..\packages\SIL.Lift.9.0.0-beta0154\lib\net461\SIL.Lift.dll</HintPath>
-    </Reference>
-    <Reference Include="SIL.Windows.Forms">
-      <SpecificVersion>False</SpecificVersion>
-      <HintPath>..\..\packages\SIL.Windows.Forms.9.0.0-beta0154\lib\net461\SIL.Windows.Forms.dll</HintPath>
-    </Reference>
-    <Reference Include="SIL.Windows.Forms.Keyboarding">
-      <SpecificVersion>False</SpecificVersion>
-      <HintPath>..\..\packages\SIL.Windows.Forms.Keyboarding.9.0.0-beta0154\lib\net461\SIL.Windows.Forms.Keyboarding.dll</HintPath>
-    </Reference>
-    <Reference Condition="'$(OS)'=='Windows_NT'" Include="IrrKlang.NET4.dll, Culture=neutral, PublicKeyToken=null">
-      <SpecificVersion>False</SpecificVersion>
-      <HintPath>..\..\packages\SIL.Media.9.0.0-beta0154\build\lib\win-x86\irrKlang.NET4.dll</HintPath>
-    </Reference>
-    <None Include="packages.config" />
     <None Include="..\..\lib\common\Enchant.Net.dll.config">
       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
     </None>
-    <Reference Include="SIL.WritingSystems">
-      <SpecificVersion>False</SpecificVersion>
-      <HintPath>..\..\packages\SIL.WritingSystems.9.0.0-beta0154\lib\net461\SIL.WritingSystems.dll</HintPath>
-    </Reference>
-    <Reference Include="System" />
-    <Reference Include="System.ComponentModel.Composition" />
-    <Reference Include="System.Configuration" />
-    <Reference Include="System.Core">
-      <RequiredTargetFramework>3.5</RequiredTargetFramework>
-    </Reference>
-    <Reference Include="System.Data" />
-    <Reference Include="System.Drawing" />
-    <Reference Include="System.Runtime.CompilerServices.Unsafe, Version=4.0.4.1, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\System.Runtime.CompilerServices.Unsafe.4.5.3\lib\net461\System.Runtime.CompilerServices.Unsafe.dll</HintPath>
-    </Reference>
-    <Reference Include="System.Threading.Tasks.Extensions, Version=4.2.0.1, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\System.Threading.Tasks.Extensions.4.5.4\lib\net461\System.Threading.Tasks.Extensions.dll</HintPath>
-    </Reference>
-    <Reference Include="System.ValueTuple, Version=4.0.3.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\System.ValueTuple.4.5.0\lib\net461\System.ValueTuple.dll</HintPath>
-    </Reference>
-    <Reference Include="System.Windows.Forms" />
-    <Reference Include="System.Xml" />
-    <Reference Include="Vulcan.Uczniowie.HelpProvider, Version=0.9.999.0, Culture=neutral, processorArchitecture=MSIL">
-      <SpecificVersion>False</SpecificVersion>
-      <HintPath>..\..\packages\Vulcan.Uczniowie.HelpProvider.1.0.16\lib\net461\Vulcan.Uczniowie.HelpProvider.dll</HintPath>
-    </Reference>
   </ItemGroup>
   <ItemGroup>
-    <Compile Include="CommandLineParser.cs" />
-    <Compile Include="SimpleProgressDialog.cs">
-      <SubType>Form</SubType>
-    </Compile>
-    <Compile Include="SimpleProgressDialog.Designer.cs">
-      <DependentUpon>SimpleProgressDialog.cs</DependentUpon>
-    </Compile>
-    <Compile Include="LongStartupNotification.cs">
-      <SubType>Form</SubType>
-    </Compile>
-    <Compile Include="LongStartupNotification.Designer.cs">
-      <DependentUpon>LongStartupNotification.cs</DependentUpon>
-    </Compile>
-    <Compile Include="Properties\Resources.Designer.cs">
-      <AutoGen>True</AutoGen>
-      <DesignTime>True</DesignTime>
-      <DependentUpon>Resources.resx</DependentUpon>
-    </Compile>
-    <Compile Include="registrySettingsProvider.cs" />
-    <Compile Include="Properties\Settings.cs" />
-    <Compile Include="StatusBarController.cs" />
-    <Compile Include="TabbedForm.cs">
-      <SubType>Form</SubType>
-    </Compile>
-    <Compile Include="TabbedForm.Designer.cs">
-      <DependentUpon>TabbedForm.cs</DependentUpon>
-    </Compile>
-    <Compile Include="WeSayApp.cs">
-    </Compile>
-    <Compile Include="Properties\AssemblyInfo.cs" />
     <None Include="Properties\app.manifest" />
-    <None Include="Properties\Settings.settings">
-      <Generator>SettingsSingleFileGenerator</Generator>
-      <LastGenOutput>Settings.Designer.cs</LastGenOutput>
-    </None>
-    <None Include="app.config" />
-    <Compile Include="Properties\Settings.Designer.cs">
-      <AutoGen>True</AutoGen>
-      <DependentUpon>Settings.settings</DependentUpon>
-      <DesignTimeSharedInput>True</DesignTimeSharedInput>
-    </Compile>
   </ItemGroup>
   <ItemGroup>
-    <ProjectReference Include="..\LexicalModel\LexicalModel.csproj">
-      <Project>{5F61C809-B6C0-4567-9603-B2198E1AD038}</Project>
-      <Name>LexicalModel</Name>
-    </ProjectReference>
-    <ProjectReference Include="..\LexicalTools\LexicalTools.csproj">
-      <Project>{87af0b02-2983-486d-857f-d1859535c234}</Project>
-      <Name>LexicalTools</Name>
-    </ProjectReference>
-    <ProjectReference Include="..\WeSay.Data\WeSay.Data.csproj">
-      <Project>{600D0FD4-D189-41A0-9BC5-FC79AD2CF1CD}</Project>
-      <Name>WeSay.Data</Name>
-    </ProjectReference>
-    <ProjectReference Include="..\WeSay.Foundation\WeSay.Foundation.csproj">
-      <Project>{F12EB680-0990-4900-B77E-0FBF2E28A815}</Project>
-      <Name>WeSay.Foundation</Name>
-    </ProjectReference>
-    <ProjectReference Include="..\WeSay.Project\WeSay.Project.csproj">
-      <Project>{5CFD0BB3-5B2A-4911-B220-9C2286151BF0}</Project>
-      <Name>WeSay.Project</Name>
-    </ProjectReference>
-    <ProjectReference Include="..\WeSay.UI\WeSay.UI.csproj">
-      <Project>{AC8F284C-7B34-4AC9-A7DE-FAF765456DFF}</Project>
-      <Name>WeSay.UI</Name>
-    </ProjectReference>
+    <ProjectReference Include="..\LexicalModel\LexicalModel.csproj" />
+    <ProjectReference Include="..\LexicalTools\LexicalTools.csproj" />
+    <ProjectReference Include="..\WeSay.Data\WeSay.Data.csproj" />
+    <ProjectReference Include="..\WeSay.Foundation\WeSay.Foundation.csproj" />
+    <ProjectReference Include="..\WeSay.Project\WeSay.Project.csproj" />
+    <ProjectReference Include="..\WeSay.UI\WeSay.UI.csproj" />
   </ItemGroup>
   <ItemGroup>
-    <EmbeddedResource Include="SimpleProgressDialog.resx">
-      <DependentUpon>SimpleProgressDialog.cs</DependentUpon>
-      <SubType>Designer</SubType>
-    </EmbeddedResource>
-    <EmbeddedResource Include="Properties\Resources.resx">
-      <SubType>Designer</SubType>
-      <Generator>ResXFileCodeGenerator</Generator>
-      <LastGenOutput>Resources.Designer.cs</LastGenOutput>
-    </EmbeddedResource>
-    <EmbeddedResource Include="TabbedForm.resx">
-      <SubType>Designer</SubType>
-      <DependentUpon>TabbedForm.cs</DependentUpon>
+    <EmbeddedResource Include="..\Addin.Transform\plift2html.xsl">
+      <Link>plift2html.xsl</Link>
+      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
     </EmbeddedResource>
   </ItemGroup>
   <ItemGroup>
-    <EmbeddedResource Include="LongStartupNotification.resx">
-      <SubType>Designer</SubType>
-      <DependentUpon>LongStartupNotification.cs</DependentUpon>
-    </EmbeddedResource>
+    <None Include="icu4c.readme.txt" />
   </ItemGroup>
   <ItemGroup>
-    <EmbeddedResource Include="..\Addin.Transform\plift2html.xsl">
-      <Link>plift2html.xsl</Link>
-      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
-    </EmbeddedResource>
+    <PackageReference Include="Geckofx60.32" Version="60.0.55" GeneratePathProperty="true"/>
+    <Reference Include="Geckofx-Core">
+      <HintPath>$(PkgGeckofx60_32)\lib\net45\Geckofx-Core.dll</HintPath>
+    </Reference>
+    <Reference Include="Geckofx-Winforms">
+      <HintPath>$(PkgGeckofx60_32)\lib\net45\Geckofx-Winforms.dll</HintPath>
+    </Reference>
   </ItemGroup>
   <ItemGroup>
-    <BootstrapperPackage Include="Microsoft.Net.Client.3.5">
-      <Visible>False</Visible>
-      <ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName>
-      <Install>false</Install>
-    </BootstrapperPackage>
-    <BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
-      <Visible>False</Visible>
-      <ProductName>.NET Framework 3.5 SP1</ProductName>
-      <Install>true</Install>
-    </BootstrapperPackage>
-    <BootstrapperPackage Include="Microsoft.Windows.Installer.3.1">
-      <Visible>False</Visible>
-      <ProductName>Windows Installer 3.1</ProductName>
-      <Install>true</Install>
-    </BootstrapperPackage>
+    <PackageReference Include="SIL.Windows.Forms" Version="13.0.1" GeneratePathProperty="true"/>
+    <Reference Include="SIL.Windows.Forms">
+      <HintPath>$(PkgSIL_Windows_Forms)\lib\net461\SIL.Windows.Forms.dll</HintPath>
+    </Reference>
+    <PackageReference Include="SIL.Windows.Forms.Keyboarding" Version="13.0.1" GeneratePathProperty="true"/>
+    <Reference Include="SIL.Windows.Forms.Keyboarding">
+      <HintPath>$(PkgSIL_Windows_Forms_Keyboarding)\lib\net461\SIL.Windows.Forms.Keyboarding.dll</HintPath>
+    </Reference>
   </ItemGroup>
   <ItemGroup>
-    <None Include="Resources\WeSayConfigMenuSized.png" />
+    <PackageReference Include="Autofac" Version="4.9.4" />
+    <PackageReference Include="icu.net" Version="2.8.1" />
+    <PackageReference Include="Icu4c.Win.Min" Version="59.1.7" />
+    <PackageReference Include="Microsoft.DotNet.PlatformAbstractions" Version="2.0.4" />
+    <PackageReference Include="NDesk.DBus" Version="0.15.0" />
+    <PackageReference Include="System.ComponentModel.Composition" Version="8.0.0" />
+    <PackageReference Include="Microsoft.Bcl.AsyncInterfaces" Version="8.0.0" />
+    <PackageReference Include="Microsoft.Extensions.DependencyModel" Version="8.0.0" />
+    <PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
+    <PackageReference Include="System.Runtime.CompilerServices.Unsafe" Version="6.0.0" />
+    <PackageReference Include="System.Configuration.ConfigurationManager" Version="8.0.0" />
   </ItemGroup>
   <ItemGroup>
-    <None Include="icu4c.readme.txt" />
+    <Compile Remove="BasilProject.cs" />
+    <Compile Remove="SampleTaskBuilder.cs" />
+    <Compile Remove="TabbedSkin.cs" />
   </ItemGroup>
-  <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
-  <PropertyGroup>
-    <PreBuildEvent>
-    </PreBuildEvent>
-  </PropertyGroup>
-  <Import Project="..\..\packages\NDesk.DBus.0.15.0\build\NDesk.DBus.targets" Condition="Exists('..\..\packages\NDesk.DBus.0.15.0\build\NDesk.DBus.targets')" />
-  <Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
-    <PropertyGroup>
-      <ErrorText>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}.</ErrorText>
-    </PropertyGroup>
-    <Error Condition="!Exists('..\..\packages\NDesk.DBus.0.15.0\build\NDesk.DBus.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\NDesk.DBus.0.15.0\build\NDesk.DBus.targets'))" />
-    <Error Condition="!Exists('..\..\packages\Icu4c.Win.Min.59.1.7\build\Icu4c.Win.Min.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\Icu4c.Win.Min.59.1.7\build\Icu4c.Win.Min.targets'))" />
-  </Target>
-  <Import Project="..\..\packages\Icu4c.Win.Min.59.1.7\build\Icu4c.Win.Min.targets" Condition="Exists('..\..\packages\Icu4c.Win.Min.59.1.7\build\Icu4c.Win.Min.targets')" />
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it.
-	   Other similar extension points exist, see Microsoft.Common.targets.
-  <Target Name="BeforeBuild">
-  </Target>
-  -->
+  <PropertyGroup />
   <Target Name="AfterBuild">
     <ItemGroup>
       <FirefoxFiles Include="..\..\packages\Geckofx60.32.60.0.54\content\Firefox\**\*.*" Condition="'$(Platform)' == 'x86'" />
diff --git a/src/WeSay.App/WeSayApp.cs b/src/WeSay.App/WeSayApp.cs
index 1aa134133..449464c97 100755
--- a/src/WeSay.App/WeSayApp.cs
+++ b/src/WeSay.App/WeSayApp.cs
@@ -38,25 +38,22 @@ public class WeSayApp
 		[STAThread]
 		private static void Main(string[] args)
 		{
-			using (new SIL.CoreSetup())
+			try
 			{
-				try
-				{
-					// initialize Palaso keyboarding and ICU
-					Sldr.Initialize();
-					SIL.Windows.Forms.Keyboarding.KeyboardController.Initialize();
-					Icu.Wrapper.Init();
-					var app = new WeSayApp(args);
-					app.Run();
-				}
-				finally
-				{
-					Keyboard.Controller.ActivateDefaultKeyboard();
-					SIL.Windows.Forms.Keyboarding.KeyboardController.Shutdown();
-					Sldr.Cleanup();
-					Icu.Wrapper.Cleanup();
-					ReleaseMutexForThisProject();
-				}
+				// initialize Palaso keyboarding and ICU
+				Sldr.Initialize();
+				SIL.Windows.Forms.Keyboarding.KeyboardController.Initialize();
+				Icu.Wrapper.Init();
+				var app = new WeSayApp(args);
+				app.Run();
+			}
+			finally
+			{
+				Keyboard.Controller.ActivateDefaultKeyboard();
+				SIL.Windows.Forms.Keyboarding.KeyboardController.Shutdown();
+				Sldr.Cleanup();
+				Icu.Wrapper.Cleanup();
+				ReleaseMutexForThisProject();
 			}
 		}
 
@@ -120,7 +117,7 @@ public static void SetUpXulRunner()
 				// For windows, only initialize xulrunner if we are using the gecko browser control option
 				if (WeSayWordsProject.GeckoOption)
 				{
-					string xulRunnerLocation = Path.Combine(FileLocator.DirectoryOfTheApplicationExecutable, "Firefox");
+					string xulRunnerLocation = Path.Combine(FileLocationUtilities.DirectoryOfTheApplicationExecutable, "Firefox");
 					if (!Directory.Exists(xulRunnerLocation))
 					{
 						throw new ApplicationException("XULRunner needs to be installed to " + xulRunnerLocation);
@@ -540,7 +537,7 @@ private static void SetupErrorHandling()
 				ErrorReport.AddProperty("ProjectPath", BasilProject.Project.ProjectDirectoryPath);
 			}
 			ErrorReport.AddStandardProperties();
-			ExceptionHandler.Init();
+			// ExceptionHandler.Init();
 		}
 
 		private class CommandLineArguments
@@ -587,7 +584,7 @@ private static void ShowCommandLineError(string e)
 
 		public static void ShowHelpTopic(string topicLink)
 		{
-			string helpFilePath = FileLocator.GetFileDistributedWithApplication("WeSay_Helps.chm");
+			string helpFilePath = FileLocationUtilities.GetFileDistributedWithApplication("WeSay_Helps.chm");
 			if (File.Exists(helpFilePath))
 			{
 				//var uri = new Uri(helpFilePath);
diff --git a/src/WeSay.App/packages.config b/src/WeSay.App/packages.config
deleted file mode 100644
index 55b4c6749..000000000
--- a/src/WeSay.App/packages.config
+++ /dev/null
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<packages>
-  <package id="Autofac" version="4.1.1" targetFramework="net461" />
-  <package id="icu.net" version="2.7.1" targetFramework="net461" />
-  <package id="Icu4c.Win.Min" version="59.1.7" targetFramework="net461" />
-  <package id="Microsoft.Bcl.AsyncInterfaces" version="5.0.0" targetFramework="net461" />
-  <package id="Microsoft.DotNet.PlatformAbstractions" version="2.0.4" targetFramework="net461" />
-  <package id="Microsoft.Extensions.DependencyModel" version="2.0.4" targetFramework="net461" />
-  <package id="NDesk.DBus" version="0.15.0" targetFramework="net40-client" />
-  <package id="Newtonsoft.Json" version="12.0.3" targetFramework="net461" />
-  <package id="System.Runtime.CompilerServices.Unsafe" version="4.5.3" targetFramework="net461" />
-  <package id="System.Threading.Tasks.Extensions" version="4.5.4" targetFramework="net461" />
-  <package id="System.ValueTuple" version="4.5.0" targetFramework="net461" />
-</packages>
\ No newline at end of file
diff --git a/src/WeSay.ConfigTool.Tests/Properties/AssemblyInfo.cs b/src/WeSay.ConfigTool.Tests/Properties/AssemblyInfo.cs
deleted file mode 100644
index e8f6b193f..000000000
--- a/src/WeSay.ConfigTool.Tests/Properties/AssemblyInfo.cs
+++ /dev/null
@@ -1,38 +0,0 @@
-using System.Reflection;
-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("Admin.Tests")]
-[assembly: AssemblyDescription("")]
-[assembly: AssemblyConfiguration("")]
-[assembly: AssemblyCompany("SIL")]
-[assembly: AssemblyProduct("Admin.Tests")]
-[assembly: AssemblyCopyright("Copyright © SIL 2006")]
-[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)]
-
-// The following GUID is for the ID of the typelib if this project is exposed to COM
-
-[assembly: Guid("2808a00f-8896-488d-b2f6-6627870c96d2")]
-
-// 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 Revision and Build Numbers
-// by using the '*' as shown below:
-
-[assembly: AssemblyVersion("1.9.0.10")]
-[assembly: AssemblyFileVersion("1.9.0.10")]
\ No newline at end of file
diff --git a/src/WeSay.ConfigTool.Tests/WeSay.ConfigTool.Tests.csproj b/src/WeSay.ConfigTool.Tests/WeSay.ConfigTool.Tests.csproj
index 15862d354..234ba6614 100644
--- a/src/WeSay.ConfigTool.Tests/WeSay.ConfigTool.Tests.csproj
+++ b/src/WeSay.ConfigTool.Tests/WeSay.ConfigTool.Tests.csproj
@@ -1,230 +1,66 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="12.0">
-  <Import Project="..\..\packages\NUnit.3.13.1\build\NUnit.props" Condition="Exists('..\..\packages\NUnit.3.13.1\build\NUnit.props')" />
+<Project Sdk="Microsoft.NET.Sdk">
   <PropertyGroup>
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
-    <ProductVersion>9.0.21022</ProductVersion>
-    <SchemaVersion>2.0</SchemaVersion>
-    <ProjectGuid>{FB7CFBB8-D7D0-4E9D-96CF-7D3D0D947EB5}</ProjectGuid>
+    <TargetFramework>net8.0-windows</TargetFramework>
     <OutputType>Library</OutputType>
-    <AppDesignerFolder>Properties</AppDesignerFolder>
-    <RootNamespace>WeSay.ConfigTool.Tests</RootNamespace>
-    <AssemblyName>WeSay.ConfigTool.Tests</AssemblyName>
     <AppConfig>..\AppForTestsSTA.config</AppConfig>
-    <FileUpgradeFlags>
-    </FileUpgradeFlags>
-    <UpgradeBackupLocation>
-    </UpgradeBackupLocation>
-    <OldToolsVersion>3.5</OldToolsVersion>
-    <TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion>
-    <TargetFrameworkProfile />
-    <NuGetPackageImportStamp>
-    </NuGetPackageImportStamp>
+    <GenerateAssemblyInfo>false</GenerateAssemblyInfo>
+    <UseWindowsForms>true</UseWindowsForms>
+    <ImportWindowsDesktopTargets>true</ImportWindowsDesktopTargets>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
-    <DebugSymbols>true</DebugSymbols>
-    <DebugType>full</DebugType>
-    <Optimize>false</Optimize>
     <OutputPath>..\..\output\Debug\</OutputPath>
-    <DefineConstants>DEBUG;TRACE</DefineConstants>
-    <ErrorReport>prompt</ErrorReport>
-    <WarningLevel>4</WarningLevel>
     <OutputType>Library</OutputType>
-    <AssemblyName>WeSay.ConfigTool.Tests</AssemblyName>
-    <RootNamespace>WeSay.ConfigTool.Tests</RootNamespace>
-    <AllowUnsafeBlocks>false</AllowUnsafeBlocks>
     <CheckForOverflowUnderflow>true</CheckForOverflowUnderflow>
     <PlatformTarget>x86</PlatformTarget>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
-    <DebugType>pdbonly</DebugType>
-    <Optimize>true</Optimize>
     <OutputPath>..\..\output\Release\</OutputPath>
-    <DefineConstants>TRACE</DefineConstants>
-    <ErrorReport>prompt</ErrorReport>
-    <WarningLevel>4</WarningLevel>
     <OutputType>Library</OutputType>
-    <AssemblyName>WeSay.ConfigTool.Tests</AssemblyName>
     <DebugSymbols>true</DebugSymbols>
-    <RootNamespace>WeSay.ConfigTool.Tests</RootNamespace>
-    <AllowUnsafeBlocks>false</AllowUnsafeBlocks>
     <CheckForOverflowUnderflow>true</CheckForOverflowUnderflow>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
-    <DebugSymbols>true</DebugSymbols>
     <OutputPath>..\..\output\Debug\</OutputPath>
-    <DefineConstants>DEBUG;TRACE</DefineConstants>
     <CheckForOverflowUnderflow>true</CheckForOverflowUnderflow>
-    <DebugType>full</DebugType>
-    <PlatformTarget>x86</PlatformTarget>
-    <ErrorReport>prompt</ErrorReport>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
     <DebugSymbols>true</DebugSymbols>
     <OutputPath>..\..\output\Release\</OutputPath>
-    <DefineConstants>TRACE</DefineConstants>
     <CheckForOverflowUnderflow>true</CheckForOverflowUnderflow>
-    <Optimize>true</Optimize>
-    <DebugType>pdbonly</DebugType>
-    <PlatformTarget>x86</PlatformTarget>
-    <ErrorReport>prompt</ErrorReport>
   </PropertyGroup>
   <PropertyGroup>
     <AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
   </PropertyGroup>
   <ItemGroup>
-    <Reference Include="Commons.Xml.Relaxng, Version=4.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\RelaxNG.3.2.3\lib\net40\Commons.Xml.Relaxng.dll</HintPath>
-    </Reference>
-    <Reference Include="icu.net, Version=2.7.0.0, Culture=neutral, PublicKeyToken=416fdd914afa6b66, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\icu.net.2.7.1\lib\net451\icu.net.dll</HintPath>
-    </Reference>
-    <Reference Include="L10NSharp, Version=5.0.0.0, Culture=neutral, PublicKeyToken=fd0b3e309a5b7c28, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\L10NSharp.4.1.0\lib\net461\L10NSharp.dll</HintPath>
-      <Private>True</Private>
-    </Reference>
-    <Reference Include="Microsoft.DotNet.PlatformAbstractions, Version=2.0.4.0, Culture=neutral, PublicKeyToken=adb9793829ddae60, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\Microsoft.DotNet.PlatformAbstractions.2.0.4\lib\net45\Microsoft.DotNet.PlatformAbstractions.dll</HintPath>
-    </Reference>
-    <Reference Include="Microsoft.Extensions.DependencyModel, Version=2.0.4.0, Culture=neutral, PublicKeyToken=adb9793829ddae60, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\Microsoft.Extensions.DependencyModel.2.0.4\lib\net451\Microsoft.Extensions.DependencyModel.dll</HintPath>
-    </Reference>
-    <Reference Include="NDesk.DBus, Version=1.0.0.0, Culture=neutral, PublicKeyToken=f6716e4f9b2ed099, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\NDesk.DBus.0.15.0\lib\NDesk.DBus.dll</HintPath>
-    </Reference>
-    <Reference Include="Newtonsoft.Json, Version=12.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
-      <SpecificVersion>False</SpecificVersion>
-      <HintPath>..\..\packages\Newtonsoft.Json.12.0.3\lib\net45\Newtonsoft.Json.dll</HintPath>
-    </Reference>
-    <Reference Include="nunit.framework, Version=3.13.1.0, Culture=neutral, PublicKeyToken=2638cd05610744eb, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\NUnit.3.13.1\lib\net45\nunit.framework.dll</HintPath>
-    </Reference>
-    <Reference Include="SIL.Core, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\SIL.Core.9.0.0-beta0154\lib\net461\SIL.Core.dll</HintPath>
-    </Reference>
-    <Reference Include="SIL.Core.Desktop, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\SIL.Core.Desktop.9.0.0-beta0154\lib\net461\SIL.Core.Desktop.dll</HintPath>
-    </Reference>
-    <Reference Include="SIL.DictionaryServices, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\SIL.DictionaryServices.9.0.0-beta0154\lib\net461\SIL.DictionaryServices.dll</HintPath>
-    </Reference>
-    <Reference Include="SIL.Lift, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\SIL.Lift.9.0.0-beta0154\lib\net461\SIL.Lift.dll</HintPath>
-    </Reference>
-    <Reference Include="SIL.TestUtilities, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
-      <SpecificVersion>False</SpecificVersion>
-      <HintPath>..\..\packages\SIL.TestUtilities.9.0.0-beta0154\lib\net461\SIL.TestUtilities.dll</HintPath>
-    </Reference>
-    <Reference Include="SIL.Windows.Forms">
-      <SpecificVersion>False</SpecificVersion>
-      <HintPath>..\..\packages\SIL.Windows.Forms.9.0.0-beta0154\lib\net461\SIL.Windows.Forms.dll</HintPath>
-    </Reference>
-    <Reference Include="SIL.Windows.Forms.Keyboarding">
-      <HintPath>..\..\packages\SIL.Windows.Forms.Keyboarding.9.0.0-beta0154\lib\net461\SIL.Windows.Forms.Keyboarding.dll</HintPath>
-    </Reference>
-    <Reference Include="SIL.WritingSystems, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\SIL.WritingSystems.9.0.0-beta0154\lib\net461\SIL.WritingSystems.dll</HintPath>
-    </Reference>
-    <Reference Include="Spart, Version=1.0.0.0, Culture=neutral, PublicKeyToken=14d24e064e474331, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\Spart.1.0.0\lib\net461\Spart.dll</HintPath>
-    </Reference>
-    <Reference Include="System" />
-    <Reference Include="System.Configuration" />
-    <Reference Include="System.Core">
-      <RequiredTargetFramework>3.5</RequiredTargetFramework>
-    </Reference>
-    <Reference Include="System.Data" />
-    <Reference Include="System.IO.FileSystem.AccessControl, Version=4.0.5.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\System.IO.FileSystem.AccessControl.4.7.0\lib\net461\System.IO.FileSystem.AccessControl.dll</HintPath>
-    </Reference>
-    <Reference Include="System.Management" />
-    <Reference Include="System.Security" />
-    <Reference Include="System.Security.AccessControl, Version=4.1.3.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\System.Security.AccessControl.4.7.0\lib\net461\System.Security.AccessControl.dll</HintPath>
-    </Reference>
-    <Reference Include="System.Security.Principal.Windows, Version=4.1.3.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\System.Security.Principal.Windows.4.7.0\lib\net461\System.Security.Principal.Windows.dll</HintPath>
-    </Reference>
-    <Reference Include="System.ValueTuple, Version=4.0.3.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\System.ValueTuple.4.5.0\lib\net461\System.ValueTuple.dll</HintPath>
-    </Reference>
-    <Reference Include="System.Web" />
-    <Reference Include="System.Windows.Forms" />
-    <Reference Include="System.Xml" />
-  </ItemGroup>
-  <ItemGroup>
-    <Compile Include="AdminWindowTests.cs" />
-    <Compile Include="CauseProblemWithAutoCompleteTestsWithCreationTests.cs" />
-    <Compile Include="MigrationTests.cs" />
-    <Compile Include="MruProjectsTest.cs" />
-    <Compile Include="FieldDetailControlTests.cs" />
-    <Compile Include="InterfaceLanguageControl.Tests.cs" />
-    <Compile Include="NewProjectCreation\ProjectFromRawFLExLiftFilesCreatorTests.cs" />
-    <Compile Include="Properties\AssemblyInfo.cs" />
-    <Compile Include="TestResources.Designer.cs">
-      <AutoGen>True</AutoGen>
-      <DesignTime>True</DesignTime>
-      <DependentUpon>TestResources.resx</DependentUpon>
-    </Compile>
-  </ItemGroup>
-  <ItemGroup>
-    <ProjectReference Include="..\LexicalModel\LexicalModel.csproj">
-      <Project>{5F61C809-B6C0-4567-9603-B2198E1AD038}</Project>
-      <Name>LexicalModel</Name>
-    </ProjectReference>
-    <ProjectReference Include="..\WeSay.Data\WeSay.Data.csproj">
-      <Project>{600D0FD4-D189-41A0-9BC5-FC79AD2CF1CD}</Project>
-      <Name>WeSay.Data</Name>
-    </ProjectReference>
-    <ProjectReference Include="..\WeSay.Foundation\WeSay.Foundation.csproj">
-      <Project>{F12EB680-0990-4900-B77E-0FBF2E28A815}</Project>
-      <Name>WeSay.Foundation</Name>
-    </ProjectReference>
-    <ProjectReference Include="..\WeSay.Project.Tests\WeSay.Project.Tests.csproj">
-      <Project>{F644C902-A952-4797-9E2D-19D6051DD032}</Project>
-      <Name>WeSay.Project.Tests</Name>
-    </ProjectReference>
-    <ProjectReference Include="..\WeSay.Project\WeSay.Project.csproj">
-      <Project>{5CFD0BB3-5B2A-4911-B220-9C2286151BF0}</Project>
-      <Name>WeSay.Project</Name>
-    </ProjectReference>
-    <ProjectReference Include="..\WeSay.ConfigTool\WeSay.ConfigTool.csproj">
-      <Project>{54C943DB-7725-4F52-BCE4-86C3D3D5A66E}</Project>
-      <Name>WeSay.ConfigTool</Name>
-    </ProjectReference>
-    <ProjectReference Include="..\WeSay.TestUtilities\WeSay.TestUtilities.csproj">
-      <Project>{FEC3014D-0067-4D59-A838-3B046EC3C352}</Project>
-      <Name>WeSay.TestUtilities</Name>
-    </ProjectReference>
+    <ProjectReference Include="..\LexicalModel\LexicalModel.csproj" />
+    <ProjectReference Include="..\WeSay.Data\WeSay.Data.csproj" />
+    <ProjectReference Include="..\WeSay.Foundation\WeSay.Foundation.csproj" />
+    <ProjectReference Include="..\WeSay.Project.Tests\WeSay.Project.Tests.csproj" />
+    <ProjectReference Include="..\WeSay.Project\WeSay.Project.csproj" />
+    <ProjectReference Include="..\WeSay.ConfigTool\WeSay.ConfigTool.csproj" />
+    <ProjectReference Include="..\WeSay.TestUtilities\WeSay.TestUtilities.csproj" />
   </ItemGroup>
   <ItemGroup>
-    <EmbeddedResource Include="TestResources.resx">
-      <SubType>Designer</SubType>
-      <Generator>ResXFileCodeGenerator</Generator>
-      <LastGenOutput>TestResources.Designer.cs</LastGenOutput>
-    </EmbeddedResource>
+    <PackageReference Include="System.Management" Version="8.0.0" />
+    <PackageReference Include="Microsoft.AspNetCore.SystemWebAdapters" Version="1.3.0" />
+    <PackageReference Include="Microsoft.Extensions.DependencyModel" Version="8.0.0" />
+    <PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
+    <PackageReference Include="System.Security.AccessControl" Version="6.0.0" />
+    <PackageReference Include="System.Configuration.ConfigurationManager" Version="8.0.0" />
   </ItemGroup>
   <ItemGroup>
-    <None Include="packages.config" />
+    <Service Include="{82A7F48D-3B50-4B1E-B82E-3ADA8210C358}" />
   </ItemGroup>
   <ItemGroup>
-    <Service Include="{82A7F48D-3B50-4B1E-B82E-3ADA8210C358}" />
+    <PackageReference Include="icu.net" Version="2.8.1" />
+    <PackageReference Include="Microsoft.DotNet.PlatformAbstractions" Version="2.0.4" />
+    <PackageReference Include="NDesk.DBus" Version="0.15.0" />
+    <PackageReference Include="NUnit" Version="3.13.3" />
+    <PackageReference Include="RelaxNG" Version="3.2.3" />
+    <PackageReference Include="SIL.Core" Version="13.0.1" />
+    <PackageReference Include="SIL.Core.Desktop" Version="13.0.1" />
+    <PackageReference Include="SIL.Lift" Version="13.0.1" />
+    <PackageReference Include="SIL.WritingSystems" Version="13.0.1" />
+    <PackageReference Include="Spart" Version="1.0.0" />
   </ItemGroup>
-  <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
-  <Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
-    <PropertyGroup>
-      <ErrorText>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}.</ErrorText>
-    </PropertyGroup>
-    <Error Condition="!Exists('..\..\packages\NUnit.3.13.1\build\NUnit.props')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\NUnit.3.13.1\build\NUnit.props'))" />
-    <Error Condition="!Exists('..\..\packages\NDesk.DBus.0.15.0\build\NDesk.DBus.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\NDesk.DBus.0.15.0\build\NDesk.DBus.targets'))" />
-  </Target>
-  <Import Project="..\..\packages\NDesk.DBus.0.15.0\build\NDesk.DBus.targets" Condition="Exists('..\..\packages\NDesk.DBus.0.15.0\build\NDesk.DBus.targets')" />
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it.
-	   Other similar extension points exist, see Microsoft.Common.targets.
-  <Target Name="BeforeBuild">
-  </Target>
-  <Target Name="AfterBuild">
-  </Target>
-  -->
 </Project>
\ No newline at end of file
diff --git a/src/WeSay.ConfigTool.Tests/packages.config b/src/WeSay.ConfigTool.Tests/packages.config
deleted file mode 100644
index aebb4ddb0..000000000
--- a/src/WeSay.ConfigTool.Tests/packages.config
+++ /dev/null
@@ -1,20 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<packages>
-  <package id="icu.net" version="2.7.1" targetFramework="net461" />
-  <package id="Microsoft.DotNet.PlatformAbstractions" version="2.0.4" targetFramework="net461" />
-  <package id="Microsoft.Extensions.DependencyModel" version="2.0.4" targetFramework="net461" />
-  <package id="NDesk.DBus" version="0.15.0" targetFramework="net461" />
-  <package id="Newtonsoft.Json" version="12.0.3" targetFramework="net461" />
-  <package id="NUnit" version="3.13.1" targetFramework="net461" />
-  <package id="RelaxNG" version="3.2.3" targetFramework="net461" />
-  <package id="SIL.Core" version="9.0.0-beta0154" targetFramework="net461" />
-  <package id="SIL.Core.Desktop" version="9.0.0-beta0154" targetFramework="net461" />
-  <package id="SIL.DictionaryServices" version="9.0.0-beta0154" targetFramework="net461" />
-  <package id="SIL.Lift" version="9.0.0-beta0154" targetFramework="net461" />
-  <package id="SIL.WritingSystems" version="9.0.0-beta0154" targetFramework="net461" />
-  <package id="Spart" version="1.0.0" targetFramework="net461" />
-  <package id="System.IO.FileSystem.AccessControl" version="4.7.0" targetFramework="net461" />
-  <package id="System.Security.AccessControl" version="4.7.0" targetFramework="net461" />
-  <package id="System.Security.Principal.Windows" version="4.7.0" targetFramework="net461" />
-  <package id="System.ValueTuple" version="4.5.0" targetFramework="net461" />
-</packages>
\ No newline at end of file
diff --git a/src/WeSay.ConfigTool/Properties/AssemblyInfo.cs b/src/WeSay.ConfigTool/Properties/AssemblyInfo.cs
deleted file mode 100644
index 58ff2dbcf..000000000
--- a/src/WeSay.ConfigTool/Properties/AssemblyInfo.cs
+++ /dev/null
@@ -1,38 +0,0 @@
-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("WeSay Configuration Tool")]
-[assembly: AssemblyDescription("")]
-[assembly: AssemblyConfiguration("")]
-[assembly: AssemblyCompany("SIL")]
-[assembly: AssemblyProduct("WeSay Configuration Tool")] //NB: this name is used eventually in chorus display
-[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)]
-
-// The following GUID is for the ID of the typelib if this project is exposed to COM
-
-[assembly: Guid("21df0ad9-5160-4ff2-8ac0-08cd909fcf87")]
-
-// Version information for an assembly consists of the following four values:
-//
-//      Major Version
-//      Minor Version
-//      Build Number
-//      Revision
-//
-
-[assembly: AssemblyVersion("1.9.0.10")]
-[assembly: AssemblyFileVersion("1.9.0.10")]
-[assembly: InternalsVisibleTo("WeSay.ConfigTool.Tests")]
\ No newline at end of file
diff --git a/src/WeSay.ConfigTool/WeSay.ConfigTool.csproj b/src/WeSay.ConfigTool/WeSay.ConfigTool.csproj
index 33f94e3d4..a77075565 100755
--- a/src/WeSay.ConfigTool/WeSay.ConfigTool.csproj
+++ b/src/WeSay.ConfigTool/WeSay.ConfigTool.csproj
@@ -1,24 +1,9 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="12.0">
+<Project Sdk="Microsoft.NET.Sdk">
   <PropertyGroup>
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
-    <ProductVersion>9.0.21022</ProductVersion>
-    <SchemaVersion>2.0</SchemaVersion>
-    <ProjectGuid>{54C943DB-7725-4F52-BCE4-86C3D3D5A66E}</ProjectGuid>
+    <TargetFramework>net8.0-windows</TargetFramework>
     <OutputType>WinExe</OutputType>
-    <AppDesignerFolder>Properties</AppDesignerFolder>
-    <RootNamespace>WeSay.ConfigTool</RootNamespace>
-    <AssemblyName>WeSay.ConfigTool</AssemblyName>
     <ApplicationIcon>..\..\artwork\WeSay.Setup.ico</ApplicationIcon>
-    <FileUpgradeFlags>
-    </FileUpgradeFlags>
-    <UpgradeBackupLocation>
-    </UpgradeBackupLocation>
-    <OldToolsVersion>3.5</OldToolsVersion>
     <IsWebBootstrapper>false</IsWebBootstrapper>
-    <TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion>
-    <TargetFrameworkProfile />
     <TargetZone>LocalIntranet</TargetZone>
     <GenerateManifests>false</GenerateManifests>
     <PublishUrl>publish\</PublishUrl>
@@ -35,101 +20,33 @@
     <ApplicationVersion>1.0.0.%2a</ApplicationVersion>
     <UseApplicationTrust>false</UseApplicationTrust>
     <BootstrapperEnabled>true</BootstrapperEnabled>
-    <NuGetPackageImportStamp>
-    </NuGetPackageImportStamp>
+    <GenerateAssemblyInfo>false</GenerateAssemblyInfo>
+    <UseWindowsForms>true</UseWindowsForms>
+    <ImportWindowsDesktopTargets>true</ImportWindowsDesktopTargets>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
-    <DebugSymbols>true</DebugSymbols>
-    <DebugType>full</DebugType>
-    <Optimize>false</Optimize>
     <OutputPath>..\..\output\Debug\</OutputPath>
-    <DefineConstants>DEBUG;TRACE</DefineConstants>
-    <ErrorReport>prompt</ErrorReport>
-    <WarningLevel>4</WarningLevel>
     <OutputType>WinExe</OutputType>
-    <AssemblyName>WeSay.ConfigTool</AssemblyName>
-    <RootNamespace>WeSay.ConfigTool</RootNamespace>
-    <AllowUnsafeBlocks>false</AllowUnsafeBlocks>
     <CheckForOverflowUnderflow>true</CheckForOverflowUnderflow>
     <ApplicationIcon>..\..\artwork\WeSay.Setup.ico</ApplicationIcon>
-    <PlatformTarget>x86</PlatformTarget>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
-    <DebugType>pdbonly</DebugType>
-    <Optimize>true</Optimize>
     <OutputPath>..\..\output\Release\</OutputPath>
-    <DefineConstants>TRACE</DefineConstants>
-    <ErrorReport>prompt</ErrorReport>
-    <WarningLevel>4</WarningLevel>
     <OutputType>WinExe</OutputType>
-    <AssemblyName>WeSay.ConfigTool</AssemblyName>
     <DebugSymbols>true</DebugSymbols>
-    <RootNamespace>WeSay.ConfigTool</RootNamespace>
-    <AllowUnsafeBlocks>false</AllowUnsafeBlocks>
     <CheckForOverflowUnderflow>true</CheckForOverflowUnderflow>
     <ApplicationIcon>..\..\artwork\WeSay.Setup.ico</ApplicationIcon>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
-    <DebugSymbols>true</DebugSymbols>
     <OutputPath>..\..\output\Debug\</OutputPath>
-    <DefineConstants>DEBUG;TRACE</DefineConstants>
     <CheckForOverflowUnderflow>true</CheckForOverflowUnderflow>
-    <DebugType>full</DebugType>
-    <PlatformTarget>x86</PlatformTarget>
-    <ErrorReport>prompt</ErrorReport>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
     <DebugSymbols>true</DebugSymbols>
     <OutputPath>..\..\output\Release\</OutputPath>
-    <DefineConstants>TRACE</DefineConstants>
     <CheckForOverflowUnderflow>true</CheckForOverflowUnderflow>
-    <Optimize>true</Optimize>
-    <DebugType>pdbonly</DebugType>
-    <PlatformTarget>x86</PlatformTarget>
-    <ErrorReport>prompt</ErrorReport>
-  </PropertyGroup>
-  <PropertyGroup>
-    <AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
   </PropertyGroup>
   <ItemGroup>
-    <Reference Include="Autofac, Version=4.1.1.0, Culture=neutral, PublicKeyToken=17863af14b0044da, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\Autofac.4.1.1\lib\net45\Autofac.dll</HintPath>
-    </Reference>
-    <Reference Include="Chorus, Version=3.1.0.0, Culture=neutral, PublicKeyToken=f1447bae1e63f485, processorArchitecture=MSIL">
-      <SpecificVersion>False</SpecificVersion>
-      <HintPath>..\..\packages\SIL.Chorus.App.5.0.0-beta0017\lib\net461\Chorus.exe</HintPath>
-    </Reference>
-    <Reference Include="Commons.Xml.Relaxng, Version=4.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\RelaxNG.3.2.3\lib\net40\Commons.Xml.Relaxng.dll</HintPath>
-    </Reference>
-    <Reference Include="DialogAdapters, Version=0.1.9.0, Culture=neutral, PublicKeyToken=7dc842182b0626dc, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\DialogAdapters.Gtk2.0.1.9\lib\net461\DialogAdapters.dll</HintPath>
-    </Reference>
-    <Reference Include="Enchant.Net, Version=1.4.3.1, Culture=neutral, processorArchitecture=MSIL">
-      <SpecificVersion>False</SpecificVersion>
-      <HintPath>..\..\packages\Enchant.Net.1.4.2\lib\net461\Enchant.Net.dll</HintPath>
-    </Reference>
-    <Reference Include="Geckofx-Core, Version=45.0.34.0, Culture=neutral, PublicKeyToken=3209ac31600d1857, processorArchitecture=x86">
-      <SpecificVersion>False</SpecificVersion>
-      <HintPath>..\..\packages\Geckofx60.32.60.0.54\lib\net45\Geckofx-Core.dll</HintPath>
-    </Reference>
-    <Reference Include="Geckofx-Winforms, Version=45.0.34.0, Culture=neutral, PublicKeyToken=3209ac31600d1857, processorArchitecture=x86">
-      <SpecificVersion>False</SpecificVersion>
-      <HintPath>..\..\packages\Geckofx60.32.60.0.54\lib\net45\Geckofx-Winforms.dll</HintPath>
-    </Reference>
-    <Reference Include="ibusdotnet, Version=2.0.0.0, Culture=neutral, PublicKeyToken=c9ab93f7b23223fb, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\ibusdotnet.2.0.3\lib\net461\ibusdotnet.dll</HintPath>
-    </Reference>
-    <Reference Include="ICSharpCode.SharpZipLib, Version=0.86.0.518, Culture=neutral, PublicKeyToken=1b03e6acf1164f73, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\SharpZipLib.0.86.0\lib\20\ICSharpCode.SharpZipLib.dll</HintPath>
-    </Reference>
-    <Reference Include="icu.net, Version=2.7.0.0, Culture=neutral, PublicKeyToken=416fdd914afa6b66, processorArchitecture=MSIL">
-      <SpecificVersion>False</SpecificVersion>
-      <HintPath>..\..\packages\icu.net.2.7.1\lib\net451\icu.net.dll</HintPath>
-    </Reference>
-    <Reference Include="JetBrains.Annotations, Version=2021.2.0.0, Culture=neutral, PublicKeyToken=1010a0d8d6380325, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\JetBrains.Annotations.2021.2.0\lib\net20\JetBrains.Annotations.dll</HintPath>
-    </Reference>
     <Reference Include="Keyman10Interop, Version=10.0.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
       <SpecificVersion>False</SpecificVersion>
       <EmbedInteropTypes>True</EmbedInteropTypes>
@@ -144,530 +61,81 @@
       <SpecificVersion>False</SpecificVersion>
       <HintPath>..\..\lib\$(Configuration)\KeymanLink.dll</HintPath>
     </Reference>
-    <Reference Include="L10NSharp, Version=5.0.0.0, Culture=neutral, PublicKeyToken=fd0b3e309a5b7c28, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\L10NSharp.5.0.0-beta0086\lib\net461\L10NSharp.dll</HintPath>
-    </Reference>
-    <Reference Include="LibChorus, Version=5.0.0.0, Culture=neutral, PublicKeyToken=f1447bae1e63f485, processorArchitecture=MSIL">
-      <SpecificVersion>False</SpecificVersion>
-      <HintPath>..\..\packages\SIL.Chorus.LibChorus.5.0.0-beta0017\lib\net461\LibChorus.dll</HintPath>
-    </Reference>
-    <Reference Include="Markdig.Signed, Version=0.22.0.0, Culture=neutral, PublicKeyToken=870da25a133885f8, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\Markdig.Signed.0.22.0\lib\net452\Markdig.Signed.dll</HintPath>
-    </Reference>
-    <Reference Include="Microsoft.Bcl.AsyncInterfaces, Version=5.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\Microsoft.Bcl.AsyncInterfaces.5.0.0\lib\net461\Microsoft.Bcl.AsyncInterfaces.dll</HintPath>
-    </Reference>
     <Reference Include="Microsoft.Build.Framework" />
     <Reference Include="Microsoft.Build.Utilities.v4.0" />
-    <Reference Include="Microsoft.DotNet.PlatformAbstractions, Version=2.0.4.0, Culture=neutral, PublicKeyToken=adb9793829ddae60, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\Microsoft.DotNet.PlatformAbstractions.2.0.4\lib\net45\Microsoft.DotNet.PlatformAbstractions.dll</HintPath>
-      <Private>True</Private>
-    </Reference>
-    <Reference Include="Microsoft.Extensions.DependencyModel, Version=2.0.4.0, Culture=neutral, PublicKeyToken=adb9793829ddae60, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\Microsoft.Extensions.DependencyModel.2.0.4\lib\net451\Microsoft.Extensions.DependencyModel.dll</HintPath>
-      <Private>True</Private>
-    </Reference>
-    <Reference Include="Microsoft.Practices.ServiceLocation, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\CommonServiceLocator.1.0\lib\NET35\Microsoft.Practices.ServiceLocation.dll</HintPath>
-    </Reference>
-    <Reference Include="Microsoft.VisualBasic" />
-    <None Include="packages.config" />
-    <Reference Include="Mono.Addins, Version=1.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\Mono.Addins.1.3.8\lib\net45\Mono.Addins.dll</HintPath>
-    </Reference>
-    <Reference Include="NAudio, Version=1.10.0.0, Culture=neutral, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\NAudio.1.10.0\lib\net35\NAudio.dll</HintPath>
-    </Reference>
-    <Reference Include="Newtonsoft.Json, Version=12.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
-      <SpecificVersion>False</SpecificVersion>
-      <HintPath>..\..\packages\Newtonsoft.Json.12.0.3\lib\net45\Newtonsoft.Json.dll</HintPath>
-    </Reference>
-    <Reference Include="NHunspell, Version=1.2.5554.16953, Culture=neutral, PublicKeyToken=1ac793ea843b4366, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\NHunspell.Patched.1.2.5554\lib\net\NHunspell.dll</HintPath>
-    </Reference>
-    <Reference Include="protobuf-net, Version=2.0.0.668, Culture=neutral, PublicKeyToken=257b51d87d2e4d67, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\protobuf-net.2.0.0.668\lib\net40\protobuf-net.dll</HintPath>
-    </Reference>
-    <Reference Include="SIL.Core, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\SIL.Core.9.0.0-beta0154\lib\net461\SIL.Core.dll</HintPath>
-    </Reference>
-    <Reference Include="SIL.Core.Desktop, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\SIL.Core.Desktop.9.0.0-beta0154\lib\net461\SIL.Core.Desktop.dll</HintPath>
-    </Reference>
-    <Reference Include="SIL.DictionaryServices, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\SIL.DictionaryServices.9.0.0-beta0154\lib\net461\SIL.DictionaryServices.dll</HintPath>
-    </Reference>
-    <Reference Include="SIL.Lexicon, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\SIL.Lexicon.9.0.0-beta0154\lib\net461\SIL.Lexicon.dll</HintPath>
-    </Reference>
-    <Reference Include="SIL.Lift, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\SIL.Lift.9.0.0-beta0154\lib\net461\SIL.Lift.dll</HintPath>
-    </Reference>
-    <Reference Include="SIL.Windows.Forms, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\SIL.Windows.Forms.9.0.0-beta0154\lib\net461\SIL.Windows.Forms.dll</HintPath>
-    </Reference>
-    <Reference Include="SIL.Windows.Forms.Keyboarding, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\SIL.Windows.Forms.Keyboarding.9.0.0-beta0154\lib\net461\SIL.Windows.Forms.Keyboarding.dll</HintPath>
-    </Reference>
-    <Reference Include="SIL.Windows.Forms.WritingSystems, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\SIL.Windows.Forms.WritingSystems.9.0.0-beta0154\lib\net461\SIL.Windows.Forms.WritingSystems.dll</HintPath>
-    </Reference>
-    <Reference Include="SIL.WritingSystems, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\SIL.WritingSystems.9.0.0-beta0154\lib\net461\SIL.WritingSystems.dll</HintPath>
-    </Reference>
-    <Reference Include="Spart, Version=1.0.0.0, Culture=neutral, PublicKeyToken=14d24e064e474331, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\Spart.1.0.0\lib\net461\Spart.dll</HintPath>
-      <Private>True</Private>
-    </Reference>
-    <Reference Include="StructureMap, Version=2.5.4.0, Culture=neutral, PublicKeyToken=e60ad81abae3c223, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\structuremap.patched.2.5.4\lib\net461\StructureMap.dll</HintPath>
-    </Reference>
-    <Reference Include="System" />
-    <Reference Include="System.Buffers, Version=4.0.3.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\System.Buffers.4.5.1\lib\net461\System.Buffers.dll</HintPath>
-    </Reference>
-    <Reference Include="System.ComponentModel.Composition" />
-    <Reference Include="System.Configuration" />
-    <Reference Include="System.Core">
-      <RequiredTargetFramework>3.5</RequiredTargetFramework>
-    </Reference>
-    <Reference Include="System.Data" />
-    <Reference Include="System.Drawing" />
-    <Reference Include="System.IO.FileSystem.AccessControl, Version=4.0.5.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\System.IO.FileSystem.AccessControl.4.7.0\lib\net461\System.IO.FileSystem.AccessControl.dll</HintPath>
-      <Private>True</Private>
-    </Reference>
-    <Reference Include="System.Management" />
-    <Reference Include="System.Memory, Version=4.0.1.1, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\System.Memory.4.5.4\lib\net461\System.Memory.dll</HintPath>
-    </Reference>
-    <Reference Include="System.Numerics" />
-    <Reference Include="System.Numerics.Vectors, Version=4.1.4.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\System.Numerics.Vectors.4.5.0\lib\net46\System.Numerics.Vectors.dll</HintPath>
-    </Reference>
-    <Reference Include="System.Runtime.CompilerServices.Unsafe, Version=4.0.4.1, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\System.Runtime.CompilerServices.Unsafe.4.5.3\lib\net461\System.Runtime.CompilerServices.Unsafe.dll</HintPath>
-    </Reference>
-    <Reference Include="System.Runtime.InteropServices.RuntimeInformation, Version=4.0.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\System.Runtime.InteropServices.RuntimeInformation.4.3.0\lib\net45\System.Runtime.InteropServices.RuntimeInformation.dll</HintPath>
-    </Reference>
-    <Reference Include="System.Security" />
-    <Reference Include="System.Security.AccessControl, Version=4.1.3.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\System.Security.AccessControl.4.7.0\lib\net461\System.Security.AccessControl.dll</HintPath>
-      <Private>True</Private>
-    </Reference>
-    <Reference Include="System.Security.Principal.Windows, Version=4.1.3.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\System.Security.Principal.Windows.4.7.0\lib\net461\System.Security.Principal.Windows.dll</HintPath>
-      <Private>True</Private>
-    </Reference>
-    <Reference Include="System.ServiceModel" />
-    <Reference Include="System.ServiceProcess" />
-    <Reference Include="System.Threading.Tasks.Extensions, Version=4.2.0.1, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\System.Threading.Tasks.Extensions.4.5.4\lib\net461\System.Threading.Tasks.Extensions.dll</HintPath>
-    </Reference>
-    <Reference Include="System.ValueTuple, Version=4.0.3.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\System.ValueTuple.4.5.0\lib\net461\System.ValueTuple.dll</HintPath>
-      <Private>True</Private>
-    </Reference>
-    <Reference Include="System.Web" />
-    <Reference Include="System.Windows.Forms" />
-    <Reference Include="System.Xml" />
-    <Reference Include="TagLibSharp, Version=2.2.0.0, Culture=neutral, PublicKeyToken=db62eba44689b5b0, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\TagLibSharp.2.2.0\lib\net45\TagLibSharp.dll</HintPath>
-    </Reference>
-    <Reference Include="Vulcan.Uczniowie.HelpProvider, Version=0.9.999.0, Culture=neutral, processorArchitecture=MSIL">
-      <SpecificVersion>False</SpecificVersion>
-      <HintPath>..\..\packages\Vulcan.Uczniowie.HelpProvider.1.0.16\lib\net461\Vulcan.Uczniowie.HelpProvider.dll</HintPath>
-    </Reference>
   </ItemGroup>
   <ItemGroup>
-    <Compile Include="ActionsControl.cs">
+    <Compile Update="ActionsControl.cs">
       <SubType>UserControl</SubType>
     </Compile>
-    <Compile Include="ActionsControl.Designer.cs">
-      <DependentUpon>ActionsControl.cs</DependentUpon>
-    </Compile>
-    <Compile Include="ChorusControl.cs">
+    <Compile Update="ChorusControl.cs">
       <SubType>UserControl</SubType>
     </Compile>
-    <Compile Include="ChorusControl.Designer.cs">
-      <DependentUpon>ChorusControl.cs</DependentUpon>
-    </Compile>
-    <Compile Include="NewProjectCreation\NewProjectDialog.cs">
-      <SubType>Form</SubType>
-    </Compile>
-    <Compile Include="NewProjectCreation\NewProjectDialog.Designer.cs">
-      <DependentUpon>NewProjectDialog.cs</DependentUpon>
-    </Compile>
-    <Compile Include="MruProjects.cs" />
-    <Compile Include="ConfigurationWindow.cs">
-      <SubType>Form</SubType>
-    </Compile>
-    <Compile Include="ConfigurationWindow.Designer.cs">
-      <DependentUpon>ConfigurationWindow.cs</DependentUpon>
-    </Compile>
-    <Compile Include="ConfigurationControlBase.cs">
+    <Compile Update="ConfigurationControlBase.cs">
       <SubType>UserControl</SubType>
     </Compile>
-    <Compile Include="BackupPlanControl.cs">
+    <Compile Update="BackupPlanControl.cs">
       <SubType>UserControl</SubType>
     </Compile>
-    <Compile Include="BackupPlanControl.Designer.cs">
-      <DependentUpon>BackupPlanControl.cs</DependentUpon>
-    </Compile>
-    <Compile Include="FieldsControl.cs">
+    <Compile Update="FieldsControl.cs">
       <SubType>UserControl</SubType>
     </Compile>
-    <Compile Include="FieldsControl.Designer.cs">
-      <DependentUpon>FieldsControl.cs</DependentUpon>
-    </Compile>
-    <Compile Include="FieldDetailControl.cs">
+    <Compile Update="FieldDetailControl.cs">
       <SubType>UserControl</SubType>
     </Compile>
-    <Compile Include="FieldDetailControl.Designer.cs">
-      <DependentUpon>FieldDetailControl.cs</DependentUpon>
-    </Compile>
-    <Compile Include="NewProjectCreation\NewProjectFromRawLiftDialog.cs">
-      <SubType>Form</SubType>
-    </Compile>
-    <Compile Include="NewProjectCreation\NewProjectFromRawLiftDialog.Designer.cs">
-      <DependentUpon>NewProjectFromRawLiftDialog.cs</DependentUpon>
-    </Compile>
-    <Compile Include="NewProjectCreation\NewProjectInformationDialog.cs">
-      <SubType>Form</SubType>
-    </Compile>
-    <Compile Include="NewProjectCreation\NewProjectInformationDialog.Designer.cs">
-      <DependentUpon>NewProjectInformationDialog.cs</DependentUpon>
-    </Compile>
-    <Compile Include="NewProjectCreation\ProjectFromRawFLExLiftFilesCreator.cs" />
-    <Compile Include="OptionListControl.cs">
+    <Compile Update="OptionListControl.cs">
       <SubType>UserControl</SubType>
     </Compile>
-    <Compile Include="OptionListControl.Designer.cs">
-      <DependentUpon>OptionListControl.cs</DependentUpon>
-    </Compile>
-    <Compile Include="InterfaceLanguageControl.cs">
+    <Compile Update="InterfaceLanguageControl.cs">
       <SubType>UserControl</SubType>
     </Compile>
-    <Compile Include="InterfaceLanguageControl.Designer.cs">
-      <DependentUpon>InterfaceLanguageControl.cs</DependentUpon>
-    </Compile>
-    <Compile Include="Program.cs" />
-    <Compile Include="Properties\AssemblyInfo.cs" />
-    <EmbeddedResource Include="ActionsControl.resx">
-      <SubType>Designer</SubType>
-      <DependentUpon>ActionsControl.cs</DependentUpon>
-    </EmbeddedResource>
-    <EmbeddedResource Include="ConfigurationWindow.resx">
-      <SubType>Designer</SubType>
-      <DependentUpon>ConfigurationWindow.cs</DependentUpon>
-    </EmbeddedResource>
-    <EmbeddedResource Include="BackupPlanControl.resx">
-      <DependentUpon>BackupPlanControl.cs</DependentUpon>
-      <SubType>Designer</SubType>
-    </EmbeddedResource>
-    <EmbeddedResource Include="ChorusControl.resx">
-      <DependentUpon>ChorusControl.cs</DependentUpon>
-      <SubType>Designer</SubType>
-    </EmbeddedResource>
-    <EmbeddedResource Include="NewProjectCreation\NewProjectDialog.resx">
-      <DependentUpon>NewProjectDialog.cs</DependentUpon>
-      <SubType>Designer</SubType>
-    </EmbeddedResource>
-    <EmbeddedResource Include="FieldsControl.resx">
-      <SubType>Designer</SubType>
-      <DependentUpon>FieldsControl.cs</DependentUpon>
-    </EmbeddedResource>
-    <EmbeddedResource Include="FieldDetailControl.resx">
-      <SubType>Designer</SubType>
-      <DependentUpon>FieldDetailControl.cs</DependentUpon>
-    </EmbeddedResource>
-    <EmbeddedResource Include="NewProjectCreation\NewProjectFromRawLiftDialog.resx">
-      <DependentUpon>NewProjectFromRawLiftDialog.cs</DependentUpon>
-    </EmbeddedResource>
-    <EmbeddedResource Include="NewProjectCreation\NewProjectInformationDialog.resx">
-      <DependentUpon>NewProjectInformationDialog.cs</DependentUpon>
-      <SubType>Designer</SubType>
-    </EmbeddedResource>
-    <EmbeddedResource Include="OptionListControl.resx">
-      <SubType>Designer</SubType>
-      <DependentUpon>OptionListControl.cs</DependentUpon>
-    </EmbeddedResource>
-    <EmbeddedResource Include="InterfaceLanguageControl.resx">
-      <SubType>Designer</SubType>
-      <DependentUpon>InterfaceLanguageControl.cs</DependentUpon>
-    </EmbeddedResource>
-    <EmbeddedResource Include="Properties\Resources.resx">
-      <Generator>ResXFileCodeGenerator</Generator>
-      <SubType>Designer</SubType>
-      <LastGenOutput>Resources.Designer.cs</LastGenOutput>
-    </EmbeddedResource>
-    <EmbeddedResource Include="Tasks\DictionaryBrowseEditTaskConfigControl.resx">
-      <DependentUpon>DictionaryBrowseEditTaskConfigControl.cs</DependentUpon>
-      <SubType>Designer</SubType>
-    </EmbeddedResource>
-    <EmbeddedResource Include="Tasks\GatherBySemDomTaskConfigControl.resx">
-      <DependentUpon>GatherBySemDomTaskConfigControl.cs</DependentUpon>
-      <SubType>Designer</SubType>
-    </EmbeddedResource>
-    <EmbeddedResource Include="Tasks\DefaultTaskConfigurationControl.resx">
-      <DependentUpon>DefaultTaskConfigurationControl.cs</DependentUpon>
-      <SubType>Designer</SubType>
-    </EmbeddedResource>
-    <EmbeddedResource Include="Tasks\MissingInfoTaskConfigControl.resx">
-      <DependentUpon>MissingInfoTaskConfigControl.cs</DependentUpon>
-      <SubType>Designer</SubType>
-    </EmbeddedResource>
-    <EmbeddedResource Include="Tasks\TaskListView.resx">
-      <SubType>Designer</SubType>
-      <DependentUpon>TaskListView.cs</DependentUpon>
-    </EmbeddedResource>
-    <EmbeddedResource Include="Tasks\WritingSystemFilterControl.resx">
-      <DependentUpon>WritingSystemFilterControl.cs</DependentUpon>
-      <SubType>Designer</SubType>
-    </EmbeddedResource>
-    <EmbeddedResource Include="UserSpecificSettingIndicator.resx">
-      <DependentUpon>UserSpecificSettingIndicator.cs</DependentUpon>
-      <SubType>Designer</SubType>
-    </EmbeddedResource>
-    <EmbeddedResource Include="WelcomeControl.resx">
-      <SubType>Designer</SubType>
-      <DependentUpon>WelcomeControl.cs</DependentUpon>
-    </EmbeddedResource>
-    <EmbeddedResource Include="SettingsControl.resx">
-      <SubType>Designer</SubType>
-      <DependentUpon>SettingsControl.cs</DependentUpon>
-    </EmbeddedResource>
-    <EmbeddedResource Include="WritingSystemForFieldControl.resx">
-      <SubType>Designer</SubType>
-      <DependentUpon>WritingSystemForFieldControl.cs</DependentUpon>
-    </EmbeddedResource>
-    <EmbeddedResource Include="WritingSystemSetup.resx">
-      <DependentUpon>WritingSystemSetup.cs</DependentUpon>
-      <SubType>Designer</SubType>
-    </EmbeddedResource>
-    <None Include="App.config" />
-    <None Include="Properties\Settings.settings">
-      <Generator>SettingsSingleFileGenerator</Generator>
-      <LastGenOutput>Settings.Designer.cs</LastGenOutput>
-    </None>
-    <Compile Include="Properties\Resources.Designer.cs">
-      <AutoGen>True</AutoGen>
-      <DesignTime>True</DesignTime>
-      <DependentUpon>Resources.resx</DependentUpon>
-    </Compile>
-    <Compile Include="Properties\Settings.Designer.cs">
-      <AutoGen>True</AutoGen>
-      <DependentUpon>Settings.settings</DependentUpon>
-      <DesignTimeSharedInput>True</DesignTimeSharedInput>
-    </Compile>
-    <Compile Include="Properties\Settings.cs" />
-    <Compile Include="Tasks\DictionaryBrowseEditTaskConfigControl.cs">
+    <Compile Update="Tasks\DictionaryBrowseEditTaskConfigControl.cs">
       <SubType>UserControl</SubType>
     </Compile>
-    <Compile Include="Tasks\DictionaryBrowseEditTaskConfigControl.Designer.cs">
-      <DependentUpon>DictionaryBrowseEditTaskConfigControl.cs</DependentUpon>
-    </Compile>
-    <Compile Include="Tasks\GatherBySemDomTaskConfigControl.cs">
+    <Compile Update="Tasks\GatherBySemDomTaskConfigControl.cs">
       <SubType>UserControl</SubType>
     </Compile>
-    <Compile Include="Tasks\GatherBySemDomTaskConfigControl.Designer.cs">
-      <DependentUpon>GatherBySemDomTaskConfigControl.cs</DependentUpon>
-    </Compile>
-    <Compile Include="Tasks\DefaultTaskConfigurationControl.cs">
+    <Compile Update="Tasks\DefaultTaskConfigurationControl.cs">
       <SubType>UserControl</SubType>
     </Compile>
-    <Compile Include="Tasks\DefaultTaskConfigurationControl.Designer.cs">
-      <DependentUpon>DefaultTaskConfigurationControl.cs</DependentUpon>
-    </Compile>
-    <Compile Include="Tasks\ConfigTaskControlFactory.cs" />
-    <Compile Include="Tasks\MissingInfoTaskConfigControl.cs">
+    <Compile Update="Tasks\MissingInfoTaskConfigControl.cs">
       <SubType>UserControl</SubType>
     </Compile>
-    <Compile Include="Tasks\MissingInfoTaskConfigControl.Designer.cs">
-      <DependentUpon>MissingInfoTaskConfigControl.cs</DependentUpon>
-    </Compile>
-    <Compile Include="Tasks\TaskListView.cs">
+    <Compile Update="Tasks\TaskListView.cs">
       <SubType>UserControl</SubType>
     </Compile>
-    <Compile Include="Tasks\TaskListView.Designer.cs">
-      <DependentUpon>TaskListView.cs</DependentUpon>
-    </Compile>
-    <Compile Include="Tasks\TaskListPresentationModel.cs" />
-    <Compile Include="Tasks\WritingSystemFilterControl.cs">
+    <Compile Update="Tasks\WritingSystemFilterControl.cs">
       <SubType>UserControl</SubType>
     </Compile>
-    <Compile Include="Tasks\WritingSystemFilterControl.Designer.cs">
-      <DependentUpon>WritingSystemFilterControl.cs</DependentUpon>
-    </Compile>
-    <Compile Include="UserSpecificSettingIndicator.cs">
+    <Compile Update="UserSpecificSettingIndicator.cs">
       <SubType>UserControl</SubType>
     </Compile>
-    <Compile Include="UserSpecificSettingIndicator.Designer.cs">
-      <DependentUpon>UserSpecificSettingIndicator.cs</DependentUpon>
-    </Compile>
-    <Compile Include="WelcomeControl.cs">
+    <Compile Update="WelcomeControl.cs">
       <SubType>UserControl</SubType>
     </Compile>
-    <Compile Include="WelcomeControl.Designer.cs">
-      <DependentUpon>WelcomeControl.cs</DependentUpon>
-    </Compile>
-    <Compile Include="SettingsControl.cs">
+    <Compile Update="SettingsControl.cs">
       <SubType>UserControl</SubType>
     </Compile>
-    <Compile Include="SettingsControl.Designer.cs">
-      <DependentUpon>SettingsControl.cs</DependentUpon>
-    </Compile>
-    <Compile Include="WritingSystemForFieldControl.cs">
+    <Compile Update="WritingSystemForFieldControl.cs">
       <SubType>UserControl</SubType>
     </Compile>
-    <Compile Include="WritingSystemForFieldControl.Designer.cs">
-      <DependentUpon>WritingSystemForFieldControl.cs</DependentUpon>
-    </Compile>
-    <Compile Include="WritingSystemSetup.cs">
+    <Compile Update="WritingSystemSetup.cs">
       <SubType>UserControl</SubType>
     </Compile>
   </ItemGroup>
   <ItemGroup>
-    <ProjectReference Include="..\Addin.Backup\Addin.Backup.csproj">
-      <Project>{42FB4CC3-F2D1-4509-87DD-6BBD430CD4AB}</Project>
-      <Name>Addin.Backup</Name>
-    </ProjectReference>
-    <ProjectReference Include="..\LexicalModel\LexicalModel.csproj">
-      <Project>{5F61C809-B6C0-4567-9603-B2198E1AD038}</Project>
-      <Name>LexicalModel</Name>
-    </ProjectReference>
-    <ProjectReference Include="..\LexicalTools\LexicalTools.csproj">
-      <Project>{87AF0B02-2983-486D-857F-D1859535C234}</Project>
-      <Name>LexicalTools</Name>
-    </ProjectReference>
-    <ProjectReference Include="..\WeSay.AddinLib\WeSay.AddinLib.csproj">
-      <Project>{E651E83C-94DD-4D6D-ABA2-C9FDA34FBA55}</Project>
-      <Name>WeSay.AddinLib</Name>
-    </ProjectReference>
-    <ProjectReference Include="..\WeSay.App\WeSay.App.csproj">
-      <Project>{EFB9D66D-AF0F-4E45-A1AC-DB32981711D2}</Project>
-      <Name>WeSay.App</Name>
-    </ProjectReference>
-    <ProjectReference Include="..\WeSay.Data\WeSay.Data.csproj">
-      <Project>{600D0FD4-D189-41A0-9BC5-FC79AD2CF1CD}</Project>
-      <Name>WeSay.Data</Name>
-    </ProjectReference>
-    <ProjectReference Include="..\WeSay.Foundation\WeSay.Foundation.csproj">
-      <Project>{F12EB680-0990-4900-B77E-0FBF2E28A815}</Project>
-      <Name>WeSay.Foundation</Name>
-    </ProjectReference>
-    <ProjectReference Include="..\WeSay.Project\WeSay.Project.csproj">
-      <Project>{5CFD0BB3-5B2A-4911-B220-9C2286151BF0}</Project>
-      <Name>WeSay.Project</Name>
-    </ProjectReference>
-    <ProjectReference Include="..\WeSay.UI\WeSay.UI.csproj">
-      <Project>{AC8F284C-7B34-4AC9-A7DE-FAF765456DFF}</Project>
-      <Name>WeSay.UI</Name>
-    </ProjectReference>
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="Resources\RoundedBorder.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="Resources\construction.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="Resources\WelcomeImage.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="Resources\WeSayMenuSized.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="Resources\WeSayConfigMenuSized.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="Resources\GenericLittleDeletionButton.bmp" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="Resources\genericLittleNewButton.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="Resources\NewOptionListItem.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="Resources\deleteOptionListItem.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="Resources\NewOptionsList.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="Resources\OpenOptionsList.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="Resources\ConfigTasks.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="Resources\ConfigWritingSystems.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="Resources\buttonImage.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="Resources\ConfigBackup.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="Resources\genericAction.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="Resources\ConfigFields.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="Resources\ConfigInterfaceLanguage.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="Resources\ConfigActions.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="Resources\about.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="Resources\openProject.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="Resources\NewProject.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="Resources\ConfigOptionLists.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <BootstrapperPackage Include="Microsoft.Net.Client.3.5">
-      <Visible>False</Visible>
-      <ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName>
-      <Install>false</Install>
-    </BootstrapperPackage>
-    <BootstrapperPackage Include="Microsoft.Net.Framework.2.0">
-      <Visible>False</Visible>
-      <ProductName>.NET Framework 2.0 %28x86%29</ProductName>
-      <Install>true</Install>
-    </BootstrapperPackage>
-    <BootstrapperPackage Include="Microsoft.Net.Framework.3.0">
-      <Visible>False</Visible>
-      <ProductName>.NET Framework 3.0 %28x86%29</ProductName>
-      <Install>false</Install>
-    </BootstrapperPackage>
-    <BootstrapperPackage Include="Microsoft.Net.Framework.3.5">
-      <Visible>False</Visible>
-      <ProductName>.NET Framework 3.5</ProductName>
-      <Install>false</Install>
-    </BootstrapperPackage>
-    <BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
-      <Visible>False</Visible>
-      <ProductName>.NET Framework 3.5 SP1</ProductName>
-      <Install>false</Install>
-    </BootstrapperPackage>
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="Resources\Warning.bmp" />
+    <ProjectReference Include="..\Addin.Backup\Addin.Backup.csproj" />
+    <ProjectReference Include="..\LexicalModel\LexicalModel.csproj" />
+    <ProjectReference Include="..\LexicalTools\LexicalTools.csproj" />
+    <ProjectReference Include="..\WeSay.AddinLib\WeSay.AddinLib.csproj" />
+    <ProjectReference Include="..\WeSay.App\WeSay.App.csproj" />
+    <ProjectReference Include="..\WeSay.Data\WeSay.Data.csproj" />
+    <ProjectReference Include="..\WeSay.Foundation\WeSay.Foundation.csproj" />
+    <ProjectReference Include="..\WeSay.Project\WeSay.Project.csproj" />
+    <ProjectReference Include="..\WeSay.UI\WeSay.UI.csproj" />
   </ItemGroup>
   <ItemGroup>
     <None Include="Properties\app.manifest" />
-    <None Include="Resources\userSpecific32x31.png" />
   </ItemGroup>
   <ItemGroup>
     <Folder Include="Properties\DataSources\" />
@@ -675,35 +143,66 @@
   <ItemGroup>
     <None Include="icu4c.readme.txt" />
   </ItemGroup>
-  <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
-  <Import Project="..\..\packages\NDesk.DBus.0.15.0\build\NDesk.DBus.targets" Condition="Exists('..\..\packages\NDesk.DBus.0.15.0\build\NDesk.DBus.targets')" />
-  <Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
-    <PropertyGroup>
-      <ErrorText>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}.</ErrorText>
-    </PropertyGroup>
-    <Error Condition="!Exists('..\..\packages\NDesk.DBus.0.15.0\build\NDesk.DBus.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\NDesk.DBus.0.15.0\build\NDesk.DBus.targets'))" />
-    <Error Condition="!Exists('..\..\packages\Mono.Posix.5.4.0.201\build\net45\Mono.Posix.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\Mono.Posix.5.4.0.201\build\net45\Mono.Posix.targets'))" />
-    <Error Condition="!Exists('..\..\packages\Icu4c.Win.Min.59.1.7\build\Icu4c.Win.Min.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\Icu4c.Win.Min.59.1.7\build\Icu4c.Win.Min.targets'))" />
-    <Error Condition="!Exists('..\..\packages\Icu4c.Win.Fw.Lib.54.1.22-beta\build\Icu4c.Win.Fw.Lib.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\Icu4c.Win.Fw.Lib.54.1.22-beta\build\Icu4c.Win.Fw.Lib.targets'))" />
-    <Error Condition="!Exists('..\..\packages\Icu4c.Win.Fw.Bin.54.1.22-beta\build\Icu4c.Win.Fw.Bin.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\Icu4c.Win.Fw.Bin.54.1.22-beta\build\Icu4c.Win.Fw.Bin.targets'))" />
-    <Error Condition="!Exists('..\..\packages\NHunspell.Patched.1.2.5554\build\NHunspell.Patched.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\NHunspell.Patched.1.2.5554\build\NHunspell.Patched.targets'))" />
-    <Error Condition="!Exists('..\..\packages\SIL.Chorus.Mercurial.3.0.3\build\SIL.Chorus.Mercurial.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\SIL.Chorus.Mercurial.3.0.3\build\SIL.Chorus.Mercurial.targets'))" />
-    <Error Condition="!Exists('..\..\packages\SIL.Windows.Forms.Keyboarding.9.0.0-beta0154\build\SIL.Windows.Forms.Keyboarding.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\SIL.Windows.Forms.Keyboarding.9.0.0-beta0154\build\SIL.Windows.Forms.Keyboarding.targets'))" />
-    <Error Condition="!Exists('..\..\packages\SIL.Windows.Forms.9.0.0-beta0154\build\SIL.Windows.Forms.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\SIL.Windows.Forms.9.0.0-beta0154\build\SIL.Windows.Forms.targets'))" />
-  </Target>
-  <Import Project="..\..\packages\Mono.Posix.5.4.0.201\build\net45\Mono.Posix.targets" Condition="Exists('..\..\packages\Mono.Posix.5.4.0.201\build\net45\Mono.Posix.targets')" />
-  <Import Project="..\..\packages\Icu4c.Win.Min.59.1.7\build\Icu4c.Win.Min.targets" Condition="Exists('..\..\packages\Icu4c.Win.Min.59.1.7\build\Icu4c.Win.Min.targets')" />
-  <Import Project="..\..\packages\Icu4c.Win.Fw.Lib.54.1.22-beta\build\Icu4c.Win.Fw.Lib.targets" Condition="Exists('..\..\packages\Icu4c.Win.Fw.Lib.54.1.22-beta\build\Icu4c.Win.Fw.Lib.targets')" />
-  <Import Project="..\..\packages\Icu4c.Win.Fw.Bin.54.1.22-beta\build\Icu4c.Win.Fw.Bin.targets" Condition="Exists('..\..\packages\Icu4c.Win.Fw.Bin.54.1.22-beta\build\Icu4c.Win.Fw.Bin.targets')" />
-  <Import Project="..\..\packages\NHunspell.Patched.1.2.5554\build\NHunspell.Patched.targets" Condition="Exists('..\..\packages\NHunspell.Patched.1.2.5554\build\NHunspell.Patched.targets')" />
-  <Import Project="..\..\packages\SIL.Chorus.Mercurial.3.0.3\build\SIL.Chorus.Mercurial.targets" Condition="Exists('..\..\packages\SIL.Chorus.Mercurial.3.0.3\build\SIL.Chorus.Mercurial.targets')" />
-  <Import Project="..\..\packages\SIL.Windows.Forms.Keyboarding.9.0.0-beta0154\build\SIL.Windows.Forms.Keyboarding.targets" Condition="Exists('..\..\packages\SIL.Windows.Forms.Keyboarding.9.0.0-beta0154\build\SIL.Windows.Forms.Keyboarding.targets')" />
-  <Import Project="..\..\packages\SIL.Windows.Forms.9.0.0-beta0154\build\SIL.Windows.Forms.targets" Condition="Exists('..\..\packages\SIL.Windows.Forms.9.0.0-beta0154\build\SIL.Windows.Forms.targets')" />
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it.
-	   Other similar extension points exist, see Microsoft.Common.targets.
-  <Target Name="BeforeBuild">
-  </Target>
-  <Target Name="AfterBuild">
-  </Target>
-  -->
+  <ItemGroup>
+    <PackageReference Include="SIL.Windows.Forms" Version="13.0.1" GeneratePathProperty="true"/>
+    <Reference Include="SIL.Windows.Forms">
+      <HintPath>$(PkgSIL_Windows_Forms)\lib\net461\SIL.Windows.Forms.dll</HintPath>
+    </Reference>
+    <PackageReference Include="SIL.Windows.Forms.Keyboarding" Version="13.0.1" GeneratePathProperty="true"/>
+    <Reference Include="SIL.Windows.Forms.Keyboarding">
+      <HintPath>$(PkgSIL_Windows_Forms_Keyboarding)\lib\net461\SIL.Windows.Forms.Keyboarding.dll</HintPath>
+    </Reference>
+    <PackageReference Include="SIL.Windows.Forms.WritingSystems" Version="13.0.1" GeneratePathProperty="true"/>
+    <Reference Include="SIL.Windows.Forms.WritingSystems">
+      <HintPath>$(PkgSIL_Windows_Forms_WritingSystems)\lib\net461\SIL.Windows.Forms.WritingSystems.dll</HintPath>
+    </Reference>
+  </ItemGroup>
+  <ItemGroup>
+    <PackageReference Include="Autofac" Version="4.9.4" />
+    <PackageReference Include="CommonServiceLocator" Version="2.0.7" />
+    <PackageReference Include="ibusdotnet" Version="2.0.3" />
+    <PackageReference Include="icu.net" Version="2.8.1" />
+    <PackageReference Include="Icu4c.Win.Fw.Bin" Version="54.1.22-beta" />
+    <PackageReference Include="Icu4c.Win.Fw.Lib" Version="54.1.22-beta" />
+    <PackageReference Include="Icu4c.Win.Min" Version="59.1.7" />
+    <PackageReference Include="JetBrains.Annotations" Version="2021.2.0" />
+    <PackageReference Include="Microsoft.DotNet.PlatformAbstractions" Version="2.0.4" />
+    <PackageReference Include="Microsoft.VisualBasic" Version="10.3.0" />
+    <PackageReference Include="Mono.Addins" Version="1.4.1" />
+    <PackageReference Include="Mono.Posix" Version="5.4.0.201" />
+    <PackageReference Include="NAudio" Version="1.10.0" />
+    <PackageReference Include="NDesk.DBus" Version="0.15.0" />
+    <PackageReference Include="NHunspell.Patched" Version="1.2.5554" />
+    <PackageReference Include="protobuf-net" Version="3.2.30" />
+    <PackageReference Include="RelaxNG" Version="3.2.3" />
+    <PackageReference Include="SharpZipLib" Version="1.4.2" />
+    <PackageReference Include="SIL.Chorus.Mercurial" Version="3.0.3.6" />
+    <PackageReference Include="SIL.Core" Version="13.0.1" />
+    <PackageReference Include="SIL.Core.Desktop" Version="13.0.1" />
+    <PackageReference Include="SIL.Lexicon" Version="13.0.1" />
+    <PackageReference Include="SIL.Lift" Version="13.0.1" />
+    <PackageReference Include="SIL.WritingSystems" Version="13.0.1" />
+    <PackageReference Include="Spart" Version="1.0.0" />
+    <PackageReference Include="structuremap.patched" Version="4.7.3" />
+    <PackageReference Include="System.ComponentModel.Composition" Version="8.0.0" />
+    <PackageReference Include="System.Management" Version="8.0.0" />
+    <PackageReference Include="Microsoft.AspNetCore.SystemWebAdapters" Version="1.3.0" />
+    <PackageReference Include="Microsoft.Bcl.AsyncInterfaces" Version="8.0.0" />
+    <PackageReference Include="Microsoft.Extensions.DependencyModel" Version="8.0.0" />
+    <PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
+    <PackageReference Include="System.Runtime.CompilerServices.Unsafe" Version="6.0.0" />
+    <PackageReference Include="System.Security.AccessControl" Version="6.0.0" />
+    <PackageReference Include="System.Configuration.ConfigurationManager" Version="8.0.0" />
+    <PackageReference Include="System.ServiceModel.Primitives" Version="8.0.0" />
+    <PackageReference Include="System.ServiceModel.Http" Version="8.0.0" />
+    <PackageReference Include="System.ServiceModel.Duplex" Version="6.0.0" />
+    <PackageReference Include="System.ServiceModel.NetTcp" Version="8.0.0" />
+    <PackageReference Include="System.ServiceModel.Security" Version="6.0.0" />
+    <PackageReference Include="System.ServiceModel.Federation" Version="8.0.0" />
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Remove="TaskList.cs" />
+    <Compile Remove="TaskList.Designer.cs" />
+    <EmbeddedResource Remove="TaskList.resx" />
+  </ItemGroup>
 </Project>
\ No newline at end of file
diff --git a/src/WeSay.ConfigTool/packages.config b/src/WeSay.ConfigTool/packages.config
deleted file mode 100644
index 9d825bde4..000000000
--- a/src/WeSay.ConfigTool/packages.config
+++ /dev/null
@@ -1,51 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<packages>
-  <package id="Autofac" version="4.1.1" targetFramework="net461" />
-  <package id="CommonServiceLocator" version="1.0" targetFramework="net461" />
-  <package id="DialogAdapters.Gtk2" version="0.1.9" targetFramework="net461" />
-  <package id="Enchant.Net" version="1.4.2" targetFramework="net461" />
-  <package id="ibusdotnet" version="2.0.3" targetFramework="net461" />
-  <package id="icu.net" version="2.7.1" targetFramework="net461" />
-  <package id="Icu4c.Win.Fw.Bin" version="54.1.22-beta" targetFramework="net461" />
-  <package id="Icu4c.Win.Fw.Lib" version="54.1.22-beta" targetFramework="net461" />
-  <package id="Icu4c.Win.Min" version="59.1.7" targetFramework="net461" />
-  <package id="JetBrains.Annotations" version="2021.2.0" targetFramework="net461" />
-  <package id="L10NSharp" version="5.0.0-beta0086" targetFramework="net461" />
-  <package id="Markdig.Signed" version="0.22.0" targetFramework="net461" />
-  <package id="Microsoft.Bcl.AsyncInterfaces" version="5.0.0" targetFramework="net461" />
-  <package id="Microsoft.DotNet.PlatformAbstractions" version="2.0.4" targetFramework="net461" />
-  <package id="Microsoft.Extensions.DependencyModel" version="2.0.4" targetFramework="net461" />
-  <package id="Mono.Addins" version="1.3.8" targetFramework="net461" />
-  <package id="Mono.Posix" version="5.4.0.201" targetFramework="net461" />
-  <package id="NAudio" version="1.10.0" targetFramework="net461" />
-  <package id="NDesk.DBus" version="0.15.0" targetFramework="net40-client" />
-  <package id="Newtonsoft.Json" version="12.0.3" targetFramework="net461" />
-  <package id="NHunspell.Patched" version="1.2.5554" targetFramework="net461" />
-  <package id="protobuf-net" version="2.0.0.668" targetFramework="net461" />
-  <package id="RelaxNG" version="3.2.3" targetFramework="net461" />
-  <package id="SharpZipLib" version="0.86.0" targetFramework="net461" />
-  <package id="SIL.Chorus.Mercurial" version="3.0.3" targetFramework="net461" />
-  <package id="SIL.Core" version="9.0.0-beta0154" targetFramework="net461" />
-  <package id="SIL.Core.Desktop" version="9.0.0-beta0154" targetFramework="net461" />
-  <package id="SIL.DictionaryServices" version="9.0.0-beta0154" targetFramework="net461" />
-  <package id="SIL.Lexicon" version="9.0.0-beta0154" targetFramework="net461" />
-  <package id="SIL.Lift" version="9.0.0-beta0154" targetFramework="net461" />
-  <package id="SIL.Windows.Forms" version="9.0.0-beta0154" targetFramework="net461" />
-  <package id="SIL.Windows.Forms.Keyboarding" version="9.0.0-beta0154" targetFramework="net461" />
-  <package id="SIL.Windows.Forms.WritingSystems" version="9.0.0-beta0154" targetFramework="net461" />
-  <package id="SIL.WritingSystems" version="9.0.0-beta0154" targetFramework="net461" />
-  <package id="Spart" version="1.0.0" targetFramework="net461" />
-  <package id="structuremap.patched" version="2.5.4" targetFramework="net461" />
-  <package id="System.Buffers" version="4.5.1" targetFramework="net461" />
-  <package id="System.Globalization" version="4.3.0" targetFramework="net461" />
-  <package id="System.IO.FileSystem.AccessControl" version="4.7.0" targetFramework="net461" />
-  <package id="System.Memory" version="4.5.4" targetFramework="net461" />
-  <package id="System.Numerics.Vectors" version="4.5.0" targetFramework="net461" />
-  <package id="System.Runtime.CompilerServices.Unsafe" version="4.5.3" targetFramework="net461" />
-  <package id="System.Runtime.InteropServices.RuntimeInformation" version="4.3.0" targetFramework="net461" />
-  <package id="System.Security.AccessControl" version="4.7.0" targetFramework="net461" />
-  <package id="System.Security.Principal.Windows" version="4.7.0" targetFramework="net461" />
-  <package id="System.Threading.Tasks.Extensions" version="4.5.4" targetFramework="net461" />
-  <package id="System.ValueTuple" version="4.5.0" targetFramework="net461" />
-  <package id="TagLibSharp" version="2.2.0" targetFramework="net461" />
-</packages>
\ No newline at end of file
diff --git a/src/WeSay.Data.Tests/Properties/AssemblyInfo.cs b/src/WeSay.Data.Tests/Properties/AssemblyInfo.cs
index cd30e79f7..63551548d 100644
--- a/src/WeSay.Data.Tests/Properties/AssemblyInfo.cs
+++ b/src/WeSay.Data.Tests/Properties/AssemblyInfo.cs
@@ -1,16 +1,5 @@
 using System.Reflection;
 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("WeSay.Data.Tests")]
-[assembly: AssemblyDescription("")]
-[assembly: AssemblyConfiguration("")]
-[assembly: AssemblyCompany("WeSay")]
-[assembly: AssemblyProduct("WeSay.Tests")]
-[assembly: AssemblyCopyright("Copyright © WeSay 2006")]
 [assembly: AssemblyTrademark("")]
 [assembly: AssemblyCulture("")]
 
@@ -23,16 +12,3 @@
 // The following GUID is for the ID of the typelib if this project is exposed to COM
 
 [assembly: Guid("95a0fa19-812f-4608-a9d9-5d6b61ad7828")]
-
-// 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 Revision and Build Numbers
-// by using the '*' as shown below:
-
-[assembly: AssemblyVersion("1.9.0.10")]
-[assembly: AssemblyFileVersion("1.9.0.10")]
\ No newline at end of file
diff --git a/src/WeSay.Data.Tests/WeSay.Data.Tests.csproj b/src/WeSay.Data.Tests/WeSay.Data.Tests.csproj
index 8f23ff136..cde932111 100644
--- a/src/WeSay.Data.Tests/WeSay.Data.Tests.csproj
+++ b/src/WeSay.Data.Tests/WeSay.Data.Tests.csproj
@@ -1,183 +1,54 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="12.0">
-  <Import Project="..\..\packages\NUnit.3.13.1\build\NUnit.props" Condition="Exists('..\..\packages\NUnit.3.13.1\build\NUnit.props')" />
+<Project Sdk="Microsoft.NET.Sdk">
   <PropertyGroup>
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
-    <ProductVersion>9.0.21022</ProductVersion>
-    <SchemaVersion>2.0</SchemaVersion>
-    <ProjectGuid>{8491FEEE-C311-4B64-BB30-A1F1C1802F45}</ProjectGuid>
+    <TargetFramework>net8.0-windows</TargetFramework>
     <OutputType>Library</OutputType>
-    <AppDesignerFolder>Properties</AppDesignerFolder>
-    <RootNamespace>WeSay.Data.Tests</RootNamespace>
-    <AssemblyName>WeSay.Data.Tests</AssemblyName>
     <AppConfig>..\AppForTests.config</AppConfig>
-    <FileUpgradeFlags>
-    </FileUpgradeFlags>
-    <UpgradeBackupLocation>
-    </UpgradeBackupLocation>
-    <OldToolsVersion>3.5</OldToolsVersion>
-    <TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion>
-    <TargetFrameworkProfile>
-    </TargetFrameworkProfile>
-    <NuGetPackageImportStamp>
-    </NuGetPackageImportStamp>
+    <AssemblyTitle>WeSay.Data.Tests</AssemblyTitle>
+    <Company>WeSay</Company>
+    <Product>WeSay.Tests</Product>
+    <Copyright>Copyright © WeSay 2006</Copyright>
+    <AssemblyVersion>1.9.0.10</AssemblyVersion>
+    <FileVersion>1.9.0.10</FileVersion>
+    <GenerateAssemblyInfo>false</GenerateAssemblyInfo>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
-    <DebugSymbols>true</DebugSymbols>
-    <DebugType>full</DebugType>
-    <Optimize>false</Optimize>
     <OutputPath>..\..\output\Debug\</OutputPath>
-    <DefineConstants>DEBUG;TRACE</DefineConstants>
-    <ErrorReport>prompt</ErrorReport>
-    <WarningLevel>4</WarningLevel>
-    <OutputType>Library</OutputType>
-    <AssemblyName>WeSay.Data.Tests</AssemblyName>
-    <RootNamespace>WeSay.Data.Tests</RootNamespace>
-    <AllowUnsafeBlocks>false</AllowUnsafeBlocks>
     <CheckForOverflowUnderflow>true</CheckForOverflowUnderflow>
-    <PlatformTarget>x86</PlatformTarget>
-    <Prefer32Bit>false</Prefer32Bit>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
-    <DebugType>pdbonly</DebugType>
-    <Optimize>true</Optimize>
     <OutputPath>..\..\output\Release\</OutputPath>
-    <DefineConstants>TRACE</DefineConstants>
-    <ErrorReport>prompt</ErrorReport>
-    <WarningLevel>4</WarningLevel>
-    <OutputType>Library</OutputType>
-    <AssemblyName>WeSay.Data.Tests</AssemblyName>
     <DebugSymbols>true</DebugSymbols>
-    <RootNamespace>WeSay.Data.Tests</RootNamespace>
-    <AllowUnsafeBlocks>false</AllowUnsafeBlocks>
     <CheckForOverflowUnderflow>true</CheckForOverflowUnderflow>
-    <Prefer32Bit>false</Prefer32Bit>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
-    <DebugSymbols>true</DebugSymbols>
     <OutputPath>..\..\output\Debug\</OutputPath>
-    <DefineConstants>DEBUG;TRACE</DefineConstants>
     <CheckForOverflowUnderflow>true</CheckForOverflowUnderflow>
-    <DebugType>full</DebugType>
-    <PlatformTarget>x86</PlatformTarget>
-    <ErrorReport>prompt</ErrorReport>
-    <Prefer32Bit>false</Prefer32Bit>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
     <DebugSymbols>true</DebugSymbols>
     <OutputPath>..\..\output\Release\</OutputPath>
-    <DefineConstants>TRACE</DefineConstants>
     <CheckForOverflowUnderflow>true</CheckForOverflowUnderflow>
-    <Optimize>true</Optimize>
-    <DebugType>pdbonly</DebugType>
-    <PlatformTarget>x86</PlatformTarget>
-    <ErrorReport>prompt</ErrorReport>
-    <Prefer32Bit>false</Prefer32Bit>
   </PropertyGroup>
   <ItemGroup>
-    <Compile Include="IBindingListBaseTest.cs" />
-    <Compile Include="ICollectionBaseTest.cs" />
-    <Compile Include="IEnumerableBaseTest.cs" />
-    <Compile Include="IListBaseTest.cs" />
-    <Compile Include="PermuterTests.cs" />
-    <Compile Include="Properties\AssemblyInfo.cs" />
-    <Compile Include="QueryTests.cs" />
-    <Compile Include="SimpleIntTestClass.cs" />
-    <Compile Include="SynchronicRepositoryTests.cs" />
-    <Compile Include="TestMultiple.cs" />
-  </ItemGroup>
-  <ItemGroup>
-    <Reference Include="icu.net, Version=2.7.0.0, Culture=neutral, PublicKeyToken=416fdd914afa6b66, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\icu.net.2.7.1\lib\net451\icu.net.dll</HintPath>
-    </Reference>
-    <Reference Include="Microsoft.DotNet.PlatformAbstractions, Version=2.0.4.0, Culture=neutral, PublicKeyToken=adb9793829ddae60, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\Microsoft.DotNet.PlatformAbstractions.2.0.4\lib\net45\Microsoft.DotNet.PlatformAbstractions.dll</HintPath>
-    </Reference>
-    <Reference Include="Microsoft.Extensions.DependencyModel, Version=2.0.4.0, Culture=neutral, PublicKeyToken=adb9793829ddae60, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\Microsoft.Extensions.DependencyModel.2.0.4\lib\net451\Microsoft.Extensions.DependencyModel.dll</HintPath>
-    </Reference>
-    <Reference Include="Mono.Posix, Version=7.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\Mono.Posix.7.0.0-alpha2.21278.1\lib\net45\Mono.Posix.dll</HintPath>
-    </Reference>
-    <Reference Include="Mono.Unix, Version=7.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\Mono.Unix.7.0.0-alpha2.21278.1\lib\net45\Mono.Unix.dll</HintPath>
-    </Reference>
-    <Reference Include="Newtonsoft.Json, Version=12.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\Newtonsoft.Json.12.0.3\lib\net45\Newtonsoft.Json.dll</HintPath>
-    </Reference>
-    <Reference Include="nunit.framework, Version=3.13.1.0, Culture=neutral, PublicKeyToken=2638cd05610744eb, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\NUnit.3.13.1\lib\net45\nunit.framework.dll</HintPath>
-    </Reference>
-    <Reference Include="SIL.Core, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\SIL.Core.9.0.0-beta0154\lib\net461\SIL.Core.dll</HintPath>
-    </Reference>
-    <Reference Include="SIL.Core.Desktop">
-      <SpecificVersion>False</SpecificVersion>
-      <HintPath>..\..\packages\SIL.Core.Desktop.9.0.0-beta0154\lib\net461\SIL.Core.Desktop.dll</HintPath>
-    </Reference>
-    <Reference Include="SIL.Core.Tests, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\SIL.Core.Tests.9.0.0-beta0154\lib\net461\SIL.Core.Tests.dll</HintPath>
-    </Reference>
-    <Reference Include="SIL.TestUtilities, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\SIL.TestUtilities.9.0.0-beta0154\lib\net461\SIL.TestUtilities.dll</HintPath>
-    </Reference>
-    <Reference Include="SIL.WritingSystems, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\SIL.WritingSystems.9.0.0-beta0154\lib\net461\SIL.WritingSystems.dll</HintPath>
-    </Reference>
-    <Reference Include="Spart, Version=1.0.0.0, Culture=neutral, PublicKeyToken=14d24e064e474331, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\Spart.1.0.0\lib\net461\Spart.dll</HintPath>
-    </Reference>
-    <Reference Include="System" />
-    <Reference Include="System.Core">
-      <RequiredTargetFramework>3.5</RequiredTargetFramework>
-    </Reference>
-    <Reference Include="System.Data" />
-    <Reference Include="System.IO.FileSystem.AccessControl, Version=4.0.5.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\System.IO.FileSystem.AccessControl.4.7.0\lib\net461\System.IO.FileSystem.AccessControl.dll</HintPath>
-    </Reference>
-    <Reference Include="System.Security.AccessControl, Version=4.1.3.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\System.Security.AccessControl.4.7.0\lib\net461\System.Security.AccessControl.dll</HintPath>
-    </Reference>
-    <Reference Include="System.Security.Principal.Windows, Version=4.1.3.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\System.Security.Principal.Windows.4.7.0\lib\net461\System.Security.Principal.Windows.dll</HintPath>
-    </Reference>
-    <Reference Include="System.ValueTuple, Version=4.0.3.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\System.ValueTuple.4.5.0\lib\net461\System.ValueTuple.dll</HintPath>
-    </Reference>
-    <Reference Include="System.Web" />
-    <Reference Include="System.Xml" />
-  </ItemGroup>
-  <ItemGroup>
-    <ProjectReference Include="..\WeSay.Data\WeSay.Data.csproj">
-      <Project>{600D0FD4-D189-41A0-9BC5-FC79AD2CF1CD}</Project>
-      <Name>WeSay.Data</Name>
-    </ProjectReference>
-    <ProjectReference Include="..\WeSay.Foundation\WeSay.Foundation.csproj">
-      <Project>{F12EB680-0990-4900-B77E-0FBF2E28A815}</Project>
-      <Name>WeSay.Foundation</Name>
-    </ProjectReference>
+    <ProjectReference Include="..\WeSay.Data\WeSay.Data.csproj" />
+    <ProjectReference Include="..\WeSay.Foundation\WeSay.Foundation.csproj" />
   </ItemGroup>
-  <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it.
-	   Other similar extension points exist, see Microsoft.Common.targets.
-  <Target Name="BeforeBuild">
-  </Target>
-  <Target Name="AfterBuild">
-  </Target>
-  -->
   <ItemGroup>
-    <None Include="packages.config" />
+    <Service Include="{82A7F48D-3B50-4B1E-B82E-3ADA8210C358}" />
   </ItemGroup>
   <ItemGroup>
-    <Service Include="{82A7F48D-3B50-4B1E-B82E-3ADA8210C358}" />
+    <PackageReference Include="icu.net" Version="2.8.1" />
+    <PackageReference Include="Microsoft.DotNet.PlatformAbstractions" Version="2.0.4" />
+    <PackageReference Include="Mono.Posix" Version="5.4.0.201"/>
+    <PackageReference Include="NUnit" Version="3.13.3" />
+    <PackageReference Include="SIL.Core" Version="13.0.1" />
+    <PackageReference Include="SIL.Core.Tests" Version="13.0.1" />
+    <PackageReference Include="SIL.TestUtilities" Version="13.0.1" />
+    <PackageReference Include="SIL.WritingSystems" Version="13.0.1" />
+    <PackageReference Include="Spart" Version="1.0.0" />
+    <PackageReference Include="Microsoft.AspNetCore.SystemWebAdapters" Version="1.3.0" />
+    <PackageReference Include="Microsoft.Extensions.DependencyModel" Version="8.0.0" />
+    <PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
+    <PackageReference Include="System.Security.AccessControl" Version="6.0.0" />
   </ItemGroup>
-  <Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
-    <PropertyGroup>
-      <ErrorText>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}.</ErrorText>
-    </PropertyGroup>
-    <Error Condition="!Exists('..\..\packages\NUnit.3.13.1\build\NUnit.props')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\NUnit.3.13.1\build\NUnit.props'))" />
-    <Error Condition="!Exists('..\..\packages\Mono.Unix.7.0.0-alpha2.21278.1\build\Mono.Unix.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\Mono.Unix.7.0.0-alpha2.21278.1\build\Mono.Unix.targets'))" />
-  </Target>
-  <Import Project="..\..\packages\Mono.Unix.7.0.0-alpha2.21278.1\build\Mono.Unix.targets" Condition="Exists('..\..\packages\Mono.Unix.7.0.0-alpha2.21278.1\build\Mono.Unix.targets')" />
 </Project>
\ No newline at end of file
diff --git a/src/WeSay.Data.Tests/packages.config b/src/WeSay.Data.Tests/packages.config
deleted file mode 100644
index ed6c01dfb..000000000
--- a/src/WeSay.Data.Tests/packages.config
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<packages>
-  <package id="icu.net" version="2.7.1" targetFramework="net461" />
-  <package id="Microsoft.DotNet.PlatformAbstractions" version="2.0.4" targetFramework="net461" />
-  <package id="Microsoft.Extensions.DependencyModel" version="2.0.4" targetFramework="net461" />
-  <package id="Mono.Posix" version="7.0.0-alpha2.21278.1" targetFramework="net461" />
-  <package id="Mono.Unix" version="7.0.0-alpha2.21278.1" targetFramework="net461" />
-  <package id="Newtonsoft.Json" version="12.0.3" targetFramework="net461" />
-  <package id="NUnit" version="3.13.1" targetFramework="net461" />
-  <package id="SIL.Core" version="9.0.0-beta0154" targetFramework="net461" />
-  <package id="SIL.Core.Tests" version="9.0.0-beta0154" targetFramework="net461" />
-  <package id="SIL.TestUtilities" version="9.0.0-beta0154" targetFramework="net461" />
-  <package id="SIL.WritingSystems" version="9.0.0-beta0154" targetFramework="net461" />
-  <package id="Spart" version="1.0.0" targetFramework="net461" />
-  <package id="System.IO.FileSystem.AccessControl" version="4.7.0" targetFramework="net461" />
-  <package id="System.Security.AccessControl" version="4.7.0" targetFramework="net461" />
-  <package id="System.Security.Principal.Windows" version="4.7.0" targetFramework="net461" />
-  <package id="System.ValueTuple" version="4.5.0" targetFramework="net461" />
-</packages>
\ No newline at end of file
diff --git a/src/WeSay.Data/Properties/AssemblyInfo.cs b/src/WeSay.Data/Properties/AssemblyInfo.cs
index f57af925d..000bb90db 100644
--- a/src/WeSay.Data/Properties/AssemblyInfo.cs
+++ b/src/WeSay.Data/Properties/AssemblyInfo.cs
@@ -2,17 +2,6 @@
 using System.Reflection;
 using System.Runtime.InteropServices;
 using System.Security.Permissions;
-
-// 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("WeSay.Data")]
-[assembly: AssemblyDescription("")]
-[assembly: AssemblyConfiguration("")]
-[assembly: AssemblyCompany("WeSay")]
-[assembly: AssemblyProduct("WeSay")]
-[assembly: AssemblyCopyright("Copyright © WeSay 2006")]
 [assembly: AssemblyTrademark("")]
 [assembly: AssemblyCulture("")]
 
@@ -25,18 +14,5 @@
 // The following GUID is for the ID of the typelib if this project is exposed to COM
 
 [assembly: Guid("331d99db-dead-481c-b42f-cbba11076646")]
-
-// 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 Revision and Build Numbers
-// by using the '*' as shown below:
-
-[assembly: AssemblyVersion("1.9.0.10")]
-[assembly: AssemblyFileVersion("1.9.0.10")]
 [assembly: CLSCompliant(true)]
 [assembly: SecurityPermission(SecurityAction.RequestMinimum, Execution = true)]
diff --git a/src/WeSay.Data/WeSay.Data.csproj b/src/WeSay.Data/WeSay.Data.csproj
index 57d4cfeb2..dd14c8ce9 100755
--- a/src/WeSay.Data/WeSay.Data.csproj
+++ b/src/WeSay.Data/WeSay.Data.csproj
@@ -1,23 +1,7 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="12.0">
+<Project Sdk="Microsoft.NET.Sdk">
   <PropertyGroup>
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
-    <ProductVersion>9.0.21022</ProductVersion>
-    <SchemaVersion>2.0</SchemaVersion>
-    <ProjectGuid>{600D0FD4-D189-41A0-9BC5-FC79AD2CF1CD}</ProjectGuid>
+    <TargetFramework>net8.0-windows</TargetFramework>
     <OutputType>Library</OutputType>
-    <AppDesignerFolder>Properties</AppDesignerFolder>
-    <RootNamespace>WeSay.Data</RootNamespace>
-    <AssemblyName>WeSay.Data</AssemblyName>
-    <FileUpgradeFlags>
-    </FileUpgradeFlags>
-    <UpgradeBackupLocation>
-    </UpgradeBackupLocation>
-    <OldToolsVersion>3.5</OldToolsVersion>
-    <TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion>
-    <TargetFrameworkProfile>
-    </TargetFrameworkProfile>
     <PublishUrl>publish\</PublishUrl>
     <Install>true</Install>
     <InstallFrom>Disk</InstallFrom>
@@ -33,112 +17,37 @@
     <IsWebBootstrapper>false</IsWebBootstrapper>
     <UseApplicationTrust>false</UseApplicationTrust>
     <BootstrapperEnabled>true</BootstrapperEnabled>
+    <GenerateAssemblyInfo>false</GenerateAssemblyInfo>
+    <AssemblyTitle>WeSay.Data</AssemblyTitle>
+    <Company>WeSay</Company>
+    <Product>WeSay</Product>
+    <Copyright>Copyright © WeSay 2006</Copyright>
+    <AssemblyVersion>1.9.0.10</AssemblyVersion>
+    <FileVersion>1.9.0.10</FileVersion>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
-    <DebugSymbols>true</DebugSymbols>
-    <DebugType>full</DebugType>
-    <Optimize>false</Optimize>
     <OutputPath>..\..\output\Debug\</OutputPath>
-    <DefineConstants>DEBUG;TRACE</DefineConstants>
-    <ErrorReport>prompt</ErrorReport>
-    <WarningLevel>4</WarningLevel>
-    <OutputType>Library</OutputType>
-    <AssemblyName>WeSay.Data</AssemblyName>
-    <RootNamespace>WeSay.Data</RootNamespace>
-    <AllowUnsafeBlocks>false</AllowUnsafeBlocks>
     <CheckForOverflowUnderflow>true</CheckForOverflowUnderflow>
-    <PlatformTarget>x86</PlatformTarget>
-    <Prefer32Bit>false</Prefer32Bit>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
-    <DebugType>pdbonly</DebugType>
-    <Optimize>true</Optimize>
     <OutputPath>..\..\output\Release\</OutputPath>
-    <DefineConstants>TRACE</DefineConstants>
-    <ErrorReport>prompt</ErrorReport>
-    <WarningLevel>4</WarningLevel>
-    <OutputType>Library</OutputType>
-    <AssemblyName>WeSay.Data</AssemblyName>
     <DebugSymbols>true</DebugSymbols>
-    <RootNamespace>WeSay.Data</RootNamespace>
-    <AllowUnsafeBlocks>false</AllowUnsafeBlocks>
     <CheckForOverflowUnderflow>true</CheckForOverflowUnderflow>
-    <Prefer32Bit>false</Prefer32Bit>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
-    <DebugSymbols>true</DebugSymbols>
     <OutputPath>..\..\output\Debug\</OutputPath>
-    <DefineConstants>DEBUG;TRACE</DefineConstants>
     <CheckForOverflowUnderflow>true</CheckForOverflowUnderflow>
-    <DebugType>full</DebugType>
-    <PlatformTarget>x86</PlatformTarget>
-    <ErrorReport>prompt</ErrorReport>
-    <Prefer32Bit>false</Prefer32Bit>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
     <DebugSymbols>true</DebugSymbols>
     <OutputPath>..\..\output\Release\</OutputPath>
-    <DefineConstants>TRACE</DefineConstants>
     <CheckForOverflowUnderflow>true</CheckForOverflowUnderflow>
-    <Optimize>true</Optimize>
-    <DebugType>pdbonly</DebugType>
-    <PlatformTarget>x86</PlatformTarget>
-    <ErrorReport>prompt</ErrorReport>
-    <Prefer32Bit>false</Prefer32Bit>
   </PropertyGroup>
   <PropertyGroup>
     <AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
   </PropertyGroup>
   <ItemGroup>
-    <Reference Include="Newtonsoft.Json, Version=12.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
-      <SpecificVersion>False</SpecificVersion>
-      <HintPath>..\..\packages\Newtonsoft.Json.12.0.3\lib\net45\Newtonsoft.Json.dll</HintPath>
-    </Reference>
-    <Reference Include="SIL.Core, Version=2.6.0.0, Culture=neutral, processorArchitecture=x86">
-      <SpecificVersion>False</SpecificVersion>
-      <HintPath>..\..\packages\SIL.Core.9.0.0-beta0154\lib\net461\SIL.Core.dll</HintPath>
-    </Reference>
-    <Reference Include="SIL.Core.Desktop">
-      <HintPath>..\..\packages\SIL.Core.Desktop.9.0.0-beta0154\lib\net461\SIL.Core.Desktop.dll</HintPath>
-    </Reference>
-    <Reference Include="System" />
-    <Reference Include="System.Data" />
-    <Reference Include="System.Xml" />
-  </ItemGroup>
-  <ItemGroup>
-    <Compile Include="Permuter.cs" />
-    <Compile Include="Properties\AssemblyInfo.cs" />
-    <Compile Include="Query.cs" />
-    <Compile Include="QueryAdapter.cs" />
-    <Compile Include="SynchronicRepository.cs" />
-    <Compile Include="Properties\InternalsVisible.cs" />
-  </ItemGroup>
-  <ItemGroup>
-    <BootstrapperPackage Include="Microsoft.Net.Client.3.5">
-      <Visible>False</Visible>
-      <ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName>
-      <Install>false</Install>
-    </BootstrapperPackage>
-    <BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
-      <Visible>False</Visible>
-      <ProductName>.NET Framework 3.5 SP1</ProductName>
-      <Install>true</Install>
-    </BootstrapperPackage>
-    <BootstrapperPackage Include="Microsoft.Windows.Installer.3.1">
-      <Visible>False</Visible>
-      <ProductName>Windows Installer 3.1</ProductName>
-      <Install>true</Install>
-    </BootstrapperPackage>
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="packages.config" />
+    <PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
+    <PackageReference Include="SIL.Core.Desktop" Version="13.0.1" />
   </ItemGroup>
-  <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it.
-	   Other similar extension points exist, see Microsoft.Common.targets.
-  <Target Name="BeforeBuild">
-  </Target>
-  <Target Name="AfterBuild">
-  </Target>
-  -->
 </Project>
\ No newline at end of file
diff --git a/src/WeSay.Data/packages.config b/src/WeSay.Data/packages.config
deleted file mode 100644
index 8ab13a902..000000000
--- a/src/WeSay.Data/packages.config
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<packages>
-  <package id="Newtonsoft.Json" version="12.0.3" targetFramework="net461" />
-</packages>
\ No newline at end of file
diff --git a/src/WeSay.Foundation/Properties/AssemblyInfo.cs b/src/WeSay.Foundation/Properties/AssemblyInfo.cs
deleted file mode 100644
index 0a6cb1bf3..000000000
--- a/src/WeSay.Foundation/Properties/AssemblyInfo.cs
+++ /dev/null
@@ -1,42 +0,0 @@
-using System;
-using System.Reflection;
-using System.Runtime.InteropServices;
-using System.Security.Permissions;
-
-// 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("WeSay.Foundation")]
-[assembly: AssemblyDescription("")]
-[assembly: AssemblyConfiguration("")]
-[assembly: AssemblyCompany("WeSay")]
-[assembly: AssemblyProduct("WeSay.Foundation")]
-[assembly: AssemblyCopyright("Copyright © WeSay 2006")]
-[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)]
-
-// The following GUID is for the ID of the typelib if this project is exposed to COM
-
-[assembly: Guid("c6c2b2a7-e72d-44fc-ae51-9fa12a85d8f7")]
-
-// 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 Revision and Build Numbers
-// by using the '*' as shown below:
-
-[assembly: AssemblyVersion("1.9.0.10")]
-[assembly: AssemblyFileVersion("1.9.0.10")]
-[assembly: CLSCompliant(true)]
-[assembly: SecurityPermission(SecurityAction.RequestMinimum, Execution = true)]
\ No newline at end of file
diff --git a/src/WeSay.Foundation/WeSay.Foundation.csproj b/src/WeSay.Foundation/WeSay.Foundation.csproj
index 5efab1fa4..44a4375bb 100755
--- a/src/WeSay.Foundation/WeSay.Foundation.csproj
+++ b/src/WeSay.Foundation/WeSay.Foundation.csproj
@@ -1,102 +1,31 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="12.0">
+<Project Sdk="Microsoft.NET.Sdk">
   <PropertyGroup>
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
-    <ProductVersion>9.0.21022</ProductVersion>
-    <SchemaVersion>2.0</SchemaVersion>
-    <ProjectGuid>{F12EB680-0990-4900-B77E-0FBF2E28A815}</ProjectGuid>
+    <TargetFramework>net8.0-windows</TargetFramework>
     <OutputType>Library</OutputType>
-    <AppDesignerFolder>Properties</AppDesignerFolder>
-    <RootNamespace>WeSay.Foundation</RootNamespace>
-    <AssemblyName>WeSay.Foundation</AssemblyName>
-    <FileUpgradeFlags>
-    </FileUpgradeFlags>
-    <UpgradeBackupLocation>
-    </UpgradeBackupLocation>
-    <OldToolsVersion>3.5</OldToolsVersion>
-    <TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion>
-    <TargetFrameworkProfile>
-    </TargetFrameworkProfile>
+    <GenerateAssemblyInfo>false</GenerateAssemblyInfo>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
-    <DebugSymbols>true</DebugSymbols>
-    <DebugType>full</DebugType>
-    <Optimize>false</Optimize>
     <OutputPath>..\..\output\Debug\</OutputPath>
-    <DefineConstants>DEBUG;TRACE</DefineConstants>
-    <ErrorReport>prompt</ErrorReport>
-    <WarningLevel>4</WarningLevel>
     <OutputType>Library</OutputType>
-    <AssemblyName>WeSay.Foundation</AssemblyName>
-    <RootNamespace>WeSay.Foundation</RootNamespace>
-    <AllowUnsafeBlocks>false</AllowUnsafeBlocks>
     <CheckForOverflowUnderflow>true</CheckForOverflowUnderflow>
-    <PlatformTarget>x86</PlatformTarget>
-    <Prefer32Bit>false</Prefer32Bit>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
-    <DebugType>pdbonly</DebugType>
-    <Optimize>true</Optimize>
     <OutputPath>..\..\output\Release\</OutputPath>
-    <DefineConstants>TRACE</DefineConstants>
-    <ErrorReport>prompt</ErrorReport>
-    <WarningLevel>4</WarningLevel>
     <OutputType>Library</OutputType>
-    <AssemblyName>WeSay.Foundation</AssemblyName>
     <DebugSymbols>true</DebugSymbols>
-    <RootNamespace>WeSay.Foundation</RootNamespace>
-    <AllowUnsafeBlocks>false</AllowUnsafeBlocks>
     <CheckForOverflowUnderflow>true</CheckForOverflowUnderflow>
-    <Prefer32Bit>false</Prefer32Bit>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
-    <DebugSymbols>true</DebugSymbols>
     <OutputPath>..\..\output\Debug\</OutputPath>
-    <DefineConstants>DEBUG;TRACE</DefineConstants>
     <CheckForOverflowUnderflow>true</CheckForOverflowUnderflow>
-    <DebugType>full</DebugType>
-    <PlatformTarget>x86</PlatformTarget>
-    <ErrorReport>prompt</ErrorReport>
-    <Prefer32Bit>false</Prefer32Bit>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
     <DebugSymbols>true</DebugSymbols>
     <OutputPath>..\..\output\Release\</OutputPath>
-    <DefineConstants>TRACE</DefineConstants>
     <CheckForOverflowUnderflow>true</CheckForOverflowUnderflow>
-    <Optimize>true</Optimize>
-    <DebugType>pdbonly</DebugType>
-    <PlatformTarget>x86</PlatformTarget>
-    <ErrorReport>prompt</ErrorReport>
-    <Prefer32Bit>false</Prefer32Bit>
   </PropertyGroup>
+  <PropertyGroup />
   <ItemGroup>
-    <Reference Include="System" />
-    <Reference Include="System.Core">
-      <RequiredTargetFramework>3.5</RequiredTargetFramework>
-    </Reference>
-    <Reference Include="System.Data" />
-    <Reference Include="System.Drawing" />
-    <Reference Include="System.Windows.Forms" />
-    <Reference Include="System.Xml" />
-  </ItemGroup>
-  <ItemGroup>
-    <Compile Include="IThingOnDashboard.cs" />
-    <Compile Include="Properties\AssemblyInfo.cs" />
+    <PackageReference Include="System.Drawing.Common" Version="8.0.2" />
   </ItemGroup>
-  <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it.
-	   Other similar extension points exist, see Microsoft.Common.targets.
-  <Target Name="BeforeBuild">
-  </Target>
-  <Target Name="AfterBuild">
-  </Target>
-  -->
-  <PropertyGroup>
-    <PreBuildEvent>
-    </PreBuildEvent>
-    <ProjectGuid>{F12EB680-0990-4900-B77E-0FBF2E28A815}</ProjectGuid>
-    <RootNamespace>WeSay.Foundation</RootNamespace>
-  </PropertyGroup>
 </Project>
\ No newline at end of file
diff --git a/src/WeSay.Project.Tests/Properties/AssemblyInfo.cs b/src/WeSay.Project.Tests/Properties/AssemblyInfo.cs
deleted file mode 100644
index becebe532..000000000
--- a/src/WeSay.Project.Tests/Properties/AssemblyInfo.cs
+++ /dev/null
@@ -1,38 +0,0 @@
-using System.Reflection;
-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("WeSay.Project.Tests")]
-[assembly: AssemblyDescription("")]
-[assembly: AssemblyConfiguration("")]
-[assembly: AssemblyCompany("SIL")]
-[assembly: AssemblyProduct("WeSay.Project.Tests")]
-[assembly: AssemblyCopyright("Copyright © SIL 2006")]
-[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)]
-
-// The following GUID is for the ID of the typelib if this project is exposed to COM
-
-[assembly: Guid("13290d23-22f5-49f3-a78f-50d1dcd024c8")]
-
-// 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 Revision and Build Numbers
-// by using the '*' as shown below:
-
-[assembly: AssemblyVersion("1.9.0.10")]
-[assembly: AssemblyFileVersion("1.9.0.10")]
\ No newline at end of file
diff --git a/src/WeSay.Project.Tests/WeSay.Project.Tests.csproj b/src/WeSay.Project.Tests/WeSay.Project.Tests.csproj
index 3ab0beabf..219bb2ed9 100755
--- a/src/WeSay.Project.Tests/WeSay.Project.Tests.csproj
+++ b/src/WeSay.Project.Tests/WeSay.Project.Tests.csproj
@@ -1,310 +1,89 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="12.0">
-  <Import Project="..\..\packages\NUnit.3.13.1\build\NUnit.props" Condition="Exists('..\..\packages\NUnit.3.13.1\build\NUnit.props')" />
+<Project Sdk="Microsoft.NET.Sdk">
   <PropertyGroup>
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
-    <ProductVersion>9.0.21022</ProductVersion>
-    <SchemaVersion>2.0</SchemaVersion>
-    <ProjectGuid>{F644C902-A952-4797-9E2D-19D6051DD032}</ProjectGuid>
+    <TargetFramework>net8.0-windows</TargetFramework>
     <OutputType>Library</OutputType>
-    <AppDesignerFolder>Properties</AppDesignerFolder>
-    <RootNamespace>WeSay.Project.Tests</RootNamespace>
-    <AssemblyName>WeSay.Project.Tests</AssemblyName>
     <AppConfig>..\AppForTests.config</AppConfig>
-    <FileUpgradeFlags>
-    </FileUpgradeFlags>
-    <UpgradeBackupLocation>
-    </UpgradeBackupLocation>
-    <OldToolsVersion>3.5</OldToolsVersion>
-    <TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion>
-    <TargetFrameworkProfile />
-    <NuGetPackageImportStamp>
-    </NuGetPackageImportStamp>
+    <GenerateAssemblyInfo>false</GenerateAssemblyInfo>
+    <UseWindowsForms>true</UseWindowsForms>
+    <ImportWindowsDesktopTargets>true</ImportWindowsDesktopTargets>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
-    <DebugSymbols>true</DebugSymbols>
-    <DebugType>full</DebugType>
-    <Optimize>false</Optimize>
     <OutputPath>..\..\output\Debug\</OutputPath>
-    <DefineConstants>DEBUG;TRACE</DefineConstants>
-    <ErrorReport>prompt</ErrorReport>
-    <WarningLevel>4</WarningLevel>
     <OutputType>Library</OutputType>
-    <AssemblyName>WeSay.Project.Tests</AssemblyName>
-    <RootNamespace>WeSay.Project.Tests</RootNamespace>
-    <AllowUnsafeBlocks>false</AllowUnsafeBlocks>
     <CheckForOverflowUnderflow>true</CheckForOverflowUnderflow>
-    <PlatformTarget>x86</PlatformTarget>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
-    <DebugType>pdbonly</DebugType>
-    <Optimize>true</Optimize>
     <OutputPath>..\..\output\Release\</OutputPath>
-    <DefineConstants>TRACE</DefineConstants>
-    <ErrorReport>prompt</ErrorReport>
-    <WarningLevel>4</WarningLevel>
     <OutputType>Library</OutputType>
-    <AssemblyName>WeSay.Project.Tests</AssemblyName>
     <DebugSymbols>true</DebugSymbols>
-    <RootNamespace>WeSay.Project.Tests</RootNamespace>
-    <AllowUnsafeBlocks>false</AllowUnsafeBlocks>
     <CheckForOverflowUnderflow>true</CheckForOverflowUnderflow>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
-    <DebugSymbols>true</DebugSymbols>
     <OutputPath>..\..\output\$(Configuration)\</OutputPath>
-    <DefineConstants>DEBUG;TRACE</DefineConstants>
     <CheckForOverflowUnderflow>true</CheckForOverflowUnderflow>
-    <DebugType>full</DebugType>
-    <PlatformTarget>x86</PlatformTarget>
-    <ErrorReport>prompt</ErrorReport>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
     <DebugSymbols>true</DebugSymbols>
     <OutputPath>..\..\output\Release\</OutputPath>
-    <DefineConstants>TRACE</DefineConstants>
     <CheckForOverflowUnderflow>true</CheckForOverflowUnderflow>
-    <Optimize>true</Optimize>
-    <DebugType>pdbonly</DebugType>
-    <PlatformTarget>x86</PlatformTarget>
-    <ErrorReport>prompt</ErrorReport>
   </PropertyGroup>
   <PropertyGroup>
     <AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
   </PropertyGroup>
   <ItemGroup>
-    <Reference Include="Autofac, Version=4.1.1.0, Culture=neutral, PublicKeyToken=17863af14b0044da, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\Autofac.4.1.1\lib\net45\Autofac.dll</HintPath>
-    </Reference>
-    <Reference Include="Chorus, Version=5.0.0.0, Culture=neutral, PublicKeyToken=f1447bae1e63f485, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\SIL.Chorus.App.5.0.0-beta0017\lib\net461\Chorus.exe</HintPath>
-    </Reference>
-    <Reference Include="Commons.Xml.Relaxng, Version=4.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\RelaxNG.3.2.3\lib\net40\Commons.Xml.Relaxng.dll</HintPath>
-    </Reference>
-    <Reference Include="DialogAdapters, Version=0.1.9.0, Culture=neutral, PublicKeyToken=7dc842182b0626dc, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\DialogAdapters.Gtk2.0.1.9\lib\net461\DialogAdapters.dll</HintPath>
-    </Reference>
-    <None Include="..\..\lib\common\Enchant.Net.dll.config">
-      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
-    </None>
-    <Reference Include="Enchant.Net, Version=1.4.0.0, Culture=neutral, PublicKeyToken=ae135aeb3d479ab9, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\Enchant.Net.1.4.2\lib\net461\Enchant.Net.dll</HintPath>
-    </Reference>
-    <Reference Include="icu.net, Version=2.7.0.0, Culture=neutral, PublicKeyToken=416fdd914afa6b66, processorArchitecture=MSIL">
-      <SpecificVersion>False</SpecificVersion>
-      <HintPath>..\..\packages\icu.net.2.7.1\lib\net451\icu.net.dll</HintPath>
-    </Reference>
-    <Reference Include="JetBrains.Annotations, Version=2021.2.0.0, Culture=neutral, PublicKeyToken=1010a0d8d6380325, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\JetBrains.Annotations.2021.2.0\lib\net20\JetBrains.Annotations.dll</HintPath>
-    </Reference>
-    <Reference Include="L10NSharp, Version=5.0.0.0, Culture=neutral, PublicKeyToken=fd0b3e309a5b7c28, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\L10NSharp.5.0.0-beta0086\lib\net461\L10NSharp.dll</HintPath>
-    </Reference>
-    <Reference Include="LibChorus, Version=5.0.0.0, Culture=neutral, PublicKeyToken=f1447bae1e63f485, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\SIL.Chorus.LibChorus.5.0.0-beta0017\lib\net461\LibChorus.dll</HintPath>
-    </Reference>
-    <Reference Include="Markdig.Signed, Version=0.22.0.0, Culture=neutral, PublicKeyToken=870da25a133885f8, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\Markdig.Signed.0.22.0\lib\net452\Markdig.Signed.dll</HintPath>
-    </Reference>
-    <Reference Include="Microsoft.DotNet.PlatformAbstractions, Version=2.0.4.0, Culture=neutral, PublicKeyToken=adb9793829ddae60, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\Microsoft.DotNet.PlatformAbstractions.2.0.4\lib\net45\Microsoft.DotNet.PlatformAbstractions.dll</HintPath>
-    </Reference>
-    <Reference Include="Microsoft.Extensions.DependencyModel, Version=2.0.4.0, Culture=neutral, PublicKeyToken=adb9793829ddae60, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\Microsoft.Extensions.DependencyModel.2.0.4\lib\net451\Microsoft.Extensions.DependencyModel.dll</HintPath>
-    </Reference>
-    <Reference Include="NDesk.DBus, Version=1.0.0.0, Culture=neutral, PublicKeyToken=f6716e4f9b2ed099, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\NDesk.DBus.0.15.0\lib\NDesk.DBus.dll</HintPath>
-    </Reference>
-    <Reference Include="NetReflector, Version=1.1.2009.1214, Culture=neutral, PublicKeyToken=2f4dd8b32acbcd8e, processorArchitecture=MSIL">
-      <SpecificVersion>False</SpecificVersion>
-      <HintPath>..\..\packages\NetReflector.1.1.2009\lib\net20\NetReflector.dll</HintPath>
-    </Reference>
-    <Reference Include="netstandard, Version=2.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51" />
-    <Reference Include="Newtonsoft.Json, Version=12.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
-      <SpecificVersion>False</SpecificVersion>
-      <HintPath>..\..\packages\Newtonsoft.Json.12.0.3\lib\net45\Newtonsoft.Json.dll</HintPath>
-    </Reference>
-    <Reference Include="nunit.framework, Version=3.13.1.0, Culture=neutral, PublicKeyToken=2638cd05610744eb, processorArchitecture=MSIL">
-      <SpecificVersion>False</SpecificVersion>
-      <HintPath>..\..\packages\NUnit.3.13.1\lib\net45\nunit.framework.dll</HintPath>
-    </Reference>
-    <Reference Include="SIL.Core, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\SIL.Core.9.0.0-beta0154\lib\net461\SIL.Core.dll</HintPath>
-    </Reference>
-    <Reference Include="SIL.Core.Desktop, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\SIL.Core.Desktop.9.0.0-beta0154\lib\net461\SIL.Core.Desktop.dll</HintPath>
-    </Reference>
-    <Reference Include="SIL.DictionaryServices, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\SIL.DictionaryServices.9.0.0-beta0154\lib\net461\SIL.DictionaryServices.dll</HintPath>
-    </Reference>
-    <Reference Include="SIL.Lexicon, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\SIL.Lexicon.9.0.0-beta0154\lib\net461\SIL.Lexicon.dll</HintPath>
-    </Reference>
-    <Reference Include="SIL.Lift, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\SIL.Lift.9.0.0-beta0154\lib\net461\SIL.Lift.dll</HintPath>
-    </Reference>
-    <Reference Include="SIL.TestUtilities, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\SIL.TestUtilities.9.0.0-beta0154\lib\net461\SIL.TestUtilities.dll</HintPath>
-    </Reference>
-    <Reference Include="SIL.Windows.Forms, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\SIL.Windows.Forms.9.0.0-beta0154\lib\net461\SIL.Windows.Forms.dll</HintPath>
-    </Reference>
-    <Reference Include="SIL.WritingSystems, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\SIL.WritingSystems.9.0.0-beta0154\lib\net461\SIL.WritingSystems.dll</HintPath>
-    </Reference>
-    <Reference Include="SIL.WritingSystems.Tests, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\SIL.WritingSystems.Tests.9.0.0-beta0154\lib\net461\SIL.WritingSystems.Tests.dll</HintPath>
-    </Reference>
-    <Reference Include="Spart, Version=1.0.0.0, Culture=neutral, PublicKeyToken=14d24e064e474331, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\Spart.1.0.0\lib\net461\Spart.dll</HintPath>
-    </Reference>
-    <Reference Include="System" />
-    <Reference Include="System.Buffers, Version=4.0.3.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\System.Buffers.4.5.1\lib\net461\System.Buffers.dll</HintPath>
-    </Reference>
-    <Reference Include="System.ComponentModel.Composition" />
-    <Reference Include="System.Configuration" />
-    <Reference Include="System.Core">
-      <RequiredTargetFramework>3.5</RequiredTargetFramework>
-    </Reference>
-    <Reference Include="System.Data" />
-    <Reference Include="System.Diagnostics.DiagnosticSource, Version=4.0.5.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\System.Diagnostics.DiagnosticSource.4.7.1\lib\net46\System.Diagnostics.DiagnosticSource.dll</HintPath>
-    </Reference>
-    <Reference Include="System.Drawing" />
-    <Reference Include="System.IO.FileSystem.AccessControl, Version=4.0.5.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\System.IO.FileSystem.AccessControl.4.7.0\lib\net461\System.IO.FileSystem.AccessControl.dll</HintPath>
-    </Reference>
-    <Reference Include="System.Management" />
-    <Reference Include="System.Memory, Version=4.0.1.1, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\System.Memory.4.5.4\lib\net461\System.Memory.dll</HintPath>
-    </Reference>
-    <Reference Include="System.Numerics" />
-    <Reference Include="System.Numerics.Vectors, Version=4.1.4.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\System.Numerics.Vectors.4.5.0\lib\net46\System.Numerics.Vectors.dll</HintPath>
-    </Reference>
-    <Reference Include="System.Runtime.CompilerServices.Unsafe, Version=4.0.4.1, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\System.Runtime.CompilerServices.Unsafe.4.5.3\lib\net461\System.Runtime.CompilerServices.Unsafe.dll</HintPath>
-    </Reference>
-    <Reference Include="System.Security" />
-    <Reference Include="System.Security.AccessControl, Version=4.1.3.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\System.Security.AccessControl.4.7.0\lib\net461\System.Security.AccessControl.dll</HintPath>
-    </Reference>
-    <Reference Include="System.Security.Principal.Windows, Version=4.1.3.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\System.Security.Principal.Windows.4.7.0\lib\net461\System.Security.Principal.Windows.dll</HintPath>
-    </Reference>
-    <Reference Include="System.ServiceModel" />
-    <Reference Include="System.ValueTuple, Version=4.0.3.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\System.ValueTuple.4.5.0\lib\net461\System.ValueTuple.dll</HintPath>
-    </Reference>
-    <Reference Include="System.Web" />
-    <Reference Include="System.Windows.Forms" />
-    <Reference Include="System.Xml" />
-    <Reference Include="System.Xml.Linq" />
-    <None Include="packages.config" />
-    <Reference Include="TagLibSharp, Version=2.2.0.0, Culture=neutral, PublicKeyToken=db62eba44689b5b0, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\TagLibSharp.2.2.0\lib\net45\TagLibSharp.dll</HintPath>
-    </Reference>
-    <Reference Include="Vulcan.Uczniowie.HelpProvider, Version=1.0.0.0, Culture=neutral, PublicKeyToken=c5e47f534b8ee927, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\Vulcan.Uczniowie.HelpProvider.1.0.16\lib\net461\Vulcan.Uczniowie.HelpProvider.dll</HintPath>
-    </Reference>
-  </ItemGroup>
-  <ItemGroup>
-    <Compile Include="BasilProjectTests.cs" />
-    <Compile Include="ChorusBackupMakerTests.cs" />
-    <Compile Include="ConfigFileTests.cs" />
-    <Compile Include="CommonDirectoryFileTests.cs" />
-    <Compile Include="ConfigMigration\UserConfig\WeSayUserConfigMigrationTests.cs" />
-    <Compile Include="ConfigMigration\WritingSystem\WritingCollectionSystemTests.cs" />
-    <Compile Include="ConfigMigration\WritingSystem\WritingSystemPrefsFileContent.cs" />
-    <Compile Include="ConfigMigration\WritingSystem\WritingSystemPrefsMigratorTests.cs" />
-    <Compile Include="ConfigMigration\WritingSystem\WritingSystemsMigratorTests.cs" />
-    <Compile Include="ConfigMigration\WritingSystem\WritingSystem_V1Tests.cs" />
-    <Compile Include="LiftUpdateTests.cs" />
-    <Compile Include="ConfigMigration\WeSayConfig\WeSayConfigMigrationTests.cs" />
-    <Compile Include="LocalizedListParserTests.cs" />
-    <Compile Include="PLiftExporterTests.cs" />
-    <Compile Include="ProjectDirectorySetupForTesting.cs" />
-    <Compile Include="ProjectFromLiftFolderCreatorTests.cs" />
-    <Compile Include="TestResources.Designer.cs">
-      <AutoGen>True</AutoGen>
-      <DesignTime>True</DesignTime>
-      <DependentUpon>TestResources.resx</DependentUpon>
-    </Compile>
-    <Compile Include="ViewTemplatePersistenceTests.cs" />
-    <Compile Include="ViewTemplateTests.cs" />
-    <Compile Include="Properties\AssemblyInfo.cs" />
-    <Compile Include="WeSayWordsProjectTests.cs" />
-  </ItemGroup>
-  <ItemGroup>
-    <ProjectReference Include="..\LexicalModel\LexicalModel.csproj">
-      <Project>{5F61C809-B6C0-4567-9603-B2198E1AD038}</Project>
-      <Name>LexicalModel</Name>
-    </ProjectReference>
-    <ProjectReference Include="..\LexicalTools\LexicalTools.csproj">
-      <Project>{87af0b02-2983-486d-857f-d1859535c234}</Project>
-      <Name>LexicalTools</Name>
-    </ProjectReference>
-    <ProjectReference Include="..\WeSay.Data\WeSay.Data.csproj">
-      <Project>{600D0FD4-D189-41A0-9BC5-FC79AD2CF1CD}</Project>
-      <Name>WeSay.Data</Name>
-    </ProjectReference>
-    <ProjectReference Include="..\WeSay.Data.Tests\WeSay.Data.Tests.csproj">
-      <Project>{8491FEEE-C311-4B64-BB30-A1F1C1802F45}</Project>
-      <Name>WeSay.Data.Tests</Name>
-    </ProjectReference>
-    <ProjectReference Include="..\WeSay.Foundation\WeSay.Foundation.csproj">
-      <Project>{F12EB680-0990-4900-B77E-0FBF2E28A815}</Project>
-      <Name>WeSay.Foundation</Name>
-    </ProjectReference>
-    <ProjectReference Include="..\WeSay.Project\WeSay.Project.csproj">
-      <Project>{5CFD0BB3-5B2A-4911-B220-9C2286151BF0}</Project>
-      <Name>WeSay.Project</Name>
-    </ProjectReference>
-    <ProjectReference Include="..\WeSay.TestUtilities\WeSay.TestUtilities.csproj">
-      <Project>{FEC3014D-0067-4D59-A838-3B046EC3C352}</Project>
-      <Name>WeSay.TestUtilities</Name>
-    </ProjectReference>
+    <ProjectReference Include="..\LexicalModel\LexicalModel.csproj" />
+    <ProjectReference Include="..\LexicalTools\LexicalTools.csproj" />
+    <ProjectReference Include="..\WeSay.Data\WeSay.Data.csproj" />
+    <ProjectReference Include="..\WeSay.Data.Tests\WeSay.Data.Tests.csproj" />
+    <ProjectReference Include="..\WeSay.Foundation\WeSay.Foundation.csproj" />
+    <ProjectReference Include="..\WeSay.Project\WeSay.Project.csproj" />
+    <ProjectReference Include="..\WeSay.TestUtilities\WeSay.TestUtilities.csproj" />
   </ItemGroup>
   <ItemGroup>
     <None Include="icu4c.readme.txt" />
     <Content Include="Resources\viewTemplate.xml" />
-    <None Include="Resources\poStrings.txt" />
   </ItemGroup>
   <ItemGroup>
-    <EmbeddedResource Include="TestResources.resx">
-      <Generator>ResXFileCodeGenerator</Generator>
-      <SubType>Designer</SubType>
-      <LastGenOutput>TestResources.Designer.cs</LastGenOutput>
-    </EmbeddedResource>
+    <Service Include="{82A7F48D-3B50-4B1E-B82E-3ADA8210C358}" />
   </ItemGroup>
   <ItemGroup>
-    <Service Include="{82A7F48D-3B50-4B1E-B82E-3ADA8210C358}" />
+    <PackageReference Include="Autofac" Version="4.9.4" />
+    <PackageReference Include="icu.net" Version="2.8.1" />
+    <PackageReference Include="Icu4c.Win.Min" Version="59.1.7" />
+    <PackageReference Include="JetBrains.Annotations" Version="2021.2.0" />
+    <PackageReference Include="Microsoft.DotNet.PlatformAbstractions" Version="2.0.4" />
+    <PackageReference Include="Mono.Posix" Version="5.4.0.201" />
+    <PackageReference Include="NDesk.DBus" Version="0.15.0" />
+    <PackageReference Include="NetReflector" Version="1.1.2009" />
+    <PackageReference Include="NUnit" Version="3.13.3" />
+    <PackageReference Include="RelaxNG" Version="3.2.3" />
+    <PackageReference Include="SIL.Chorus.LibChorus" Version="5.1.0" />
+    <PackageReference Include="SIL.Chorus.Mercurial" Version="3.0.3.6" />
+    <PackageReference Include="SIL.Core" Version="13.0.1" />
+    <PackageReference Include="SIL.Core.Desktop" Version="13.0.1" />
+    <PackageReference Include="SIL.Lexicon" Version="13.0.1" />
+    <PackageReference Include="SIL.Lift" Version="13.0.1" />
+    <PackageReference Include="SIL.TestUtilities" Version="13.0.1" />
+    <PackageReference Include="SIL.WritingSystems" Version="13.0.1" />
+    <PackageReference Include="Spart" Version="1.0.0" />
+    <PackageReference Include="System.ComponentModel.Composition" Version="8.0.0" />
+    <PackageReference Include="System.Management" Version="8.0.0" />
+    <PackageReference Include="Microsoft.AspNetCore.SystemWebAdapters" Version="1.3.0" />
+    <PackageReference Include="Microsoft.Bcl.AsyncInterfaces" Version="8.0.0" />
+    <PackageReference Include="Microsoft.Extensions.DependencyModel" Version="8.0.0" />
+    <PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
+    <PackageReference Include="System.Diagnostics.DiagnosticSource" Version="8.0.0" />
+    <PackageReference Include="System.Runtime.CompilerServices.Unsafe" Version="6.0.0" />
+    <PackageReference Include="System.Security.AccessControl" Version="6.0.0" />
+    <PackageReference Include="System.Configuration.ConfigurationManager" Version="8.0.0" />
+    <PackageReference Include="System.ServiceModel.Primitives" Version="8.0.0" />
+    <PackageReference Include="System.ServiceModel.Http" Version="8.0.0" />
+    <PackageReference Include="System.ServiceModel.Duplex" Version="6.0.0" />
+    <PackageReference Include="System.ServiceModel.NetTcp" Version="8.0.0" />
+    <PackageReference Include="System.ServiceModel.Security" Version="6.0.0" />
+    <PackageReference Include="System.ServiceModel.Federation" Version="8.0.0" />
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Remove="LiftRepositoryTests.cs" />
   </ItemGroup>
-  <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
-  <Import Project="..\..\packages\NDesk.DBus.0.15.0\build\NDesk.DBus.targets" Condition="Exists('..\..\packages\NDesk.DBus.0.15.0\build\NDesk.DBus.targets')" />
-  <Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
-    <PropertyGroup>
-      <ErrorText>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}.</ErrorText>
-    </PropertyGroup>
-    <Error Condition="!Exists('..\..\packages\NDesk.DBus.0.15.0\build\NDesk.DBus.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\NDesk.DBus.0.15.0\build\NDesk.DBus.targets'))" />
-    <Error Condition="!Exists('..\..\packages\Mono.Posix.5.4.0.201\build\net45\Mono.Posix.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\Mono.Posix.5.4.0.201\build\net45\Mono.Posix.targets'))" />
-    <Error Condition="!Exists('..\..\packages\NUnit.3.13.1\build\NUnit.props')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\NUnit.3.13.1\build\NUnit.props'))" />
-    <Error Condition="!Exists('..\..\packages\Icu4c.Win.Min.59.1.7\build\Icu4c.Win.Min.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\Icu4c.Win.Min.59.1.7\build\Icu4c.Win.Min.targets'))" />
-    <Error Condition="!Exists('..\..\packages\SIL.Chorus.Mercurial.3.0.3\build\SIL.Chorus.Mercurial.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\SIL.Chorus.Mercurial.3.0.3\build\SIL.Chorus.Mercurial.targets'))" />
-    <Error Condition="!Exists('..\..\packages\SIL.Windows.Forms.9.0.0-beta0154\build\SIL.Windows.Forms.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\SIL.Windows.Forms.9.0.0-beta0154\build\SIL.Windows.Forms.targets'))" />
-  </Target>
-  <Import Project="..\..\packages\Mono.Posix.5.4.0.201\build\net45\Mono.Posix.targets" Condition="Exists('..\..\packages\Mono.Posix.5.4.0.201\build\net45\Mono.Posix.targets')" />
-  <Import Project="..\..\packages\Icu4c.Win.Min.59.1.7\build\Icu4c.Win.Min.targets" Condition="Exists('..\..\packages\Icu4c.Win.Min.59.1.7\build\Icu4c.Win.Min.targets')" />
-  <Import Project="..\..\packages\SIL.Chorus.Mercurial.3.0.3\build\SIL.Chorus.Mercurial.targets" Condition="Exists('..\..\packages\SIL.Chorus.Mercurial.3.0.3\build\SIL.Chorus.Mercurial.targets')" />
-  <Import Project="..\..\packages\SIL.Windows.Forms.9.0.0-beta0154\build\SIL.Windows.Forms.targets" Condition="Exists('..\..\packages\SIL.Windows.Forms.9.0.0-beta0154\build\SIL.Windows.Forms.targets')" />
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it.
-	   Other similar extension points exist, see Microsoft.Common.targets.
-  <Target Name="BeforeBuild">
-  </Target>
-  <Target Name="AfterBuild">
-  </Target>
-  -->
 </Project>
\ No newline at end of file
diff --git a/src/WeSay.Project.Tests/packages.config b/src/WeSay.Project.Tests/packages.config
deleted file mode 100644
index b53cfdf2d..000000000
--- a/src/WeSay.Project.Tests/packages.config
+++ /dev/null
@@ -1,45 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<packages>
-  <package id="Autofac" version="4.1.1" targetFramework="net461" />
-  <package id="DialogAdapters.Gtk2" version="0.1.9" targetFramework="net461" />
-  <package id="Enchant.Net" version="1.4.2" targetFramework="net461" />
-  <package id="icu.net" version="2.7.1" targetFramework="net461" />
-  <package id="Icu4c.Win.Min" version="59.1.7" targetFramework="net461" />
-  <package id="JetBrains.Annotations" version="2021.2.0" targetFramework="net461" />
-  <package id="L10NSharp" version="5.0.0-beta0086" targetFramework="net461" />
-  <package id="Markdig.Signed" version="0.22.0" targetFramework="net461" />
-  <package id="Microsoft.Bcl.AsyncInterfaces" version="5.0.0" targetFramework="net461" />
-  <package id="Microsoft.DotNet.PlatformAbstractions" version="2.0.4" targetFramework="net461" />
-  <package id="Microsoft.Extensions.DependencyModel" version="2.0.4" targetFramework="net461" />
-  <package id="Mono.Posix" version="5.4.0.201" targetFramework="net461" />
-  <package id="NDesk.DBus" version="0.15.0" targetFramework="net461" />
-  <package id="NetReflector" version="1.1.2009" requireReinstallation="true" />
-  <package id="Newtonsoft.Json" version="12.0.3" targetFramework="net461" />
-  <package id="NUnit" version="3.13.1" targetFramework="net461" />
-  <package id="RelaxNG" version="3.2.3" targetFramework="net461" />
-  <package id="SIL.Chorus.App" version="5.0.0-beta0017" targetFramework="net461" />
-  <package id="SIL.Chorus.LibChorus" version="5.0.0-beta0017" targetFramework="net461" />
-  <package id="SIL.Chorus.Mercurial" version="3.0.3" targetFramework="net461" />
-  <package id="SIL.Core" version="9.0.0-beta0154" targetFramework="net461" />
-  <package id="SIL.Core.Desktop" version="9.0.0-beta0154" targetFramework="net461" />
-  <package id="SIL.DictionaryServices" version="9.0.0-beta0154" targetFramework="net461" />
-  <package id="SIL.Lexicon" version="9.0.0-beta0154" targetFramework="net461" />
-  <package id="SIL.Lift" version="9.0.0-beta0154" targetFramework="net461" />
-  <package id="SIL.TestUtilities" version="9.0.0-beta0154" targetFramework="net461" />
-  <package id="SIL.Windows.Forms" version="9.0.0-beta0154" targetFramework="net461" />
-  <package id="SIL.WritingSystems" version="9.0.0-beta0154" targetFramework="net461" />
-  <package id="SIL.WritingSystems.Tests" version="9.0.0-beta0154" targetFramework="net461" />
-  <package id="Spart" version="1.0.0" targetFramework="net461" />
-  <package id="System.Buffers" version="4.5.1" targetFramework="net461" />
-  <package id="System.Diagnostics.DiagnosticSource" version="4.7.1" targetFramework="net461" />
-  <package id="System.IO.FileSystem.AccessControl" version="4.7.0" targetFramework="net461" />
-  <package id="System.Memory" version="4.5.4" targetFramework="net461" />
-  <package id="System.Numerics.Vectors" version="4.5.0" targetFramework="net461" />
-  <package id="System.Runtime.CompilerServices.Unsafe" version="4.5.3" targetFramework="net461" />
-  <package id="System.Security.AccessControl" version="4.7.0" targetFramework="net461" />
-  <package id="System.Security.Principal.Windows" version="4.7.0" targetFramework="net461" />
-  <package id="System.Threading.Tasks.Extensions" version="4.5.4" targetFramework="net461" />
-  <package id="System.ValueTuple" version="4.5.0" targetFramework="net461" />
-  <package id="TagLibSharp" version="2.2.0" targetFramework="net461" />
-  <package id="Vulcan.Uczniowie.HelpProvider" version="1.0.16" targetFramework="net461" />
-</packages>
\ No newline at end of file
diff --git a/src/WeSay.Project/ConfigMigration/UserConfig/WeSayUserConfigV2MigrationStrategy.cs b/src/WeSay.Project/ConfigMigration/UserConfig/WeSayUserConfigV2MigrationStrategy.cs
index 4c43ed0f7..524b02f64 100644
--- a/src/WeSay.Project/ConfigMigration/UserConfig/WeSayUserConfigV2MigrationStrategy.cs
+++ b/src/WeSay.Project/ConfigMigration/UserConfig/WeSayUserConfigV2MigrationStrategy.cs
@@ -5,6 +5,7 @@
 using System.Linq;
 using System.Xml;
 using System.Xml.Linq;
+using Microsoft.AspNetCore.Mvc;
 
 namespace WeSay.Project.ConfigMigration.UserConfig
 {
diff --git a/src/WeSay.Project/ConfigMigration/WeSayConfig/ConfigurationMigrator.cs b/src/WeSay.Project/ConfigMigration/WeSayConfig/ConfigurationMigrator.cs
index a33aea2a2..d767871c0 100644
--- a/src/WeSay.Project/ConfigMigration/WeSayConfig/ConfigurationMigrator.cs
+++ b/src/WeSay.Project/ConfigMigration/WeSayConfig/ConfigurationMigrator.cs
@@ -159,12 +159,6 @@ public static void MigrateUsingXSLT(IXPathNavigable configurationDoc,
 					using (var writer = XmlWriter.Create(tempPath, CanonicalXmlSettings.CreateXmlWriterSettings()))
 					{
 						transform.Transform(configurationDoc, writer);
-						var tempfiles = transform.TemporaryFiles;
-						if (tempfiles != null)
-						// tempfiles will be null when debugging is not enabled
-						{
-							tempfiles.Delete();
-						}
 						writer.Close();
 					}
 					SafelyMoveTempFileTofinalDestination(tempPath, targetPath);
diff --git a/src/WeSay.Project/ConfigMigration/WritingSystem/WritingSystem_V1.cs b/src/WeSay.Project/ConfigMigration/WritingSystem/WritingSystem_V1.cs
index 300a8fd26..e0a88c700 100644
--- a/src/WeSay.Project/ConfigMigration/WritingSystem/WritingSystem_V1.cs
+++ b/src/WeSay.Project/ConfigMigration/WritingSystem/WritingSystem_V1.cs
@@ -8,6 +8,7 @@
 using System.Drawing;
 using System.Globalization;
 using WeSay.LexicalModel.Foundation;
+using Microsoft.AspNetCore.Mvc;
 
 namespace WeSay.Project.ConfigMigration.WritingSystem
 {
diff --git a/src/WeSay.Project/Properties/AssemblyInfo.cs b/src/WeSay.Project/Properties/AssemblyInfo.cs
deleted file mode 100644
index b068553cd..000000000
--- a/src/WeSay.Project/Properties/AssemblyInfo.cs
+++ /dev/null
@@ -1,47 +0,0 @@
-using Mono.Addins;
-using System;
-using System.Reflection;
-using System.Runtime.CompilerServices;
-using System.Runtime.InteropServices;
-using System.Security.Permissions;
-
-// 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("WeSay.Project")]
-[assembly: AssemblyDescription("")]
-[assembly: AssemblyConfiguration("")]
-[assembly: AssemblyCompany("WeSay")]
-[assembly: AssemblyProduct("WeSay.Project")]
-[assembly: AssemblyCopyright("Copyright © WeSay 2006")]
-[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)]
-
-// The following GUID is for the ID of the typelib if this project is exposed to COM
-
-[assembly: Guid("daca78bb-5926-408f-8cbb-7f8e579c5ca4")]
-
-// 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 Revision and Build Numbers
-// by using the '*' as shown below:
-
-[assembly: AssemblyVersion("1.9.0.10")]
-[assembly: AssemblyFileVersion("1.9.0.10")]
-[assembly: CLSCompliant(true)]
-[assembly: SecurityPermission(SecurityAction.RequestMinimum, Execution = true)]
-[assembly: Addin]
-[assembly: AddinDependency("WeSay.AddinLib", "1.0")]
-[assembly: InternalsVisibleTo("WeSay.Project.Tests")]
diff --git a/src/WeSay.Project/WeSay.Project.csproj b/src/WeSay.Project/WeSay.Project.csproj
index 61baf2492..116316384 100755
--- a/src/WeSay.Project/WeSay.Project.csproj
+++ b/src/WeSay.Project/WeSay.Project.csproj
@@ -1,279 +1,40 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="12.0">
+<Project Sdk="Microsoft.NET.Sdk">
   <PropertyGroup>
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
-    <ProductVersion>9.0.21022</ProductVersion>
-    <SchemaVersion>2.0</SchemaVersion>
-    <ProjectGuid>{5CFD0BB3-5B2A-4911-B220-9C2286151BF0}</ProjectGuid>
+    <TargetFramework>net8.0-windows</TargetFramework>
     <OutputType>Library</OutputType>
-    <AppDesignerFolder>Properties</AppDesignerFolder>
-    <RootNamespace>WeSay.Project</RootNamespace>
-    <AssemblyName>WeSay.Project</AssemblyName>
-    <FileUpgradeFlags>
-    </FileUpgradeFlags>
-    <UpgradeBackupLocation>
-    </UpgradeBackupLocation>
-    <OldToolsVersion>3.5</OldToolsVersion>
-    <TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion>
-    <TargetFrameworkProfile />
-    <NuGetPackageImportStamp>
-    </NuGetPackageImportStamp>
+    <GenerateAssemblyInfo>false</GenerateAssemblyInfo>
+    <UseWindowsForms>true</UseWindowsForms>
+    <ImportWindowsDesktopTargets>true</ImportWindowsDesktopTargets>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
-    <DebugSymbols>true</DebugSymbols>
-    <DebugType>full</DebugType>
-    <Optimize>false</Optimize>
-    <OutputPath>..\..\output\Debug\</OutputPath>
     <DefineConstants>DEBUG;TRACE;$(Constants)</DefineConstants>
-    <ErrorReport>prompt</ErrorReport>
-    <WarningLevel>4</WarningLevel>
     <OutputType>Library</OutputType>
-    <AssemblyName>WeSay.Project</AssemblyName>
-    <RootNamespace>WeSay.Project</RootNamespace>
-    <AllowUnsafeBlocks>false</AllowUnsafeBlocks>
     <CheckForOverflowUnderflow>true</CheckForOverflowUnderflow>
-    <PlatformTarget>x86</PlatformTarget>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
-    <DebugType>pdbonly</DebugType>
-    <Optimize>true</Optimize>
-    <OutputPath>..\..\output\Release\</OutputPath>
     <DefineConstants>TRACE;$(Constants)</DefineConstants>
-    <ErrorReport>prompt</ErrorReport>
-    <WarningLevel>4</WarningLevel>
     <OutputType>Library</OutputType>
-    <AssemblyName>WeSay.Project</AssemblyName>
     <DebugSymbols>true</DebugSymbols>
-    <RootNamespace>WeSay.Project</RootNamespace>
-    <AllowUnsafeBlocks>false</AllowUnsafeBlocks>
     <CheckForOverflowUnderflow>true</CheckForOverflowUnderflow>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
-    <DebugSymbols>true</DebugSymbols>
-    <OutputPath>..\..\output\Debug\</OutputPath>
     <DefineConstants>TRACE;DEBUG;$(Release);$(Constants)</DefineConstants>
     <CheckForOverflowUnderflow>true</CheckForOverflowUnderflow>
-    <DebugType>full</DebugType>
-    <PlatformTarget>x86</PlatformTarget>
-    <ErrorReport>prompt</ErrorReport>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
     <DebugSymbols>true</DebugSymbols>
-    <OutputPath>..\..\output\Release\</OutputPath>
     <DefineConstants>TRACE;$(Release);$(Constants)</DefineConstants>
     <CheckForOverflowUnderflow>true</CheckForOverflowUnderflow>
-    <Optimize>true</Optimize>
-    <DebugType>pdbonly</DebugType>
-    <PlatformTarget>x86</PlatformTarget>
-    <ErrorReport>prompt</ErrorReport>
   </PropertyGroup>
   <PropertyGroup>
     <AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
   </PropertyGroup>
   <ItemGroup>
-    <Reference Include="Autofac, Version=4.1.1.0, Culture=neutral, PublicKeyToken=17863af14b0044da, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\Autofac.4.1.1\lib\net45\Autofac.dll</HintPath>
-    </Reference>
-    <Reference Include="Chorus, Version=5.0.0.0, Culture=neutral, PublicKeyToken=f1447bae1e63f485, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\SIL.Chorus.App.5.0.0-beta0017\lib\net461\Chorus.exe</HintPath>
-    </Reference>
-    <Reference Include="DialogAdapters, Version=0.1.9.0, Culture=neutral, PublicKeyToken=7dc842182b0626dc, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\DialogAdapters.Gtk2.0.1.9\lib\net461\DialogAdapters.dll</HintPath>
-    </Reference>
-    <Reference Include="Commons.Xml.Relaxng, Version=2.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756, processorArchitecture=MSIL">
-      <SpecificVersion>False</SpecificVersion>
-      <HintPath>..\..\packages\RelaxNG.3.2.3\lib\net40\Commons.Xml.Relaxng.dll</HintPath>
-    </Reference>
-    <Reference Include="Enchant.Net, Version=1.4.0.0, Culture=neutral, PublicKeyToken=ae135aeb3d479ab9, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\Enchant.Net.1.4.2\lib\net461\Enchant.Net.dll</HintPath>
-    </Reference>
-    <Reference Include="icu.net, Version=2.7.0.0, Culture=neutral, PublicKeyToken=416fdd914afa6b66, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\icu.net.2.7.1\lib\net451\icu.net.dll</HintPath>
-    </Reference>
-    <Reference Include="JetBrains.Annotations, Version=2021.2.0.0, Culture=neutral, PublicKeyToken=1010a0d8d6380325, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\JetBrains.Annotations.2021.2.0\lib\net20\JetBrains.Annotations.dll</HintPath>
-    </Reference>
-    <Reference Include="L10NSharp, Version=5.0.0.0, Culture=neutral, PublicKeyToken=fd0b3e309a5b7c28, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\L10NSharp.5.0.0-beta0086\lib\net461\L10NSharp.dll</HintPath>
-    </Reference>
-    <Reference Include="LibChorus, Version=5.0.0.0, Culture=neutral, PublicKeyToken=f1447bae1e63f485, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\SIL.Chorus.LibChorus.5.0.0-beta0017\lib\net461\LibChorus.dll</HintPath>
-    </Reference>
-    <Reference Include="Markdig.Signed, Version=0.22.0.0, Culture=neutral, PublicKeyToken=870da25a133885f8, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\Markdig.Signed.0.22.0\lib\net452\Markdig.Signed.dll</HintPath>
-    </Reference>
-    <Reference Include="Microsoft.Bcl.AsyncInterfaces, Version=5.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
-      <SpecificVersion>False</SpecificVersion>
-      <HintPath>..\..\packages\Microsoft.Bcl.AsyncInterfaces.5.0.0\lib\net461\Microsoft.Bcl.AsyncInterfaces.dll</HintPath>
-    </Reference>
-    <Reference Include="Microsoft.DotNet.PlatformAbstractions, Version=2.0.4.0, Culture=neutral, PublicKeyToken=adb9793829ddae60, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\Microsoft.DotNet.PlatformAbstractions.2.0.4\lib\net45\Microsoft.DotNet.PlatformAbstractions.dll</HintPath>
-    </Reference>
-    <Reference Include="Microsoft.Extensions.DependencyModel, Version=2.0.4.0, Culture=neutral, PublicKeyToken=adb9793829ddae60, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\Microsoft.Extensions.DependencyModel.2.0.4\lib\net451\Microsoft.Extensions.DependencyModel.dll</HintPath>
-    </Reference>
-    <Reference Include="Mono.Addins, Version=1.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756, processorArchitecture=MSIL">
-      <SpecificVersion>False</SpecificVersion>
-      <HintPath>..\..\packages\Mono.Addins.1.3.8\lib\net45\Mono.Addins.dll</HintPath>
-    </Reference>
-    <Reference Include="NDesk.DBus, Version=1.0.0.0, Culture=neutral, PublicKeyToken=f6716e4f9b2ed099, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\NDesk.DBus.0.15.0\lib\NDesk.DBus.dll</HintPath>
-    </Reference>
-    <Reference Include="NetReflector, Version=1.1.2009.1214, Culture=neutral, PublicKeyToken=2f4dd8b32acbcd8e, processorArchitecture=MSIL">
-      <SpecificVersion>False</SpecificVersion>
-      <HintPath>..\..\packages\NetReflector.1.1.2009\lib\net20\NetReflector.dll</HintPath>
-    </Reference>
-    <Reference Include="Newtonsoft.Json, Version=12.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
-      <SpecificVersion>False</SpecificVersion>
-      <HintPath>..\..\packages\Newtonsoft.Json.12.0.3\lib\net45\Newtonsoft.Json.dll</HintPath>
-    </Reference>
-    <Reference Include="SIL.Core, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\SIL.Core.9.0.0-beta0154\lib\net461\SIL.Core.dll</HintPath>
-    </Reference>
-    <Reference Include="SIL.Core.Desktop, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\SIL.Core.Desktop.9.0.0-beta0154\lib\net461\SIL.Core.Desktop.dll</HintPath>
-    </Reference>
-    <Reference Include="SIL.DictionaryServices, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\SIL.DictionaryServices.9.0.0-beta0154\lib\net461\SIL.DictionaryServices.dll</HintPath>
-    </Reference>
-    <Reference Include="SIL.Lexicon, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\SIL.Lexicon.9.0.0-beta0154\lib\net461\SIL.Lexicon.dll</HintPath>
-    </Reference>
-    <Reference Include="SIL.Lift, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\SIL.Lift.9.0.0-beta0154\lib\net461\SIL.Lift.dll</HintPath>
-    </Reference>
-    <Reference Include="SIL.Windows.Forms, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\SIL.Windows.Forms.9.0.0-beta0154\lib\net461\SIL.Windows.Forms.dll</HintPath>
-    </Reference>
-    <Reference Include="SIL.Windows.Forms.GeckoBrowserAdapter, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\SIL.Windows.Forms.GeckoBrowserAdapter.9.0.0-beta0154\lib\net461\SIL.Windows.Forms.GeckoBrowserAdapter.dll</HintPath>
-    </Reference>
-    <Reference Include="SIL.Windows.Forms.Keyboarding">
-      <HintPath>..\..\packages\SIL.Windows.Forms.Keyboarding.9.0.0-beta0154\lib\net461\SIL.Windows.Forms.Keyboarding.dll</HintPath>
-    </Reference>
-    <None Include="..\..\lib\common\Enchant.Net.dll.config">
-      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
-    </None>
-    <Reference Include="SIL.WritingSystems, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\SIL.WritingSystems.9.0.0-beta0154\lib\net461\SIL.WritingSystems.dll</HintPath>
-    </Reference>
-    <Reference Include="Spart, Version=1.0.0.0, Culture=neutral, PublicKeyToken=14d24e064e474331, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\Spart.1.0.0\lib\net461\Spart.dll</HintPath>
-    </Reference>
-    <Reference Include="System" />
-    <Reference Include="System.Buffers, Version=4.0.3.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\System.Buffers.4.5.1\lib\net461\System.Buffers.dll</HintPath>
-    </Reference>
-    <Reference Include="System.ComponentModel.Composition" />
-    <Reference Include="System.Configuration" />
-    <Reference Include="System.Core">
-      <RequiredTargetFramework>3.5</RequiredTargetFramework>
-    </Reference>
-    <Reference Include="System.Data" />
-    <Reference Include="System.Drawing" />
-    <Reference Include="System.IO.FileSystem.AccessControl, Version=4.0.5.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\System.IO.FileSystem.AccessControl.4.7.0\lib\net461\System.IO.FileSystem.AccessControl.dll</HintPath>
-    </Reference>
-    <Reference Include="System.Management" />
-    <Reference Include="System.Memory, Version=4.0.1.1, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\System.Memory.4.5.4\lib\net461\System.Memory.dll</HintPath>
-    </Reference>
-    <Reference Include="System.Numerics" />
-    <Reference Include="System.Numerics.Vectors, Version=4.1.4.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\System.Numerics.Vectors.4.5.0\lib\net46\System.Numerics.Vectors.dll</HintPath>
-    </Reference>
-    <Reference Include="System.Runtime.CompilerServices.Unsafe, Version=4.0.4.1, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\System.Runtime.CompilerServices.Unsafe.4.5.3\lib\net461\System.Runtime.CompilerServices.Unsafe.dll</HintPath>
-    </Reference>
-    <Reference Include="System.Security" />
-    <Reference Include="System.Security.AccessControl, Version=4.1.3.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\System.Security.AccessControl.4.7.0\lib\net461\System.Security.AccessControl.dll</HintPath>
-    </Reference>
-    <Reference Include="System.Security.Principal.Windows, Version=4.1.3.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\System.Security.Principal.Windows.4.7.0\lib\net461\System.Security.Principal.Windows.dll</HintPath>
-    </Reference>
-    <Reference Include="System.ServiceModel" />
-    <Reference Include="System.Threading.Tasks.Extensions, Version=4.2.0.1, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\System.Threading.Tasks.Extensions.4.5.4\lib\net461\System.Threading.Tasks.Extensions.dll</HintPath>
-    </Reference>
-    <Reference Include="System.ValueTuple, Version=4.0.3.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\System.ValueTuple.4.5.0\lib\net461\System.ValueTuple.dll</HintPath>
-    </Reference>
-    <Reference Include="System.Web" />
-    <Reference Include="System.Windows.Forms" />
-    <Reference Include="System.Xml" />
-    <Reference Include="System.Xml.Linq" />
-    <Reference Include="TagLibSharp, Version=2.2.0.0, Culture=neutral, PublicKeyToken=db62eba44689b5b0, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\TagLibSharp.2.2.0\lib\net45\TagLibSharp.dll</HintPath>
-    </Reference>
-    <Reference Include="Vulcan.Uczniowie.HelpProvider, Version=1.0.0.0, Culture=neutral, PublicKeyToken=c5e47f534b8ee927, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\Vulcan.Uczniowie.HelpProvider.1.0.16\lib\net461\Vulcan.Uczniowie.HelpProvider.dll</HintPath>
-    </Reference>
-  </ItemGroup>
-  <ItemGroup>
-    <Compile Include="BaseTaskConfig.cs" />
-    <Compile Include="CheckinDescriptionBuilder.cs" />
-    <Compile Include="ChorusBackupMaker.cs" />
-    <Compile Include="BasilProject.cs" />
-    <Compile Include="ConfigFile.cs" />
-    <Compile Include="ConfigMigration\UserConfig\WeSayUserConfigMigrator.cs" />
-    <Compile Include="ConfigMigration\UserConfig\WeSayUserConfigV2MigrationStrategy.cs" />
-    <Compile Include="ConfigMigration\WritingSystem\WritingSystemMigrator.cs" />
-    <Compile Include="ConfigMigration\WritingSystem\WritingSystemPrefsToLdmlMigrationStrategy.cs" />
-    <Compile Include="ConfigMigration\WritingSystem\WritingSystemCollection_V1.cs" />
-    <Compile Include="ConfigMigration\WritingSystem\WritingSystemPrefsMigrator.cs" />
-    <Compile Include="ConfigMigration\WritingSystem\WritingSystem_V1.cs" />
-    <Compile Include="ConfigMigration\XslFromResourceMigrator.cs" />
-    <Compile Include="LiftFileLocator.cs" />
-    <Compile Include="LocalizedList\LocalizedListParser.cs" />
-    <Compile Include="ProjectFromLiftFolderCreator.cs" />
-    <Compile Include="Properties\Resources.Designer.cs">
-      <AutoGen>True</AutoGen>
-      <DesignTime>True</DesignTime>
-      <DependentUpon>Resources.resx</DependentUpon>
-    </Compile>
-    <Compile Include="Synchronize\SendReceiveAction.cs" />
-    <Compile Include="UiConfigurationOptions.cs" />
-    <Compile Include="ConfigFileReader.cs" />
-    <Compile Include="ConfigFileTaskBuilder.cs" />
-    <Compile Include="ConfigMigration\WeSayConfig\MigrateConfig5To6.cs" />
-    <Compile Include="ConfigMigration\WeSayConfig\ConfigurationMigrator.cs" />
-    <Compile Include="FailedLoadTask.cs" />
-    <Compile Include="ITaskConfiguration.cs" />
-    <Compile Include="PLiftExporter.cs" />
-    <Compile Include="PublicationFontStyleProvider.cs" />
-    <Compile Include="ServiceProvider.cs" />
-    <Compile Include="TaskCollection.cs" />
-    <Compile Include="TaskTypeCatalog.cs" />
-    <Compile Include="ViewTemplate.cs" />
-    <Compile Include="ICurrentWorkTask.cs" />
-    <Compile Include="ITask.cs" />
-    <Compile Include="Properties\AssemblyInfo.cs" />
-    <Compile Include="WeSayWordsProject.cs" />
-    <Compile Include="WordListCatalog.cs" />
-  </ItemGroup>
-  <ItemGroup>
-    <ProjectReference Include="..\LexicalModel\LexicalModel.csproj">
-      <Project>{5F61C809-B6C0-4567-9603-B2198E1AD038}</Project>
-      <Name>LexicalModel</Name>
-    </ProjectReference>
-    <ProjectReference Include="..\WeSay.AddinLib\WeSay.AddinLib.csproj">
-      <Project>{E651E83C-94DD-4D6D-ABA2-C9FDA34FBA55}</Project>
-      <Name>WeSay.AddinLib</Name>
-    </ProjectReference>
-    <ProjectReference Include="..\WeSay.Data\WeSay.Data.csproj">
-      <Project>{600D0FD4-D189-41A0-9BC5-FC79AD2CF1CD}</Project>
-      <Name>WeSay.Data</Name>
-    </ProjectReference>
-    <ProjectReference Include="..\WeSay.Foundation\WeSay.Foundation.csproj">
-      <Project>{F12EB680-0990-4900-B77E-0FBF2E28A815}</Project>
-      <Name>WeSay.Foundation</Name>
-    </ProjectReference>
-    <ProjectReference Include="..\WeSay.UI\WeSay.UI.csproj">
-      <Project>{AC8F284C-7B34-4AC9-A7DE-FAF765456DFF}</Project>
-      <Name>WeSay.UI</Name>
-    </ProjectReference>
+    <ProjectReference Include="..\LexicalModel\LexicalModel.csproj" />
+    <ProjectReference Include="..\WeSay.AddinLib\WeSay.AddinLib.csproj" />
+    <ProjectReference Include="..\WeSay.Data\WeSay.Data.csproj" />
+    <ProjectReference Include="..\WeSay.Foundation\WeSay.Foundation.csproj" />
+    <ProjectReference Include="..\WeSay.UI\WeSay.UI.csproj" />
   </ItemGroup>
   <ItemGroup>
     <EmbeddedResource Include="ConfigMigration\WeSayConfig\MigrateConfig0To1.xsl" />
@@ -295,16 +56,9 @@
   </ItemGroup>
   <ItemGroup>
     <EmbeddedResource Include="ConfigMigration\WeSayConfig\MigrateConfig6To7.xsl" />
-    <EmbeddedResource Include="Properties\Resources.resx">
-      <Generator>ResXFileCodeGenerator</Generator>
-      <LastGenOutput>Resources.Designer.cs</LastGenOutput>
-      <SubType>Designer</SubType>
-    </EmbeddedResource>
   </ItemGroup>
   <ItemGroup>
     <EmbeddedResource Include="Resources\wesay.helpmap" />
-    <None Include="packages.config" />
-    <None Include="Resources\sendReceive32x32.png" />
   </ItemGroup>
   <ItemGroup>
     <EmbeddedResource Include="ConfigMigration\UserConfig\Migrate1To2.xsl" />
@@ -315,25 +69,53 @@
   <ItemGroup>
     <EmbeddedResource Include="ConfigMigration\WeSayConfig\MigrateConfig9To10.xsl" />
   </ItemGroup>
-  <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
-  <Import Project="..\..\packages\Icu4c.Win.Min.59.1.7\build\Icu4c.Win.Min.targets" Condition="Exists('..\..\packages\Icu4c.Win.Min.59.1.7\build\Icu4c.Win.Min.targets')" />
-  <Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
-    <PropertyGroup>
-      <ErrorText>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}.</ErrorText>
-    </PropertyGroup>
-    <Error Condition="!Exists('..\..\packages\Icu4c.Win.Min.59.1.7\build\Icu4c.Win.Min.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\Icu4c.Win.Min.59.1.7\build\Icu4c.Win.Min.targets'))" />
-    <Error Condition="!Exists('..\..\packages\NDesk.DBus.0.15.0\build\NDesk.DBus.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\NDesk.DBus.0.15.0\build\NDesk.DBus.targets'))" />
-    <Error Condition="!Exists('..\..\packages\SIL.Chorus.Mercurial.3.0.3\build\SIL.Chorus.Mercurial.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\SIL.Chorus.Mercurial.3.0.3\build\SIL.Chorus.Mercurial.targets'))" />
-    <Error Condition="!Exists('..\..\packages\SIL.Windows.Forms.9.0.0-beta0154\build\SIL.Windows.Forms.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\SIL.Windows.Forms.9.0.0-beta0154\build\SIL.Windows.Forms.targets'))" />
-  </Target>
-  <Import Project="..\..\packages\NDesk.DBus.0.15.0\build\NDesk.DBus.targets" Condition="Exists('..\..\packages\NDesk.DBus.0.15.0\build\NDesk.DBus.targets')" />
-  <Import Project="..\..\packages\SIL.Chorus.Mercurial.3.0.3\build\SIL.Chorus.Mercurial.targets" Condition="Exists('..\..\packages\SIL.Chorus.Mercurial.3.0.3\build\SIL.Chorus.Mercurial.targets')" />
-  <Import Project="..\..\packages\SIL.Windows.Forms.9.0.0-beta0154\build\SIL.Windows.Forms.targets" Condition="Exists('..\..\packages\SIL.Windows.Forms.9.0.0-beta0154\build\SIL.Windows.Forms.targets')" />
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it.
-	   Other similar extension points exist, see Microsoft.Common.targets.
-  <Target Name="BeforeBuild">
-  </Target>
-  <Target Name="AfterBuild">
-  </Target>
-  -->
+  <ItemGroup>
+    <PackageReference Include="SIL.Chorus.App" Version="5.1.0" GeneratePathProperty="true" />
+    <Reference Include="SIL.Chorus.App">
+      <HintPath>$(PkgSIL_Chorus_App)\lib\net461\Chorus.exe</HintPath>
+    </Reference>
+    <PackageReference Include="SIL.Windows.Forms" Version="13.0.1" GeneratePathProperty="true"/>
+    <Reference Include="SIL.Windows.Forms">
+      <Private>False</Private>
+      <HintPath>$(PkgSIL_Windows_Forms)\lib\net461\SIL.Windows.Forms.dll</HintPath>
+    </Reference>
+  </ItemGroup>
+  <ItemGroup>
+    <PackageReference Include="Autofac" Version="4.9.4" />
+    <PackageReference Include="icu.net" Version="2.8.1" />
+    <PackageReference Include="Icu4c.Win.Min" Version="59.1.7" />
+    <PackageReference Include="JetBrains.Annotations" Version="2021.2.0" />
+    <PackageReference Include="Microsoft.DotNet.PlatformAbstractions" Version="2.0.4" />
+    <PackageReference Include="Mono.Addins" Version="1.4.1" />
+    <PackageReference Include="NDesk.DBus" Version="0.15.0" />
+    <PackageReference Include="NetReflector" Version="1.1.2009" />
+    <PackageReference Include="RelaxNG" Version="3.2.3" />
+    <PackageReference Include="SIL.Chorus.LibChorus" Version="5.1.0" />
+    <PackageReference Include="SIL.Chorus.Mercurial" Version="3.0.3.6" />
+    <PackageReference Include="SIL.Core" Version="13.0.1" />
+    <PackageReference Include="SIL.Core.Desktop" Version="13.0.1" />
+    <PackageReference Include="SIL.Lexicon" Version="13.0.1" />
+    <PackageReference Include="SIL.Lift" Version="13.0.1" />
+    <PackageReference Include="SIL.WritingSystems" Version="13.0.1" />
+    <PackageReference Include="Spart" Version="1.0.0" />
+    <PackageReference Include="System.ComponentModel.Composition" Version="8.0.0" />
+    <PackageReference Include="System.Management" Version="8.0.0" />
+    <PackageReference Include="TagLibSharp" Version="2.3.0" />
+    <PackageReference Include="Microsoft.AspNetCore.SystemWebAdapters" Version="1.3.0" />
+    <PackageReference Include="Microsoft.Bcl.AsyncInterfaces" Version="8.0.0" />
+    <PackageReference Include="Microsoft.Extensions.DependencyModel" Version="8.0.0" />
+    <PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
+    <PackageReference Include="System.Runtime.CompilerServices.Unsafe" Version="6.0.0" />
+    <PackageReference Include="System.Security.AccessControl" Version="6.0.0" />
+    <PackageReference Include="System.Configuration.ConfigurationManager" Version="8.0.0" />
+    <PackageReference Include="System.ServiceModel.Primitives" Version="8.0.0" />
+    <PackageReference Include="System.ServiceModel.Http" Version="8.0.0" />
+    <PackageReference Include="System.ServiceModel.Duplex" Version="6.0.0" />
+    <PackageReference Include="System.ServiceModel.NetTcp" Version="8.0.0" />
+    <PackageReference Include="System.ServiceModel.Security" Version="6.0.0" />
+    <PackageReference Include="System.ServiceModel.Federation" Version="8.0.0" />
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Remove="ConfigMigration\WeSayConfig\WritingSystemIdChanger.cs" />
+  </ItemGroup>
 </Project>
\ No newline at end of file
diff --git a/src/WeSay.Project/WeSayWordsProject.cs b/src/WeSay.Project/WeSayWordsProject.cs
index 4498523bc..9e24c571b 100644
--- a/src/WeSay.Project/WeSayWordsProject.cs
+++ b/src/WeSay.Project/WeSayWordsProject.cs
@@ -191,8 +191,12 @@ public void HandleProbableCacheProblem(Exception error)
 #endif
 		}
 
-		public bool LoadFromLiftLexiconPath(string liftPath,
-			IProgressNotificationProvider progressProvider = null)
+		public bool LoadFromLiftLexiconPath(string liftPath)
+		{
+			return LoadFromLiftLexiconPath(liftPath, null);
+		}
+
+		public bool LoadFromLiftLexiconPath(string liftPath, IProgressNotificationProvider progressProvider)
 		{
 			try
 			{
@@ -1917,7 +1921,9 @@ public bool IsWritingSystemUsedInLiftFile(string id)
 				return false;
 			}
 			string regex = string.Format("lang\\s*=\\s*[\"']{0}[\"']", Regex.Escape(id));
-			return FileUtils.GrepFile(PathToLiftFile, regex);
+			throw new NotImplementedException();
+			//todo find grep here
+			// return FileUtils.GrepFile(PathToLiftFile, regex);
 		}
 
 		/// <summary>
diff --git a/src/WeSay.Project/packages.config b/src/WeSay.Project/packages.config
deleted file mode 100644
index 8ea7b8287..000000000
--- a/src/WeSay.Project/packages.config
+++ /dev/null
@@ -1,42 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<packages>
-  <package id="Autofac" version="4.1.1" targetFramework="net461" />
-  <package id="DialogAdapters.Gtk2" version="0.1.9" targetFramework="net461" />
-  <package id="Enchant.Net" version="1.4.2" targetFramework="net461" />
-  <package id="icu.net" version="2.7.1" targetFramework="net461" />
-  <package id="Icu4c.Win.Min" version="59.1.7" targetFramework="net461" />
-  <package id="JetBrains.Annotations" version="2021.2.0" targetFramework="net461" />
-  <package id="L10NSharp" version="5.0.0-beta0086" targetFramework="net461" />
-  <package id="Markdig.Signed" version="0.22.0" targetFramework="net461" />
-  <package id="Microsoft.Bcl.AsyncInterfaces" version="5.0.0" targetFramework="net461" />
-  <package id="Microsoft.DotNet.PlatformAbstractions" version="2.0.4" targetFramework="net461" />
-  <package id="Microsoft.Extensions.DependencyModel" version="2.0.4" targetFramework="net461" />
-  <package id="Mono.Addins" version="1.3.8" targetFramework="net461" />
-  <package id="NDesk.DBus" version="0.15.0" targetFramework="net461" />
-  <package id="NetReflector" version="1.1.2009" targetFramework="net20" />
-  <package id="Newtonsoft.Json" version="12.0.3" targetFramework="net461" />
-  <package id="RelaxNG" version="3.2.3" requireReinstallation="true" />
-  <package id="SIL.Chorus.App" version="5.0.0-beta0017" targetFramework="net461" />
-  <package id="SIL.Chorus.LibChorus" version="5.0.0-beta0017" targetFramework="net461" />
-  <package id="SIL.Chorus.Mercurial" version="3.0.3" targetFramework="net461" />
-  <package id="SIL.Core" version="9.0.0-beta0154" targetFramework="net461" />
-  <package id="SIL.Core.Desktop" version="9.0.0-beta0154" targetFramework="net461" />
-  <package id="SIL.DictionaryServices" version="9.0.0-beta0154" targetFramework="net461" />
-  <package id="SIL.Lexicon" version="9.0.0-beta0154" targetFramework="net461" />
-  <package id="SIL.Lift" version="9.0.0-beta0154" targetFramework="net461" />
-  <package id="SIL.Windows.Forms" version="9.0.0-beta0154" targetFramework="net461" />
-  <package id="SIL.Windows.Forms.GeckoBrowserAdapter" version="9.0.0-beta0154" targetFramework="net461" />
-  <package id="SIL.WritingSystems" version="9.0.0-beta0154" targetFramework="net461" />
-  <package id="Spart" version="1.0.0" targetFramework="net461" />
-  <package id="System.Buffers" version="4.5.1" targetFramework="net461" />
-  <package id="System.IO.FileSystem.AccessControl" version="4.7.0" targetFramework="net461" />
-  <package id="System.Memory" version="4.5.4" targetFramework="net461" />
-  <package id="System.Numerics.Vectors" version="4.5.0" targetFramework="net461" />
-  <package id="System.Runtime.CompilerServices.Unsafe" version="4.5.3" targetFramework="net461" />
-  <package id="System.Security.AccessControl" version="4.7.0" targetFramework="net461" />
-  <package id="System.Security.Principal.Windows" version="4.7.0" targetFramework="net461" />
-  <package id="System.Threading.Tasks.Extensions" version="4.5.4" targetFramework="net461" />
-  <package id="System.ValueTuple" version="4.5.0" targetFramework="net461" />
-  <package id="TagLibSharp" version="2.2.0" targetFramework="net461" />
-  <package id="Vulcan.Uczniowie.HelpProvider" version="1.0.16" targetFramework="net461" />
-</packages>
\ No newline at end of file
diff --git a/src/WeSay.TestUtilities/Properties/AssemblyInfo.cs b/src/WeSay.TestUtilities/Properties/AssemblyInfo.cs
deleted file mode 100644
index ba911c683..000000000
--- a/src/WeSay.TestUtilities/Properties/AssemblyInfo.cs
+++ /dev/null
@@ -1,35 +0,0 @@
-using System.Reflection;
-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("WeSay.TestUtilities")]
-[assembly: AssemblyDescription("")]
-[assembly: AssemblyConfiguration("")]
-[assembly: AssemblyCompany("Microsoft")]
-[assembly: AssemblyProduct("WeSay.TestUtilities")]
-[assembly: AssemblyCopyright("Copyright © Microsoft 2011")]
-[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)]
-
-// The following GUID is for the ID of the typelib if this project is exposed to COM
-[assembly: Guid("1d542add-55ff-4076-bf2a-78a382f4d0ff")]
-
-// 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.9.0.10")]
-[assembly: AssemblyVersion("1.9.0.10")]
-[assembly: AssemblyFileVersion("1.9.0.10")]
diff --git a/src/WeSay.TestUtilities/WeSay.TestUtilities.csproj b/src/WeSay.TestUtilities/WeSay.TestUtilities.csproj
index 8a394cb37..3ec27701c 100755
--- a/src/WeSay.TestUtilities/WeSay.TestUtilities.csproj
+++ b/src/WeSay.TestUtilities/WeSay.TestUtilities.csproj
@@ -1,210 +1,58 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+<Project Sdk="Microsoft.NET.Sdk">
   <PropertyGroup>
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
-    <ProductVersion>9.0.21022</ProductVersion>
-    <SchemaVersion>2.0</SchemaVersion>
-    <ProjectGuid>{FEC3014D-0067-4D59-A838-3B046EC3C352}</ProjectGuid>
+    <TargetFramework>net8.0-windows</TargetFramework>
     <OutputType>Library</OutputType>
-    <AppDesignerFolder>Properties</AppDesignerFolder>
-    <RootNamespace>WeSay.TestUtilities</RootNamespace>
-    <AssemblyName>WeSay.TestUtilities</AssemblyName>
-    <TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion>
-    <TargetFrameworkProfile />
     <AppConfig>..\AppForTests.config</AppConfig>
-    <FileAlignment>512</FileAlignment>
-    <FileUpgradeFlags>
-    </FileUpgradeFlags>
-    <OldToolsVersion>3.5</OldToolsVersion>
-    <UpgradeBackupLocation />
-    <NuGetPackageImportStamp>
-    </NuGetPackageImportStamp>
+    <GenerateAssemblyInfo>false</GenerateAssemblyInfo>
+    <UseWindowsForms>true</UseWindowsForms>
+    <ImportWindowsDesktopTargets>true</ImportWindowsDesktopTargets>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
-    <DebugSymbols>true</DebugSymbols>
-    <DebugType>full</DebugType>
-    <Optimize>false</Optimize>
     <OutputPath>..\..\output\Debug\</OutputPath>
-    <DefineConstants>DEBUG;TRACE</DefineConstants>
-    <ErrorReport>prompt</ErrorReport>
-    <WarningLevel>4</WarningLevel>
     <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
-    <DebugType>pdbonly</DebugType>
-    <Optimize>true</Optimize>
     <OutputPath>..\..\output\Release\</OutputPath>
-    <DefineConstants>TRACE</DefineConstants>
-    <ErrorReport>prompt</ErrorReport>
-    <WarningLevel>4</WarningLevel>
     <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
-    <DebugSymbols>true</DebugSymbols>
     <OutputPath>..\..\output\Debug\</OutputPath>
-    <DefineConstants>DEBUG;TRACE</DefineConstants>
-    <DebugType>full</DebugType>
-    <PlatformTarget>x86</PlatformTarget>
-    <ErrorReport>prompt</ErrorReport>
     <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
     <OutputPath>..\..\output\Release\</OutputPath>
-    <DefineConstants>TRACE</DefineConstants>
-    <Optimize>true</Optimize>
-    <DebugType>pdbonly</DebugType>
-    <PlatformTarget>x86</PlatformTarget>
-    <ErrorReport>prompt</ErrorReport>
     <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
   </PropertyGroup>
   <PropertyGroup>
     <AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
   </PropertyGroup>
   <ItemGroup>
-    <Reference Include="Chorus">
-      <HintPath>..\..\packages\SIL.Chorus.App.5.0.0-beta0017\lib\net461\Chorus.exe</HintPath>
-    </Reference>
-    <Reference Include="Commons.Xml.Relaxng, Version=4.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\RelaxNG.3.2.3\lib\net40\Commons.Xml.Relaxng.dll</HintPath>
-    </Reference>
-    <Reference Include="DialogAdapters, Version=0.1.9.0, Culture=neutral, PublicKeyToken=7dc842182b0626dc, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\DialogAdapters.Gtk2.0.1.9\lib\net461\DialogAdapters.dll</HintPath>
-    </Reference>
-    <Reference Include="Enchant.Net, Version=1.4.0.0, Culture=neutral, PublicKeyToken=ae135aeb3d479ab9, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\Enchant.Net.1.4.2\lib\net461\Enchant.Net.dll</HintPath>
-    </Reference>
-    <Reference Include="icu.net, Version=2.7.0.0, Culture=neutral, PublicKeyToken=416fdd914afa6b66, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\icu.net.2.7.1\lib\net451\icu.net.dll</HintPath>
-    </Reference>
-    <Reference Include="JetBrains.Annotations, Version=2021.2.0.0, Culture=neutral, PublicKeyToken=1010a0d8d6380325, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\JetBrains.Annotations.2021.2.0\lib\net20\JetBrains.Annotations.dll</HintPath>
-    </Reference>
-    <Reference Include="L10NSharp, Version=5.0.0.0, Culture=neutral, PublicKeyToken=fd0b3e309a5b7c28, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\L10NSharp.5.0.0-beta0086\lib\net461\L10NSharp.dll</HintPath>
-    </Reference>
-    <Reference Include="LibChorus, Version=5.0.0.0, Culture=neutral, PublicKeyToken=f1447bae1e63f485, processorArchitecture=MSIL">
-      <SpecificVersion>False</SpecificVersion>
-      <HintPath>..\..\packages\SIL.Chorus.LibChorus.5.0.0-beta0017\lib\net461\LibChorus.dll</HintPath>
-    </Reference>
-    <Reference Include="Markdig.Signed, Version=0.22.0.0, Culture=neutral, PublicKeyToken=870da25a133885f8, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\Markdig.Signed.0.22.0\lib\net452\Markdig.Signed.dll</HintPath>
-    </Reference>
-    <Reference Include="Microsoft.DotNet.PlatformAbstractions, Version=2.0.4.0, Culture=neutral, PublicKeyToken=adb9793829ddae60, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\Microsoft.DotNet.PlatformAbstractions.2.0.4\lib\net45\Microsoft.DotNet.PlatformAbstractions.dll</HintPath>
-    </Reference>
-    <Reference Include="Microsoft.Extensions.DependencyModel, Version=2.0.4.0, Culture=neutral, PublicKeyToken=adb9793829ddae60, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\Microsoft.Extensions.DependencyModel.2.0.4\lib\net451\Microsoft.Extensions.DependencyModel.dll</HintPath>
-    </Reference>
-    <Reference Include="NDesk.DBus, Version=1.0.0.0, Culture=neutral, PublicKeyToken=f6716e4f9b2ed099, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\NDesk.DBus.0.15.0\lib\NDesk.DBus.dll</HintPath>
-    </Reference>
-    <Reference Include="Newtonsoft.Json, Version=12.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\Newtonsoft.Json.12.0.3\lib\net45\Newtonsoft.Json.dll</HintPath>
-    </Reference>
-    <Reference Include="SIL.Core, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\SIL.Core.9.0.0-beta0154\lib\net461\SIL.Core.dll</HintPath>
-    </Reference>
-    <Reference Include="SIL.Core.Desktop, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\SIL.Core.Desktop.9.0.0-beta0154\lib\net461\SIL.Core.Desktop.dll</HintPath>
-    </Reference>
-    <Reference Include="SIL.Lexicon, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
-      <SpecificVersion>False</SpecificVersion>
-      <HintPath>..\..\packages\SIL.Lexicon.9.0.0-beta0154\lib\net461\SIL.Lexicon.dll</HintPath>
-    </Reference>
-    <Reference Include="SIL.Lift, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
-      <SpecificVersion>False</SpecificVersion>
-      <HintPath>..\..\packages\SIL.Lift.9.0.0-beta0154\lib\net461\SIL.Lift.dll</HintPath>
-    </Reference>
-    <Reference Include="SIL.Windows.Forms, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\SIL.Windows.Forms.9.0.0-beta0154\lib\net461\SIL.Windows.Forms.dll</HintPath>
-    </Reference>
-    <Reference Include="SIL.WritingSystems, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\SIL.WritingSystems.9.0.0-beta0154\lib\net461\SIL.WritingSystems.dll</HintPath>
-    </Reference>
-    <Reference Include="Spart, Version=1.0.0.0, Culture=neutral, PublicKeyToken=14d24e064e474331, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\Spart.1.0.0\lib\net461\Spart.dll</HintPath>
-    </Reference>
-    <Reference Include="System" />
-    <Reference Include="System.Buffers, Version=4.0.3.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\System.Buffers.4.5.1\lib\net461\System.Buffers.dll</HintPath>
-    </Reference>
-    <Reference Include="System.Configuration" />
-    <Reference Include="System.Core">
-      <RequiredTargetFramework>3.5</RequiredTargetFramework>
-    </Reference>
-    <Reference Include="System.IO.FileSystem.AccessControl, Version=4.0.5.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\System.IO.FileSystem.AccessControl.4.7.0\lib\net461\System.IO.FileSystem.AccessControl.dll</HintPath>
-    </Reference>
-    <Reference Include="System.Management" />
-    <Reference Include="System.Memory, Version=4.0.1.1, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\System.Memory.4.5.4\lib\net461\System.Memory.dll</HintPath>
-    </Reference>
-    <Reference Include="System.Numerics" />
-    <Reference Include="System.Numerics.Vectors, Version=4.1.4.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\System.Numerics.Vectors.4.5.0\lib\net46\System.Numerics.Vectors.dll</HintPath>
-    </Reference>
-    <Reference Include="System.Runtime.CompilerServices.Unsafe, Version=4.0.4.1, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\System.Runtime.CompilerServices.Unsafe.4.5.3\lib\net461\System.Runtime.CompilerServices.Unsafe.dll</HintPath>
-    </Reference>
-    <Reference Include="System.Security" />
-    <Reference Include="System.Security.AccessControl, Version=4.1.3.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\System.Security.AccessControl.4.7.0\lib\net461\System.Security.AccessControl.dll</HintPath>
-    </Reference>
-    <Reference Include="System.Security.Principal.Windows, Version=4.1.3.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\System.Security.Principal.Windows.4.7.0\lib\net461\System.Security.Principal.Windows.dll</HintPath>
-    </Reference>
-    <Reference Include="System.ServiceModel" />
-    <Reference Include="System.ValueTuple, Version=4.0.3.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\System.ValueTuple.4.5.0\lib\net461\System.ValueTuple.dll</HintPath>
-    </Reference>
-    <Reference Include="System.Web" />
-    <Reference Include="System.Windows.Forms" />
-    <Reference Include="System.Xml.Linq">
-      <RequiredTargetFramework>3.5</RequiredTargetFramework>
-    </Reference>
-    <Reference Include="System.Data.DataSetExtensions">
-      <RequiredTargetFramework>3.5</RequiredTargetFramework>
-    </Reference>
-    <Reference Include="System.Data" />
-    <Reference Include="System.Xml" />
-    <Reference Include="TagLibSharp, Version=2.2.0.0, Culture=neutral, PublicKeyToken=db62eba44689b5b0, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\TagLibSharp.2.2.0\lib\net45\TagLibSharp.dll</HintPath>
-      <Private>True</Private>
-    </Reference>
+    <ProjectReference Include="..\WeSay.Project\WeSay.Project.csproj" />
   </ItemGroup>
   <ItemGroup>
-    <Compile Include="ConfigFileContentForTests.cs" />
-    <Compile Include="NullProgressNotificationProvider.cs" />
-    <Compile Include="OptionListFileContent.cs" />
-    <Compile Include="WeSayProjectTestHelper.cs" />
-    <Compile Include="WritingSystemsIdsForTests.cs" />
-    <Compile Include="Properties\AssemblyInfo.cs" />
+    <PackageReference Include="System.Data.DataSetExtensions" Version="4.5.0" />
+    <PackageReference Include="System.Management" Version="8.0.0" />
+    <PackageReference Include="Microsoft.AspNetCore.SystemWebAdapters" Version="1.3.0" />
+    <PackageReference Include="Microsoft.Extensions.DependencyModel" Version="8.0.0" />
+    <PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
+    <PackageReference Include="System.Runtime.CompilerServices.Unsafe" Version="6.0.0" />
+    <PackageReference Include="System.Security.AccessControl" Version="6.0.0" />
+    <PackageReference Include="System.Configuration.ConfigurationManager" Version="8.0.0" />
+    <PackageReference Include="System.ServiceModel.Primitives" Version="8.0.0" />
+    <PackageReference Include="System.ServiceModel.Http" Version="8.0.0" />
+    <PackageReference Include="System.ServiceModel.Duplex" Version="6.0.0" />
+    <PackageReference Include="System.ServiceModel.NetTcp" Version="8.0.0" />
+    <PackageReference Include="System.ServiceModel.Security" Version="6.0.0" />
+    <PackageReference Include="System.ServiceModel.Federation" Version="8.0.0" />
   </ItemGroup>
   <ItemGroup>
-    <ProjectReference Include="..\WeSay.Project\WeSay.Project.csproj">
-      <Project>{5CFD0BB3-5B2A-4911-B220-9C2286151BF0}</Project>
-      <Name>WeSay.Project</Name>
-    </ProjectReference>
+    <PackageReference Include="icu.net" Version="2.8.1" />
+    <PackageReference Include="JetBrains.Annotations" Version="2021.2.0" />
+    <PackageReference Include="Microsoft.DotNet.PlatformAbstractions" Version="2.0.4" />
+    <PackageReference Include="NDesk.DBus" Version="0.15.0" />
+    <PackageReference Include="SIL.Core" Version="13.0.1" />
+    <PackageReference Include="SIL.Core.Desktop" Version="13.0.1" />
+    <PackageReference Include="SIL.WritingSystems" Version="13.0.1" />
+    <PackageReference Include="Spart" Version="1.0.0" />
   </ItemGroup>
-  <ItemGroup>
-    <None Include="packages.config" />
-  </ItemGroup>
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
-  <Import Project="..\..\packages\NDesk.DBus.0.15.0\build\NDesk.DBus.targets" Condition="Exists('..\..\packages\NDesk.DBus.0.15.0\build\NDesk.DBus.targets')" />
-  <Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
-    <PropertyGroup>
-      <ErrorText>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}.</ErrorText>
-    </PropertyGroup>
-    <Error Condition="!Exists('..\..\packages\NDesk.DBus.0.15.0\build\NDesk.DBus.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\NDesk.DBus.0.15.0\build\NDesk.DBus.targets'))" />
-    <Error Condition="!Exists('..\..\packages\SIL.Windows.Forms.9.0.0-beta0154\build\SIL.Windows.Forms.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\SIL.Windows.Forms.9.0.0-beta0154\build\SIL.Windows.Forms.targets'))" />
-  </Target>
-  <Import Project="..\..\packages\SIL.Windows.Forms.9.0.0-beta0154\build\SIL.Windows.Forms.targets" Condition="Exists('..\..\packages\SIL.Windows.Forms.9.0.0-beta0154\build\SIL.Windows.Forms.targets')" />
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it.
-	   Other similar extension points exist, see Microsoft.Common.targets.
-  <Target Name="BeforeBuild">
-  </Target>
-  <Target Name="AfterBuild">
-  </Target>
-  -->
 </Project>
\ No newline at end of file
diff --git a/src/WeSay.TestUtilities/packages.config b/src/WeSay.TestUtilities/packages.config
deleted file mode 100644
index dccc5908c..000000000
--- a/src/WeSay.TestUtilities/packages.config
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<packages>
-  <package id="DialogAdapters.Gtk2" version="0.1.9" targetFramework="net461" />
-  <package id="Enchant.Net" version="1.4.2" targetFramework="net461" />
-  <package id="icu.net" version="2.7.1" targetFramework="net461" />
-  <package id="JetBrains.Annotations" version="2021.2.0" targetFramework="net461" />
-  <package id="L10NSharp" version="5.0.0-beta0086" targetFramework="net461" />
-  <package id="Markdig.Signed" version="0.22.0" targetFramework="net461" />
-  <package id="Microsoft.DotNet.PlatformAbstractions" version="2.0.4" targetFramework="net461" />
-  <package id="Microsoft.Extensions.DependencyModel" version="2.0.4" targetFramework="net461" />
-  <package id="NDesk.DBus" version="0.15.0" targetFramework="net461" />
-  <package id="Newtonsoft.Json" version="12.0.3" targetFramework="net461" />
-  <package id="SIL.Core" version="9.0.0-beta0154" targetFramework="net461" />
-  <package id="SIL.Core.Desktop" version="9.0.0-beta0154" targetFramework="net461" />
-  <package id="SIL.Windows.Forms" version="9.0.0-beta0154" targetFramework="net461" />
-  <package id="SIL.WritingSystems" version="9.0.0-beta0154" targetFramework="net461" />
-  <package id="Spart" version="1.0.0" targetFramework="net461" />
-  <package id="System.Buffers" version="4.5.1" targetFramework="net461" />
-  <package id="System.IO.FileSystem.AccessControl" version="4.7.0" targetFramework="net461" />
-  <package id="System.Memory" version="4.5.4" targetFramework="net461" />
-  <package id="System.Numerics.Vectors" version="4.5.0" targetFramework="net461" />
-  <package id="System.Runtime.CompilerServices.Unsafe" version="4.5.3" targetFramework="net461" />
-  <package id="System.Security.AccessControl" version="4.7.0" targetFramework="net461" />
-  <package id="System.Security.Principal.Windows" version="4.7.0" targetFramework="net461" />
-  <package id="System.ValueTuple" version="4.5.0" targetFramework="net461" />
-  <package id="TagLibSharp" version="2.2.0" targetFramework="net461" />
-</packages>
\ No newline at end of file
diff --git a/src/WeSay.UI.Tests/Properties/AssemblyInfo.cs b/src/WeSay.UI.Tests/Properties/AssemblyInfo.cs
deleted file mode 100644
index f59123931..000000000
--- a/src/WeSay.UI.Tests/Properties/AssemblyInfo.cs
+++ /dev/null
@@ -1,38 +0,0 @@
-using System.Reflection;
-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("WeSay.UI.Tests")]
-[assembly: AssemblyDescription("")]
-[assembly: AssemblyConfiguration("")]
-[assembly: AssemblyCompany("WeSay")]
-[assembly: AssemblyProduct("WeSay.Tests")]
-[assembly: AssemblyCopyright("Copyright © WeSay 2006")]
-[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)]
-
-// The following GUID is for the ID of the typelib if this project is exposed to COM
-
-[assembly: Guid("72ad24f6-b473-4b19-9487-b0ffc7fd15bf")]
-
-// 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 Revision and Build Numbers
-// by using the '*' as shown below:
-
-[assembly: AssemblyVersion("1.9.0.10")]
-[assembly: AssemblyFileVersion("1.9.0.10")]
\ No newline at end of file
diff --git a/src/WeSay.UI.Tests/WeSay.UI.Tests.csproj b/src/WeSay.UI.Tests/WeSay.UI.Tests.csproj
index d40ff9009..499fb8e4d 100755
--- a/src/WeSay.UI.Tests/WeSay.UI.Tests.csproj
+++ b/src/WeSay.UI.Tests/WeSay.UI.Tests.csproj
@@ -1,169 +1,45 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="12.0">
-  <Import Project="..\..\packages\NUnit.3.13.1\build\NUnit.props" Condition="Exists('..\..\packages\NUnit.3.13.1\build\NUnit.props')" />
+<Project Sdk="Microsoft.NET.Sdk">
   <PropertyGroup>
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
-    <ProductVersion>9.0.21022</ProductVersion>
-    <SchemaVersion>2.0</SchemaVersion>
-    <ProjectGuid>{6AED6785-CC6F-4A6A-BDB1-1895C6DA1090}</ProjectGuid>
+    <TargetFramework>net8.0-windows</TargetFramework>
     <OutputType>Library</OutputType>
-    <AppDesignerFolder>Properties</AppDesignerFolder>
-    <RootNamespace>WeSay.UI.Tests</RootNamespace>
-    <AssemblyName>WeSay.UI.Tests</AssemblyName>
     <AppConfig>..\AppForTests.config</AppConfig>
     <StartupObject>
     </StartupObject>
-    <FileUpgradeFlags>
-    </FileUpgradeFlags>
-    <UpgradeBackupLocation>
-    </UpgradeBackupLocation>
-    <OldToolsVersion>3.5</OldToolsVersion>
-    <TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion>
-    <TargetFrameworkProfile />
-    <NuGetPackageImportStamp>
-    </NuGetPackageImportStamp>
+    <GenerateAssemblyInfo>false</GenerateAssemblyInfo>
+    <UseWindowsForms>true</UseWindowsForms>
+    <ImportWindowsDesktopTargets>true</ImportWindowsDesktopTargets>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
-    <DebugSymbols>true</DebugSymbols>
-    <DebugType>full</DebugType>
-    <Optimize>false</Optimize>
     <OutputPath>..\..\output\Debug\</OutputPath>
-    <DefineConstants>DEBUG;TRACE</DefineConstants>
-    <ErrorReport>prompt</ErrorReport>
-    <WarningLevel>4</WarningLevel>
     <OutputType>Library</OutputType>
-    <AssemblyName>WeSay.UI.Tests</AssemblyName>
-    <RootNamespace>WeSay.UI.Tests</RootNamespace>
-    <AllowUnsafeBlocks>false</AllowUnsafeBlocks>
     <CheckForOverflowUnderflow>true</CheckForOverflowUnderflow>
     <PlatformTarget>x86</PlatformTarget>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
-    <DebugType>pdbonly</DebugType>
-    <Optimize>true</Optimize>
     <OutputPath>..\..\output\Release\</OutputPath>
-    <DefineConstants>TRACE</DefineConstants>
-    <ErrorReport>prompt</ErrorReport>
-    <WarningLevel>4</WarningLevel>
     <OutputType>Library</OutputType>
-    <AssemblyName>WeSay.UI.Tests</AssemblyName>
     <DebugSymbols>true</DebugSymbols>
-    <RootNamespace>WeSay.UI.Tests</RootNamespace>
-    <AllowUnsafeBlocks>false</AllowUnsafeBlocks>
     <CheckForOverflowUnderflow>true</CheckForOverflowUnderflow>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
-    <DebugSymbols>true</DebugSymbols>
     <OutputPath>..\..\output\Debug\</OutputPath>
-    <DefineConstants>DEBUG;TRACE</DefineConstants>
     <CheckForOverflowUnderflow>true</CheckForOverflowUnderflow>
-    <DebugType>full</DebugType>
-    <PlatformTarget>x86</PlatformTarget>
-    <ErrorReport>prompt</ErrorReport>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
     <DebugSymbols>true</DebugSymbols>
     <OutputPath>..\..\output\Release\</OutputPath>
-    <DefineConstants>TRACE</DefineConstants>
     <CheckForOverflowUnderflow>true</CheckForOverflowUnderflow>
-    <Optimize>true</Optimize>
-    <DebugType>pdbonly</DebugType>
-    <PlatformTarget>x86</PlatformTarget>
-    <ErrorReport>prompt</ErrorReport>
   </PropertyGroup>
   <PropertyGroup>
     <AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
   </PropertyGroup>
   <ItemGroup>
-    <Reference Include="nunit.framework, Version=3.13.1.0, Culture=neutral, PublicKeyToken=2638cd05610744eb, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\NUnit.3.13.1\lib\net45\nunit.framework.dll</HintPath>
-    </Reference>
-    <Reference Include="SIL.Core">
-      <SpecificVersion>False</SpecificVersion>
-      <HintPath>..\..\packages\SIL.Core.9.0.0-beta0154\lib\net461\SIL.Core.dll</HintPath>
-    </Reference>
-    <Reference Include="SIL.Core.Desktop">
-      <SpecificVersion>False</SpecificVersion>
-      <HintPath>..\..\packages\SIL.Core.Desktop.9.0.0-beta0154\lib\net461\SIL.Core.Desktop.dll</HintPath>
-    </Reference>
-    <Reference Include="SIL.Lift, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
-      <SpecificVersion>False</SpecificVersion>
-      <HintPath>..\..\packages\SIL.Lift.9.0.0-beta0154\lib\net461\SIL.Lift.dll</HintPath>
-    </Reference>
-    <Reference Include="SIL.Windows.Forms, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
-      <SpecificVersion>False</SpecificVersion>
-      <HintPath>..\..\packages\SIL.Windows.Forms.9.0.0-beta0154\lib\net461\SIL.Windows.Forms.dll</HintPath>
-    </Reference>
-    <Reference Include="SIL.WritingSystems, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
-      <SpecificVersion>False</SpecificVersion>
-      <HintPath>..\..\packages\SIL.WritingSystems.9.0.0-beta0154\lib\net461\SIL.WritingSystems.dll</HintPath>
-    </Reference>
-    <Reference Include="System" />
-    <Reference Include="System.Core">
-      <RequiredTargetFramework>3.5</RequiredTargetFramework>
-    </Reference>
-    <Reference Include="System.Data" />
-    <Reference Include="System.Drawing" />
-    <Reference Include="System.Windows.Forms" />
-    <Reference Include="System.Xml" />
-    <Reference Include="Geckofx-Core">
-      <HintPath>..\..\packages\Geckofx60.32.60.0.54\lib\net45\Geckofx-Core.dll</HintPath>
-    </Reference>
-    <Reference Include="Geckofx-Winforms">
-      <HintPath>..\..\packages\Geckofx60.32.60.0.54\lib\net45\Geckofx-Winforms.dll</HintPath>
-    </Reference>
-    <None Include="packages.config" />
-  </ItemGroup>
-  <ItemGroup>
-    <Compile Include="AutoCompleteWithCreationBoxTests.cs" />
-    <Compile Include="BindingTests.cs" />
-    <Compile Include="DetailListTests.cs" />
-    <Compile Include="GeckoBoxTests.cs" />
-    <Compile Include="GeckoComboBoxTests.cs" />
-    <Compile Include="GeckoListBoxTests.cs" />
-    <Compile Include="GhostBindingTests.cs" />
-    <Compile Include="Properties\AssemblyInfo.cs" />
-    <Compile Include="ReferenceCollectionEditorTests.cs">
-    </Compile>
-    <Compile Include="TestResources.Designer.cs">
-      <AutoGen>True</AutoGen>
-      <DesignTime>True</DesignTime>
-      <DependentUpon>TestResources.resx</DependentUpon>
-    </Compile>
-  </ItemGroup>
-  <ItemGroup>
-    <ProjectReference Include="..\LexicalModel\LexicalModel.csproj">
-      <Project>{5F61C809-B6C0-4567-9603-B2198E1AD038}</Project>
-      <Name>LexicalModel</Name>
-    </ProjectReference>
-    <ProjectReference Include="..\WeSay.Data\WeSay.Data.csproj">
-      <Project>{600D0FD4-D189-41A0-9BC5-FC79AD2CF1CD}</Project>
-      <Name>WeSay.Data</Name>
-    </ProjectReference>
-    <ProjectReference Include="..\WeSay.Foundation\WeSay.Foundation.csproj">
-      <Project>{F12EB680-0990-4900-B77E-0FBF2E28A815}</Project>
-      <Name>WeSay.Foundation</Name>
-    </ProjectReference>
-    <ProjectReference Include="..\WeSay.Project\WeSay.Project.csproj">
-      <Project>{5CFD0BB3-5B2A-4911-B220-9C2286151BF0}</Project>
-      <Name>WeSay.Project</Name>
-    </ProjectReference>
-    <ProjectReference Include="..\WeSay.TestUtilities\WeSay.TestUtilities.csproj">
-      <Project>{FEC3014D-0067-4D59-A838-3B046EC3C352}</Project>
-      <Name>WeSay.TestUtilities</Name>
-    </ProjectReference>
-    <ProjectReference Include="..\WeSay.UI\WeSay.UI.csproj">
-      <Project>{AC8F284C-7B34-4AC9-A7DE-FAF765456DFF}</Project>
-      <Name>WeSay.UI</Name>
-    </ProjectReference>
-  </ItemGroup>
-  <ItemGroup>
-    <EmbeddedResource Include="TestResources.resx">
-      <Generator>ResXFileCodeGenerator</Generator>
-      <SubType>Designer</SubType>
-      <LastGenOutput>TestResources.Designer.cs</LastGenOutput>
-    </EmbeddedResource>
+    <ProjectReference Include="..\LexicalModel\LexicalModel.csproj" />
+    <ProjectReference Include="..\WeSay.Data\WeSay.Data.csproj" />
+    <ProjectReference Include="..\WeSay.Foundation\WeSay.Foundation.csproj" />
+    <ProjectReference Include="..\WeSay.Project\WeSay.Project.csproj" />
+    <ProjectReference Include="..\WeSay.TestUtilities\WeSay.TestUtilities.csproj" />
+    <ProjectReference Include="..\WeSay.UI\WeSay.UI.csproj" />
   </ItemGroup>
   <ItemGroup>
     <Folder Include="Resources\" />
@@ -171,18 +47,7 @@
   <ItemGroup>
     <Service Include="{82A7F48D-3B50-4B1E-B82E-3ADA8210C358}" />
   </ItemGroup>
-  <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
-  <Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
-    <PropertyGroup>
-      <ErrorText>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}.</ErrorText>
-    </PropertyGroup>
-    <Error Condition="!Exists('..\..\packages\NUnit.3.13.1\build\NUnit.props')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\NUnit.3.13.1\build\NUnit.props'))" />
-  </Target>
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it.
-	   Other similar extension points exist, see Microsoft.Common.targets.
-  <Target Name="BeforeBuild">
-  </Target>
-  <Target Name="AfterBuild">
-  </Target>
-  -->
+  <ItemGroup>
+    <PackageReference Include="NUnit" Version="3.13.3" />
+  </ItemGroup>
 </Project>
\ No newline at end of file
diff --git a/src/WeSay.UI.Tests/packages.config b/src/WeSay.UI.Tests/packages.config
deleted file mode 100644
index da4467a69..000000000
--- a/src/WeSay.UI.Tests/packages.config
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<packages>
-  <package id="NUnit" version="3.13.1" targetFramework="net461" />
-</packages>
\ No newline at end of file
diff --git a/src/WeSay.UI/PictureControl.cs b/src/WeSay.UI/PictureControl.cs
index 21678e89d..f3b1f790f 100644
--- a/src/WeSay.UI/PictureControl.cs
+++ b/src/WeSay.UI/PictureControl.cs
@@ -123,8 +123,10 @@ public string Value
 				// from Windows to / characters for the benefit of Linux and Mac.  (Windows can
 				// read / characters as well, so keep the code simple and always do this.)
 				// This block fixes https://jira.sil.org/browse/WS-87.
-				if (!String.IsNullOrEmpty(value))
-					value = FileUtils.NormalizePath(value);
+
+				//todo restore this code path
+				// if (!String.IsNullOrEmpty(value))
+					// value = FileUtils.NormalizePath(value);
 				_relativePathToImage = value;
 			}
 		}
diff --git a/src/WeSay.UI/Properties/AssemblyInfo.cs b/src/WeSay.UI/Properties/AssemblyInfo.cs
deleted file mode 100644
index 029988066..000000000
--- a/src/WeSay.UI/Properties/AssemblyInfo.cs
+++ /dev/null
@@ -1,44 +0,0 @@
-using System;
-using System.Reflection;
-using System.Runtime.CompilerServices;
-using System.Runtime.InteropServices;
-using System.Security.Permissions;
-
-// 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("WeSay.UI")]
-[assembly: AssemblyDescription("")]
-[assembly: AssemblyConfiguration("")]
-[assembly: AssemblyCompany("WeSay")]
-[assembly: AssemblyProduct("WeSay")]
-[assembly: AssemblyCopyright("Copyright © WeSay 2006")]
-[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)]
-
-// The following GUID is for the ID of the typelib if this project is exposed to COM
-
-[assembly: Guid("e8c91aad-b433-436f-87ac-30d56e5c8ae5")]
-
-// 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 Revision and Build Numbers
-// by using the '*' as shown below:
-
-[assembly: AssemblyVersion("1.9.0.10")]
-[assembly: AssemblyFileVersion("1.9.0.10")]
-[assembly: CLSCompliant(true)]
-[assembly: InternalsVisibleTo("WeSay.UI.Tests")]
-[assembly: SecurityPermission(SecurityAction.RequestMinimum, Execution = true)]
\ No newline at end of file
diff --git a/src/WeSay.UI/TextBoxes/MultiTextControl.cs b/src/WeSay.UI/TextBoxes/MultiTextControl.cs
index df54c4382..83f3a516e 100644
--- a/src/WeSay.UI/TextBoxes/MultiTextControl.cs
+++ b/src/WeSay.UI/TextBoxes/MultiTextControl.cs
@@ -361,7 +361,7 @@ private Control AddTextBox(WritingSystemDefinition writingSystem, MultiTextBase
 				box.IsSpellCheckingEnabled = IsSpellCheckingEnabled;
 				//box.Enabled = !box.ReadOnly;
 				if (!box.ReadOnly && box is WeSayTextBox)
-					KeyboardController.RegisterControl((Control)box);
+					SIL.Windows.Forms.Keyboarding.KeyboardController.RegisterControl((Control)box);
 			}
 
 			_inputBoxes.Add(control);
diff --git a/src/WeSay.UI/TextBoxes/WeSayTextBox.cs b/src/WeSay.UI/TextBoxes/WeSayTextBox.cs
index 6f36bf6b7..148ef6b6c 100644
--- a/src/WeSay.UI/TextBoxes/WeSayTextBox.cs
+++ b/src/WeSay.UI/TextBoxes/WeSayTextBox.cs
@@ -11,6 +11,7 @@
 using System.Reflection;
 using System.Windows.Forms;
 using WeSay.LexicalModel.Foundation;
+using Microsoft.AspNetCore.Mvc;
 
 namespace WeSay.UI.TextBoxes
 {
diff --git a/src/WeSay.UI/WeSay.UI.csproj b/src/WeSay.UI/WeSay.UI.csproj
index e5349e604..36c9a398a 100755
--- a/src/WeSay.UI/WeSay.UI.csproj
+++ b/src/WeSay.UI/WeSay.UI.csproj
@@ -1,437 +1,168 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="12.0">
+<Project Sdk="Microsoft.NET.Sdk">
   <PropertyGroup>
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
-    <ProductVersion>9.0.21022</ProductVersion>
-    <SchemaVersion>2.0</SchemaVersion>
-    <ProjectGuid>{AC8F284C-7B34-4AC9-A7DE-FAF765456DFF}</ProjectGuid>
+    <TargetFramework>net8.0-windows</TargetFramework>
     <OutputType>Library</OutputType>
-    <AppDesignerFolder>Properties</AppDesignerFolder>
-    <RootNamespace>WeSay.UI</RootNamespace>
-    <AssemblyName>WeSay.UI</AssemblyName>
-    <FileUpgradeFlags>
-    </FileUpgradeFlags>
-    <UpgradeBackupLocation>
-    </UpgradeBackupLocation>
-    <OldToolsVersion>3.5</OldToolsVersion>
-    <TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion>
-    <TargetFrameworkProfile />
-    <NuGetPackageImportStamp>
-    </NuGetPackageImportStamp>
+    <GenerateAssemblyInfo>false</GenerateAssemblyInfo>
+    <UseWindowsForms>true</UseWindowsForms>
+    <ImportWindowsDesktopTargets>true</ImportWindowsDesktopTargets>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
-    <DebugSymbols>true</DebugSymbols>
-    <DebugType>full</DebugType>
-    <Optimize>false</Optimize>
     <OutputPath>..\..\output\Debug\</OutputPath>
-    <DefineConstants>DEBUG;TRACE</DefineConstants>
-    <ErrorReport>prompt</ErrorReport>
-    <WarningLevel>4</WarningLevel>
     <OutputType>Library</OutputType>
-    <AssemblyName>WeSay.UI</AssemblyName>
-    <RootNamespace>WeSay.UI</RootNamespace>
-    <AllowUnsafeBlocks>false</AllowUnsafeBlocks>
     <CheckForOverflowUnderflow>true</CheckForOverflowUnderflow>
     <PlatformTarget>x86</PlatformTarget>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
-    <DebugType>pdbonly</DebugType>
-    <Optimize>true</Optimize>
     <OutputPath>..\..\output\Release\</OutputPath>
-    <DefineConstants>TRACE</DefineConstants>
-    <ErrorReport>prompt</ErrorReport>
-    <WarningLevel>4</WarningLevel>
     <OutputType>Library</OutputType>
-    <AssemblyName>WeSay.UI</AssemblyName>
     <DebugSymbols>true</DebugSymbols>
-    <RootNamespace>WeSay.UI</RootNamespace>
-    <AllowUnsafeBlocks>false</AllowUnsafeBlocks>
     <CheckForOverflowUnderflow>true</CheckForOverflowUnderflow>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
-    <DebugSymbols>true</DebugSymbols>
     <OutputPath>..\..\output\Debug\</OutputPath>
-    <DefineConstants>DEBUG;TRACE</DefineConstants>
     <CheckForOverflowUnderflow>true</CheckForOverflowUnderflow>
-    <DebugType>full</DebugType>
-    <PlatformTarget>x86</PlatformTarget>
-    <ErrorReport>prompt</ErrorReport>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
     <DebugSymbols>true</DebugSymbols>
     <OutputPath>..\..\output\Release\</OutputPath>
-    <DefineConstants>TRACE</DefineConstants>
     <CheckForOverflowUnderflow>true</CheckForOverflowUnderflow>
-    <Optimize>true</Optimize>
-    <DebugType>pdbonly</DebugType>
-    <PlatformTarget>x86</PlatformTarget>
-    <ErrorReport>prompt</ErrorReport>
   </PropertyGroup>
   <ItemGroup>
-    <Reference Include="Commons.Xml.Relaxng, Version=4.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\RelaxNG.3.2.3\lib\net40\Commons.Xml.Relaxng.dll</HintPath>
-    </Reference>
-    <Reference Include="Enchant.Net, Version=1.4.3.1, Culture=neutral, processorArchitecture=MSIL">
-      <SpecificVersion>False</SpecificVersion>
-      <HintPath>..\..\packages\Enchant.Net.1.4.2\lib\net461\Enchant.Net.dll</HintPath>
-    </Reference>
-    <Reference Include="icu.net, Version=2.7.0.0, Culture=neutral, PublicKeyToken=416fdd914afa6b66, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\icu.net.2.7.1\lib\net451\icu.net.dll</HintPath>
-    </Reference>
-    <Reference Include="Microsoft.DotNet.PlatformAbstractions, Version=2.0.4.0, Culture=neutral, PublicKeyToken=adb9793829ddae60, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\Microsoft.DotNet.PlatformAbstractions.2.0.4\lib\net45\Microsoft.DotNet.PlatformAbstractions.dll</HintPath>
-    </Reference>
-    <Reference Include="Microsoft.Extensions.DependencyModel, Version=2.0.4.0, Culture=neutral, PublicKeyToken=adb9793829ddae60, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\Microsoft.Extensions.DependencyModel.2.0.4\lib\net451\Microsoft.Extensions.DependencyModel.dll</HintPath>
-    </Reference>
-    <Reference Include="NAudio, Version=1.10.0.0, Culture=neutral, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\NAudio.1.10.0\lib\net35\NAudio.dll</HintPath>
-    </Reference>
-    <Reference Include="NDesk.DBus, Version=1.0.0.0, Culture=neutral, PublicKeyToken=f6716e4f9b2ed099, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\NDesk.DBus.0.15.0\lib\NDesk.DBus.dll</HintPath>
-    </Reference>
-    <Reference Include="NetReflector, Version=1.1.2009.1214, Culture=neutral, PublicKeyToken=2f4dd8b32acbcd8e, processorArchitecture=MSIL">
-      <SpecificVersion>False</SpecificVersion>
-      <HintPath>..\..\packages\NetReflector.1.1.2009\lib\net20\NetReflector.dll</HintPath>
-    </Reference>
-    <Reference Include="Newtonsoft.Json, Version=11.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\Newtonsoft.Json.11.0.1\lib\net45\Newtonsoft.Json.dll</HintPath>
-    </Reference>
-    <Reference Include="SIL.Core, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\SIL.Core.9.0.0-beta0154\lib\net461\SIL.Core.dll</HintPath>
-    </Reference>
-    <Reference Include="SIL.Core.Desktop, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\SIL.Core.Desktop.9.0.0-beta0154\lib\net461\SIL.Core.Desktop.dll</HintPath>
-    </Reference>
-    <Reference Include="SIL.DictionaryServices, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\SIL.DictionaryServices.9.0.0-beta0154\lib\net461\SIL.DictionaryServices.dll</HintPath>
-    </Reference>
-    <Reference Include="SIL.Lift, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\SIL.Lift.9.0.0-beta0154\lib\net461\SIL.Lift.dll</HintPath>
-    </Reference>
-    <Reference Include="SIL.Media, Version=9.0.0.0, Culture=neutral, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\SIL.Media.9.0.0-beta0154\lib\net461\SIL.Media.dll</HintPath>
-    </Reference>
-    <Reference Include="SIL.Windows.Forms, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
-      <SpecificVersion>False</SpecificVersion>
-      <HintPath>..\..\packages\SIL.Windows.Forms.9.0.0-beta0154\lib\net461\SIL.Windows.Forms.dll</HintPath>
-    </Reference>
-    <Reference Include="SIL.Windows.Forms.Keyboarding, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
-      <SpecificVersion>False</SpecificVersion>
-      <HintPath>..\..\packages\SIL.Windows.Forms.Keyboarding.9.0.0-beta0154\lib\net461\SIL.Windows.Forms.Keyboarding.dll</HintPath>
-    </Reference>
-    <None Include="..\..\lib\common\Enchant.Net.dll.config">
-      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
-    </None>
-    <Reference Include="Geckofx-Core">
-      <HintPath>..\..\packages\Geckofx60.32.60.0.54\lib\net45\Geckofx-Core.dll</HintPath>
-    </Reference>
-    <Reference Include="Geckofx-Winforms">
-      <HintPath>..\..\packages\Geckofx60.32.60.0.54\lib\net45\Geckofx-Winforms.dll</HintPath>
-    </Reference>
-    <Reference Include="SIL.WritingSystems, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\SIL.WritingSystems.9.0.0-beta0154\lib\net461\SIL.WritingSystems.dll</HintPath>
-    </Reference>
-    <Reference Include="Spart, Version=1.0.0.0, Culture=neutral, PublicKeyToken=14d24e064e474331, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\Spart.1.0.0\lib\net461\Spart.dll</HintPath>
-    </Reference>
-    <Reference Include="System" />
-    <Reference Include="System.Configuration" />
-    <Reference Include="System.Core">
-      <RequiredTargetFramework>3.5</RequiredTargetFramework>
-    </Reference>
-    <Reference Include="System.Data" />
-    <Reference Include="System.Drawing" />
-    <Reference Include="System.IO.FileSystem.AccessControl, Version=4.0.5.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\System.IO.FileSystem.AccessControl.4.7.0\lib\net461\System.IO.FileSystem.AccessControl.dll</HintPath>
-    </Reference>
-    <Reference Include="System.Management" />
-    <Reference Include="System.Security" />
-    <Reference Include="System.Security.AccessControl, Version=4.1.3.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\System.Security.AccessControl.4.7.0\lib\net461\System.Security.AccessControl.dll</HintPath>
-    </Reference>
-    <Reference Include="System.Security.Principal.Windows, Version=4.1.3.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\System.Security.Principal.Windows.4.7.0\lib\net461\System.Security.Principal.Windows.dll</HintPath>
-    </Reference>
-    <Reference Include="System.ValueTuple, Version=4.0.3.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\System.ValueTuple.4.5.0\lib\net461\System.ValueTuple.dll</HintPath>
-    </Reference>
-    <Reference Include="System.Web" />
-    <Reference Include="System.Windows.Forms" />
-    <Reference Include="System.Xml" />
-  </ItemGroup>
-  <ItemGroup>
-    <Compile Include="AnnotationWidget.cs">
-    </Compile>
-    <Compile Include="audio\AudioPathProvider.cs" />
-    <Compile Include="AutoCompleteTextBox\AutoCompleteTextBox.cs">
+    <Compile Update="AutoCompleteTextBox\AutoCompleteTextBox.cs">
       <SubType>Component</SubType>
     </Compile>
-    <Compile Include="AutoCompleteTextBox\AutoCompleteTrigger.cs" />
-    <Compile Include="AutoCompleteTextBox\AutoCompleteTriggerCollection.cs" />
-    <Compile Include="AutoCompleteTextBox\AutoCompleteWithCreationBox.cs">
+    <Compile Update="AutoCompleteTextBox\AutoCompleteWithCreationBox.cs">
       <SubType>UserControl</SubType>
     </Compile>
-    <Compile Include="AutoCompleteTextBox\AutoCompleteWithCreationBox.Designer.cs">
-      <DependentUpon>AutoCompleteWithCreationBox.cs</DependentUpon>
-    </Compile>
-    <Compile Include="AutoCompleteTextBox\GeckoAutoCompleteTextBox.cs">
+    <Compile Update="AutoCompleteTextBox\GeckoAutoCompleteTextBox.cs">
       <SubType>UserControl</SubType>
     </Compile>
-    <Compile Include="AutoCompleteTextBox\ShortCutTrigger.cs" />
-    <Compile Include="AutoCompleteTextBox\TextLengthTrigger.cs" />
-    <Compile Include="AutoCompleteTextBox\TriggerState.cs" />
-    <Compile Include="BetterLabel.cs">
+    <Compile Update="BetterLabel.cs">
       <SubType>Component</SubType>
     </Compile>
-    <Compile Include="BetterLabel.Designer.cs">
-      <DependentUpon>BetterLabel.cs</DependentUpon>
-    </Compile>
-    <Compile Include="Buttons\RectangularImageButton.cs">
+    <Compile Update="Buttons\RectangularImageButton.cs">
       <SubType>Component</SubType>
     </Compile>
-    <Compile Include="Buttons\RegionButton.cs">
+    <Compile Update="Buttons\RegionButton.cs">
       <SubType>Component</SubType>
     </Compile>
-    <Compile Include="Buttons\TagButton.cs">
+    <Compile Update="Buttons\TagButton.cs">
       <SubType>Component</SubType>
     </Compile>
-    <Compile Include="CheckBoxControl.cs">
+    <Compile Update="CheckBoxControl.cs">
       <SubType>UserControl</SubType>
     </Compile>
-    <Compile Include="CheckBoxControl.Designer.cs">
-      <DependentUpon>CheckBoxControl.cs</DependentUpon>
-    </Compile>
-    <Compile Include="CollapsibleSplitter.cs">
+    <Compile Update="CollapsibleSplitter.cs">
       <SubType>Component</SubType>
     </Compile>
-    <Compile Condition="'$(Configuration)' == 'Debug' Or '$(Configuration)' == 'Release' " Include="audio\WeSayAudioFieldBox.cs">
+    <Compile Condition="'$(Configuration)' == 'Debug' Or '$(Configuration)' == 'Release' " Update="audio\WeSayAudioFieldBox.cs">
       <SubType>UserControl</SubType>
     </Compile>
-    <Compile Condition="'$(Configuration)' == 'Debug' Or '$(Configuration)' == 'Release' " Include="audio\WeSayAudioFieldBox.Designer.cs">
-      <DependentUpon>WeSayAudioFieldBox.cs</DependentUpon>
-    </Compile>
-    <Compile Include="Buttons\DeleteButton.cs">
+    <Compile Update="Buttons\DeleteButton.cs">
       <SubType>UserControl</SubType>
     </Compile>
-    <Compile Include="Buttons\DeleteButton.Designer.cs">
-      <DependentUpon>DeleteButton.cs</DependentUpon>
-    </Compile>
-    <Compile Include="Event.cs" />
-    <Compile Include="NativeReplacements.cs" />
-    <Compile Include="NativeX11Methods.cs" />
-    <Compile Include="Progress\ProgressUtils.cs" />
-    <Compile Include="ScrollableContainer.cs">
+    <Compile Update="ScrollableContainer.cs">
       <SubType>UserControl</SubType>
     </Compile>
-    <Compile Include="ScrollableContainer.Designer.cs">
-      <DependentUpon>ScrollableContainer.cs</DependentUpon>
-    </Compile>
-    <Compile Include="TextBoxes\GeckoBase.cs">
-      <SubType>Component</SubType>
-    </Compile>
-    <Compile Include="TextBoxes\GeckoBox.cs">
+    <Compile Update="TextBoxes\GeckoBox.cs">
       <SubType>UserControl</SubType>
     </Compile>
-    <Compile Include="TextBoxes\GeckoBox.Designer.cs">
-      <DependentUpon>GeckoBox.cs</DependentUpon>
-    </Compile>
-    <Compile Include="TextBoxes\GeckoComboBox.cs">
+    <Compile Update="TextBoxes\GeckoComboBox.cs">
       <SubType>UserControl</SubType>
     </Compile>
-    <Compile Include="TextBoxes\GeckoComboBox.Designer.cs">
-      <DependentUpon>GeckoComboBox.cs</DependentUpon>
-    </Compile>
-    <Compile Include="TextBoxes\GeckoListBox.cs">
+    <Compile Update="TextBoxes\GeckoListBox.cs">
       <SubType>UserControl</SubType>
     </Compile>
-    <Compile Include="TextBoxes\GeckoListBox.Designer.cs">
-      <DependentUpon>GeckoListBox.cs</DependentUpon>
-    </Compile>
-    <Compile Include="TextBoxes\GeckoListView.cs">
+    <Compile Update="TextBoxes\GeckoListView.cs">
       <SubType>UserControl</SubType>
     </Compile>
-    <Compile Include="TextBoxes\GeckoListView.Designer.cs">
-      <DependentUpon>GeckoListView.cs</DependentUpon>
-    </Compile>
-    <Compile Include="TextBoxes\IControlThatKnowsWritingSystem.cs" />
-    <Compile Include="TextBoxes\WeSayComboBox.cs">
+    <Compile Update="TextBoxes\WeSayComboBox.cs">
       <SubType>Component</SubType>
     </Compile>
-    <Compile Include="WeSayListView.cs">
+    <Compile Update="WeSayListView.cs">
       <SubType>Component</SubType>
     </Compile>
-    <Compile Include="WeSayListView.Designer.cs">
-      <DependentUpon>WeSayListView.cs</DependentUpon>
-    </Compile>
-    <Compile Include="PictureControl.cs">
+    <Compile Update="PictureControl.cs">
       <SubType>UserControl</SubType>
     </Compile>
-    <Compile Include="PictureControl.Designer.cs">
-      <DependentUpon>PictureControl.cs</DependentUpon>
-    </Compile>
-    <Compile Include="ReferenceCollectionEditor.cs">
+    <Compile Update="ReferenceCollectionEditor.cs">
       <SubType>Component</SubType>
     </Compile>
-    <Compile Include="ReferenceCollectionEditor.Designer.cs">
-      <DependentUpon>ReferenceCollectionEditor.cs</DependentUpon>
-    </Compile>
-    <Compile Include="OptionCollectionControl.cs">
+    <Compile Update="OptionCollectionControl.cs">
       <SubType>UserControl</SubType>
     </Compile>
-    <Compile Include="OptionCollectionControl.Designer.cs">
-      <DependentUpon>OptionCollectionControl.cs</DependentUpon>
-    </Compile>
-    <Compile Include="CirclesProgressIndicator.cs">
+    <Compile Update="CirclesProgressIndicator.cs">
       <SubType>UserControl</SubType>
     </Compile>
-    <Compile Include="CirclesProgressIndicator.Designer.cs">
-      <DependentUpon>CirclesProgressIndicator.cs</DependentUpon>
-    </Compile>
-    <Compile Include="Properties\Resources.Designer.cs">
-      <AutoGen>True</AutoGen>
-      <DesignTime>True</DesignTime>
-      <DependentUpon>Resources.resx</DependentUpon>
-    </Compile>
-    <Compile Include="SimpleBinding.cs" />
-    <Compile Include="TextBoxes\TextBinding.cs" />
-    <Compile Include="CurrentItemEventArgs.cs" />
-    <Compile Include="DetailList.cs">
+    <Compile Update="DetailList.cs">
       <SubType>Component</SubType>
     </Compile>
-    <Compile Include="DetailList.Designer.cs">
-      <DependentUpon>DetailList.cs</DependentUpon>
-    </Compile>
-    <Compile Include="DisplaySettings.cs" />
-    <Compile Include="GhostBinding.cs" />
-    <Compile Include="ISkin.cs" />
-    <Compile Include="Properties\AssemblyInfo.cs" />
-    <Compile Include="SingleOptionControl.cs">
+    <Compile Update="SingleOptionControl.cs">
       <SubType>UserControl</SubType>
     </Compile>
-    <Compile Include="SingleOptionControl.Designer.cs">
-      <DependentUpon>SingleOptionControl.cs</DependentUpon>
-    </Compile>
-    <Compile Include="TextBoxes\MultiTextControl.cs">
+    <Compile Update="TextBoxes\MultiTextControl.cs">
       <SubType>Component</SubType>
     </Compile>
-    <Compile Include="TextBoxes\MultiTextControl.designer.cs">
-      <DependentUpon>MultiTextControl.cs</DependentUpon>
-    </Compile>
-    <Compile Include="WeSayListBox.cs">
+    <Compile Update="WeSayListBox.cs">
       <SubType>Component</SubType>
     </Compile>
-    <Compile Include="WeSayListBox.Designer.cs">
-      <DependentUpon>WeSayListBox.cs</DependentUpon>
-    </Compile>
-    <Compile Include="TextBoxes\WeSayTextBox.cs">
+    <Compile Update="TextBoxes\WeSayTextBox.cs">
       <SubType>Component</SubType>
     </Compile>
-    <Compile Include="TextBoxes\WeSayTextBox.Designer.cs">
-      <DependentUpon>WeSayTextBox.cs</DependentUpon>
-    </Compile>
   </ItemGroup>
   <ItemGroup>
-    <ProjectReference Include="..\LexicalModel\LexicalModel.csproj">
-      <Project>{5F61C809-B6C0-4567-9603-B2198E1AD038}</Project>
-      <Name>LexicalModel</Name>
-    </ProjectReference>
-    <ProjectReference Include="..\WeSay.Foundation\WeSay.Foundation.csproj">
-      <Project>{F12EB680-0990-4900-B77E-0FBF2E28A815}</Project>
-      <Name>WeSay.Foundation</Name>
-    </ProjectReference>
+    <ProjectReference Include="..\LexicalModel\LexicalModel.csproj" />
+    <ProjectReference Include="..\WeSay.Foundation\WeSay.Foundation.csproj" />
   </ItemGroup>
   <ItemGroup>
-    <EmbeddedResource Include="AutoCompleteTextBox\AutoCompleteWithCreationBox.resx">
-      <DependentUpon>AutoCompleteWithCreationBox.cs</DependentUpon>
-      <SubType>Designer</SubType>
-    </EmbeddedResource>
-    <EmbeddedResource Include="BetterLabel.resx">
-      <DependentUpon>BetterLabel.cs</DependentUpon>
-      <SubType>Designer</SubType>
-    </EmbeddedResource>
-    <EmbeddedResource Include="CheckBoxControl.resx">
-      <SubType>Designer</SubType>
-      <DependentUpon>CheckBoxControl.cs</DependentUpon>
-    </EmbeddedResource>
-    <EmbeddedResource Include="Buttons\DeleteButton.resx">
-      <DependentUpon>DeleteButton.cs</DependentUpon>
-    </EmbeddedResource>
-    <EmbeddedResource Include="PictureControl.resx">
-      <DependentUpon>PictureControl.cs</DependentUpon>
-      <SubType>Designer</SubType>
-    </EmbeddedResource>
-    <EmbeddedResource Include="ReferenceCollectionEditor.resx">
-      <DependentUpon>ReferenceCollectionEditor.cs</DependentUpon>
-      <SubType>Designer</SubType>
-    </EmbeddedResource>
-    <EmbeddedResource Include="DetailList.resx">
-      <SubType>Designer</SubType>
-      <DependentUpon>DetailList.cs</DependentUpon>
-    </EmbeddedResource>
-    <EmbeddedResource Include="TextBoxes\GeckoComboBox.resx">
-      <DependentUpon>GeckoComboBox.cs</DependentUpon>
-    </EmbeddedResource>
-    <EmbeddedResource Include="TextBoxes\GeckoListBox.resx">
-      <DependentUpon>GeckoListBox.cs</DependentUpon>
-    </EmbeddedResource>
-    <EmbeddedResource Include="TextBoxes\GeckoListView.resx">
-      <DependentUpon>GeckoListView.cs</DependentUpon>
-    </EmbeddedResource>
-    <EmbeddedResource Include="TextBoxes\MultiTextControl.resx">
-      <DependentUpon>MultiTextControl.cs</DependentUpon>
-      <SubType>Designer</SubType>
-    </EmbeddedResource>
-    <EmbeddedResource Include="OptionCollectionControl.resx">
-      <SubType>Designer</SubType>
-      <DependentUpon>OptionCollectionControl.cs</DependentUpon>
-    </EmbeddedResource>
-    <EmbeddedResource Include="Properties\Resources.resx">
-      <SubType>Designer</SubType>
-      <Generator>ResXFileCodeGenerator</Generator>
-      <LastGenOutput>Resources.Designer.cs</LastGenOutput>
-    </EmbeddedResource>
-    <EmbeddedResource Condition="'$(Configuration)' == 'Debug' Or '$(Configuration)' == 'Release' " Include="audio\WeSayAudioFieldBox.resx">
-      <DependentUpon>WeSayAudioFieldBox.cs</DependentUpon>
-      <SubType>Designer</SubType>
-    </EmbeddedResource>
-    <EmbeddedResource Include="TextBoxes\WeSayTextBox.resx">
-      <SubType>Designer</SubType>
-      <DependentUpon>WeSayTextBox.cs</DependentUpon>
-    </EmbeddedResource>
-    <EmbeddedResource Include="TextBoxes\GeckoBox.resx">
-      <DependentUpon>GeckoBox.cs</DependentUpon>
-    </EmbeddedResource>
+    <None Include="Resources\delete-word-bw.png" />
   </ItemGroup>
   <ItemGroup>
-    <None Include="packages.config" />
-    <None Include="Resources\delete-word.png" />
+    <None Include="Resources\right-arrow.png" />
   </ItemGroup>
   <ItemGroup>
-    <None Include="Resources\delete-word-bw.png" />
+    <PackageReference Include="Geckofx60.32" Version="60.0.55" GeneratePathProperty="true"/>
+    <Reference Include="Geckofx-Core">
+      <HintPath>$(PkgGeckofx60_32)\lib\net45\Geckofx-Core.dll</HintPath>
+    </Reference>
+    <Reference Include="Geckofx-Winforms">
+      <HintPath>$(PkgGeckofx60_32)\lib\net45\Geckofx-Winforms.dll</HintPath>
+    </Reference>
+  </ItemGroup>
+  <ItemGroup>
+    <PackageReference Include="SIL.Windows.Forms" Version="13.0.1" GeneratePathProperty="true"/>
+    <Reference Include="SIL.Windows.Forms">
+      <HintPath>$(PkgSIL_Windows_Forms)\lib\net461\SIL.Windows.Forms.dll</HintPath>
+    </Reference>
+    <PackageReference Include="SIL.Windows.Forms.Keyboarding" Version="13.0.1" GeneratePathProperty="true"/>
+    <Reference Include="SIL.Windows.Forms.Keyboarding">
+      <HintPath>$(PkgSIL_Windows_Forms_Keyboarding)\lib\net461\SIL.Windows.Forms.Keyboarding.dll</HintPath>
+    </Reference>
+    <PackageReference Include="SIL.Media" Version="13.0.1" GeneratePathProperty="true"/>
+    <Reference Include="SIL.Media">
+      <HintPath>$(PkgSIL_Media)\lib\net461\SIL.Media.dll</HintPath>
+    </Reference>
   </ItemGroup>
   <ItemGroup>
-    <None Include="Resources\delete-word-grey.png" />
+    <PackageReference Include="icu.net" Version="2.8.1" />
+    <PackageReference Include="Microsoft.DotNet.PlatformAbstractions" Version="2.0.4" />
+    <PackageReference Include="NAudio" Version="1.10.0" />
+    <PackageReference Include="NDesk.DBus" Version="0.15.0" />
+    <PackageReference Include="NetReflector" Version="1.1.2009" />
+    <PackageReference Include="RelaxNG" Version="3.2.3" />
+    <PackageReference Include="SIL.Core" Version="13.0.1" />
+    <PackageReference Include="SIL.Core.Desktop" Version="13.0.1" />
+    <PackageReference Include="SIL.Lift" Version="13.0.1" />
+    <PackageReference Include="SIL.WritingSystems" Version="13.0.1" />
+    <PackageReference Include="Spart" Version="1.0.0" />
+    <PackageReference Include="System.Management" Version="8.0.0" />
+    <PackageReference Include="Microsoft.AspNetCore.SystemWebAdapters" Version="1.3.0" />
+    <PackageReference Include="Microsoft.Extensions.DependencyModel" Version="8.0.0" />
+    <PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
+    <PackageReference Include="System.Security.AccessControl" Version="6.0.0" />
+    <PackageReference Include="System.Configuration.ConfigurationManager" Version="8.0.0" />
   </ItemGroup>
   <ItemGroup>
-    <None Include="Resources\right-arrow.png" />
+    <Compile Remove="ActionItemControl.Designer.cs" />
   </ItemGroup>
-  <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
-  <Import Project="..\..\packages\NDesk.DBus.0.15.0\build\NDesk.DBus.targets" Condition="Exists('..\..\packages\NDesk.DBus.0.15.0\build\NDesk.DBus.targets')" />
-  <Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
-    <PropertyGroup>
-      <ErrorText>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}.</ErrorText>
-    </PropertyGroup>
-    <Error Condition="!Exists('..\..\packages\NDesk.DBus.0.15.0\build\NDesk.DBus.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\NDesk.DBus.0.15.0\build\NDesk.DBus.targets'))" />
-    <Error Condition="!Exists('..\..\packages\SIL.Media.9.0.0-beta0154\build\SIL.Media.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\SIL.Media.9.0.0-beta0154\build\SIL.Media.targets'))" />
-  </Target>
-  <Import Project="..\..\packages\SIL.Media.9.0.0-beta0154\build\SIL.Media.targets" Condition="Exists('..\..\packages\SIL.Media.9.0.0-beta0154\build\SIL.Media.targets')" />
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it.
-	   Other similar extension points exist, see Microsoft.Common.targets.
-  <Target Name="BeforeBuild">
-  </Target>
-  <Target Name="AfterBuild">
-  </Target>
-  -->
 </Project>
\ No newline at end of file
diff --git a/src/WeSay.UI/packages.config b/src/WeSay.UI/packages.config
deleted file mode 100644
index 63c295d81..000000000
--- a/src/WeSay.UI/packages.config
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<packages>
-  <package id="Geckofx60.32" version="60.0.54" targetFramework="4.6.1" />
-  <package id="Geckofx60.64" version="60.0.54" targetFramework="4.6.1" />
-  <package id="icu.net" version="2.7.1" targetFramework="net461" />
-  <package id="Microsoft.DotNet.PlatformAbstractions" version="2.0.4" targetFramework="net461" />
-  <package id="Microsoft.Extensions.DependencyModel" version="2.0.4" targetFramework="net461" />
-  <package id="NAudio" version="1.10.0" targetFramework="net461" />
-  <package id="NDesk.DBus" version="0.15.0" targetFramework="net461" />
-  <package id="NetReflector" version="1.1.2009" requireReinstallation="true" />
-  <package id="Newtonsoft.Json" version="11.0.1" targetFramework="net461" />
-  <package id="RelaxNG" version="3.2.3" targetFramework="net461" />
-  <package id="SIL.Core" version="9.0.0-beta0154" targetFramework="net461" />
-  <package id="SIL.Core.Desktop" version="9.0.0-beta0154" targetFramework="net461" />
-  <package id="SIL.DictionaryServices" version="9.0.0-beta0154" targetFramework="net461" />
-  <package id="SIL.Lift" version="9.0.0-beta0154" targetFramework="net461" />
-  <package id="SIL.Media" version="9.0.0-beta0154" targetFramework="net461" />
-  <package id="SIL.WritingSystems" version="9.0.0-beta0154" targetFramework="net461" />
-  <package id="Spart" version="1.0.0" targetFramework="net461" />
-  <package id="System.IO.FileSystem.AccessControl" version="4.7.0" targetFramework="net461" />
-  <package id="System.Security.AccessControl" version="4.7.0" targetFramework="net461" />
-  <package id="System.Security.Principal.Windows" version="4.7.0" targetFramework="net461" />
-  <package id="System.ValueTuple" version="4.5.0" targetFramework="net461" />
-</packages>
\ No newline at end of file

From 283cece94a239e2153ced8428166b3cea71c544c Mon Sep 17 00:00:00 2001
From: Kevin Hahn <hahn.kev@gmail.com>
Date: Tue, 27 Feb 2024 16:44:59 +0700
Subject: [PATCH 03/29] get weSay working with dotnet 8

---
 .../Addin.Backup.Tests.csproj                 |  1 -
 src/Addin.Backup/Addin.Backup.csproj          |  2 --
 src/Addin.Transform/Addin.Transform.csproj    |  2 --
 .../LexicalModel.Tests.csproj                 |  1 -
 src/LexicalModel/LexicalModel.csproj          |  1 -
 src/LexicalTools/LexicalTools.csproj          |  2 --
 src/Lift2WeSay/SampleDataProcessor.csproj     |  1 -
 .../WeSay.AddinLib.Tests.csproj               |  1 -
 src/WeSay.AddinLib/WeSay.AddinLib.csproj      |  1 -
 src/WeSay.App.Tests/WeSay.App.Tests.csproj    |  1 -
 src/WeSay.App/WeSay.App.csproj                | 12 ++++---
 src/WeSay.App/WeSayApp.cs                     | 15 ++------
 .../WeSay.ConfigTool.Tests.csproj             |  1 -
 src/WeSay.ConfigTool/Program.cs               |  3 ++
 src/WeSay.ConfigTool/WeSay.ConfigTool.csproj  | 35 +++++++++++--------
 src/WeSay.Data/WeSay.Data.csproj              |  5 ++-
 src/WeSay.Project/WeSay.Project.csproj        |  5 ++-
 src/WeSay.UI.Tests/WeSay.UI.Tests.csproj      |  1 -
 src/WeSay.UI/WeSay.UI.csproj                  | 14 ++++----
 19 files changed, 48 insertions(+), 56 deletions(-)

diff --git a/src/Addin.Backup.Tests/Addin.Backup.Tests.csproj b/src/Addin.Backup.Tests/Addin.Backup.Tests.csproj
index 75ad313d0..34a900025 100755
--- a/src/Addin.Backup.Tests/Addin.Backup.Tests.csproj
+++ b/src/Addin.Backup.Tests/Addin.Backup.Tests.csproj
@@ -13,7 +13,6 @@
     <OutputPath>..\..\output\Debug\</OutputPath>
     <OutputType>Library</OutputType>
     <CheckForOverflowUnderflow>true</CheckForOverflowUnderflow>
-    <PlatformTarget>x86</PlatformTarget>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
     <OutputPath>..\..\output\Release\</OutputPath>
diff --git a/src/Addin.Backup/Addin.Backup.csproj b/src/Addin.Backup/Addin.Backup.csproj
index 1244e13b8..3e352bb8e 100755
--- a/src/Addin.Backup/Addin.Backup.csproj
+++ b/src/Addin.Backup/Addin.Backup.csproj
@@ -10,7 +10,6 @@
     <OutputPath>..\..\output\Debug\</OutputPath>
     <OutputType>Library</OutputType>
     <CheckForOverflowUnderflow>true</CheckForOverflowUnderflow>
-    <PlatformTarget>x86</PlatformTarget>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
     <OutputPath>..\..\output\Release\</OutputPath>
@@ -57,7 +56,6 @@
     <PackageReference Include="SIL.Chorus.LibChorus" Version="5.1.0" />
     <PackageReference Include="SIL.Chorus.Mercurial" Version="3.0.3.6" />
     <PackageReference Include="SIL.Core" Version="13.0.1" />
-    <PackageReference Include="SIL.Core.Desktop" Version="13.0.1" />
     <PackageReference Include="SIL.Lift" Version="13.0.1" />
     <PackageReference Include="SIL.WritingSystems" Version="13.0.1" />
     <PackageReference Include="Spart" Version="1.0.0" />
diff --git a/src/Addin.Transform/Addin.Transform.csproj b/src/Addin.Transform/Addin.Transform.csproj
index a5d35cf69..2aaf8a950 100755
--- a/src/Addin.Transform/Addin.Transform.csproj
+++ b/src/Addin.Transform/Addin.Transform.csproj
@@ -27,7 +27,6 @@
     <CheckForOverflowUnderflow>true</CheckForOverflowUnderflow>
     <Commandlineparameters>/usr/share/wesay/WeSay.ConfigTool.exe /home/keith/WeSay/krstest/krstest.lift</Commandlineparameters>
     <Externalconsole>true</Externalconsole>
-    <PlatformTarget>x86</PlatformTarget>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
     <OutputPath>..\..\output\Release\</OutputPath>
@@ -83,7 +82,6 @@
     <PackageReference Include="RelaxNG" Version="3.2.3" />
     <PackageReference Include="SharpZipLib" Version="1.4.2" />
     <PackageReference Include="SIL.Core" Version="13.0.1" />
-    <PackageReference Include="SIL.Core.Desktop" Version="13.0.1" />
     <PackageReference Include="SIL.Lexicon" Version="13.0.1" />
     <PackageReference Include="SIL.Lift" Version="13.0.1" />
     <PackageReference Include="SIL.WritingSystems" Version="13.0.1" />
diff --git a/src/LexicalModel.Tests/LexicalModel.Tests.csproj b/src/LexicalModel.Tests/LexicalModel.Tests.csproj
index fe33b20c6..20b98b4f5 100755
--- a/src/LexicalModel.Tests/LexicalModel.Tests.csproj
+++ b/src/LexicalModel.Tests/LexicalModel.Tests.csproj
@@ -13,7 +13,6 @@
     <OutputType>Library</OutputType>
     <RootNamespace>WeSay.LexicalModel.Tests</RootNamespace>
     <CheckForOverflowUnderflow>true</CheckForOverflowUnderflow>
-    <PlatformTarget>x86</PlatformTarget>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
     <OutputPath>..\..\output\Release\</OutputPath>
diff --git a/src/LexicalModel/LexicalModel.csproj b/src/LexicalModel/LexicalModel.csproj
index 038f364d8..d137a6f4f 100755
--- a/src/LexicalModel/LexicalModel.csproj
+++ b/src/LexicalModel/LexicalModel.csproj
@@ -40,7 +40,6 @@
     <PackageReference Include="SIL.Chorus.LibChorus" Version="5.1.0" />
     <PackageReference Include="SIL.Chorus.Mercurial" Version="3.0.3.6" />
     <PackageReference Include="SIL.Core" Version="13.0.1" />
-    <PackageReference Include="SIL.Core.Desktop" Version="13.0.1" />
     <PackageReference Include="SIL.DictionaryServices" Version="13.0.1" />
     <PackageReference Include="SIL.Lift" Version="13.0.1" />
     <PackageReference Include="SIL.WritingSystems" Version="13.0.1" />
diff --git a/src/LexicalTools/LexicalTools.csproj b/src/LexicalTools/LexicalTools.csproj
index 5429a4231..175a24f3c 100755
--- a/src/LexicalTools/LexicalTools.csproj
+++ b/src/LexicalTools/LexicalTools.csproj
@@ -12,7 +12,6 @@
     <OutputType>Library</OutputType>
     <RootNamespace>WeSay.LexicalTools</RootNamespace>
     <CheckForOverflowUnderflow>true</CheckForOverflowUnderflow>
-    <PlatformTarget>x86</PlatformTarget>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
     <OutputPath>..\..\output\Release\</OutputPath>
@@ -115,7 +114,6 @@
     <PackageReference Include="NDesk.DBus" Version="0.15.0" />
     <PackageReference Include="RelaxNG" Version="3.2.3" />
     <PackageReference Include="SIL.Core" Version="13.0.1" />
-    <PackageReference Include="SIL.Core.Desktop" Version="13.0.1" />
     <PackageReference Include="SIL.Lift" Version="13.0.1" />
     <PackageReference Include="SIL.WritingSystems" Version="13.0.1" />
     <PackageReference Include="Spart" Version="1.0.0" />
diff --git a/src/Lift2WeSay/SampleDataProcessor.csproj b/src/Lift2WeSay/SampleDataProcessor.csproj
index d55b18d68..b9621457a 100755
--- a/src/Lift2WeSay/SampleDataProcessor.csproj
+++ b/src/Lift2WeSay/SampleDataProcessor.csproj
@@ -56,7 +56,6 @@
     <PackageReference Include="Microsoft.DotNet.PlatformAbstractions" Version="2.0.4" />
     <PackageReference Include="NDesk.DBus" Version="0.15.0" />
     <PackageReference Include="SIL.Core" Version="13.0.1" />
-    <PackageReference Include="SIL.Core.Desktop" Version="13.0.1" />
     <PackageReference Include="SIL.WritingSystems" Version="13.0.1" />
     <PackageReference Include="Spart" Version="1.0.0" />
   </ItemGroup>
diff --git a/src/WeSay.AddinLib.Tests/WeSay.AddinLib.Tests.csproj b/src/WeSay.AddinLib.Tests/WeSay.AddinLib.Tests.csproj
index f0d20ca88..49ca7bab7 100644
--- a/src/WeSay.AddinLib.Tests/WeSay.AddinLib.Tests.csproj
+++ b/src/WeSay.AddinLib.Tests/WeSay.AddinLib.Tests.csproj
@@ -19,7 +19,6 @@
     <OutputPath>..\..\output\Debug\</OutputPath>
     <OutputType>Library</OutputType>
     <CheckForOverflowUnderflow>true</CheckForOverflowUnderflow>
-    <PlatformTarget>x86</PlatformTarget>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
     <OutputPath>..\..\output\Release\</OutputPath>
diff --git a/src/WeSay.AddinLib/WeSay.AddinLib.csproj b/src/WeSay.AddinLib/WeSay.AddinLib.csproj
index c6cb3cd9d..15de11d20 100755
--- a/src/WeSay.AddinLib/WeSay.AddinLib.csproj
+++ b/src/WeSay.AddinLib/WeSay.AddinLib.csproj
@@ -10,7 +10,6 @@
     <OutputPath>..\..\output\Debug\</OutputPath>
     <OutputType>Library</OutputType>
     <CheckForOverflowUnderflow>true</CheckForOverflowUnderflow>
-    <PlatformTarget>x86</PlatformTarget>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
     <OutputPath>..\..\output\Release\</OutputPath>
diff --git a/src/WeSay.App.Tests/WeSay.App.Tests.csproj b/src/WeSay.App.Tests/WeSay.App.Tests.csproj
index 3c79f4dc6..37ab67b8d 100644
--- a/src/WeSay.App.Tests/WeSay.App.Tests.csproj
+++ b/src/WeSay.App.Tests/WeSay.App.Tests.csproj
@@ -11,7 +11,6 @@
     <OutputPath>..\..\output\Debug\</OutputPath>
     <OutputType>Library</OutputType>
     <CheckForOverflowUnderflow>true</CheckForOverflowUnderflow>
-    <PlatformTarget>x86</PlatformTarget>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
     <OutputPath>..\..\output\Release\</OutputPath>
diff --git a/src/WeSay.App/WeSay.App.csproj b/src/WeSay.App/WeSay.App.csproj
index aa151781d..cb8698797 100755
--- a/src/WeSay.App/WeSay.App.csproj
+++ b/src/WeSay.App/WeSay.App.csproj
@@ -71,12 +71,14 @@
     <None Include="icu4c.readme.txt" />
   </ItemGroup>
   <ItemGroup>
-    <PackageReference Include="Geckofx60.32" Version="60.0.55" GeneratePathProperty="true"/>
-    <Reference Include="Geckofx-Core">
-      <HintPath>$(PkgGeckofx60_32)\lib\net45\Geckofx-Core.dll</HintPath>
+    <PackageReference Include="Geckofx60.64" Version="60.0.54" GeneratePathProperty="true"/>
+    <Reference Include="Geckofx-Core, Version=60.0.54.0, Culture=neutral, PublicKeyToken=3209ac31600d1857">
+      <SpecificVersion>False</SpecificVersion>
+      <HintPath>$(PkgGeckofx60_64)\lib\net45\Geckofx-Core.dll</HintPath>
     </Reference>
-    <Reference Include="Geckofx-Winforms">
-      <HintPath>$(PkgGeckofx60_32)\lib\net45\Geckofx-Winforms.dll</HintPath>
+    <Reference Include="Geckofx-Winforms, Version=60.0.54.0, Culture=neutral, PublicKeyToken=3209ac31600d1857">
+      <SpecificVersion>False</SpecificVersion>
+      <HintPath>$(PkgGeckofx60_64)\lib\net45\Geckofx-Winforms.dll</HintPath>
     </Reference>
   </ItemGroup>
   <ItemGroup>
diff --git a/src/WeSay.App/WeSayApp.cs b/src/WeSay.App/WeSayApp.cs
index 449464c97..8774ef810 100755
--- a/src/WeSay.App/WeSayApp.cs
+++ b/src/WeSay.App/WeSayApp.cs
@@ -12,6 +12,7 @@
 using System;
 using System.Diagnostics;
 using System.IO;
+using System.Reflection;
 using System.Runtime.InteropServices;
 using System.Threading;
 using System.Windows.Forms;
@@ -42,8 +43,8 @@ private static void Main(string[] args)
 			{
 				// initialize Palaso keyboarding and ICU
 				Sldr.Initialize();
-				SIL.Windows.Forms.Keyboarding.KeyboardController.Initialize();
 				Icu.Wrapper.Init();
+				SIL.Windows.Forms.Keyboarding.KeyboardController.Initialize();
 				var app = new WeSayApp(args);
 				app.Run();
 			}
@@ -98,8 +99,6 @@ public WeSayApp(string[] args)
 
 		public static void SetUpXulRunner()
 		{
-			try
-			{
 				string geckoBrowserOption = Environment.GetEnvironmentVariable("WESAY_USE_GECKO") ?? String.Empty;
 				WeSayWordsProject.GeckoOption = !(geckoBrowserOption == String.Empty || geckoBrowserOption.Equals("0", StringComparison.OrdinalIgnoreCase));
 #if __MonoCS__
@@ -130,15 +129,7 @@ public static void SetUpXulRunner()
 					GeckoPreferences.User["gfx.font_rendering.graphite.enabled"] = true;
 				}
 #endif
-			}
-			catch (ApplicationException e)
-			{
-				ErrorReport.NotifyUserOfProblem(e.Message);
-			}
-			catch (Exception e)
-			{
-				ErrorReport.NotifyUserOfProblem(e.Message);
-			}
+
 		}
 
 		private static void SetUpReporting()
diff --git a/src/WeSay.ConfigTool.Tests/WeSay.ConfigTool.Tests.csproj b/src/WeSay.ConfigTool.Tests/WeSay.ConfigTool.Tests.csproj
index 234ba6614..ef284443b 100644
--- a/src/WeSay.ConfigTool.Tests/WeSay.ConfigTool.Tests.csproj
+++ b/src/WeSay.ConfigTool.Tests/WeSay.ConfigTool.Tests.csproj
@@ -11,7 +11,6 @@
     <OutputPath>..\..\output\Debug\</OutputPath>
     <OutputType>Library</OutputType>
     <CheckForOverflowUnderflow>true</CheckForOverflowUnderflow>
-    <PlatformTarget>x86</PlatformTarget>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
     <OutputPath>..\..\output\Release\</OutputPath>
diff --git a/src/WeSay.ConfigTool/Program.cs b/src/WeSay.ConfigTool/Program.cs
index 7035317c1..f9e1862ff 100644
--- a/src/WeSay.ConfigTool/Program.cs
+++ b/src/WeSay.ConfigTool/Program.cs
@@ -4,6 +4,7 @@
 using System;
 using System.Diagnostics;
 using System.IO;
+using System.Reflection;
 using System.Windows.Forms;
 using WeSay.ConfigTool.Properties;
 
@@ -39,6 +40,8 @@ private static void Main(string[] args)
 
 			try
 			{
+				Assembly.LoadFrom("Keyman10Interop.dll");
+				Assembly.LoadFrom("Keyman7Interop.dll");
 				// initialize Palaso keyboarding
 				SIL.Windows.Forms.Keyboarding.KeyboardController.Initialize();
 				SIL.WritingSystems.Sldr.Initialize();
diff --git a/src/WeSay.ConfigTool/WeSay.ConfigTool.csproj b/src/WeSay.ConfigTool/WeSay.ConfigTool.csproj
index a77075565..35571f140 100755
--- a/src/WeSay.ConfigTool/WeSay.ConfigTool.csproj
+++ b/src/WeSay.ConfigTool/WeSay.ConfigTool.csproj
@@ -47,20 +47,6 @@
     <CheckForOverflowUnderflow>true</CheckForOverflowUnderflow>
   </PropertyGroup>
   <ItemGroup>
-    <Reference Include="Keyman10Interop, Version=10.0.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
-      <SpecificVersion>False</SpecificVersion>
-      <EmbedInteropTypes>True</EmbedInteropTypes>
-      <HintPath>..\..\packages\SIL.Windows.Forms.Keyboarding.9.0.0-beta0154\build\Keyman10Interop.dll</HintPath>
-    </Reference>
-    <Reference Include="Keyman7Interop, Version=1.4.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
-      <SpecificVersion>False</SpecificVersion>
-      <EmbedInteropTypes>True</EmbedInteropTypes>
-      <HintPath>..\..\packages\SIL.Windows.Forms.Keyboarding.9.0.0-beta0154\build\Keyman7Interop.dll</HintPath>
-    </Reference>
-    <Reference Condition="'$(OS)'=='Windows_NT'" Include="KeymanLink, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null">
-      <SpecificVersion>False</SpecificVersion>
-      <HintPath>..\..\lib\$(Configuration)\KeymanLink.dll</HintPath>
-    </Reference>
     <Reference Include="Microsoft.Build.Framework" />
     <Reference Include="Microsoft.Build.Utilities.v4.0" />
   </ItemGroup>
@@ -152,10 +138,30 @@
     <Reference Include="SIL.Windows.Forms.Keyboarding">
       <HintPath>$(PkgSIL_Windows_Forms_Keyboarding)\lib\net461\SIL.Windows.Forms.Keyboarding.dll</HintPath>
     </Reference>
+    <Reference Include="Keyman10Interop, Version=10.0.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
+      <SpecificVersion>False</SpecificVersion>
+      <EmbedInteropTypes>True</EmbedInteropTypes>
+      <HintPath>$(PkgSIL_Windows_Forms_Keyboarding)\build\Keyman10Interop.dll</HintPath>
+    </Reference>
+    <Reference Include="Keyman7Interop, Version=1.4.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
+      <SpecificVersion>False</SpecificVersion>
+      <EmbedInteropTypes>True</EmbedInteropTypes>
+      <HintPath>$(PkgSIL_Windows_Forms_Keyboarding)\build\Keyman7Interop.dll</HintPath>
+    </Reference>
+    <Reference Include="KeymanLinkl">
+      <SpecificVersion>False</SpecificVersion>
+      <HintPath>$(PkgSIL_Windows_Forms_Keyboarding)\KeymanLink.dll</HintPath>
+    </Reference>
+
     <PackageReference Include="SIL.Windows.Forms.WritingSystems" Version="13.0.1" GeneratePathProperty="true"/>
     <Reference Include="SIL.Windows.Forms.WritingSystems">
       <HintPath>$(PkgSIL_Windows_Forms_WritingSystems)\lib\net461\SIL.Windows.Forms.WritingSystems.dll</HintPath>
     </Reference>
+
+    <PackageReference Include="SIL.Core.Desktop" Version="13.0.1" GeneratePathProperty="true"/>
+    <Reference Include="SIL.Core.Desktop">
+      <HintPath>$(PkgSIL_Core_Desktop)\lib\net461\SIL.Core.Desktop.dll</HintPath>
+    </Reference>
   </ItemGroup>
   <ItemGroup>
     <PackageReference Include="Autofac" Version="4.9.4" />
@@ -178,7 +184,6 @@
     <PackageReference Include="SharpZipLib" Version="1.4.2" />
     <PackageReference Include="SIL.Chorus.Mercurial" Version="3.0.3.6" />
     <PackageReference Include="SIL.Core" Version="13.0.1" />
-    <PackageReference Include="SIL.Core.Desktop" Version="13.0.1" />
     <PackageReference Include="SIL.Lexicon" Version="13.0.1" />
     <PackageReference Include="SIL.Lift" Version="13.0.1" />
     <PackageReference Include="SIL.WritingSystems" Version="13.0.1" />
diff --git a/src/WeSay.Data/WeSay.Data.csproj b/src/WeSay.Data/WeSay.Data.csproj
index dd14c8ce9..3dcad95d0 100755
--- a/src/WeSay.Data/WeSay.Data.csproj
+++ b/src/WeSay.Data/WeSay.Data.csproj
@@ -48,6 +48,9 @@
   </PropertyGroup>
   <ItemGroup>
     <PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
-    <PackageReference Include="SIL.Core.Desktop" Version="13.0.1" />
+    <PackageReference Include="SIL.Core.Desktop" Version="13.0.1" GeneratePathProperty="true"/>
+    <Reference Include="SIL.Core.Desktop">
+      <HintPath>$(PkgSIL_Core_Desktop)\lib\net461\SIL.Core.Desktop.dll</HintPath>
+    </Reference>
   </ItemGroup>
 </Project>
\ No newline at end of file
diff --git a/src/WeSay.Project/WeSay.Project.csproj b/src/WeSay.Project/WeSay.Project.csproj
index 116316384..2025bf6e9 100755
--- a/src/WeSay.Project/WeSay.Project.csproj
+++ b/src/WeSay.Project/WeSay.Project.csproj
@@ -79,6 +79,10 @@
       <Private>False</Private>
       <HintPath>$(PkgSIL_Windows_Forms)\lib\net461\SIL.Windows.Forms.dll</HintPath>
     </Reference>
+    <PackageReference Include="SIL.Core.Desktop" Version="13.0.1" GeneratePathProperty="true"/>
+    <Reference Include="SIL.Core.Desktop">
+      <HintPath>$(PkgSIL_Core_Desktop)\lib\net461\SIL.Core.Desktop.dll</HintPath>
+    </Reference>
   </ItemGroup>
   <ItemGroup>
     <PackageReference Include="Autofac" Version="4.9.4" />
@@ -93,7 +97,6 @@
     <PackageReference Include="SIL.Chorus.LibChorus" Version="5.1.0" />
     <PackageReference Include="SIL.Chorus.Mercurial" Version="3.0.3.6" />
     <PackageReference Include="SIL.Core" Version="13.0.1" />
-    <PackageReference Include="SIL.Core.Desktop" Version="13.0.1" />
     <PackageReference Include="SIL.Lexicon" Version="13.0.1" />
     <PackageReference Include="SIL.Lift" Version="13.0.1" />
     <PackageReference Include="SIL.WritingSystems" Version="13.0.1" />
diff --git a/src/WeSay.UI.Tests/WeSay.UI.Tests.csproj b/src/WeSay.UI.Tests/WeSay.UI.Tests.csproj
index 499fb8e4d..142dde016 100755
--- a/src/WeSay.UI.Tests/WeSay.UI.Tests.csproj
+++ b/src/WeSay.UI.Tests/WeSay.UI.Tests.csproj
@@ -13,7 +13,6 @@
     <OutputPath>..\..\output\Debug\</OutputPath>
     <OutputType>Library</OutputType>
     <CheckForOverflowUnderflow>true</CheckForOverflowUnderflow>
-    <PlatformTarget>x86</PlatformTarget>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
     <OutputPath>..\..\output\Release\</OutputPath>
diff --git a/src/WeSay.UI/WeSay.UI.csproj b/src/WeSay.UI/WeSay.UI.csproj
index 36c9a398a..3ba78a1dc 100755
--- a/src/WeSay.UI/WeSay.UI.csproj
+++ b/src/WeSay.UI/WeSay.UI.csproj
@@ -10,7 +10,6 @@
     <OutputPath>..\..\output\Debug\</OutputPath>
     <OutputType>Library</OutputType>
     <CheckForOverflowUnderflow>true</CheckForOverflowUnderflow>
-    <PlatformTarget>x86</PlatformTarget>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
     <OutputPath>..\..\output\Release\</OutputPath>
@@ -121,12 +120,14 @@
     <None Include="Resources\right-arrow.png" />
   </ItemGroup>
   <ItemGroup>
-    <PackageReference Include="Geckofx60.32" Version="60.0.55" GeneratePathProperty="true"/>
-    <Reference Include="Geckofx-Core">
-      <HintPath>$(PkgGeckofx60_32)\lib\net45\Geckofx-Core.dll</HintPath>
+    <PackageReference Include="Geckofx60.64" Version="60.0.54" GeneratePathProperty="true"/>
+    <Reference Include="Geckofx-Core, Version=60.0.54.0, Culture=neutral, PublicKeyToken=3209ac31600d1857">
+      <SpecificVersion>False</SpecificVersion>
+      <HintPath>$(PkgGeckofx60_64)\lib\net45\Geckofx-Core.dll</HintPath>
     </Reference>
-    <Reference Include="Geckofx-Winforms">
-      <HintPath>$(PkgGeckofx60_32)\lib\net45\Geckofx-Winforms.dll</HintPath>
+    <Reference Include="Geckofx-Winforms, Version=60.0.54.0, Culture=neutral, PublicKeyToken=3209ac31600d1857">
+      <SpecificVersion>False</SpecificVersion>
+      <HintPath>$(PkgGeckofx60_64)\lib\net45\Geckofx-Winforms.dll</HintPath>
     </Reference>
   </ItemGroup>
   <ItemGroup>
@@ -151,7 +152,6 @@
     <PackageReference Include="NetReflector" Version="1.1.2009" />
     <PackageReference Include="RelaxNG" Version="3.2.3" />
     <PackageReference Include="SIL.Core" Version="13.0.1" />
-    <PackageReference Include="SIL.Core.Desktop" Version="13.0.1" />
     <PackageReference Include="SIL.Lift" Version="13.0.1" />
     <PackageReference Include="SIL.WritingSystems" Version="13.0.1" />
     <PackageReference Include="Spart" Version="1.0.0" />

From 26e76053eb3ccd57492450b4c1e27b6c86af7625 Mon Sep 17 00:00:00 2001
From: Kevin Hahn <hahn.kev@gmail.com>
Date: Thu, 4 Apr 2024 21:36:12 -0700
Subject: [PATCH 04/29] compile ui tests

---
 src/WeSay.TestUtilities/WeSay.TestUtilities.csproj         | 6 ++++++
 src/WeSay.UI.Tests/AutoCompleteWithCreationBoxTests.cs     | 4 ++--
 src/WeSay.UI.Tests/ReferenceCollectionEditorTests.cs       | 4 ++--
 src/WeSay.UI.Tests/WeSay.UI.Tests.csproj                   | 1 +
 .../AutoCompleteTextBox/AutoCompleteWithCreationBox.cs     | 7 ++++++-
 5 files changed, 17 insertions(+), 5 deletions(-)

diff --git a/src/WeSay.TestUtilities/WeSay.TestUtilities.csproj b/src/WeSay.TestUtilities/WeSay.TestUtilities.csproj
index 3ec27701c..7e2b11be7 100755
--- a/src/WeSay.TestUtilities/WeSay.TestUtilities.csproj
+++ b/src/WeSay.TestUtilities/WeSay.TestUtilities.csproj
@@ -29,6 +29,12 @@
   <ItemGroup>
     <ProjectReference Include="..\WeSay.Project\WeSay.Project.csproj" />
   </ItemGroup>
+  <ItemGroup>
+    <PackageReference Include="SIL.Windows.Forms" Version="13.0.1" GeneratePathProperty="true"/>
+    <Reference Include="SIL.Windows.Forms">
+      <HintPath>$(PkgSIL_Windows_Forms)\lib\net461\SIL.Windows.Forms.dll</HintPath>
+    </Reference>
+  </ItemGroup>
   <ItemGroup>
     <PackageReference Include="System.Data.DataSetExtensions" Version="4.5.0" />
     <PackageReference Include="System.Management" Version="8.0.0" />
diff --git a/src/WeSay.UI.Tests/AutoCompleteWithCreationBoxTests.cs b/src/WeSay.UI.Tests/AutoCompleteWithCreationBoxTests.cs
index 125444607..f847e2956 100644
--- a/src/WeSay.UI.Tests/AutoCompleteWithCreationBoxTests.cs
+++ b/src/WeSay.UI.Tests/AutoCompleteWithCreationBoxTests.cs
@@ -115,7 +115,7 @@ public void DoesNotShowAddNewButtonWithClosedList()
 			SetKeyAndShow("29");
 			_control.Focus();
 			Assert.IsTrue(_control.ContainsFocus);
-			Assert.IsFalse(_control.AddNewButton.Visible);
+			Assert.IsFalse(_control.AddNewButtonVisible);
 		}
 
 		[Test]
@@ -125,7 +125,7 @@ public void DoesShowAddNewButtonWithOpenList()
 			SetKeyAndShow("29");
 			_control.Focus();
 			Assert.IsTrue(_control.ContainsFocus);
-			Assert.IsTrue(_control.AddNewButton.Visible);
+			Assert.IsTrue(_control.AddNewButtonVisible);
 		}
 
 		[Test]
diff --git a/src/WeSay.UI.Tests/ReferenceCollectionEditorTests.cs b/src/WeSay.UI.Tests/ReferenceCollectionEditorTests.cs
index 86ebe285c..898514083 100644
--- a/src/WeSay.UI.Tests/ReferenceCollectionEditorTests.cs
+++ b/src/WeSay.UI.Tests/ReferenceCollectionEditorTests.cs
@@ -132,7 +132,7 @@ public void DoesNotShowAddNewButtonWithClosedList()
 			ActuallyShowOnScreen();
 			GetTextBox().Focus();
 			Assert.IsTrue(GetTextBox().Focused);
-			Assert.IsFalse(Boxes[0].AddNewButton.Visible);
+			Assert.IsFalse(Boxes[0].AddNewButtonVisible);
 		}
 
 		[Test]
@@ -143,7 +143,7 @@ public void DoesShowAddNewButtonWithClosedOpen()
 			ActuallyShowOnScreen();
 			GetTextBox().Focus();
 			Assert.IsTrue(GetTextBox().Focused);
-			Assert.IsTrue(Boxes[0].AddNewButton.Visible);
+			Assert.IsTrue(Boxes[0].AddNewButtonVisible);
 		}
 
 		private static void OnCreateNewTargetItem(object sender, CreateNewArgs e)
diff --git a/src/WeSay.UI.Tests/WeSay.UI.Tests.csproj b/src/WeSay.UI.Tests/WeSay.UI.Tests.csproj
index 142dde016..53134f6d0 100755
--- a/src/WeSay.UI.Tests/WeSay.UI.Tests.csproj
+++ b/src/WeSay.UI.Tests/WeSay.UI.Tests.csproj
@@ -48,5 +48,6 @@
   </ItemGroup>
   <ItemGroup>
     <PackageReference Include="NUnit" Version="3.13.3" />
+    <PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.8.0"/>
   </ItemGroup>
 </Project>
\ No newline at end of file
diff --git a/src/WeSay.UI/AutoCompleteTextBox/AutoCompleteWithCreationBox.cs b/src/WeSay.UI/AutoCompleteTextBox/AutoCompleteWithCreationBox.cs
index 3cef9f22d..a93b21674 100644
--- a/src/WeSay.UI/AutoCompleteTextBox/AutoCompleteWithCreationBox.cs
+++ b/src/WeSay.UI/AutoCompleteTextBox/AutoCompleteWithCreationBox.cs
@@ -130,6 +130,11 @@ internal Button AddNewButton
 			get { return _addNewButton; }
 		}
 
+		public bool AddNewButtonVisible
+		{
+			get { return _addNewButton.Visible; }
+		}
+
 		private static ValueT CastKeyValueToValue(KV t)
 		{
 			return (ValueT)((object)t);
@@ -169,7 +174,7 @@ protected override void OnPaint(PaintEventArgs e)
 			}
 		}
 
-		internal bool HasProblems
+		public bool HasProblems
 		{
 			get
 			{

From b5b4e12f23177d90516d19db2d3cf2924b2cbe54 Mon Sep 17 00:00:00 2001
From: Kevin Hahn <hahn.kev@gmail.com>
Date: Thu, 4 Apr 2024 21:49:41 -0700
Subject: [PATCH 05/29] get tests passing and compiling

---
 src/WeSay.Data.Tests/WeSay.Data.Tests.csproj |  8 +++++++-
 src/WeSay.Data/Query.cs                      | 18 ++++++++----------
 2 files changed, 15 insertions(+), 11 deletions(-)

diff --git a/src/WeSay.Data.Tests/WeSay.Data.Tests.csproj b/src/WeSay.Data.Tests/WeSay.Data.Tests.csproj
index cde932111..9e3d8b6b0 100644
--- a/src/WeSay.Data.Tests/WeSay.Data.Tests.csproj
+++ b/src/WeSay.Data.Tests/WeSay.Data.Tests.csproj
@@ -36,13 +36,19 @@
   <ItemGroup>
     <Service Include="{82A7F48D-3B50-4B1E-B82E-3ADA8210C358}" />
   </ItemGroup>
+  <ItemGroup>
+    <PackageReference Include="SIL.Core.Tests" Version="13.0.1" GeneratePathProperty="true"/>
+    <Reference Include="SIL.Core.Tests">
+      <HintPath>$(PkgSIL_Core_Tests)\lib\net461\SIL.Core.Tests.dll</HintPath>
+    </Reference>
+  </ItemGroup>
   <ItemGroup>
     <PackageReference Include="icu.net" Version="2.8.1" />
     <PackageReference Include="Microsoft.DotNet.PlatformAbstractions" Version="2.0.4" />
+    <PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.8.0"/>
     <PackageReference Include="Mono.Posix" Version="5.4.0.201"/>
     <PackageReference Include="NUnit" Version="3.13.3" />
     <PackageReference Include="SIL.Core" Version="13.0.1" />
-    <PackageReference Include="SIL.Core.Tests" Version="13.0.1" />
     <PackageReference Include="SIL.TestUtilities" Version="13.0.1" />
     <PackageReference Include="SIL.WritingSystems" Version="13.0.1" />
     <PackageReference Include="Spart" Version="1.0.0" />
diff --git a/src/WeSay.Data/Query.cs b/src/WeSay.Data/Query.cs
index 002993edb..8e7fef482 100644
--- a/src/WeSay.Data/Query.cs
+++ b/src/WeSay.Data/Query.cs
@@ -524,20 +524,18 @@ private static Type GetIEnumerableReturnType(MethodInfo methodInfo)
 			{
 				return null;
 			}
-			Type type = null;
-			Type[] interfaces = returnType.GetInterfaces();
-			foreach (Type interfaceType in interfaces)
+
+			//get T from IEnumerable<T>
+			foreach (Type interfaceType in returnType.GetInterfaces())
 			{
-				if (interfaceType.IsGenericType)
+				if (interfaceType.IsGenericType &&
+					interfaceType.GetGenericTypeDefinition() == typeof(IEnumerable<>))
 				{
-					Type[] arguments = interfaceType.GetGenericArguments();
-					if (interfaceType == typeof(IEnumerable<>).MakeGenericType(arguments))
-					{
-						type = arguments[0];
-					}
+					return interfaceType.GetGenericArguments()[0];
 				}
 			}
-			return type;
+
+			return null;
 		}
 
 	}

From b3ced83b0f6a79f1b906732223a7d48d75bd72f2 Mon Sep 17 00:00:00 2001
From: Kevin Hahn <hahn.kev@gmail.com>
Date: Thu, 4 Apr 2024 22:16:11 -0700
Subject: [PATCH 06/29] get most tests running for WeSay.Project.Tests.csproj

---
 .../LocalizedListParserTests.cs                |  6 +++---
 .../WeSay.Project.Tests.csproj                 | 14 +++++++++++++-
 .../WeSayWordsProjectTests.cs                  |  6 +++---
 src/WeSay.Project/BasilProject.cs              | 18 ++----------------
 .../ProjectFromLiftFolderCreator.cs            |  2 +-
 5 files changed, 22 insertions(+), 24 deletions(-)

diff --git a/src/WeSay.Project.Tests/LocalizedListParserTests.cs b/src/WeSay.Project.Tests/LocalizedListParserTests.cs
index 76f0cf933..ee6fec612 100644
--- a/src/WeSay.Project.Tests/LocalizedListParserTests.cs
+++ b/src/WeSay.Project.Tests/LocalizedListParserTests.cs
@@ -27,7 +27,7 @@ public void TearDown()
 		[Test]
 		public void ParseSemDomXMLFile()
 		{
-			using (var projectDirectory = new TemporaryFolder())
+			using (var projectDirectory = new TemporaryFolder("ParseSemDomXMLFile"))
 			{
 				//setting up a minimal WeSay project with a config file that contains an id for a nonexistent writing system
 				var project = new WeSayWordsProject();
@@ -46,7 +46,7 @@ public void ParseSemDomXMLFile()
 		[Test]
 		public void ParseLocalizedListXMLFile()
 		{
-			using (var projectDirectory = new TemporaryFolder())
+			using (var projectDirectory = new TemporaryFolder("ParseLocalizedListXMLFile"))
 			{
 				//setting up a minimal WeSay project with a config file that contains an id for a nonexistent writing system
 				var project = new WeSayWordsProject();
@@ -65,7 +65,7 @@ public void ParseLocalizedListXMLFile()
 		[Test]
 		public void ReadListFile_NonExistantSemanticDomainFile_Throws()
 		{
-			using (var projectDirectory = new TemporaryFolder())
+			using (var projectDirectory = new TemporaryFolder("ReadListFile_NonExistantSemanticDomainFile_Throws"))
 			{
 				if (File.Exists(Path.Combine(BasilProject.GetPretendProjectDirectory(), "SemDom.xml")))
 				{
diff --git a/src/WeSay.Project.Tests/WeSay.Project.Tests.csproj b/src/WeSay.Project.Tests/WeSay.Project.Tests.csproj
index 219bb2ed9..8a1a97d11 100755
--- a/src/WeSay.Project.Tests/WeSay.Project.Tests.csproj
+++ b/src/WeSay.Project.Tests/WeSay.Project.Tests.csproj
@@ -46,12 +46,25 @@
   <ItemGroup>
     <Service Include="{82A7F48D-3B50-4B1E-B82E-3ADA8210C358}" />
   </ItemGroup>
+  <ItemGroup>
+    <PackageReference Include="SIL.WritingSystems.Tests" Version="13.0.1" GeneratePathProperty="true"/>
+    <Reference Include="SIL.WritingSystems.Tests">
+      <HintPath>$(PkgSIL_WritingSystems_Tests)\lib\net461\SIL.WritingSystems.Tests.dll</HintPath>
+    </Reference>
+    
+    <PackageReference Include="SIL.Windows.Forms" Version="13.0.1" GeneratePathProperty="true"/>
+    <Reference Include="SIL.Windows.Forms">
+      <HintPath>$(PkgSIL_Windows_Forms)\lib\net461\SIL.Windows.Forms.dll</HintPath>
+    </Reference>
+
+  </ItemGroup>
   <ItemGroup>
     <PackageReference Include="Autofac" Version="4.9.4" />
     <PackageReference Include="icu.net" Version="2.8.1" />
     <PackageReference Include="Icu4c.Win.Min" Version="59.1.7" />
     <PackageReference Include="JetBrains.Annotations" Version="2021.2.0" />
     <PackageReference Include="Microsoft.DotNet.PlatformAbstractions" Version="2.0.4" />
+    <PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.8.0"/>
     <PackageReference Include="Mono.Posix" Version="5.4.0.201" />
     <PackageReference Include="NDesk.DBus" Version="0.15.0" />
     <PackageReference Include="NetReflector" Version="1.1.2009" />
@@ -60,7 +73,6 @@
     <PackageReference Include="SIL.Chorus.LibChorus" Version="5.1.0" />
     <PackageReference Include="SIL.Chorus.Mercurial" Version="3.0.3.6" />
     <PackageReference Include="SIL.Core" Version="13.0.1" />
-    <PackageReference Include="SIL.Core.Desktop" Version="13.0.1" />
     <PackageReference Include="SIL.Lexicon" Version="13.0.1" />
     <PackageReference Include="SIL.Lift" Version="13.0.1" />
     <PackageReference Include="SIL.TestUtilities" Version="13.0.1" />
diff --git a/src/WeSay.Project.Tests/WeSayWordsProjectTests.cs b/src/WeSay.Project.Tests/WeSayWordsProjectTests.cs
index b2c26ed45..a1ae34f20 100644
--- a/src/WeSay.Project.Tests/WeSayWordsProjectTests.cs
+++ b/src/WeSay.Project.Tests/WeSayWordsProjectTests.cs
@@ -844,7 +844,7 @@ public void NewProject_ContainsNoWritingsystemFiles_DefaultsAreLoadedButWeDontWr
 		[Test]
 		public void OpenProject_ConfigFileContainsWritingSystemIdForWhichThereIsNoLdml_LdmlIsCreated()
 		{
-			using (var projectDirectory = new TemporaryFolder())
+			using (var projectDirectory = new TemporaryFolder("OpenProject_ConfigFileContainsWritingSystemIdForWhichThereIsNoLdml_LdmlIsCreated"))
 			{
 				//setting up a minimal WeSay project with a config file that contains an id for a nonexistent writing system
 				var project = new WeSayWordsProject();
@@ -870,7 +870,7 @@ public void OpenProject_ConfigFileContainsWritingSystemIdForWhichThereIsNoLdml_L
 		[Test]
 		public void OpenProject_ConfigFileContainsWritingSystemIdForWhichThereIsNoLdml_ProjectHasWritingSystem()
 		{
-			using (var projectDirectory = new TemporaryFolder())
+			using (var projectDirectory = new TemporaryFolder("OpenProject_ConfigFileContainsWritingSystemIdForWhichThereIsNoLdml_ProjectHasWritingSystem"))
 			{
 				//setting up a minimal WeSay project with a config file that contains an id for a nonexistent writing system
 				var project = new WeSayWordsProject();
@@ -897,7 +897,7 @@ public void OpenProject_ConfigFileContainsWritingSystemIdForWhichThereIsNoLdml_P
 		public void LoadFromLiftLexiconPath_WritingsystemsAreInOldWsPrefsFormat_WritingSystemsAreMigrated()
 		{
 			var language = "english";
-			using (var projectDirectory = new TemporaryFolder())
+			using (var projectDirectory = new TemporaryFolder("LoadFromLiftLexiconPath_WritingsystemsAreInOldWsPrefsFormat_WritingSystemsAreMigrated"))
 			{
 				//setting up a minimal WeSay project with an old writingsystemprefs.xml file
 				var project = new WeSayWordsProject();
diff --git a/src/WeSay.Project/BasilProject.cs b/src/WeSay.Project/BasilProject.cs
index c9328317e..b23e2544b 100644
--- a/src/WeSay.Project/BasilProject.cs
+++ b/src/WeSay.Project/BasilProject.cs
@@ -10,6 +10,7 @@
 using System.Linq;
 using System.Reflection;
 using System.Windows.Forms;
+using SIL.Reflection;
 
 namespace WeSay.Project
 {
@@ -279,22 +280,7 @@ public static string DirectoryOfTheApplicationExecutable
 		{
 			get
 			{
-				string path;
-				bool unitTesting = Assembly.GetEntryAssembly() == null;
-				if (unitTesting)
-				{
-					path = new Uri(Assembly.GetExecutingAssembly().CodeBase).AbsolutePath;
-					path = Uri.UnescapeDataString(path);
-				}
-				else
-				{
-					//was suspect in WS1156, where it seemed to start looking in the,
-					//outlook express program folder after sending an email from wesay...
-					//so maybe it doesn't always mean *this* executing assembly?
-					//  path = Assembly.GetExecutingAssembly().Location;
-					path = Application.ExecutablePath;
-				}
-				return Directory.GetParent(path).FullName;
+				return ReflectionHelper.DirectoryOfTheApplicationExecutable;
 			}
 		}
 
diff --git a/src/WeSay.Project/ProjectFromLiftFolderCreator.cs b/src/WeSay.Project/ProjectFromLiftFolderCreator.cs
index 14b350fd6..7f5cc013a 100644
--- a/src/WeSay.Project/ProjectFromLiftFolderCreator.cs
+++ b/src/WeSay.Project/ProjectFromLiftFolderCreator.cs
@@ -56,7 +56,7 @@ public static void PrepareLiftFolderForWeSay(WeSayWordsProject project)
 			creator.SetWritingSystemsForFields();
 		}
 
-		internal void SetWritingSystemsForFields()
+		public void SetWritingSystemsForFields()
 		{
 			var liftDom = new XmlDocument();
 			liftDom.Load(_path); //will throw if the file is ill-formed

From 7c37cd2d51c2622847d44a70761c032ef1a56bdc Mon Sep 17 00:00:00 2001
From: Kevin Hahn <hahn.kev@gmail.com>
Date: Thu, 4 Apr 2024 22:25:15 -0700
Subject: [PATCH 07/29] build and run LexicalModel.Tests.csproj

---
 .../LexEntryRepositoryCachingTests.cs                |  5 +++--
 .../LexEntryRepositoryCreateItemTransitionTests.cs   |  6 +++---
 .../LexEntryRepositoryCreatedFromPersistedData.cs    |  4 ++--
 ...exEntryRepositoryDeleteAllItemsTransitionTests.cs |  4 ++--
 .../LexEntryRepositoryDeleteIdTransitionTests.cs     |  2 +-
 .../LexEntryRepositoryDeleteItemTransitionTests.cs   |  2 +-
 src/LexicalModel.Tests/LexEntryRepositoryTests.cs    |  2 +-
 .../LexEntryRepository_GetMissingItemTests.cs        | 12 ++++++------
 src/LexicalModel.Tests/LexicalModel.Tests.csproj     |  7 +++++++
 9 files changed, 26 insertions(+), 18 deletions(-)

diff --git a/src/LexicalModel.Tests/LexEntryRepositoryCachingTests.cs b/src/LexicalModel.Tests/LexEntryRepositoryCachingTests.cs
index 474e0eeaf..472952f6d 100644
--- a/src/LexicalModel.Tests/LexEntryRepositoryCachingTests.cs
+++ b/src/LexicalModel.Tests/LexEntryRepositoryCachingTests.cs
@@ -29,8 +29,8 @@ public void OneTimeTeardown()
 		[SetUp]
 		public void Setup()
 		{
-			_tempfolder = new TemporaryFolder();
-			string persistedFilePath = _tempfolder.GetTemporaryFile();
+			_tempfolder = new TemporaryFolder("LexEntryRepositoryCachingTests");
+			string persistedFilePath = _tempfolder.GetNewTempFile(false).Path;
 			_repository = new LexEntryRepository(persistedFilePath);
 		}
 
@@ -38,6 +38,7 @@ public void Setup()
 		public void Teardown()
 		{
 			_repository.Dispose();
+			_repository.Dispose(); //added in dotnet8 conversion
 		}
 
 		[Test]
diff --git a/src/LexicalModel.Tests/LexEntryRepositoryCreateItemTransitionTests.cs b/src/LexicalModel.Tests/LexEntryRepositoryCreateItemTransitionTests.cs
index a67aa38ea..a49b2a819 100644
--- a/src/LexicalModel.Tests/LexEntryRepositoryCreateItemTransitionTests.cs
+++ b/src/LexicalModel.Tests/LexEntryRepositoryCreateItemTransitionTests.cs
@@ -21,8 +21,8 @@ public LexEntryRepositoryCreateItemTransitionTests()
 		[SetUp]
 		public override void SetUp()
 		{
-			_tempFolder = new TemporaryFolder();
-			_persistedFilePath = _tempFolder.GetTemporaryFile();
+			_tempFolder = new TemporaryFolder("LexEntryRepositoryCreateItemTransitionTests");
+			_persistedFilePath = _tempFolder.GetNewTempFile(false).Path;
 			DataMapperUnderTest = new LexEntryRepository(_persistedFilePath);
 		}
 
@@ -30,7 +30,7 @@ public override void SetUp()
 		public override void TearDown()
 		{
 			DataMapperUnderTest.Dispose();
-			_tempFolder.Delete();
+			_tempFolder.Dispose();
 		}
 
 		[Test]
diff --git a/src/LexicalModel.Tests/LexEntryRepositoryCreatedFromPersistedData.cs b/src/LexicalModel.Tests/LexEntryRepositoryCreatedFromPersistedData.cs
index fa84adced..0831043e4 100644
--- a/src/LexicalModel.Tests/LexEntryRepositoryCreatedFromPersistedData.cs
+++ b/src/LexicalModel.Tests/LexEntryRepositoryCreatedFromPersistedData.cs
@@ -53,7 +53,7 @@ public class LexEntryRepositoryCreatedFromPersistedData :
 		public override void SetUp()
 		{
 			_tempFolder = new TemporaryFolder("LexEntryRepositoryCreatedFromPersistedData");
-			_persistedFilePath = LiftFileInitializer.MakeFile(_tempFolder.GetTemporaryFile());
+			_persistedFilePath = LiftFileInitializer.MakeFile(_tempFolder.GetNewTempFile(false).Path);
 			DataMapperUnderTest = new LexEntryRepository(_persistedFilePath);
 		}
 
@@ -61,7 +61,7 @@ public override void SetUp()
 		public override void TearDown()
 		{
 			DataMapperUnderTest.Dispose();
-			_tempFolder.Delete();
+			_tempFolder.Dispose();
 		}
 
 		[Test]
diff --git a/src/LexicalModel.Tests/LexEntryRepositoryDeleteAllItemsTransitionTests.cs b/src/LexicalModel.Tests/LexEntryRepositoryDeleteAllItemsTransitionTests.cs
index 05c36687d..265acd316 100644
--- a/src/LexicalModel.Tests/LexEntryRepositoryDeleteAllItemsTransitionTests.cs
+++ b/src/LexicalModel.Tests/LexEntryRepositoryDeleteAllItemsTransitionTests.cs
@@ -16,7 +16,7 @@ public class LexEntryRepositoryDeleteAllItemsTransitionTests :
 		public override void SetUp()
 		{
 			_tempFolder = new TemporaryFolder("LexEntryRepositoryDeleteAllItemsTransitionTests");
-			_persistedFilePath = _tempFolder.GetTemporaryFile();
+			_persistedFilePath = _tempFolder.GetNewTempFile(false).Path;
 			DataMapperUnderTest = new LexEntryRepository(_persistedFilePath);
 		}
 
@@ -24,7 +24,7 @@ public override void SetUp()
 		public override void TearDown()
 		{
 			DataMapperUnderTest.Dispose();
-			_tempFolder.Delete();
+			_tempFolder.Dispose();
 		}
 
 		protected override void RepopulateRepositoryFromPersistedData()
diff --git a/src/LexicalModel.Tests/LexEntryRepositoryDeleteIdTransitionTests.cs b/src/LexicalModel.Tests/LexEntryRepositoryDeleteIdTransitionTests.cs
index 46fda71cc..ffdcaf619 100644
--- a/src/LexicalModel.Tests/LexEntryRepositoryDeleteIdTransitionTests.cs
+++ b/src/LexicalModel.Tests/LexEntryRepositoryDeleteIdTransitionTests.cs
@@ -30,7 +30,7 @@ public override void SetUp()
 		public override void TearDown()
 		{
 			DataMapperUnderTest.Dispose();
-			_tempFolder.Delete();
+			_tempFolder.Dispose();
 		}
 
 		[Test]
diff --git a/src/LexicalModel.Tests/LexEntryRepositoryDeleteItemTransitionTests.cs b/src/LexicalModel.Tests/LexEntryRepositoryDeleteItemTransitionTests.cs
index 5f88cd177..7ab066305 100644
--- a/src/LexicalModel.Tests/LexEntryRepositoryDeleteItemTransitionTests.cs
+++ b/src/LexicalModel.Tests/LexEntryRepositoryDeleteItemTransitionTests.cs
@@ -27,7 +27,7 @@ public override void SetUp()
 		public override void TearDown()
 		{
 			DataMapperUnderTest.Dispose();
-			_tempFolder.Delete();
+			_tempFolder.Dispose();
 		}
 
 		[Test]
diff --git a/src/LexicalModel.Tests/LexEntryRepositoryTests.cs b/src/LexicalModel.Tests/LexEntryRepositoryTests.cs
index 3cf6eb28c..c832869b4 100644
--- a/src/LexicalModel.Tests/LexEntryRepositoryTests.cs
+++ b/src/LexicalModel.Tests/LexEntryRepositoryTests.cs
@@ -46,7 +46,7 @@ public void Setup()
 		public void TearDown()
 		{
 			_lexEntryRepository.Dispose();
-			_temporaryFolder.Delete();
+			_temporaryFolder.Dispose();
 		}
 
 		private void MakeTestLexEntry(string writingSystemId, string lexicalForm)
diff --git a/src/LexicalModel.Tests/LexEntryRepository_GetMissingItemTests.cs b/src/LexicalModel.Tests/LexEntryRepository_GetMissingItemTests.cs
index 308bd67b5..f531ce65e 100644
--- a/src/LexicalModel.Tests/LexEntryRepository_GetMissingItemTests.cs
+++ b/src/LexicalModel.Tests/LexEntryRepository_GetMissingItemTests.cs
@@ -35,8 +35,8 @@ public void Setup()
 			{
 				DefaultCollation = new IcuRulesCollationDefinition("standard")
 			};
-			_temporaryFolder = new TemporaryFolder();
-			string filePath = _temporaryFolder.GetTemporaryFile();
+			_temporaryFolder = new TemporaryFolder("LexEntryRepository_GetMissingItemTests");
+			string filePath = _temporaryFolder.GetNewTempFile(false).Path;
 			_lexEntryRepository = new LexEntryRepository(filePath);
 		}
 
@@ -44,7 +44,7 @@ public void Setup()
 		public void TearDown()
 		{
 			_lexEntryRepository.Dispose();
-			_temporaryFolder.Delete();
+			_temporaryFolder.Dispose();
 		}
 
 		private void CreateLexentryWithOnlyCitationForm(string citationForm, string writingSystemId)
@@ -247,8 +247,8 @@ private class TestEnvironment : IDisposable
 
 			public TestEnvironment()
 			{
-				_temporaryFolder = new TemporaryFolder();
-				string filePath = _temporaryFolder.GetTemporaryFile();
+				_temporaryFolder = new TemporaryFolder("LexEntryRepository_GetMissingItemTests");
+				string filePath = _temporaryFolder.GetNewTempFile(false).Path;
 				_repository = new LexEntryRepository(filePath);
 			}
 
@@ -286,7 +286,7 @@ private LexEntry CreateEntryWithDefinitionAndWs(IEnumerable<string> populatedWri
 			public void Dispose()
 			{
 				_repository.Dispose();
-				_temporaryFolder.Delete();
+				_temporaryFolder.Dispose();
 			}
 		}
 
diff --git a/src/LexicalModel.Tests/LexicalModel.Tests.csproj b/src/LexicalModel.Tests/LexicalModel.Tests.csproj
index 20b98b4f5..29b94eeae 100755
--- a/src/LexicalModel.Tests/LexicalModel.Tests.csproj
+++ b/src/LexicalModel.Tests/LexicalModel.Tests.csproj
@@ -43,6 +43,12 @@
   <ItemGroup>
     <None Include="icu4c.readme.txt" />
   </ItemGroup>
+  <ItemGroup>
+    <PackageReference Include="SIL.Core.Tests" Version="13.0.1" GeneratePathProperty="true"/>
+    <Reference Include="SIL.Core.Tests">
+      <HintPath>$(PkgSIL_Core_Tests)\lib\net461\SIL.Core.Tests.dll</HintPath>
+    </Reference>
+  </ItemGroup>
   <ItemGroup>
     <PackageReference Include="icu.net" Version="2.8.1" />
     <PackageReference Include="Icu4c.Win.Min" Version="59.1.7" />
@@ -62,6 +68,7 @@
     <PackageReference Include="System.Management" Version="8.0.0" />
     <PackageReference Include="Microsoft.AspNetCore.SystemWebAdapters" Version="1.3.0" />
     <PackageReference Include="Microsoft.Extensions.DependencyModel" Version="8.0.0" />
+    <PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.8.0"/>
     <PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
     <PackageReference Include="System.Security.AccessControl" Version="6.0.0" />
     <PackageReference Include="System.Configuration.ConfigurationManager" Version="8.0.0" />

From 965b17fd3574b2f08c30e2504c8cc0356047e771 Mon Sep 17 00:00:00 2001
From: Kevin Hahn <hahn.kev@gmail.com>
Date: Thu, 4 Apr 2024 22:38:16 -0700
Subject: [PATCH 08/29] build and run LexicalTools.Tests.csproj

---
 src/LexicalTools.Tests/DashBoardTests.cs           |  6 +++---
 src/LexicalTools.Tests/DictionaryTaskTests.cs      |  4 ++--
 src/LexicalTools.Tests/EntryViewControlTests.cs    |  6 +++---
 .../GatherBySemanticDomainTaskTests.cs             |  8 ++++----
 src/LexicalTools.Tests/GatherWordListTaskTests.cs  |  8 ++++----
 src/LexicalTools.Tests/HtmlRendererTests.cs        |  6 +++---
 src/LexicalTools.Tests/LexicalTools.Tests.csproj   | 12 +++++++++++-
 .../MissingEntryRelationFieldFilterTests.cs        |  4 ++--
 src/LexicalTools.Tests/MissingInfoControlTests.cs  | 14 +++++++-------
 src/LexicalTools.Tests/MissingInfoTaskTests.cs     |  6 +++---
 src/LexicalTools.Tests/RelationControllerTests.cs  |  2 +-
 .../AddMissingInfo/MissingInfoControl.cs           |  6 ++++++
 src/LexicalTools/Dashboard/Dash.cs                 |  4 ++--
 .../GatherBySemanticDomainTask.cs                  |  4 ++--
 14 files changed, 53 insertions(+), 37 deletions(-)

diff --git a/src/LexicalTools.Tests/DashBoardTests.cs b/src/LexicalTools.Tests/DashBoardTests.cs
index 13fc0f8dc..ee717e835 100644
--- a/src/LexicalTools.Tests/DashBoardTests.cs
+++ b/src/LexicalTools.Tests/DashBoardTests.cs
@@ -19,8 +19,8 @@ public class DashBoardTests
 		[SetUp]
 		public void Setup()
 		{
-			_tempFolder = new TemporaryFolder();
-			_filePath = _tempFolder.GetTemporaryFile();
+			_tempFolder = new TemporaryFolder("DashBoardTests");
+			_filePath = _tempFolder.GetPathForNewTempFile(false);
 			_lexEntryRepository = new LexEntryRepository(_filePath);
 
 			Form window = new Form();
@@ -41,7 +41,7 @@ public void Setup()
 		public void Teardown()
 		{
 			_lexEntryRepository.Dispose();
-			_tempFolder.Delete();
+			_tempFolder.Dispose();
 		}
 
 		[Test]
diff --git a/src/LexicalTools.Tests/DictionaryTaskTests.cs b/src/LexicalTools.Tests/DictionaryTaskTests.cs
index da7bbc6d2..5927043d6 100644
--- a/src/LexicalTools.Tests/DictionaryTaskTests.cs
+++ b/src/LexicalTools.Tests/DictionaryTaskTests.cs
@@ -37,8 +37,8 @@ public void FixtureTeardown()
 		[SetUp]
 		public void Setup()
 		{
-			_tempFolder = new TemporaryFolder();
-			_filePath = _tempFolder.GetTemporaryFile();
+			_tempFolder = new TemporaryFolder("DictionaryTaskTests");
+			_filePath = _tempFolder.GetPathForNewTempFile(false);
 
 			WeSayProjectTestHelper.InitializeForTests();
 			string[] vernacularWritingSystemIds = new string[]
diff --git a/src/LexicalTools.Tests/EntryViewControlTests.cs b/src/LexicalTools.Tests/EntryViewControlTests.cs
index fad9ca521..c12df5311 100644
--- a/src/LexicalTools.Tests/EntryViewControlTests.cs
+++ b/src/LexicalTools.Tests/EntryViewControlTests.cs
@@ -48,8 +48,8 @@ public void SetUp()
 		{
 			WeSayProjectTestHelper.InitializeForTests();
 
-			_tempFolder = new TemporaryFolder();
-			_filePath = _tempFolder.GetTemporaryFile();
+			_tempFolder = new TemporaryFolder("EntryViewControlTests");
+			_filePath = _tempFolder.GetPathForNewTempFile(false);
 			_lexEntryRepository = new LexEntryRepository(_filePath);
 
 #if GlossMeaning
@@ -100,7 +100,7 @@ public void TearDown()
 			}
 			if (_tempFolder != null)
 			{
-				_tempFolder.Delete();
+				_tempFolder.Dispose();
 			}
 			WeSayProjectTestHelper.CleanupForTests();
 		}
diff --git a/src/LexicalTools.Tests/GatherBySemanticDomainTaskTests.cs b/src/LexicalTools.Tests/GatherBySemanticDomainTaskTests.cs
index c7abdc53a..1a15ddfc2 100644
--- a/src/LexicalTools.Tests/GatherBySemanticDomainTaskTests.cs
+++ b/src/LexicalTools.Tests/GatherBySemanticDomainTaskTests.cs
@@ -48,9 +48,9 @@ public void Setup()
 			WeSayProjectTestHelper.InitializeForTests();
 
 			WeSayWordsProject.Project.RemoveCache();
-			_tempFolder = new TemporaryFolder();
-			_filePath = _tempFolder.GetTemporaryFile();
-			_semanticDomainFilePath = _tempFolder.GetTemporaryFile();
+			_tempFolder = new TemporaryFolder("GatherBySemanticDomainsTaskTests");
+			_filePath = _tempFolder.GetPathForNewTempFile(false);
+			_semanticDomainFilePath = _tempFolder.GetPathForNewTempFile(false);
 
 			_lexEntryRepository = new LexEntryRepository(_filePath);
 			_viewTemplate = MakeViewTemplate("en");
@@ -121,7 +121,7 @@ public void TearDown()
 			}
 			if (_tempFolder != null)
 			{
-				_tempFolder.Delete();
+				_tempFolder.Dispose();
 			}
 			WeSayProjectTestHelper.CleanupForTests();
 		}
diff --git a/src/LexicalTools.Tests/GatherWordListTaskTests.cs b/src/LexicalTools.Tests/GatherWordListTaskTests.cs
index 376da08e9..18d674981 100644
--- a/src/LexicalTools.Tests/GatherWordListTaskTests.cs
+++ b/src/LexicalTools.Tests/GatherWordListTaskTests.cs
@@ -48,10 +48,10 @@ public void Setup()
 			_vernacularLanguageWSId = WritingSystemsIdsForTests.VernacularIdForTest;
 			BasilProject.Project.WritingSystems.Set(new WritingSystemDefinition("fr"));
 
-			_tempFolder = new TemporaryFolder();
-			_simpleWordListFilePath = _tempFolder.GetTemporaryFile();
+			_tempFolder = new TemporaryFolder("GatherWordListTaskTests");
+			_simpleWordListFilePath = _tempFolder.GetPathForNewTempFile(false);
 			//            _liftWordListFile = new TempLiftFile("wordlist.lift",_tempFolder, LiftXml, LiftIO.Validation.Validator.LiftVersion);
-			_filePath = _tempFolder.GetTemporaryFile();
+			_filePath = _tempFolder.GetPathForNewTempFile(false);
 
 			_lexEntryRepository = new LexEntryRepository(_filePath); // InMemoryRecordListManager();
 			File.WriteAllLines(_simpleWordListFilePath, _words);
@@ -148,7 +148,7 @@ public void TearDown()
 			}
 			if (_tempFolder != null)
 			{
-				_tempFolder.Delete();
+				_tempFolder.Dispose();
 			}
 			WeSayProjectTestHelper.CleanupForTests();
 		}
diff --git a/src/LexicalTools.Tests/HtmlRendererTests.cs b/src/LexicalTools.Tests/HtmlRendererTests.cs
index 6eed4d5bd..cfaffd456 100644
--- a/src/LexicalTools.Tests/HtmlRendererTests.cs
+++ b/src/LexicalTools.Tests/HtmlRendererTests.cs
@@ -55,7 +55,7 @@ public void TearDown()
 			{
 				_lexEntryRepository.Dispose();
 			}
-			_tempFolder.Delete();
+			_tempFolder.Dispose();
 			Sldr.Cleanup();
 		}
 
@@ -95,8 +95,8 @@ public void HomographEntryTest()
 		private void SetupTestData()
 		{
 			ErrorReport.IsOkToInteractWithUser = false;
-			_tempFolder = new TemporaryFolder();
-			_filePath = _tempFolder.GetTemporaryFile();
+			_tempFolder = new TemporaryFolder("HtmlRendererTests");
+			_filePath = _tempFolder.GetPathForNewTempFile(false);
 
 			_currentItem = null;
 			string lexicalForm = "test";
diff --git a/src/LexicalTools.Tests/LexicalTools.Tests.csproj b/src/LexicalTools.Tests/LexicalTools.Tests.csproj
index d9d0e2639..661d48444 100755
--- a/src/LexicalTools.Tests/LexicalTools.Tests.csproj
+++ b/src/LexicalTools.Tests/LexicalTools.Tests.csproj
@@ -50,6 +50,7 @@
     <PackageReference Include="Microsoft.AspNetCore.SystemWebAdapters" Version="1.3.0" />
     <PackageReference Include="Microsoft.Bcl.AsyncInterfaces" Version="8.0.0" />
     <PackageReference Include="Microsoft.Extensions.DependencyModel" Version="8.0.0" />
+    <PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.8.0"/>
     <PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
     <PackageReference Include="System.Runtime.CompilerServices.Unsafe" Version="6.0.0" />
     <PackageReference Include="System.Security.AccessControl" Version="6.0.0" />
@@ -67,6 +68,16 @@
   <ItemGroup>
     <None Include="icu4c.readme.txt" />
   </ItemGroup>
+  <ItemGroup>
+    <PackageReference Include="SIL.Windows.Forms" Version="13.0.1" GeneratePathProperty="true"/>
+    <Reference Include="SIL.Windows.Forms">
+      <HintPath>$(PkgSIL_Windows_Forms)\lib\net461\SIL.Windows.Forms.dll</HintPath>
+    </Reference>
+    <PackageReference Include="SIL.Windows.Forms.Keyboarding" Version="13.0.1" GeneratePathProperty="true"/>
+    <Reference Include="SIL.Windows.Forms.Keyboarding">
+      <HintPath>$(PkgSIL_Windows_Forms_Keyboarding)\lib\net461\SIL.Windows.Forms.Keyboarding.dll</HintPath>
+    </Reference>
+  </ItemGroup>
   <ItemGroup>
     <PackageReference Include="Autofac" Version="4.9.4" />
     <PackageReference Include="ibusdotnet" Version="2.0.3" />
@@ -81,7 +92,6 @@
     <PackageReference Include="SIL.Chorus.LibChorus" Version="5.1.0" />
     <PackageReference Include="SIL.Chorus.Mercurial" Version="3.0.3.6" />
     <PackageReference Include="SIL.Core" Version="13.0.1" />
-    <PackageReference Include="SIL.Core.Desktop" Version="13.0.1" />
     <PackageReference Include="SIL.Lift" Version="13.0.1" />
     <PackageReference Include="SIL.TestUtilities" Version="13.0.1" />
     <PackageReference Include="SIL.WritingSystems" Version="13.0.1" />
diff --git a/src/LexicalTools.Tests/MissingEntryRelationFieldFilterTests.cs b/src/LexicalTools.Tests/MissingEntryRelationFieldFilterTests.cs
index 82809cc81..402a4de2f 100644
--- a/src/LexicalTools.Tests/MissingEntryRelationFieldFilterTests.cs
+++ b/src/LexicalTools.Tests/MissingEntryRelationFieldFilterTests.cs
@@ -18,8 +18,8 @@ public class MissingEntryRelationFieldFilterTests
 		[SetUp]
 		public void Setup()
 		{
-			_tempFolder = new TemporaryFolder();
-			_filePath = _tempFolder.GetTemporaryFile();
+			_tempFolder = new TemporaryFolder("MissingEntryRelationFieldFilterTests");
+			_filePath = _tempFolder.GetPathForNewTempFile(false);
 			_lexEntryRepository = new LexEntryRepository(_filePath);
 
 			_target = _lexEntryRepository.CreateItem();
diff --git a/src/LexicalTools.Tests/MissingInfoControlTests.cs b/src/LexicalTools.Tests/MissingInfoControlTests.cs
index 379d9b9e8..67ecc67c8 100644
--- a/src/LexicalTools.Tests/MissingInfoControlTests.cs
+++ b/src/LexicalTools.Tests/MissingInfoControlTests.cs
@@ -131,7 +131,7 @@ private static void AddTranslationToEntry(LexEntry entry, string translation)
 		public void TearDown()
 		{
 			_lexEntryRepository?.Dispose();
-			_tempFolder?.Delete();
+			_tempFolder?.Dispose();
 			_tempFile?.Dispose();
 			WeSayProjectTestHelper.CleanupForTests();
 		}
@@ -429,8 +429,8 @@ public void SetCurrentRecordToNext_ChangedSoNoLongerMeetsFilter_RemovedFromTodoA
 				AddTranslationToEntry(missingInfoControl.CurrentEntry,
 									  "a bogus translation of example");
 				missingInfoControl.SetCurrentRecordToNext();
-				Assert.IsFalse(missingInfoControl._todoRecordsListBox.DataSource.Contains(recordToMove));
-				Assert.IsTrue(missingInfoControl._completedRecordsListBox.DataSource.Contains(recordToMove));
+				Assert.IsFalse(missingInfoControl.TodoRecordsListBoxDataSourceContains(recordToMove));
+				Assert.IsTrue(missingInfoControl.CompletedRecordsListBoxDataSourceContains(recordToMove));
 #if Visual
 				DebugShowState(missingInfoControl, currentRecord);
 #endif
@@ -452,8 +452,8 @@ public void SetCurrentRecordToPrevious_ChangedSoNoLongerMeetsFilter_RemovedFromT
 				AddTranslationToEntry(missingInfoControl.CurrentEntry,
 									  "a bogus translation of example");
 				missingInfoControl.SetCurrentRecordToPrevious();
-				Assert.IsFalse(missingInfoControl._todoRecordsListBox.DataSource.Contains(recordToMove));
-				Assert.IsTrue(missingInfoControl._completedRecordsListBox.DataSource.Contains(recordToMove));
+				Assert.IsFalse(missingInfoControl.TodoRecordsListBoxDataSourceContains(recordToMove));
+				Assert.IsTrue(missingInfoControl.CompletedRecordsListBoxDataSourceContains(recordToMove));
 #if Visual
 				DebugShowState(missingInfoControl, currentRecord);
 #endif
@@ -505,9 +505,9 @@ public void ChangeSoMeetsFilter_AfterChangedSoNoLongerMeetsFilter_StaysHighlight
 				AddTranslationToEntry(missingInfoControl.CurrentEntry,
 									  "a bogus translation of example");
 				AddTranslationToEntry(missingInfoControl.CurrentEntry, string.Empty);
-				Assert.AreEqual(missingInfoControl._todoRecordsListBox.SelectedItem, currentRecord);
+				Assert.AreEqual(missingInfoControl.TodoRecordsListBoxSelectedItem, currentRecord);
 				Assert.IsFalse(
-						missingInfoControl._completedRecordsListBox.DataSource.Contains(
+						missingInfoControl.CompletedRecordsListBoxDataSourceContains(
 								currentRecord));
 #if Visual
 				DebugShowState(missingInfoControl, currentRecord);
diff --git a/src/LexicalTools.Tests/MissingInfoTaskTests.cs b/src/LexicalTools.Tests/MissingInfoTaskTests.cs
index 731d325a2..a23300aac 100644
--- a/src/LexicalTools.Tests/MissingInfoTaskTests.cs
+++ b/src/LexicalTools.Tests/MissingInfoTaskTests.cs
@@ -45,8 +45,8 @@ public void FixtureTearDown()
 		[SetUp]
 		public void Setup()
 		{
-			_tempFolder = new TemporaryFolder();
-			_filePath = _tempFolder.GetTemporaryFile();
+			_tempFolder = new TemporaryFolder("MissingInfoTaskTests");
+			_filePath = _tempFolder.GetPathForNewTempFile(false);
 			_lexEntryRepository = new LexEntryRepository(_filePath);
 
 			WeSayProjectTestHelper.InitializeForTests();
@@ -102,7 +102,7 @@ public void TearDown()
 			}
 			if (_tempFolder != null)
 			{
-				_tempFolder.Delete();
+				_tempFolder.Dispose();
 			}
 			WeSayProjectTestHelper.CleanupForTests();
 		}
diff --git a/src/LexicalTools.Tests/RelationControllerTests.cs b/src/LexicalTools.Tests/RelationControllerTests.cs
index 928a6ef48..4fefda39a 100644
--- a/src/LexicalTools.Tests/RelationControllerTests.cs
+++ b/src/LexicalTools.Tests/RelationControllerTests.cs
@@ -78,7 +78,7 @@ public void Setup()
 		public void Teardown()
 		{
 			_lexEntryRepository?.Dispose();
-			_tempFolder?.Delete();
+			_tempFolder?.Dispose();
 			_tempFile?.Dispose();
 			WeSayProjectTestHelper.CleanupForTests();
 		}
diff --git a/src/LexicalTools/AddMissingInfo/MissingInfoControl.cs b/src/LexicalTools/AddMissingInfo/MissingInfoControl.cs
index 5c858722f..09cae18cb 100644
--- a/src/LexicalTools/AddMissingInfo/MissingInfoControl.cs
+++ b/src/LexicalTools/AddMissingInfo/MissingInfoControl.cs
@@ -21,6 +21,12 @@ public partial class MissingInfoControl : UserControl
 	{
 		private readonly List<RecordToken<LexEntry>> _completedRecords;
 		private readonly List<RecordToken<LexEntry>> _todoRecords;
+		public object TodoRecordsListBoxSelectedItem => _todoRecordsListBox.SelectedItem;
+
+		public bool CompletedRecordsListBoxDataSourceContains(object o) =>
+			_completedRecordsListBox.DataSource.Contains(o);
+		public bool TodoRecordsListBoxDataSourceContains(object o) =>
+			_todoRecordsListBox.DataSource.Contains(o);
 		private RecordToken<LexEntry> _currentRecord;
 		private RecordToken<LexEntry> _previousRecord;
 		private RecordToken<LexEntry> _nextRecord;
diff --git a/src/LexicalTools/Dashboard/Dash.cs b/src/LexicalTools/Dashboard/Dash.cs
index c0fb51269..5fec1e019 100644
--- a/src/LexicalTools/Dashboard/Dash.cs
+++ b/src/LexicalTools/Dashboard/Dash.cs
@@ -319,7 +319,7 @@ private List<Size> SmallestPossibleButtonSizes
 			}
 		}
 
-		internal static List<Size> ComputeSmallestPossibleButtonSizes(
+		public static List<Size> ComputeSmallestPossibleButtonSizes(
 			IEnumerable<IEnumerable<Size>> possibleSizesOfButtons)
 		{
 			List<Size> result = new List<Size>();
@@ -462,7 +462,7 @@ private void SetBestButtonSize()
 									  availableSpaceForButtons.Width / (_bestButtonSize.Width + _buttonMargin.Horizontal));
 		}
 
-		internal static Size ComputeBestButtonSize(List<Size> smallestPossibleSizes,
+		public static Size ComputeBestButtonSize(List<Size> smallestPossibleSizes,
 												   Size availableSpaceForButtons,
 												   IEnumerable<int> buttonsPerGroup)
 		{
diff --git a/src/LexicalTools/GatherBySemanticDomains/GatherBySemanticDomainTask.cs b/src/LexicalTools/GatherBySemanticDomains/GatherBySemanticDomainTask.cs
index a14a2946c..a24abcc90 100644
--- a/src/LexicalTools/GatherBySemanticDomains/GatherBySemanticDomainTask.cs
+++ b/src/LexicalTools/GatherBySemanticDomains/GatherBySemanticDomainTask.cs
@@ -25,8 +25,8 @@ namespace WeSay.LexicalTools.GatherBySemanticDomains
 	public class GatherBySemanticDomainTask : WordGatheringTaskBase
 	{
 		public ViewTemplate ViewTemplate { get; set; }
-		internal const string DomainIndexTaskMemoryKey = "DomainIndex";
-		internal const string QuestionIndexTaskMemoryKey = "QuestionIndex";
+		public const string DomainIndexTaskMemoryKey = "DomainIndex";
+		public const string QuestionIndexTaskMemoryKey = "QuestionIndex";
 		private readonly string _semanticDomainQuestionsFileName;
 		private GatherBySemanticDomainsControl _gatherControl;
 		private Dictionary<string, List<string>> _domainQuestions;

From 5e1a48d0f89952752591e86ac9e0ba97bbaa8757 Mon Sep 17 00:00:00 2001
From: Kevin Hahn <hahn.kev@gmail.com>
Date: Thu, 4 Apr 2024 22:45:28 -0700
Subject: [PATCH 09/29] build and run WeSay.ConfigTool.Tests.csproj

---
 .../FieldDetailControlTests.cs                |  4 +--
 .../WeSay.ConfigTool.Tests.csproj             | 35 +++++++++++++++++++
 src/WeSay.ConfigTool/FieldDetailControl.cs    |  3 ++
 .../InterfaceLanguageControl.cs               |  2 +-
 4 files changed, 41 insertions(+), 3 deletions(-)

diff --git a/src/WeSay.ConfigTool.Tests/FieldDetailControlTests.cs b/src/WeSay.ConfigTool.Tests/FieldDetailControlTests.cs
index dc32551e0..2d9e964e4 100644
--- a/src/WeSay.ConfigTool.Tests/FieldDetailControlTests.cs
+++ b/src/WeSay.ConfigTool.Tests/FieldDetailControlTests.cs
@@ -46,7 +46,7 @@ public void DescriptionChangedEvent_FieldDescriptionSetBeforeEvent()
 			_field.Description = "original description";
 			_control.DescriptionOfFieldChanged +=
 					delegate { descriptionOfFieldInEvent = _field.Description; };
-			_control._description.Text = "new description";
+			_control.TestingSetDescriptionText("new description");
 			Assert.AreEqual("new description", descriptionOfFieldInEvent);
 		}
 
@@ -54,7 +54,7 @@ public void DescriptionChangedEvent_FieldDescriptionSetBeforeEvent()
 		public void IsSpellingEnabled_FieldPersistedOnChange()
 		{
 			bool newIsSpellCheckingEnabled = !_field.IsSpellCheckingEnabled;
-			_control._enableSpelling.Checked = newIsSpellCheckingEnabled;
+			_control.TestingSetEnableSpelling(newIsSpellCheckingEnabled);
 			Assert.AreEqual(newIsSpellCheckingEnabled, _field.IsSpellCheckingEnabled);
 		}
 	}
diff --git a/src/WeSay.ConfigTool.Tests/WeSay.ConfigTool.Tests.csproj b/src/WeSay.ConfigTool.Tests/WeSay.ConfigTool.Tests.csproj
index ef284443b..b2dbce7c7 100644
--- a/src/WeSay.ConfigTool.Tests/WeSay.ConfigTool.Tests.csproj
+++ b/src/WeSay.ConfigTool.Tests/WeSay.ConfigTool.Tests.csproj
@@ -50,9 +50,44 @@
   <ItemGroup>
     <Service Include="{82A7F48D-3B50-4B1E-B82E-3ADA8210C358}" />
   </ItemGroup>
+  <ItemGroup>
+    <PackageReference Include="SIL.Windows.Forms" Version="13.0.1" GeneratePathProperty="true"/>
+    <Reference Include="SIL.Windows.Forms">
+      <HintPath>$(PkgSIL_Windows_Forms)\lib\net461\SIL.Windows.Forms.dll</HintPath>
+    </Reference>
+    <PackageReference Include="SIL.Windows.Forms.Keyboarding" Version="13.0.1" GeneratePathProperty="true"/>
+    <Reference Include="SIL.Windows.Forms.Keyboarding">
+      <HintPath>$(PkgSIL_Windows_Forms_Keyboarding)\lib\net461\SIL.Windows.Forms.Keyboarding.dll</HintPath>
+    </Reference>
+    <Reference Include="Keyman10Interop, Version=10.0.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
+      <SpecificVersion>False</SpecificVersion>
+      <EmbedInteropTypes>True</EmbedInteropTypes>
+      <HintPath>$(PkgSIL_Windows_Forms_Keyboarding)\build\Keyman10Interop.dll</HintPath>
+    </Reference>
+    <Reference Include="Keyman7Interop, Version=1.4.0.0, Culture=neutral, PublicKeyToken=cab3c8c5232dfcf2, processorArchitecture=MSIL">
+      <SpecificVersion>False</SpecificVersion>
+      <EmbedInteropTypes>True</EmbedInteropTypes>
+      <HintPath>$(PkgSIL_Windows_Forms_Keyboarding)\build\Keyman7Interop.dll</HintPath>
+    </Reference>
+    <Reference Include="KeymanLinkl">
+      <SpecificVersion>False</SpecificVersion>
+      <HintPath>$(PkgSIL_Windows_Forms_Keyboarding)\KeymanLink.dll</HintPath>
+    </Reference>
+
+    <PackageReference Include="SIL.Windows.Forms.WritingSystems" Version="13.0.1" GeneratePathProperty="true"/>
+    <Reference Include="SIL.Windows.Forms.WritingSystems">
+      <HintPath>$(PkgSIL_Windows_Forms_WritingSystems)\lib\net461\SIL.Windows.Forms.WritingSystems.dll</HintPath>
+    </Reference>
+
+    <PackageReference Include="SIL.Core.Desktop" Version="13.0.1" GeneratePathProperty="true"/>
+    <Reference Include="SIL.Core.Desktop">
+      <HintPath>$(PkgSIL_Core_Desktop)\lib\net461\SIL.Core.Desktop.dll</HintPath>
+    </Reference>
+  </ItemGroup>
   <ItemGroup>
     <PackageReference Include="icu.net" Version="2.8.1" />
     <PackageReference Include="Microsoft.DotNet.PlatformAbstractions" Version="2.0.4" />
+    <PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.8.0"/>
     <PackageReference Include="NDesk.DBus" Version="0.15.0" />
     <PackageReference Include="NUnit" Version="3.13.3" />
     <PackageReference Include="RelaxNG" Version="3.2.3" />
diff --git a/src/WeSay.ConfigTool/FieldDetailControl.cs b/src/WeSay.ConfigTool/FieldDetailControl.cs
index 19342b76c..53b1f4b4c 100644
--- a/src/WeSay.ConfigTool/FieldDetailControl.cs
+++ b/src/WeSay.ConfigTool/FieldDetailControl.cs
@@ -55,6 +55,9 @@ private static bool IsEnchantInstalled()
 			return enchantInstalled;
 		}
 
+		public void TestingSetDescriptionText(string text) => _description.Text = text;
+		public void TestingSetEnableSpelling(bool value) => _enableSpelling.Checked = value;
+
 		public Field CurrentField
 		{
 			set
diff --git a/src/WeSay.ConfigTool/InterfaceLanguageControl.cs b/src/WeSay.ConfigTool/InterfaceLanguageControl.cs
index 8c16206a8..102ce8bb8 100644
--- a/src/WeSay.ConfigTool/InterfaceLanguageControl.cs
+++ b/src/WeSay.ConfigTool/InterfaceLanguageControl.cs
@@ -60,7 +60,7 @@ private void LoadPoFilesIntoCombo(string directory)
 			}
 		}
 
-		internal class PoProxy
+		public class PoProxy
 		{
 			public string LanguageCode { get; protected set; }
 			protected string LanguageName { private get; set; }

From 4cf7e39ab7bd1f8e7b5c259141f7560a7eb50820 Mon Sep 17 00:00:00 2001
From: Kevin Hahn <hahn.kev@gmail.com>
Date: Thu, 4 Apr 2024 22:50:34 -0700
Subject: [PATCH 10/29] build and test Addin.Transform.Tests.csproj

---
 src/Addin.Transform.Tests/Addin.Transform.Tests.csproj | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/src/Addin.Transform.Tests/Addin.Transform.Tests.csproj b/src/Addin.Transform.Tests/Addin.Transform.Tests.csproj
index 4c71a4a22..4b48b0d96 100644
--- a/src/Addin.Transform.Tests/Addin.Transform.Tests.csproj
+++ b/src/Addin.Transform.Tests/Addin.Transform.Tests.csproj
@@ -32,6 +32,12 @@
   <PropertyGroup>
     <AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
   </PropertyGroup>
+  <ItemGroup>
+    <PackageReference Include="SIL.Windows.Forms" Version="13.0.1" GeneratePathProperty="true"/>
+    <Reference Include="SIL.Windows.Forms">
+      <HintPath>$(PkgSIL_Windows_Forms)\lib\net461\SIL.Windows.Forms.dll</HintPath>
+    </Reference>
+  </ItemGroup>
   <ItemGroup>
     <ProjectReference Include="..\Addin.Transform\Addin.Transform.csproj" />
     <ProjectReference Include="..\LexicalModel.Tests\LexicalModel.Tests.csproj" />
@@ -66,6 +72,7 @@
     <PackageReference Include="icu.net" Version="2.8.1" />
     <PackageReference Include="JetBrains.Annotations" Version="2021.2.0" />
     <PackageReference Include="Microsoft.DotNet.PlatformAbstractions" Version="2.0.4" />
+    <PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.8.0"/>
     <PackageReference Include="NDesk.DBus" Version="0.15.0" />
     <PackageReference Include="NUnit" Version="3.13.3" />
     <PackageReference Include="RelaxNG" Version="3.2.3" />

From 33ab301f9e24f958a26084d067e2dcd87bfe0723 Mon Sep 17 00:00:00 2001
From: Kevin Hahn <hahn.kev@gmail.com>
Date: Thu, 4 Apr 2024 22:51:38 -0700
Subject: [PATCH 11/29] build Addin.Backup.Tests.csproj

---
 src/Addin.Backup.Tests/Addin.Backup.Tests.csproj | 1 +
 1 file changed, 1 insertion(+)

diff --git a/src/Addin.Backup.Tests/Addin.Backup.Tests.csproj b/src/Addin.Backup.Tests/Addin.Backup.Tests.csproj
index 34a900025..29cd568cb 100755
--- a/src/Addin.Backup.Tests/Addin.Backup.Tests.csproj
+++ b/src/Addin.Backup.Tests/Addin.Backup.Tests.csproj
@@ -45,6 +45,7 @@
     <PackageReference Include="Geckofx60.64" Version="60.0.55" />
     <PackageReference Include="icu.net" Version="2.8.1" />
     <PackageReference Include="Microsoft.DotNet.PlatformAbstractions" Version="2.0.4" />
+    <PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.8.0"/>
     <PackageReference Include="NUnit" Version="3.13.3" />
     <PackageReference Include="SharpZipLib" Version="1.4.2" />
     <PackageReference Include="SIL.Core" Version="13.0.1" />

From 02346259343a460cdfe909b62bae49ea7d1e4821 Mon Sep 17 00:00:00 2001
From: Kevin Hahn <hahn.kev@gmail.com>
Date: Thu, 4 Apr 2024 22:53:06 -0700
Subject: [PATCH 12/29] build LifWord2Json

---
 src/WeSay.Project.Tests/ProjectDirectorySetupForTesting.cs | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/src/WeSay.Project.Tests/ProjectDirectorySetupForTesting.cs b/src/WeSay.Project.Tests/ProjectDirectorySetupForTesting.cs
index 660b9385b..19c7a5888 100644
--- a/src/WeSay.Project.Tests/ProjectDirectorySetupForTesting.cs
+++ b/src/WeSay.Project.Tests/ProjectDirectorySetupForTesting.cs
@@ -125,7 +125,8 @@ protected void VerifyNotDisposed()
 
 		#endregion
 
-		public WeSayWordsProject CreateLoadedProject(IProgressNotificationProvider progressProvider = null)
+		public WeSayWordsProject CreateLoadedProject() => CreateLoadedProject(null);
+		public WeSayWordsProject CreateLoadedProject(IProgressNotificationProvider progressProvider)
 		{
 
 			var p = new WeSayWordsProject();

From 3b3ff063e4a4129f8cfe3fa4e40c77f00855f3a5 Mon Sep 17 00:00:00 2001
From: Kevin Hahn <hahn.kev@gmail.com>
Date: Thu, 4 Apr 2024 22:57:22 -0700
Subject: [PATCH 13/29] build WeSay.App.Tests.csproj

---
 src/WeSay.App.Tests/TabbedFormNavigationTests.cs | 6 +++++-
 src/WeSay.App.Tests/WeSay.App.Tests.csproj       | 7 +++++++
 2 files changed, 12 insertions(+), 1 deletion(-)

diff --git a/src/WeSay.App.Tests/TabbedFormNavigationTests.cs b/src/WeSay.App.Tests/TabbedFormNavigationTests.cs
index 77593bcc1..d2c41e4a8 100644
--- a/src/WeSay.App.Tests/TabbedFormNavigationTests.cs
+++ b/src/WeSay.App.Tests/TabbedFormNavigationTests.cs
@@ -19,10 +19,14 @@ public class TabbedFormNavigationTests
 		private MockTask _dashboardTask;
 		private bool _didRaiseInitializedEvent;
 
+		[OneTimeSetUp]
+		public void FixtureSetup()
+		{
+			Sldr.Initialize(true);
+		}
 		[SetUp]
 		public void Setup()
 		{
-			Sldr.Initialize(true);
 			string entriesXml =
 					@"<entry id='foo1'><lexical-unit><form lang='qaa'><text>fooOne</text></form></lexical-unit></entry>
 								<entry id='foo2'><lexical-unit><form lang='qaa'><text>fooTwo</text></form></lexical-unit></entry>
diff --git a/src/WeSay.App.Tests/WeSay.App.Tests.csproj b/src/WeSay.App.Tests/WeSay.App.Tests.csproj
index 37ab67b8d..ae74645ee 100644
--- a/src/WeSay.App.Tests/WeSay.App.Tests.csproj
+++ b/src/WeSay.App.Tests/WeSay.App.Tests.csproj
@@ -42,6 +42,12 @@
   <ItemGroup>
     <Folder Include="Services\" />
   </ItemGroup>
+  <ItemGroup>
+    <PackageReference Include="SIL.Windows.Forms" Version="13.0.1" GeneratePathProperty="true"/>
+    <Reference Include="SIL.Windows.Forms">
+      <HintPath>$(PkgSIL_Windows_Forms)\lib\net461\SIL.Windows.Forms.dll</HintPath>
+    </Reference>
+  </ItemGroup>
   <ItemGroup>
     <PackageReference Include="System.ComponentModel.Composition" Version="8.0.0" />
     <PackageReference Include="System.Management" Version="8.0.0" />
@@ -67,6 +73,7 @@
     <PackageReference Include="icu.net" Version="2.8.1" />
     <PackageReference Include="JetBrains.Annotations" Version="2021.2.0" />
     <PackageReference Include="Microsoft.DotNet.PlatformAbstractions" Version="2.0.4" />
+    <PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.8.0"/>
     <PackageReference Include="NDesk.DBus" Version="0.15.0" />
     <PackageReference Include="NUnit" Version="3.13.3" />
     <PackageReference Include="RelaxNG" Version="3.2.3" />

From 575b1b4ccc472c9303f87f95524ef17d72840986 Mon Sep 17 00:00:00 2001
From: Kevin Hahn <kevin_hahn@sil.org>
Date: Mon, 15 Apr 2024 11:53:50 -0700
Subject: [PATCH 14/29] update sil core desktop to new version which includes
 UsbDrive stuff

---
 src/Addin.Backup.Tests/Addin.Backup.Tests.csproj         | 2 +-
 src/Addin.Backup/Addin.Backup.csproj                     | 2 +-
 src/Addin.Transform.Tests/Addin.Transform.Tests.csproj   | 4 ++--
 src/Addin.Transform/Addin.Transform.csproj               | 2 +-
 src/LexicalModel.Tests/LexicalModel.Tests.csproj         | 4 ++--
 src/LexicalModel/LexicalModel.csproj                     | 2 +-
 src/LexicalTools.Tests/LexicalTools.Tests.csproj         | 2 +-
 src/LexicalTools/LexicalTools.csproj                     | 2 +-
 src/Lift2WeSay/SampleDataProcessor.csproj                | 2 +-
 src/LiftWordList2Json/LiftWordList2Json.csproj           | 4 ++--
 src/WeSay.App.Tests/WeSay.App.Tests.csproj               | 4 ++--
 src/WeSay.ConfigTool.Tests/WeSay.ConfigTool.Tests.csproj | 9 +++------
 src/WeSay.ConfigTool/WeSay.ConfigTool.csproj             | 7 ++-----
 src/WeSay.Data.Tests/WeSay.Data.Tests.csproj             | 2 +-
 src/WeSay.Data/WeSay.Data.csproj                         | 2 +-
 src/WeSay.Project.Tests/WeSay.Project.Tests.csproj       | 5 +++--
 src/WeSay.Project/WeSay.Project.csproj                   | 7 ++-----
 src/WeSay.TestUtilities/WeSay.TestUtilities.csproj       | 4 ++--
 src/WeSay.UI/WeSay.UI.csproj                             | 2 +-
 19 files changed, 30 insertions(+), 38 deletions(-)

diff --git a/src/Addin.Backup.Tests/Addin.Backup.Tests.csproj b/src/Addin.Backup.Tests/Addin.Backup.Tests.csproj
index 29cd568cb..d32a973de 100755
--- a/src/Addin.Backup.Tests/Addin.Backup.Tests.csproj
+++ b/src/Addin.Backup.Tests/Addin.Backup.Tests.csproj
@@ -48,7 +48,7 @@
     <PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.8.0"/>
     <PackageReference Include="NUnit" Version="3.13.3" />
     <PackageReference Include="SharpZipLib" Version="1.4.2" />
-    <PackageReference Include="SIL.Core" Version="13.0.1" />
+    <PackageReference Include="SIL.Core" Version="14.0.1-beta0001"/>
     <PackageReference Include="SIL.TestUtilities" Version="13.0.1" />
     <PackageReference Include="SIL.WritingSystems" Version="13.0.1" />
     <PackageReference Include="Spart" Version="1.0.0" />
diff --git a/src/Addin.Backup/Addin.Backup.csproj b/src/Addin.Backup/Addin.Backup.csproj
index 3e352bb8e..4b5b895f3 100755
--- a/src/Addin.Backup/Addin.Backup.csproj
+++ b/src/Addin.Backup/Addin.Backup.csproj
@@ -55,7 +55,7 @@
     <PackageReference Include="SharpZipLib" Version="1.4.2" />
     <PackageReference Include="SIL.Chorus.LibChorus" Version="5.1.0" />
     <PackageReference Include="SIL.Chorus.Mercurial" Version="3.0.3.6" />
-    <PackageReference Include="SIL.Core" Version="13.0.1" />
+    <PackageReference Include="SIL.Core" Version="14.0.1-beta0001"/>
     <PackageReference Include="SIL.Lift" Version="13.0.1" />
     <PackageReference Include="SIL.WritingSystems" Version="13.0.1" />
     <PackageReference Include="Spart" Version="1.0.0" />
diff --git a/src/Addin.Transform.Tests/Addin.Transform.Tests.csproj b/src/Addin.Transform.Tests/Addin.Transform.Tests.csproj
index 4b48b0d96..e2bd7bca9 100644
--- a/src/Addin.Transform.Tests/Addin.Transform.Tests.csproj
+++ b/src/Addin.Transform.Tests/Addin.Transform.Tests.csproj
@@ -77,8 +77,8 @@
     <PackageReference Include="NUnit" Version="3.13.3" />
     <PackageReference Include="RelaxNG" Version="3.2.3" />
     <PackageReference Include="SharpZipLib" Version="1.4.2" />
-    <PackageReference Include="SIL.Core" Version="13.0.1" />
-    <PackageReference Include="SIL.Core.Desktop" Version="13.0.1" />
+    <PackageReference Include="SIL.Core" Version="14.0.1-beta0001"/>
+    <PackageReference Include="SIL.Core.Desktop" Version="14.0.1-beta0001"/>
     <PackageReference Include="SIL.Lift" Version="13.0.1" />
     <PackageReference Include="SIL.WritingSystems" Version="13.0.1" />
     <PackageReference Include="Spart" Version="1.0.0" />
diff --git a/src/Addin.Transform/Addin.Transform.csproj b/src/Addin.Transform/Addin.Transform.csproj
index 2aaf8a950..314583153 100755
--- a/src/Addin.Transform/Addin.Transform.csproj
+++ b/src/Addin.Transform/Addin.Transform.csproj
@@ -81,7 +81,7 @@
     <PackageReference Include="NDesk.DBus" Version="0.15.0" />
     <PackageReference Include="RelaxNG" Version="3.2.3" />
     <PackageReference Include="SharpZipLib" Version="1.4.2" />
-    <PackageReference Include="SIL.Core" Version="13.0.1" />
+    <PackageReference Include="SIL.Core" Version="14.0.1-beta0001"/>
     <PackageReference Include="SIL.Lexicon" Version="13.0.1" />
     <PackageReference Include="SIL.Lift" Version="13.0.1" />
     <PackageReference Include="SIL.WritingSystems" Version="13.0.1" />
diff --git a/src/LexicalModel.Tests/LexicalModel.Tests.csproj b/src/LexicalModel.Tests/LexicalModel.Tests.csproj
index 29b94eeae..7f36750b6 100755
--- a/src/LexicalModel.Tests/LexicalModel.Tests.csproj
+++ b/src/LexicalModel.Tests/LexicalModel.Tests.csproj
@@ -58,8 +58,8 @@
     <PackageReference Include="NetReflector" Version="1.1.2009" />
     <PackageReference Include="NUnit" Version="3.13.3" />
     <PackageReference Include="RelaxNG" Version="3.2.3" />
-    <PackageReference Include="SIL.Core" Version="13.0.1" />
-    <PackageReference Include="SIL.Core.Desktop" Version="13.0.1" />
+    <PackageReference Include="SIL.Core" Version="14.0.1-beta0001"/>
+    <PackageReference Include="SIL.Core.Desktop" Version="14.0.1-beta0001"/>
     <PackageReference Include="SIL.Lexicon" Version="13.0.1" />
     <PackageReference Include="SIL.Lift" Version="13.0.1" />
     <PackageReference Include="SIL.TestUtilities" Version="13.0.1" />
diff --git a/src/LexicalModel/LexicalModel.csproj b/src/LexicalModel/LexicalModel.csproj
index d137a6f4f..9181072c5 100755
--- a/src/LexicalModel/LexicalModel.csproj
+++ b/src/LexicalModel/LexicalModel.csproj
@@ -39,7 +39,7 @@
     <PackageReference Include="RelaxNG" Version="3.2.3" />
     <PackageReference Include="SIL.Chorus.LibChorus" Version="5.1.0" />
     <PackageReference Include="SIL.Chorus.Mercurial" Version="3.0.3.6" />
-    <PackageReference Include="SIL.Core" Version="13.0.1" />
+    <PackageReference Include="SIL.Core" Version="14.0.1-beta0001" />
     <PackageReference Include="SIL.DictionaryServices" Version="13.0.1" />
     <PackageReference Include="SIL.Lift" Version="13.0.1" />
     <PackageReference Include="SIL.WritingSystems" Version="13.0.1" />
diff --git a/src/LexicalTools.Tests/LexicalTools.Tests.csproj b/src/LexicalTools.Tests/LexicalTools.Tests.csproj
index 661d48444..eb222acf1 100755
--- a/src/LexicalTools.Tests/LexicalTools.Tests.csproj
+++ b/src/LexicalTools.Tests/LexicalTools.Tests.csproj
@@ -91,7 +91,7 @@
     <PackageReference Include="RelaxNG" Version="3.2.3" />
     <PackageReference Include="SIL.Chorus.LibChorus" Version="5.1.0" />
     <PackageReference Include="SIL.Chorus.Mercurial" Version="3.0.3.6" />
-    <PackageReference Include="SIL.Core" Version="13.0.1" />
+    <PackageReference Include="SIL.Core" Version="14.0.1-beta0001"/>
     <PackageReference Include="SIL.Lift" Version="13.0.1" />
     <PackageReference Include="SIL.TestUtilities" Version="13.0.1" />
     <PackageReference Include="SIL.WritingSystems" Version="13.0.1" />
diff --git a/src/LexicalTools/LexicalTools.csproj b/src/LexicalTools/LexicalTools.csproj
index 175a24f3c..c6afd2e24 100755
--- a/src/LexicalTools/LexicalTools.csproj
+++ b/src/LexicalTools/LexicalTools.csproj
@@ -113,7 +113,7 @@
     <PackageReference Include="Mono.Addins" Version="1.4.1" />
     <PackageReference Include="NDesk.DBus" Version="0.15.0" />
     <PackageReference Include="RelaxNG" Version="3.2.3" />
-    <PackageReference Include="SIL.Core" Version="13.0.1" />
+    <PackageReference Include="SIL.Core" Version="14.0.1-beta0001"/>
     <PackageReference Include="SIL.Lift" Version="13.0.1" />
     <PackageReference Include="SIL.WritingSystems" Version="13.0.1" />
     <PackageReference Include="Spart" Version="1.0.0" />
diff --git a/src/Lift2WeSay/SampleDataProcessor.csproj b/src/Lift2WeSay/SampleDataProcessor.csproj
index b9621457a..d06499dbd 100755
--- a/src/Lift2WeSay/SampleDataProcessor.csproj
+++ b/src/Lift2WeSay/SampleDataProcessor.csproj
@@ -55,7 +55,7 @@
     <PackageReference Include="JetBrains.Annotations" Version="2021.2.0" />
     <PackageReference Include="Microsoft.DotNet.PlatformAbstractions" Version="2.0.4" />
     <PackageReference Include="NDesk.DBus" Version="0.15.0" />
-    <PackageReference Include="SIL.Core" Version="13.0.1" />
+    <PackageReference Include="SIL.Core" Version="14.0.1-beta0001"/>
     <PackageReference Include="SIL.WritingSystems" Version="13.0.1" />
     <PackageReference Include="Spart" Version="1.0.0" />
   </ItemGroup>
diff --git a/src/LiftWordList2Json/LiftWordList2Json.csproj b/src/LiftWordList2Json/LiftWordList2Json.csproj
index 9d54383bb..08c25b816 100644
--- a/src/LiftWordList2Json/LiftWordList2Json.csproj
+++ b/src/LiftWordList2Json/LiftWordList2Json.csproj
@@ -61,8 +61,8 @@
     <PackageReference Include="Microsoft.DotNet.PlatformAbstractions" Version="2.0.4" />
     <PackageReference Include="NDesk.DBus" Version="0.15.0" />
     <PackageReference Include="RelaxNG" Version="3.2.3" />
-    <PackageReference Include="SIL.Core" Version="13.0.1" />
-    <PackageReference Include="SIL.Core.Desktop" Version="13.0.1" />
+    <PackageReference Include="SIL.Core" Version="14.0.1-beta0001"/>
+    <PackageReference Include="SIL.Core.Desktop" Version="14.0.1-beta0001"/>
     <PackageReference Include="SIL.Lift" Version="13.0.1" />
     <PackageReference Include="SIL.WritingSystems" Version="13.0.1" />
     <PackageReference Include="Spart" Version="1.0.0" />
diff --git a/src/WeSay.App.Tests/WeSay.App.Tests.csproj b/src/WeSay.App.Tests/WeSay.App.Tests.csproj
index ae74645ee..3b2a58451 100644
--- a/src/WeSay.App.Tests/WeSay.App.Tests.csproj
+++ b/src/WeSay.App.Tests/WeSay.App.Tests.csproj
@@ -77,8 +77,8 @@
     <PackageReference Include="NDesk.DBus" Version="0.15.0" />
     <PackageReference Include="NUnit" Version="3.13.3" />
     <PackageReference Include="RelaxNG" Version="3.2.3" />
-    <PackageReference Include="SIL.Core" Version="13.0.1" />
-    <PackageReference Include="SIL.Core.Desktop" Version="13.0.1" />
+    <PackageReference Include="SIL.Core" Version="14.0.1-beta0001"/>
+    <PackageReference Include="SIL.Core.Desktop" Version="14.0.1-beta0001"/>
     <PackageReference Include="SIL.Lift" Version="13.0.1" />
     <PackageReference Include="SIL.WritingSystems" Version="13.0.1" />
     <PackageReference Include="Spart" Version="1.0.0" />
diff --git a/src/WeSay.ConfigTool.Tests/WeSay.ConfigTool.Tests.csproj b/src/WeSay.ConfigTool.Tests/WeSay.ConfigTool.Tests.csproj
index b2dbce7c7..952c18740 100644
--- a/src/WeSay.ConfigTool.Tests/WeSay.ConfigTool.Tests.csproj
+++ b/src/WeSay.ConfigTool.Tests/WeSay.ConfigTool.Tests.csproj
@@ -79,10 +79,7 @@
       <HintPath>$(PkgSIL_Windows_Forms_WritingSystems)\lib\net461\SIL.Windows.Forms.WritingSystems.dll</HintPath>
     </Reference>
 
-    <PackageReference Include="SIL.Core.Desktop" Version="13.0.1" GeneratePathProperty="true"/>
-    <Reference Include="SIL.Core.Desktop">
-      <HintPath>$(PkgSIL_Core_Desktop)\lib\net461\SIL.Core.Desktop.dll</HintPath>
-    </Reference>
+    <PackageReference Include="SIL.Core.Desktop" Version="14.0.1-beta0001"/>
   </ItemGroup>
   <ItemGroup>
     <PackageReference Include="icu.net" Version="2.8.1" />
@@ -91,8 +88,8 @@
     <PackageReference Include="NDesk.DBus" Version="0.15.0" />
     <PackageReference Include="NUnit" Version="3.13.3" />
     <PackageReference Include="RelaxNG" Version="3.2.3" />
-    <PackageReference Include="SIL.Core" Version="13.0.1" />
-    <PackageReference Include="SIL.Core.Desktop" Version="13.0.1" />
+    <PackageReference Include="SIL.Core" Version="14.0.1-beta0001"/>
+    <PackageReference Include="SIL.Core.Desktop" Version="14.0.1-beta0001"/>
     <PackageReference Include="SIL.Lift" Version="13.0.1" />
     <PackageReference Include="SIL.WritingSystems" Version="13.0.1" />
     <PackageReference Include="Spart" Version="1.0.0" />
diff --git a/src/WeSay.ConfigTool/WeSay.ConfigTool.csproj b/src/WeSay.ConfigTool/WeSay.ConfigTool.csproj
index 35571f140..1b6b85302 100755
--- a/src/WeSay.ConfigTool/WeSay.ConfigTool.csproj
+++ b/src/WeSay.ConfigTool/WeSay.ConfigTool.csproj
@@ -158,10 +158,7 @@
       <HintPath>$(PkgSIL_Windows_Forms_WritingSystems)\lib\net461\SIL.Windows.Forms.WritingSystems.dll</HintPath>
     </Reference>
 
-    <PackageReference Include="SIL.Core.Desktop" Version="13.0.1" GeneratePathProperty="true"/>
-    <Reference Include="SIL.Core.Desktop">
-      <HintPath>$(PkgSIL_Core_Desktop)\lib\net461\SIL.Core.Desktop.dll</HintPath>
-    </Reference>
+    <PackageReference Include="SIL.Core.Desktop" Version="14.0.1-beta0001"/>
   </ItemGroup>
   <ItemGroup>
     <PackageReference Include="Autofac" Version="4.9.4" />
@@ -183,7 +180,7 @@
     <PackageReference Include="RelaxNG" Version="3.2.3" />
     <PackageReference Include="SharpZipLib" Version="1.4.2" />
     <PackageReference Include="SIL.Chorus.Mercurial" Version="3.0.3.6" />
-    <PackageReference Include="SIL.Core" Version="13.0.1" />
+    <PackageReference Include="SIL.Core" Version="14.0.1-beta0001"/>
     <PackageReference Include="SIL.Lexicon" Version="13.0.1" />
     <PackageReference Include="SIL.Lift" Version="13.0.1" />
     <PackageReference Include="SIL.WritingSystems" Version="13.0.1" />
diff --git a/src/WeSay.Data.Tests/WeSay.Data.Tests.csproj b/src/WeSay.Data.Tests/WeSay.Data.Tests.csproj
index 9e3d8b6b0..31cf172d6 100644
--- a/src/WeSay.Data.Tests/WeSay.Data.Tests.csproj
+++ b/src/WeSay.Data.Tests/WeSay.Data.Tests.csproj
@@ -48,7 +48,7 @@
     <PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.8.0"/>
     <PackageReference Include="Mono.Posix" Version="5.4.0.201"/>
     <PackageReference Include="NUnit" Version="3.13.3" />
-    <PackageReference Include="SIL.Core" Version="13.0.1" />
+    <PackageReference Include="SIL.Core" Version="14.0.1-beta0001"/>
     <PackageReference Include="SIL.TestUtilities" Version="13.0.1" />
     <PackageReference Include="SIL.WritingSystems" Version="13.0.1" />
     <PackageReference Include="Spart" Version="1.0.0" />
diff --git a/src/WeSay.Data/WeSay.Data.csproj b/src/WeSay.Data/WeSay.Data.csproj
index 3dcad95d0..50878c149 100755
--- a/src/WeSay.Data/WeSay.Data.csproj
+++ b/src/WeSay.Data/WeSay.Data.csproj
@@ -48,7 +48,7 @@
   </PropertyGroup>
   <ItemGroup>
     <PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
-    <PackageReference Include="SIL.Core.Desktop" Version="13.0.1" GeneratePathProperty="true"/>
+    <PackageReference Include="SIL.Core.Desktop" Version="14.0.1-beta0001" GeneratePathProperty="true" />
     <Reference Include="SIL.Core.Desktop">
       <HintPath>$(PkgSIL_Core_Desktop)\lib\net461\SIL.Core.Desktop.dll</HintPath>
     </Reference>
diff --git a/src/WeSay.Project.Tests/WeSay.Project.Tests.csproj b/src/WeSay.Project.Tests/WeSay.Project.Tests.csproj
index 8a1a97d11..f6563384b 100755
--- a/src/WeSay.Project.Tests/WeSay.Project.Tests.csproj
+++ b/src/WeSay.Project.Tests/WeSay.Project.Tests.csproj
@@ -51,11 +51,12 @@
     <Reference Include="SIL.WritingSystems.Tests">
       <HintPath>$(PkgSIL_WritingSystems_Tests)\lib\net461\SIL.WritingSystems.Tests.dll</HintPath>
     </Reference>
-    
+
     <PackageReference Include="SIL.Windows.Forms" Version="13.0.1" GeneratePathProperty="true"/>
     <Reference Include="SIL.Windows.Forms">
       <HintPath>$(PkgSIL_Windows_Forms)\lib\net461\SIL.Windows.Forms.dll</HintPath>
     </Reference>
+    <PackageReference Include="SIL.Core.Desktop" Version="14.0.1-beta0001"/>
 
   </ItemGroup>
   <ItemGroup>
@@ -72,7 +73,7 @@
     <PackageReference Include="RelaxNG" Version="3.2.3" />
     <PackageReference Include="SIL.Chorus.LibChorus" Version="5.1.0" />
     <PackageReference Include="SIL.Chorus.Mercurial" Version="3.0.3.6" />
-    <PackageReference Include="SIL.Core" Version="13.0.1" />
+    <PackageReference Include="SIL.Core" Version="14.0.1-beta0001"/>
     <PackageReference Include="SIL.Lexicon" Version="13.0.1" />
     <PackageReference Include="SIL.Lift" Version="13.0.1" />
     <PackageReference Include="SIL.TestUtilities" Version="13.0.1" />
diff --git a/src/WeSay.Project/WeSay.Project.csproj b/src/WeSay.Project/WeSay.Project.csproj
index 2025bf6e9..d342adef5 100755
--- a/src/WeSay.Project/WeSay.Project.csproj
+++ b/src/WeSay.Project/WeSay.Project.csproj
@@ -79,10 +79,7 @@
       <Private>False</Private>
       <HintPath>$(PkgSIL_Windows_Forms)\lib\net461\SIL.Windows.Forms.dll</HintPath>
     </Reference>
-    <PackageReference Include="SIL.Core.Desktop" Version="13.0.1" GeneratePathProperty="true"/>
-    <Reference Include="SIL.Core.Desktop">
-      <HintPath>$(PkgSIL_Core_Desktop)\lib\net461\SIL.Core.Desktop.dll</HintPath>
-    </Reference>
+    <PackageReference Include="SIL.Core.Desktop" Version="14.0.1-beta0001"/>
   </ItemGroup>
   <ItemGroup>
     <PackageReference Include="Autofac" Version="4.9.4" />
@@ -96,7 +93,7 @@
     <PackageReference Include="RelaxNG" Version="3.2.3" />
     <PackageReference Include="SIL.Chorus.LibChorus" Version="5.1.0" />
     <PackageReference Include="SIL.Chorus.Mercurial" Version="3.0.3.6" />
-    <PackageReference Include="SIL.Core" Version="13.0.1" />
+    <PackageReference Include="SIL.Core" Version="14.0.1-beta0001"/>
     <PackageReference Include="SIL.Lexicon" Version="13.0.1" />
     <PackageReference Include="SIL.Lift" Version="13.0.1" />
     <PackageReference Include="SIL.WritingSystems" Version="13.0.1" />
diff --git a/src/WeSay.TestUtilities/WeSay.TestUtilities.csproj b/src/WeSay.TestUtilities/WeSay.TestUtilities.csproj
index 7e2b11be7..4e62f8991 100755
--- a/src/WeSay.TestUtilities/WeSay.TestUtilities.csproj
+++ b/src/WeSay.TestUtilities/WeSay.TestUtilities.csproj
@@ -34,6 +34,7 @@
     <Reference Include="SIL.Windows.Forms">
       <HintPath>$(PkgSIL_Windows_Forms)\lib\net461\SIL.Windows.Forms.dll</HintPath>
     </Reference>
+    <PackageReference Include="SIL.Core.Desktop" Version="14.0.1-beta0001"/>
   </ItemGroup>
   <ItemGroup>
     <PackageReference Include="System.Data.DataSetExtensions" Version="4.5.0" />
@@ -56,8 +57,7 @@
     <PackageReference Include="JetBrains.Annotations" Version="2021.2.0" />
     <PackageReference Include="Microsoft.DotNet.PlatformAbstractions" Version="2.0.4" />
     <PackageReference Include="NDesk.DBus" Version="0.15.0" />
-    <PackageReference Include="SIL.Core" Version="13.0.1" />
-    <PackageReference Include="SIL.Core.Desktop" Version="13.0.1" />
+    <PackageReference Include="SIL.Core" Version="14.0.1-beta0001"/>
     <PackageReference Include="SIL.WritingSystems" Version="13.0.1" />
     <PackageReference Include="Spart" Version="1.0.0" />
   </ItemGroup>
diff --git a/src/WeSay.UI/WeSay.UI.csproj b/src/WeSay.UI/WeSay.UI.csproj
index 3ba78a1dc..9fd4ae889 100755
--- a/src/WeSay.UI/WeSay.UI.csproj
+++ b/src/WeSay.UI/WeSay.UI.csproj
@@ -151,7 +151,7 @@
     <PackageReference Include="NDesk.DBus" Version="0.15.0" />
     <PackageReference Include="NetReflector" Version="1.1.2009" />
     <PackageReference Include="RelaxNG" Version="3.2.3" />
-    <PackageReference Include="SIL.Core" Version="13.0.1" />
+    <PackageReference Include="SIL.Core" Version="14.0.1-beta0001" />
     <PackageReference Include="SIL.Lift" Version="13.0.1" />
     <PackageReference Include="SIL.WritingSystems" Version="13.0.1" />
     <PackageReference Include="Spart" Version="1.0.0" />

From 623ebeb41311cb74a786587238ef4778ff151cee Mon Sep 17 00:00:00 2001
From: Kevin Hahn <kevin_hahn@sil.org>
Date: Mon, 15 Apr 2024 12:09:06 -0700
Subject: [PATCH 15/29] cleanup sldr once in fixture teardown

---
 src/WeSay.App.Tests/TabbedFormNavigationTests.cs | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/src/WeSay.App.Tests/TabbedFormNavigationTests.cs b/src/WeSay.App.Tests/TabbedFormNavigationTests.cs
index d2c41e4a8..b2e39006d 100644
--- a/src/WeSay.App.Tests/TabbedFormNavigationTests.cs
+++ b/src/WeSay.App.Tests/TabbedFormNavigationTests.cs
@@ -49,6 +49,11 @@ public void TearDown()
 		{
 			_tabbedForm.Dispose();
 			_projectDirectory.Dispose();
+		}
+
+		[OneTimeTearDown]
+		public void FixtureTeardown()
+		{
 			Sldr.Cleanup();
 		}
 

From 5984d827f08a3cfce78bcf23fda20375af795e55 Mon Sep 17 00:00:00 2001
From: Kevin Hahn <kevin_hahn@sil.org>
Date: Tue, 16 Apr 2024 08:44:03 -0700
Subject: [PATCH 16/29] update workflow and WeSay.proj file to point to updated
 sln location

---
 .github/workflows/PR.yml | 10 +++++-----
 build/WeSay.proj         |  8 ++++----
 2 files changed, 9 insertions(+), 9 deletions(-)

diff --git a/.github/workflows/PR.yml b/.github/workflows/PR.yml
index 1d9d7df2d..02a590823 100644
--- a/.github/workflows/PR.yml
+++ b/.github/workflows/PR.yml
@@ -35,21 +35,21 @@ jobs:
 
     # Run the unit tests
     - name: Restore
-      run: nuget restore src/WeSay.sln
+      run: nuget restore WeSay.sln
 
     - name: Build
       env:
         ACTIONS_ALLOW_UNSECURE_COMMANDS: true # So gitversion can set environment vars during the build
-      run: msbuild src/WeSay.sln
+      run: msbuild WeSay.sln
 
     - name: Prepare to Test
       run: msbuild build/WeSay.proj /t:RestoreBuildTasks
-      
+
     - name: Test
       env:
         ACTIONS_ALLOW_UNSECURE_COMMANDS: true # So testing files and folders can be created
       run: msbuild build/WeSay.proj /t:TestOnly /p:Configuration=Debug /p:Platform="x86" /p:CI=true /v:diag
-        
+
     - name: Test Report
       uses: jasonleenaylor/nunit-reporter@63ab85dd5da111c3f4ef95f2fb73bbe667f58db9
       if: always()
@@ -57,4 +57,4 @@ jobs:
         path: output/**/TestResults.xml
         access-token: ${{ secrets.GITHUB_TOKEN }}
         reportTitle: "Test Results (${{ matrix.os }})"
-        numFailures: 
\ No newline at end of file
+        numFailures:
\ No newline at end of file
diff --git a/build/WeSay.proj b/build/WeSay.proj
index 4b4e6b40e..ececc74cc 100644
--- a/build/WeSay.proj
+++ b/build/WeSay.proj
@@ -46,7 +46,7 @@
 		]]></Code>
 		</Task>
 	</UsingTask>
-  
+
 	<Import Project="NuGet.targets"/>
 
 	<Target Name="RestoreBuildTasks" DependsOnTargets="CheckPrerequisites">
@@ -66,10 +66,10 @@
 	</ItemGroup>
 
 	<Target Name="Build">
-		<MSBuild Projects="$(RootDir)/src/WeSay.sln"
+		<MSBuild Projects="$(RootDir)/WeSay.sln"
 			Properties="Configuration=$(Configuration);RootDir=$(RootDir);Platform=$(Platform)" />
 	</Target>
-	
+
 	<Target Name="Test" DependsOnTargets="Build">
 		<CallTarget Targets="TestOnly" Condition="!$(RestartBuild)" />
 		<MSBuild Projects="$(MSBuildProjectFullPath)" Targets="TestOnly"
@@ -86,7 +86,7 @@
 			<Output PropertyName="ExcludeArgument" TaskParameter="ExcludeArg" />
 		</BuildExcludeString>
 		<Message Text="Exclude Arg = $(ExcludeArgument)" />
-		<Exec Command="$(RootDir)/packages/NUnit.ConsoleRunner/tools/nunit3-console @(TestAssemblies->'%(Filename)%(Extension)', ' ')  &quot;--result:$(RootDir)/output/$(Configuration)/TestResults.xml;format=nunit3&quot; --labels=Before --x86 --agents=1 $(ExcludeArgument)" 
+		<Exec Command="$(RootDir)/packages/NUnit.ConsoleRunner/tools/nunit3-console @(TestAssemblies->'%(Filename)%(Extension)', ' ')  &quot;--result:$(RootDir)/output/$(Configuration)/TestResults.xml;format=nunit3&quot; --labels=Before --x86 --agents=1 $(ExcludeArgument)"
 			WorkingDirectory="$(RootDir)/output/$(Configuration)" />
 	</Target>
 </Project>

From 6fee149edf773a983dd3b28ef629af19ac31c59a Mon Sep 17 00:00:00 2001
From: Kevin Hahn <kevin_hahn@sil.org>
Date: Tue, 16 Apr 2024 08:49:31 -0700
Subject: [PATCH 17/29] install dotnet 8 instead of 5

---
 .github/workflows/Installer.yml | 11 +++++------
 .github/workflows/PR.yml        |  7 +++----
 2 files changed, 8 insertions(+), 10 deletions(-)

diff --git a/.github/workflows/Installer.yml b/.github/workflows/Installer.yml
index cf2e66b49..81a7862c7 100644
--- a/.github/workflows/Installer.yml
+++ b/.github/workflows/Installer.yml
@@ -21,11 +21,10 @@ jobs:
         submodules: recursive
         fetch-depth: 0
 
-    # Install the .NET Core workload
-    - name: Install .NET Core
-      uses: actions/setup-dotnet@v1
+    - name: Install .NET
+      uses: actions/setup-dotnet@v4
       with:
-        dotnet-version: 5.0.x
+        dotnet-version: 8.0.x
 
     # Add  MSBuild to the PATH: https://github.com/microsoft/setup-msbuild
     - name: Setup MSBuild.exe (Windows OS)
@@ -42,10 +41,10 @@ jobs:
       env:
         ACTIONS_ALLOW_UNSECURE_COMMANDS: true # So gitversion can set environment vars during the build
       run: msbuild src/WeSay.sln /p:Configuration=Release
-        
+
     - name: Build Installer
       run: msbuild build/Installer.targets /p:Configuration=Release /p:Platform=x86 /t:BuildRelease
-      
+
     - name: Publish Installer
       uses: actions/upload-artifact@v2
       with:
diff --git a/.github/workflows/PR.yml b/.github/workflows/PR.yml
index 02a590823..334d66007 100644
--- a/.github/workflows/PR.yml
+++ b/.github/workflows/PR.yml
@@ -20,11 +20,10 @@ jobs:
       with:
         fetch-depth: 0
 
-    # Install the .NET Core workload
-    - name: Install .NET Core
-      uses: actions/setup-dotnet@v1
+    - name: Install .NET
+      uses: actions/setup-dotnet@v4
       with:
-        dotnet-version: 5.0.x
+        dotnet-version: 8.0.x
 
     # Add  MSBuild to the PATH: https://github.com/microsoft/setup-msbuild
     - name: Setup MSBuild.exe (Windows OS)

From 7d37ba8e0d78c60f319b9b90bdbc11ce8b79150b Mon Sep 17 00:00:00 2001
From: Kevin Hahn <kevin_hahn@sil.org>
Date: Tue, 16 Apr 2024 08:52:37 -0700
Subject: [PATCH 18/29] use latest windows

---
 .github/workflows/Installer.yml | 3 +--
 .github/workflows/PR.yml        | 3 +--
 2 files changed, 2 insertions(+), 4 deletions(-)

diff --git a/.github/workflows/Installer.yml b/.github/workflows/Installer.yml
index 81a7862c7..2562a4b1f 100644
--- a/.github/workflows/Installer.yml
+++ b/.github/workflows/Installer.yml
@@ -11,7 +11,7 @@ jobs:
     strategy:
       fail-fast: true
       matrix:
-        os: [windows-2019]
+        os: [windows-latest]
     runs-on: ${{ matrix.os }}
 
     steps:
@@ -31,7 +31,6 @@ jobs:
       uses: microsoft/setup-msbuild@v1.0.2
       env:
         ACTIONS_ALLOW_UNSECURE_COMMANDS: true # So the PATH can be set by this step
-      if: ${{ matrix.os == 'windows-2019' }}
 
     # Run the unit tests
     - name: Restore
diff --git a/.github/workflows/PR.yml b/.github/workflows/PR.yml
index 334d66007..9bcd31c42 100644
--- a/.github/workflows/PR.yml
+++ b/.github/workflows/PR.yml
@@ -11,7 +11,7 @@ jobs:
     strategy:
       fail-fast: false
       matrix:
-        os: [windows-2019]
+        os: [windows-latest]
     runs-on: ${{ matrix.os }}
 
     steps:
@@ -30,7 +30,6 @@ jobs:
       uses: microsoft/setup-msbuild@v1.0.2
       env:
         ACTIONS_ALLOW_UNSECURE_COMMANDS: true # So the PATH can be set by this step
-      if: ${{ matrix.os == 'windows-2019' }}
 
     # Run the unit tests
     - name: Restore

From 5fbc075cc4a3ec05a9dc171f68006ec37413b928 Mon Sep 17 00:00:00 2001
From: Kevin Hahn <kevin_hahn@sil.org>
Date: Tue, 16 Apr 2024 09:36:55 -0700
Subject: [PATCH 19/29] include mono workaround for net5+, use FileHelper as
 Grep replacement

---
 src/WeSay.App/TabbedForm.cs            | 4 ++--
 src/WeSay.Project/WeSayWordsProject.cs | 4 +---
 2 files changed, 3 insertions(+), 5 deletions(-)

diff --git a/src/WeSay.App/TabbedForm.cs b/src/WeSay.App/TabbedForm.cs
index 42b34f65b..3b32c3c7b 100644
--- a/src/WeSay.App/TabbedForm.cs
+++ b/src/WeSay.App/TabbedForm.cs
@@ -145,8 +145,8 @@ public void GoToUrl(string url)
 				if (page.Tag is ITaskForExternalNavigateToEntry)
 				{
 					tabControl1.SelectedTab = page;
-#if __MonoCS__    //For some reason .net fires this event if TabPages.Clear has been used. Mono does not.
-					if(!tabControl1.IsHandleCreated)
+#if (__MonoCS__ || NET5_0_OR_GREATER)    //For some reason .net fires this event if TabPages.Clear has been used. Mono does not.
+					if (!tabControl1.IsHandleCreated)
 					{
 						OnTabSelected(tabControl1, new TabControlEventArgs (tabControl1.SelectedTab, tabControl1.SelectedIndex, TabControlAction.Selected));
 					}
diff --git a/src/WeSay.Project/WeSayWordsProject.cs b/src/WeSay.Project/WeSayWordsProject.cs
index 9e24c571b..0ec2fe9bd 100644
--- a/src/WeSay.Project/WeSayWordsProject.cs
+++ b/src/WeSay.Project/WeSayWordsProject.cs
@@ -1921,9 +1921,7 @@ public bool IsWritingSystemUsedInLiftFile(string id)
 				return false;
 			}
 			string regex = string.Format("lang\\s*=\\s*[\"']{0}[\"']", Regex.Escape(id));
-			throw new NotImplementedException();
-			//todo find grep here
-			// return FileUtils.GrepFile(PathToLiftFile, regex);
+			return FileHelper.Grep(PathToLiftFile, regex);
 		}
 
 		/// <summary>

From 0fb8193674160b1b7078dea86a07376b149e989d Mon Sep 17 00:00:00 2001
From: Kevin Hahn <kevin_hahn@sil.org>
Date: Tue, 16 Apr 2024 09:37:08 -0700
Subject: [PATCH 20/29] add Nunit3 Test adapter

---
 src/Addin.Backup.Tests/Addin.Backup.Tests.csproj  |  5 +++--
 .../Addin.Transform.Tests.csproj                  |  9 +++++----
 src/LexicalModel.Tests/LexicalModel.Tests.csproj  |  9 +++++----
 src/LexicalTools.Tests/LexicalTools.Tests.csproj  |  9 +++++----
 .../WeSay.AddinLib.Tests.csproj                   |  1 +
 src/WeSay.App.Tests/WeSay.App.Tests.csproj        | 11 ++++++-----
 .../WeSay.ConfigTool.Tests.csproj                 | 15 ++++++++-------
 src/WeSay.Data.Tests/WeSay.Data.Tests.csproj      |  9 +++++----
 .../WeSay.Project.Tests.csproj                    | 11 ++++++-----
 src/WeSay.UI.Tests/WeSay.UI.Tests.csproj          |  3 ++-
 10 files changed, 46 insertions(+), 36 deletions(-)

diff --git a/src/Addin.Backup.Tests/Addin.Backup.Tests.csproj b/src/Addin.Backup.Tests/Addin.Backup.Tests.csproj
index d32a973de..590854f2d 100755
--- a/src/Addin.Backup.Tests/Addin.Backup.Tests.csproj
+++ b/src/Addin.Backup.Tests/Addin.Backup.Tests.csproj
@@ -45,10 +45,11 @@
     <PackageReference Include="Geckofx60.64" Version="60.0.55" />
     <PackageReference Include="icu.net" Version="2.8.1" />
     <PackageReference Include="Microsoft.DotNet.PlatformAbstractions" Version="2.0.4" />
-    <PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.8.0"/>
+    <PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.8.0" />
     <PackageReference Include="NUnit" Version="3.13.3" />
+    <PackageReference Include="NUnit3TestAdapter" Version="4.5.0" />
     <PackageReference Include="SharpZipLib" Version="1.4.2" />
-    <PackageReference Include="SIL.Core" Version="14.0.1-beta0001"/>
+    <PackageReference Include="SIL.Core" Version="14.0.1-beta0001" />
     <PackageReference Include="SIL.TestUtilities" Version="13.0.1" />
     <PackageReference Include="SIL.WritingSystems" Version="13.0.1" />
     <PackageReference Include="Spart" Version="1.0.0" />
diff --git a/src/Addin.Transform.Tests/Addin.Transform.Tests.csproj b/src/Addin.Transform.Tests/Addin.Transform.Tests.csproj
index e2bd7bca9..b97999805 100644
--- a/src/Addin.Transform.Tests/Addin.Transform.Tests.csproj
+++ b/src/Addin.Transform.Tests/Addin.Transform.Tests.csproj
@@ -33,7 +33,8 @@
     <AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
   </PropertyGroup>
   <ItemGroup>
-    <PackageReference Include="SIL.Windows.Forms" Version="13.0.1" GeneratePathProperty="true"/>
+    <PackageReference Include="NUnit3TestAdapter" Version="4.5.0" />
+    <PackageReference Include="SIL.Windows.Forms" Version="13.0.1" GeneratePathProperty="true" />
     <Reference Include="SIL.Windows.Forms">
       <HintPath>$(PkgSIL_Windows_Forms)\lib\net461\SIL.Windows.Forms.dll</HintPath>
     </Reference>
@@ -72,13 +73,13 @@
     <PackageReference Include="icu.net" Version="2.8.1" />
     <PackageReference Include="JetBrains.Annotations" Version="2021.2.0" />
     <PackageReference Include="Microsoft.DotNet.PlatformAbstractions" Version="2.0.4" />
-    <PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.8.0"/>
+    <PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.8.0" />
     <PackageReference Include="NDesk.DBus" Version="0.15.0" />
     <PackageReference Include="NUnit" Version="3.13.3" />
     <PackageReference Include="RelaxNG" Version="3.2.3" />
     <PackageReference Include="SharpZipLib" Version="1.4.2" />
-    <PackageReference Include="SIL.Core" Version="14.0.1-beta0001"/>
-    <PackageReference Include="SIL.Core.Desktop" Version="14.0.1-beta0001"/>
+    <PackageReference Include="SIL.Core" Version="14.0.1-beta0001" />
+    <PackageReference Include="SIL.Core.Desktop" Version="14.0.1-beta0001" />
     <PackageReference Include="SIL.Lift" Version="13.0.1" />
     <PackageReference Include="SIL.WritingSystems" Version="13.0.1" />
     <PackageReference Include="Spart" Version="1.0.0" />
diff --git a/src/LexicalModel.Tests/LexicalModel.Tests.csproj b/src/LexicalModel.Tests/LexicalModel.Tests.csproj
index 7f36750b6..444905bc9 100755
--- a/src/LexicalModel.Tests/LexicalModel.Tests.csproj
+++ b/src/LexicalModel.Tests/LexicalModel.Tests.csproj
@@ -44,7 +44,8 @@
     <None Include="icu4c.readme.txt" />
   </ItemGroup>
   <ItemGroup>
-    <PackageReference Include="SIL.Core.Tests" Version="13.0.1" GeneratePathProperty="true"/>
+    <PackageReference Include="NUnit3TestAdapter" Version="4.5.0" />
+    <PackageReference Include="SIL.Core.Tests" Version="13.0.1" GeneratePathProperty="true" />
     <Reference Include="SIL.Core.Tests">
       <HintPath>$(PkgSIL_Core_Tests)\lib\net461\SIL.Core.Tests.dll</HintPath>
     </Reference>
@@ -58,8 +59,8 @@
     <PackageReference Include="NetReflector" Version="1.1.2009" />
     <PackageReference Include="NUnit" Version="3.13.3" />
     <PackageReference Include="RelaxNG" Version="3.2.3" />
-    <PackageReference Include="SIL.Core" Version="14.0.1-beta0001"/>
-    <PackageReference Include="SIL.Core.Desktop" Version="14.0.1-beta0001"/>
+    <PackageReference Include="SIL.Core" Version="14.0.1-beta0001" />
+    <PackageReference Include="SIL.Core.Desktop" Version="14.0.1-beta0001" />
     <PackageReference Include="SIL.Lexicon" Version="13.0.1" />
     <PackageReference Include="SIL.Lift" Version="13.0.1" />
     <PackageReference Include="SIL.TestUtilities" Version="13.0.1" />
@@ -68,7 +69,7 @@
     <PackageReference Include="System.Management" Version="8.0.0" />
     <PackageReference Include="Microsoft.AspNetCore.SystemWebAdapters" Version="1.3.0" />
     <PackageReference Include="Microsoft.Extensions.DependencyModel" Version="8.0.0" />
-    <PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.8.0"/>
+    <PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.8.0" />
     <PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
     <PackageReference Include="System.Security.AccessControl" Version="6.0.0" />
     <PackageReference Include="System.Configuration.ConfigurationManager" Version="8.0.0" />
diff --git a/src/LexicalTools.Tests/LexicalTools.Tests.csproj b/src/LexicalTools.Tests/LexicalTools.Tests.csproj
index eb222acf1..f9e55b574 100755
--- a/src/LexicalTools.Tests/LexicalTools.Tests.csproj
+++ b/src/LexicalTools.Tests/LexicalTools.Tests.csproj
@@ -45,12 +45,13 @@
   </ItemGroup>
   <ItemGroup>
     <PackageReference Include="Microsoft.VisualBasic" Version="10.3.0" />
+    <PackageReference Include="NUnit3TestAdapter" Version="4.5.0" />
     <PackageReference Include="System.ComponentModel.Composition" Version="8.0.0" />
     <PackageReference Include="System.Management" Version="8.0.0" />
     <PackageReference Include="Microsoft.AspNetCore.SystemWebAdapters" Version="1.3.0" />
     <PackageReference Include="Microsoft.Bcl.AsyncInterfaces" Version="8.0.0" />
     <PackageReference Include="Microsoft.Extensions.DependencyModel" Version="8.0.0" />
-    <PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.8.0"/>
+    <PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.8.0" />
     <PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
     <PackageReference Include="System.Runtime.CompilerServices.Unsafe" Version="6.0.0" />
     <PackageReference Include="System.Security.AccessControl" Version="6.0.0" />
@@ -69,11 +70,11 @@
     <None Include="icu4c.readme.txt" />
   </ItemGroup>
   <ItemGroup>
-    <PackageReference Include="SIL.Windows.Forms" Version="13.0.1" GeneratePathProperty="true"/>
+    <PackageReference Include="SIL.Windows.Forms" Version="13.0.1" GeneratePathProperty="true" />
     <Reference Include="SIL.Windows.Forms">
       <HintPath>$(PkgSIL_Windows_Forms)\lib\net461\SIL.Windows.Forms.dll</HintPath>
     </Reference>
-    <PackageReference Include="SIL.Windows.Forms.Keyboarding" Version="13.0.1" GeneratePathProperty="true"/>
+    <PackageReference Include="SIL.Windows.Forms.Keyboarding" Version="13.0.1" GeneratePathProperty="true" />
     <Reference Include="SIL.Windows.Forms.Keyboarding">
       <HintPath>$(PkgSIL_Windows_Forms_Keyboarding)\lib\net461\SIL.Windows.Forms.Keyboarding.dll</HintPath>
     </Reference>
@@ -91,7 +92,7 @@
     <PackageReference Include="RelaxNG" Version="3.2.3" />
     <PackageReference Include="SIL.Chorus.LibChorus" Version="5.1.0" />
     <PackageReference Include="SIL.Chorus.Mercurial" Version="3.0.3.6" />
-    <PackageReference Include="SIL.Core" Version="14.0.1-beta0001"/>
+    <PackageReference Include="SIL.Core" Version="14.0.1-beta0001" />
     <PackageReference Include="SIL.Lift" Version="13.0.1" />
     <PackageReference Include="SIL.TestUtilities" Version="13.0.1" />
     <PackageReference Include="SIL.WritingSystems" Version="13.0.1" />
diff --git a/src/WeSay.AddinLib.Tests/WeSay.AddinLib.Tests.csproj b/src/WeSay.AddinLib.Tests/WeSay.AddinLib.Tests.csproj
index 49ca7bab7..99123931e 100644
--- a/src/WeSay.AddinLib.Tests/WeSay.AddinLib.Tests.csproj
+++ b/src/WeSay.AddinLib.Tests/WeSay.AddinLib.Tests.csproj
@@ -42,6 +42,7 @@
   <ItemGroup>
     <PackageReference Include="NUnit" Version="3.13.3" />
     <PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
+    <PackageReference Include="NUnit3TestAdapter" Version="4.5.0" />
   </ItemGroup>
   <ItemGroup>
     <Compile Remove="Program.cs" />
diff --git a/src/WeSay.App.Tests/WeSay.App.Tests.csproj b/src/WeSay.App.Tests/WeSay.App.Tests.csproj
index 3b2a58451..64cda2da0 100644
--- a/src/WeSay.App.Tests/WeSay.App.Tests.csproj
+++ b/src/WeSay.App.Tests/WeSay.App.Tests.csproj
@@ -1,4 +1,4 @@
-<Project Sdk="Microsoft.NET.Sdk">
+<Project Sdk="Microsoft.NET.Sdk">
   <PropertyGroup>
     <TargetFramework>net8.0-windows</TargetFramework>
     <OutputType>Library</OutputType>
@@ -43,7 +43,8 @@
     <Folder Include="Services\" />
   </ItemGroup>
   <ItemGroup>
-    <PackageReference Include="SIL.Windows.Forms" Version="13.0.1" GeneratePathProperty="true"/>
+    <PackageReference Include="NUnit3TestAdapter" Version="4.5.0" />
+    <PackageReference Include="SIL.Windows.Forms" Version="13.0.1" GeneratePathProperty="true" />
     <Reference Include="SIL.Windows.Forms">
       <HintPath>$(PkgSIL_Windows_Forms)\lib\net461\SIL.Windows.Forms.dll</HintPath>
     </Reference>
@@ -73,12 +74,12 @@
     <PackageReference Include="icu.net" Version="2.8.1" />
     <PackageReference Include="JetBrains.Annotations" Version="2021.2.0" />
     <PackageReference Include="Microsoft.DotNet.PlatformAbstractions" Version="2.0.4" />
-    <PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.8.0"/>
+    <PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.8.0" />
     <PackageReference Include="NDesk.DBus" Version="0.15.0" />
     <PackageReference Include="NUnit" Version="3.13.3" />
     <PackageReference Include="RelaxNG" Version="3.2.3" />
-    <PackageReference Include="SIL.Core" Version="14.0.1-beta0001"/>
-    <PackageReference Include="SIL.Core.Desktop" Version="14.0.1-beta0001"/>
+    <PackageReference Include="SIL.Core" Version="14.0.1-beta0001" />
+    <PackageReference Include="SIL.Core.Desktop" Version="14.0.1-beta0001" />
     <PackageReference Include="SIL.Lift" Version="13.0.1" />
     <PackageReference Include="SIL.WritingSystems" Version="13.0.1" />
     <PackageReference Include="Spart" Version="1.0.0" />
diff --git a/src/WeSay.ConfigTool.Tests/WeSay.ConfigTool.Tests.csproj b/src/WeSay.ConfigTool.Tests/WeSay.ConfigTool.Tests.csproj
index 952c18740..3d665c3f7 100644
--- a/src/WeSay.ConfigTool.Tests/WeSay.ConfigTool.Tests.csproj
+++ b/src/WeSay.ConfigTool.Tests/WeSay.ConfigTool.Tests.csproj
@@ -40,6 +40,7 @@
     <ProjectReference Include="..\WeSay.TestUtilities\WeSay.TestUtilities.csproj" />
   </ItemGroup>
   <ItemGroup>
+    <PackageReference Include="NUnit3TestAdapter" Version="4.5.0" />
     <PackageReference Include="System.Management" Version="8.0.0" />
     <PackageReference Include="Microsoft.AspNetCore.SystemWebAdapters" Version="1.3.0" />
     <PackageReference Include="Microsoft.Extensions.DependencyModel" Version="8.0.0" />
@@ -51,11 +52,11 @@
     <Service Include="{82A7F48D-3B50-4B1E-B82E-3ADA8210C358}" />
   </ItemGroup>
   <ItemGroup>
-    <PackageReference Include="SIL.Windows.Forms" Version="13.0.1" GeneratePathProperty="true"/>
+    <PackageReference Include="SIL.Windows.Forms" Version="13.0.1" GeneratePathProperty="true" />
     <Reference Include="SIL.Windows.Forms">
       <HintPath>$(PkgSIL_Windows_Forms)\lib\net461\SIL.Windows.Forms.dll</HintPath>
     </Reference>
-    <PackageReference Include="SIL.Windows.Forms.Keyboarding" Version="13.0.1" GeneratePathProperty="true"/>
+    <PackageReference Include="SIL.Windows.Forms.Keyboarding" Version="13.0.1" GeneratePathProperty="true" />
     <Reference Include="SIL.Windows.Forms.Keyboarding">
       <HintPath>$(PkgSIL_Windows_Forms_Keyboarding)\lib\net461\SIL.Windows.Forms.Keyboarding.dll</HintPath>
     </Reference>
@@ -74,22 +75,22 @@
       <HintPath>$(PkgSIL_Windows_Forms_Keyboarding)\KeymanLink.dll</HintPath>
     </Reference>
 
-    <PackageReference Include="SIL.Windows.Forms.WritingSystems" Version="13.0.1" GeneratePathProperty="true"/>
+    <PackageReference Include="SIL.Windows.Forms.WritingSystems" Version="13.0.1" GeneratePathProperty="true" />
     <Reference Include="SIL.Windows.Forms.WritingSystems">
       <HintPath>$(PkgSIL_Windows_Forms_WritingSystems)\lib\net461\SIL.Windows.Forms.WritingSystems.dll</HintPath>
     </Reference>
 
-    <PackageReference Include="SIL.Core.Desktop" Version="14.0.1-beta0001"/>
+    <PackageReference Include="SIL.Core.Desktop" Version="14.0.1-beta0001" />
   </ItemGroup>
   <ItemGroup>
     <PackageReference Include="icu.net" Version="2.8.1" />
     <PackageReference Include="Microsoft.DotNet.PlatformAbstractions" Version="2.0.4" />
-    <PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.8.0"/>
+    <PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.8.0" />
     <PackageReference Include="NDesk.DBus" Version="0.15.0" />
     <PackageReference Include="NUnit" Version="3.13.3" />
     <PackageReference Include="RelaxNG" Version="3.2.3" />
-    <PackageReference Include="SIL.Core" Version="14.0.1-beta0001"/>
-    <PackageReference Include="SIL.Core.Desktop" Version="14.0.1-beta0001"/>
+    <PackageReference Include="SIL.Core" Version="14.0.1-beta0001" />
+    <PackageReference Include="SIL.Core.Desktop" Version="14.0.1-beta0001" />
     <PackageReference Include="SIL.Lift" Version="13.0.1" />
     <PackageReference Include="SIL.WritingSystems" Version="13.0.1" />
     <PackageReference Include="Spart" Version="1.0.0" />
diff --git a/src/WeSay.Data.Tests/WeSay.Data.Tests.csproj b/src/WeSay.Data.Tests/WeSay.Data.Tests.csproj
index 31cf172d6..123874fc6 100644
--- a/src/WeSay.Data.Tests/WeSay.Data.Tests.csproj
+++ b/src/WeSay.Data.Tests/WeSay.Data.Tests.csproj
@@ -37,7 +37,8 @@
     <Service Include="{82A7F48D-3B50-4B1E-B82E-3ADA8210C358}" />
   </ItemGroup>
   <ItemGroup>
-    <PackageReference Include="SIL.Core.Tests" Version="13.0.1" GeneratePathProperty="true"/>
+    <PackageReference Include="NUnit3TestAdapter" Version="4.5.0" />
+    <PackageReference Include="SIL.Core.Tests" Version="13.0.1" GeneratePathProperty="true" />
     <Reference Include="SIL.Core.Tests">
       <HintPath>$(PkgSIL_Core_Tests)\lib\net461\SIL.Core.Tests.dll</HintPath>
     </Reference>
@@ -45,10 +46,10 @@
   <ItemGroup>
     <PackageReference Include="icu.net" Version="2.8.1" />
     <PackageReference Include="Microsoft.DotNet.PlatformAbstractions" Version="2.0.4" />
-    <PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.8.0"/>
-    <PackageReference Include="Mono.Posix" Version="5.4.0.201"/>
+    <PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.8.0" />
+    <PackageReference Include="Mono.Posix" Version="5.4.0.201" />
     <PackageReference Include="NUnit" Version="3.13.3" />
-    <PackageReference Include="SIL.Core" Version="14.0.1-beta0001"/>
+    <PackageReference Include="SIL.Core" Version="14.0.1-beta0001" />
     <PackageReference Include="SIL.TestUtilities" Version="13.0.1" />
     <PackageReference Include="SIL.WritingSystems" Version="13.0.1" />
     <PackageReference Include="Spart" Version="1.0.0" />
diff --git a/src/WeSay.Project.Tests/WeSay.Project.Tests.csproj b/src/WeSay.Project.Tests/WeSay.Project.Tests.csproj
index f6563384b..9dda5a938 100755
--- a/src/WeSay.Project.Tests/WeSay.Project.Tests.csproj
+++ b/src/WeSay.Project.Tests/WeSay.Project.Tests.csproj
@@ -47,16 +47,17 @@
     <Service Include="{82A7F48D-3B50-4B1E-B82E-3ADA8210C358}" />
   </ItemGroup>
   <ItemGroup>
-    <PackageReference Include="SIL.WritingSystems.Tests" Version="13.0.1" GeneratePathProperty="true"/>
+    <PackageReference Include="NUnit3TestAdapter" Version="4.5.0" />
+    <PackageReference Include="SIL.WritingSystems.Tests" Version="13.0.1" GeneratePathProperty="true" />
     <Reference Include="SIL.WritingSystems.Tests">
       <HintPath>$(PkgSIL_WritingSystems_Tests)\lib\net461\SIL.WritingSystems.Tests.dll</HintPath>
     </Reference>
 
-    <PackageReference Include="SIL.Windows.Forms" Version="13.0.1" GeneratePathProperty="true"/>
+    <PackageReference Include="SIL.Windows.Forms" Version="13.0.1" GeneratePathProperty="true" />
     <Reference Include="SIL.Windows.Forms">
       <HintPath>$(PkgSIL_Windows_Forms)\lib\net461\SIL.Windows.Forms.dll</HintPath>
     </Reference>
-    <PackageReference Include="SIL.Core.Desktop" Version="14.0.1-beta0001"/>
+    <PackageReference Include="SIL.Core.Desktop" Version="14.0.1-beta0001" />
 
   </ItemGroup>
   <ItemGroup>
@@ -65,7 +66,7 @@
     <PackageReference Include="Icu4c.Win.Min" Version="59.1.7" />
     <PackageReference Include="JetBrains.Annotations" Version="2021.2.0" />
     <PackageReference Include="Microsoft.DotNet.PlatformAbstractions" Version="2.0.4" />
-    <PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.8.0"/>
+    <PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.8.0" />
     <PackageReference Include="Mono.Posix" Version="5.4.0.201" />
     <PackageReference Include="NDesk.DBus" Version="0.15.0" />
     <PackageReference Include="NetReflector" Version="1.1.2009" />
@@ -73,7 +74,7 @@
     <PackageReference Include="RelaxNG" Version="3.2.3" />
     <PackageReference Include="SIL.Chorus.LibChorus" Version="5.1.0" />
     <PackageReference Include="SIL.Chorus.Mercurial" Version="3.0.3.6" />
-    <PackageReference Include="SIL.Core" Version="14.0.1-beta0001"/>
+    <PackageReference Include="SIL.Core" Version="14.0.1-beta0001" />
     <PackageReference Include="SIL.Lexicon" Version="13.0.1" />
     <PackageReference Include="SIL.Lift" Version="13.0.1" />
     <PackageReference Include="SIL.TestUtilities" Version="13.0.1" />
diff --git a/src/WeSay.UI.Tests/WeSay.UI.Tests.csproj b/src/WeSay.UI.Tests/WeSay.UI.Tests.csproj
index 53134f6d0..e03755691 100755
--- a/src/WeSay.UI.Tests/WeSay.UI.Tests.csproj
+++ b/src/WeSay.UI.Tests/WeSay.UI.Tests.csproj
@@ -48,6 +48,7 @@
   </ItemGroup>
   <ItemGroup>
     <PackageReference Include="NUnit" Version="3.13.3" />
-    <PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.8.0"/>
+    <PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.8.0" />
+    <PackageReference Include="NUnit3TestAdapter" Version="4.5.0" />
   </ItemGroup>
 </Project>
\ No newline at end of file

From 8fcf42bfc86fed40d7ff988008cd0b0bed4fde86 Mon Sep 17 00:00:00 2001
From: Kevin Hahn <kevin_hahn@sil.org>
Date: Tue, 16 Apr 2024 09:55:08 -0700
Subject: [PATCH 21/29] add github action logger for tests

---
 .github/workflows/PR.yml                      | 31 +++----------------
 .../Addin.Backup.Tests.csproj                 |  4 +++
 .../Addin.Transform.Tests.csproj              |  4 +++
 .../LexicalModel.Tests.csproj                 |  4 +++
 .../LexicalTools.Tests.csproj                 |  4 +++
 .../WeSay.AddinLib.Tests.csproj               |  4 +++
 src/WeSay.App.Tests/WeSay.App.Tests.csproj    |  4 +++
 .../WeSay.ConfigTool.Tests.csproj             |  4 +++
 src/WeSay.Data.Tests/WeSay.Data.Tests.csproj  |  4 +++
 .../WeSay.Project.Tests.csproj                |  4 +++
 src/WeSay.UI.Tests/WeSay.UI.Tests.csproj      |  4 +++
 11 files changed, 44 insertions(+), 27 deletions(-)

diff --git a/.github/workflows/PR.yml b/.github/workflows/PR.yml
index 9bcd31c42..15c8d0456 100644
--- a/.github/workflows/PR.yml
+++ b/.github/workflows/PR.yml
@@ -16,7 +16,7 @@ jobs:
 
     steps:
     - name: Checkout
-      uses: actions/checkout@v2.3.4
+      uses: actions/checkout@v4
       with:
         fetch-depth: 0
 
@@ -25,34 +25,11 @@ jobs:
       with:
         dotnet-version: 8.0.x
 
-    # Add  MSBuild to the PATH: https://github.com/microsoft/setup-msbuild
-    - name: Setup MSBuild.exe (Windows OS)
-      uses: microsoft/setup-msbuild@v1.0.2
-      env:
-        ACTIONS_ALLOW_UNSECURE_COMMANDS: true # So the PATH can be set by this step
-
     # Run the unit tests
     - name: Restore
-      run: nuget restore WeSay.sln
+      run: dotnet restore
 
     - name: Build
-      env:
-        ACTIONS_ALLOW_UNSECURE_COMMANDS: true # So gitversion can set environment vars during the build
-      run: msbuild WeSay.sln
-
-    - name: Prepare to Test
-      run: msbuild build/WeSay.proj /t:RestoreBuildTasks
-
+      run: dotnet build
     - name: Test
-      env:
-        ACTIONS_ALLOW_UNSECURE_COMMANDS: true # So testing files and folders can be created
-      run: msbuild build/WeSay.proj /t:TestOnly /p:Configuration=Debug /p:Platform="x86" /p:CI=true /v:diag
-
-    - name: Test Report
-      uses: jasonleenaylor/nunit-reporter@63ab85dd5da111c3f4ef95f2fb73bbe667f58db9
-      if: always()
-      with:
-        path: output/**/TestResults.xml
-        access-token: ${{ secrets.GITHUB_TOKEN }}
-        reportTitle: "Test Results (${{ matrix.os }})"
-        numFailures:
\ No newline at end of file
+      run: dotnet test --logger "GitHubActions;summary.includePassedTests=true;summary.includeSkippedTests=true" --RunConfiguration.CollectSourceInformation=true
\ No newline at end of file
diff --git a/src/Addin.Backup.Tests/Addin.Backup.Tests.csproj b/src/Addin.Backup.Tests/Addin.Backup.Tests.csproj
index 590854f2d..e827bb45e 100755
--- a/src/Addin.Backup.Tests/Addin.Backup.Tests.csproj
+++ b/src/Addin.Backup.Tests/Addin.Backup.Tests.csproj
@@ -43,6 +43,10 @@
   <ItemGroup>
     <PackageReference Include="Autofac" Version="4.9.4" />
     <PackageReference Include="Geckofx60.64" Version="60.0.55" />
+    <PackageReference Include="GitHubActionsTestLogger" Version="2.3.3">
+      <PrivateAssets>all</PrivateAssets>
+      <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
+    </PackageReference>
     <PackageReference Include="icu.net" Version="2.8.1" />
     <PackageReference Include="Microsoft.DotNet.PlatformAbstractions" Version="2.0.4" />
     <PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.8.0" />
diff --git a/src/Addin.Transform.Tests/Addin.Transform.Tests.csproj b/src/Addin.Transform.Tests/Addin.Transform.Tests.csproj
index b97999805..d1ca87b3b 100644
--- a/src/Addin.Transform.Tests/Addin.Transform.Tests.csproj
+++ b/src/Addin.Transform.Tests/Addin.Transform.Tests.csproj
@@ -33,6 +33,10 @@
     <AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
   </PropertyGroup>
   <ItemGroup>
+    <PackageReference Include="GitHubActionsTestLogger" Version="2.3.3">
+      <PrivateAssets>all</PrivateAssets>
+      <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
+    </PackageReference>
     <PackageReference Include="NUnit3TestAdapter" Version="4.5.0" />
     <PackageReference Include="SIL.Windows.Forms" Version="13.0.1" GeneratePathProperty="true" />
     <Reference Include="SIL.Windows.Forms">
diff --git a/src/LexicalModel.Tests/LexicalModel.Tests.csproj b/src/LexicalModel.Tests/LexicalModel.Tests.csproj
index 444905bc9..647a14101 100755
--- a/src/LexicalModel.Tests/LexicalModel.Tests.csproj
+++ b/src/LexicalModel.Tests/LexicalModel.Tests.csproj
@@ -44,6 +44,10 @@
     <None Include="icu4c.readme.txt" />
   </ItemGroup>
   <ItemGroup>
+    <PackageReference Include="GitHubActionsTestLogger" Version="2.3.3">
+      <PrivateAssets>all</PrivateAssets>
+      <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
+    </PackageReference>
     <PackageReference Include="NUnit3TestAdapter" Version="4.5.0" />
     <PackageReference Include="SIL.Core.Tests" Version="13.0.1" GeneratePathProperty="true" />
     <Reference Include="SIL.Core.Tests">
diff --git a/src/LexicalTools.Tests/LexicalTools.Tests.csproj b/src/LexicalTools.Tests/LexicalTools.Tests.csproj
index f9e55b574..40b1932c7 100755
--- a/src/LexicalTools.Tests/LexicalTools.Tests.csproj
+++ b/src/LexicalTools.Tests/LexicalTools.Tests.csproj
@@ -44,6 +44,10 @@
     <ProjectReference Include="..\WeSay.UI\WeSay.UI.csproj" />
   </ItemGroup>
   <ItemGroup>
+    <PackageReference Include="GitHubActionsTestLogger" Version="2.3.3">
+      <PrivateAssets>all</PrivateAssets>
+      <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
+    </PackageReference>
     <PackageReference Include="Microsoft.VisualBasic" Version="10.3.0" />
     <PackageReference Include="NUnit3TestAdapter" Version="4.5.0" />
     <PackageReference Include="System.ComponentModel.Composition" Version="8.0.0" />
diff --git a/src/WeSay.AddinLib.Tests/WeSay.AddinLib.Tests.csproj b/src/WeSay.AddinLib.Tests/WeSay.AddinLib.Tests.csproj
index 99123931e..a2b41948a 100644
--- a/src/WeSay.AddinLib.Tests/WeSay.AddinLib.Tests.csproj
+++ b/src/WeSay.AddinLib.Tests/WeSay.AddinLib.Tests.csproj
@@ -40,6 +40,10 @@
     <ProjectReference Include="..\WeSay.AddinLib\WeSay.AddinLib.csproj" />
   </ItemGroup>
   <ItemGroup>
+    <PackageReference Include="GitHubActionsTestLogger" Version="2.3.3">
+      <PrivateAssets>all</PrivateAssets>
+      <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
+    </PackageReference>
     <PackageReference Include="NUnit" Version="3.13.3" />
     <PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
     <PackageReference Include="NUnit3TestAdapter" Version="4.5.0" />
diff --git a/src/WeSay.App.Tests/WeSay.App.Tests.csproj b/src/WeSay.App.Tests/WeSay.App.Tests.csproj
index 64cda2da0..6e24533b1 100644
--- a/src/WeSay.App.Tests/WeSay.App.Tests.csproj
+++ b/src/WeSay.App.Tests/WeSay.App.Tests.csproj
@@ -43,6 +43,10 @@
     <Folder Include="Services\" />
   </ItemGroup>
   <ItemGroup>
+    <PackageReference Include="GitHubActionsTestLogger" Version="2.3.3">
+      <PrivateAssets>all</PrivateAssets>
+      <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
+    </PackageReference>
     <PackageReference Include="NUnit3TestAdapter" Version="4.5.0" />
     <PackageReference Include="SIL.Windows.Forms" Version="13.0.1" GeneratePathProperty="true" />
     <Reference Include="SIL.Windows.Forms">
diff --git a/src/WeSay.ConfigTool.Tests/WeSay.ConfigTool.Tests.csproj b/src/WeSay.ConfigTool.Tests/WeSay.ConfigTool.Tests.csproj
index 3d665c3f7..d38b7e91c 100644
--- a/src/WeSay.ConfigTool.Tests/WeSay.ConfigTool.Tests.csproj
+++ b/src/WeSay.ConfigTool.Tests/WeSay.ConfigTool.Tests.csproj
@@ -40,6 +40,10 @@
     <ProjectReference Include="..\WeSay.TestUtilities\WeSay.TestUtilities.csproj" />
   </ItemGroup>
   <ItemGroup>
+    <PackageReference Include="GitHubActionsTestLogger" Version="2.3.3">
+      <PrivateAssets>all</PrivateAssets>
+      <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
+    </PackageReference>
     <PackageReference Include="NUnit3TestAdapter" Version="4.5.0" />
     <PackageReference Include="System.Management" Version="8.0.0" />
     <PackageReference Include="Microsoft.AspNetCore.SystemWebAdapters" Version="1.3.0" />
diff --git a/src/WeSay.Data.Tests/WeSay.Data.Tests.csproj b/src/WeSay.Data.Tests/WeSay.Data.Tests.csproj
index 123874fc6..4e55202e0 100644
--- a/src/WeSay.Data.Tests/WeSay.Data.Tests.csproj
+++ b/src/WeSay.Data.Tests/WeSay.Data.Tests.csproj
@@ -37,6 +37,10 @@
     <Service Include="{82A7F48D-3B50-4B1E-B82E-3ADA8210C358}" />
   </ItemGroup>
   <ItemGroup>
+    <PackageReference Include="GitHubActionsTestLogger" Version="2.3.3">
+      <PrivateAssets>all</PrivateAssets>
+      <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
+    </PackageReference>
     <PackageReference Include="NUnit3TestAdapter" Version="4.5.0" />
     <PackageReference Include="SIL.Core.Tests" Version="13.0.1" GeneratePathProperty="true" />
     <Reference Include="SIL.Core.Tests">
diff --git a/src/WeSay.Project.Tests/WeSay.Project.Tests.csproj b/src/WeSay.Project.Tests/WeSay.Project.Tests.csproj
index 9dda5a938..1f6e51693 100755
--- a/src/WeSay.Project.Tests/WeSay.Project.Tests.csproj
+++ b/src/WeSay.Project.Tests/WeSay.Project.Tests.csproj
@@ -47,6 +47,10 @@
     <Service Include="{82A7F48D-3B50-4B1E-B82E-3ADA8210C358}" />
   </ItemGroup>
   <ItemGroup>
+    <PackageReference Include="GitHubActionsTestLogger" Version="2.3.3">
+      <PrivateAssets>all</PrivateAssets>
+      <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
+    </PackageReference>
     <PackageReference Include="NUnit3TestAdapter" Version="4.5.0" />
     <PackageReference Include="SIL.WritingSystems.Tests" Version="13.0.1" GeneratePathProperty="true" />
     <Reference Include="SIL.WritingSystems.Tests">
diff --git a/src/WeSay.UI.Tests/WeSay.UI.Tests.csproj b/src/WeSay.UI.Tests/WeSay.UI.Tests.csproj
index e03755691..a083cad9e 100755
--- a/src/WeSay.UI.Tests/WeSay.UI.Tests.csproj
+++ b/src/WeSay.UI.Tests/WeSay.UI.Tests.csproj
@@ -47,6 +47,10 @@
     <Service Include="{82A7F48D-3B50-4B1E-B82E-3ADA8210C358}" />
   </ItemGroup>
   <ItemGroup>
+    <PackageReference Include="GitHubActionsTestLogger" Version="2.3.3">
+      <PrivateAssets>all</PrivateAssets>
+      <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
+    </PackageReference>
     <PackageReference Include="NUnit" Version="3.13.3" />
     <PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.8.0" />
     <PackageReference Include="NUnit3TestAdapter" Version="4.5.0" />

From 8e028e4cbe11667fcf9e3808f3c7c9cbe11d12cd Mon Sep 17 00:00:00 2001
From: Kevin Hahn <kevin_hahn@sil.org>
Date: Tue, 16 Apr 2024 10:01:02 -0700
Subject: [PATCH 22/29] add space after -- for run config

---
 .github/workflows/PR.yml | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/.github/workflows/PR.yml b/.github/workflows/PR.yml
index 15c8d0456..f083bd3ae 100644
--- a/.github/workflows/PR.yml
+++ b/.github/workflows/PR.yml
@@ -32,4 +32,5 @@ jobs:
     - name: Build
       run: dotnet build
     - name: Test
-      run: dotnet test --logger "GitHubActions;summary.includePassedTests=true;summary.includeSkippedTests=true" --RunConfiguration.CollectSourceInformation=true
\ No newline at end of file
+      # space after -- before RunConfig is required
+      run: dotnet test --logger "GitHubActions;summary.includePassedTests=true;summary.includeSkippedTests=true" -- RunConfiguration.CollectSourceInformation=true
\ No newline at end of file

From e5af3b40b6e45b2c185c076d5f3fda7e59810df1 Mon Sep 17 00:00:00 2001
From: Kevin Hahn <kevin_hahn@sil.org>
Date: Tue, 16 Apr 2024 10:16:09 -0700
Subject: [PATCH 23/29] allow not calling dispose on
 ProjectDirectorySetupForTesting

---
 .../ProjectDirectorySetupForTesting.cs                 | 10 +++-------
 1 file changed, 3 insertions(+), 7 deletions(-)

diff --git a/src/WeSay.Project.Tests/ProjectDirectorySetupForTesting.cs b/src/WeSay.Project.Tests/ProjectDirectorySetupForTesting.cs
index 19c7a5888..0ea58a636 100644
--- a/src/WeSay.Project.Tests/ProjectDirectorySetupForTesting.cs
+++ b/src/WeSay.Project.Tests/ProjectDirectorySetupForTesting.cs
@@ -82,11 +82,7 @@ public string PathToUserConfigFile
 
 		~ProjectDirectorySetupForTesting()
 		{
-			if (!_disposed)
-			{
-				throw new InvalidOperationException("Disposed not explicitly called on " +
-													GetType().FullName + ".");
-			}
+			Dispose(false);
 		}
 
 		public bool IsDisposed
@@ -101,9 +97,7 @@ public string ProjectDirectoryName
 
 		public void Dispose()
 		{
-			_testFolder.Dispose();
 			Dispose(true);
-			GC.SuppressFinalize(this);
 		}
 
 		protected virtual void Dispose(bool disposing)
@@ -111,6 +105,8 @@ protected virtual void Dispose(bool disposing)
 			if (!IsDisposed)
 			{
 				// shared (dispose and finalizable) cleanup logic
+				_testFolder.Dispose();
+				GC.SuppressFinalize(this);
 				_disposed = true;
 			}
 		}

From 5621c82d51131b7161a4ffa487448a7e34d7f688 Mon Sep 17 00:00:00 2001
From: Joseph Myers <wjosephmyers@gmail.com>
Date: Thu, 11 Jul 2024 15:49:49 +0700
Subject: [PATCH 24/29] Removed net8.0-windows from OutputPath

---
 Directory.Build.props | 1 +
 1 file changed, 1 insertion(+)

diff --git a/Directory.Build.props b/Directory.Build.props
index a4fc4a16c..c34ce92bd 100644
--- a/Directory.Build.props
+++ b/Directory.Build.props
@@ -1,5 +1,6 @@
 <Project>
  <PropertyGroup>
    <Mercurial4ChorusDestDir>$(MSBuildThisFileDirectory)</Mercurial4ChorusDestDir>
+   <AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkToOutputPath>
  </PropertyGroup>
 </Project>
\ No newline at end of file

From 09c040188c2c1931cc4f8dab9e691b29e361ce25 Mon Sep 17 00:00:00 2001
From: Kevin Hahn <kevin_hahn@sil.org>
Date: Thu, 11 Jul 2024 16:31:21 +0700
Subject: [PATCH 25/29] change how we detect an unknown locale to use the
 CultureTypes property

---
 .../Foundation/SpellCheckerIdToDisplayStringConverter.cs    | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/LexicalModel/Foundation/SpellCheckerIdToDisplayStringConverter.cs b/src/LexicalModel/Foundation/SpellCheckerIdToDisplayStringConverter.cs
index fbfcf3304..4217078a3 100644
--- a/src/LexicalModel/Foundation/SpellCheckerIdToDisplayStringConverter.cs
+++ b/src/LexicalModel/Foundation/SpellCheckerIdToDisplayStringConverter.cs
@@ -77,9 +77,9 @@ public override object ConvertTo(ITypeDescriptorContext context,
 						string id = valueAsString.Replace('_', '-');
 						CultureInfo cultureInfo = CultureInfo.GetCultureInfoByIetfLanguageTag(id);
 						// Windows 10 doesn't throw an exception if id is unknown but instead makes
-						// the NativeName be of the form "Unknown Locale (id)" where id is in form xx-YY
-						// The "Unknown locale" message may be localised so look for the lower cased id
-						if (cultureInfo.NativeName.ToLower().Contains(id.ToLower()))
+						// the CultureType will have a custom culture flag, and the ThreeLetterWindowsLanguageName will be ZZZ
+						// this should work on older windows systems, but we don't have a way to confirm that.
+						if (cultureInfo.CultureTypes.HasFlag(CultureTypes.UserCustomCulture) && cultureInfo.ThreeLetterWindowsLanguageName == "ZZZ")
 						{
 							display = valueAsString;
 						}

From d33293aa813f2c2726ce6612ca7268e0c5e1314f Mon Sep 17 00:00:00 2001
From: Kevin Hahn <kevin_hahn@sil.org>
Date: Thu, 11 Jul 2024 16:35:14 +0700
Subject: [PATCH 26/29] set maxcpucount=1 when running tests to avoid
 concurrency issues

---
 .github/workflows/PR.yml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/.github/workflows/PR.yml b/.github/workflows/PR.yml
index f083bd3ae..fe008e521 100644
--- a/.github/workflows/PR.yml
+++ b/.github/workflows/PR.yml
@@ -33,4 +33,4 @@ jobs:
       run: dotnet build
     - name: Test
       # space after -- before RunConfig is required
-      run: dotnet test --logger "GitHubActions;summary.includePassedTests=true;summary.includeSkippedTests=true" -- RunConfiguration.CollectSourceInformation=true
\ No newline at end of file
+      run: dotnet test --no-build -maxcpucount:1 --logger "GitHubActions;summary.includePassedTests=true;summary.includeSkippedTests=true" -- RunConfiguration.CollectSourceInformation=true
\ No newline at end of file

From 430ccd76dca97684a87da25de5d8001e62f55a0f Mon Sep 17 00:00:00 2001
From: Joseph Myers <wjosephmyers@gmail.com>
Date: Fri, 12 Jul 2024 09:33:46 +0700
Subject: [PATCH 27/29] Reinstated test skipping for build server

---
 .github/workflows/PR.yml                               | 2 +-
 build/WeSay.proj                                       | 2 +-
 build/build.common.proj                                | 2 +-
 build/build.mono.proj                                  | 2 +-
 src/Addin.Transform.Tests/LibreOfficePdfTests.cs       | 4 ++--
 src/Addin.Transform.Tests/PdfMakerTests.cs             | 4 ++--
 src/Addin.Transform.Tests/SfmTransformerTests.cs       | 2 +-
 src/WeSay.ConfigTool.Tests/AdminWindowTests.cs         | 4 ++--
 src/WeSay.UI.Tests/AutoCompleteWithCreationBoxTests.cs | 2 +-
 src/WeSay.UI.Tests/DetailListTests.cs                  | 2 +-
 src/WeSay.UI.Tests/GeckoListBoxTests.cs                | 2 +-
 src/WeSay.UI.Tests/ReferenceCollectionEditorTests.cs   | 2 +-
 12 files changed, 15 insertions(+), 15 deletions(-)

diff --git a/.github/workflows/PR.yml b/.github/workflows/PR.yml
index fe008e521..91ff60fca 100644
--- a/.github/workflows/PR.yml
+++ b/.github/workflows/PR.yml
@@ -33,4 +33,4 @@ jobs:
       run: dotnet build
     - name: Test
       # space after -- before RunConfig is required
-      run: dotnet test --no-build -maxcpucount:1 --logger "GitHubActions;summary.includePassedTests=true;summary.includeSkippedTests=true" -- RunConfiguration.CollectSourceInformation=true
\ No newline at end of file
+      run: dotnet test  --filter "TestCategory != SkipOnCI" --no-build -maxcpucount:1 --logger "GitHubActions;summary.includePassedTests=true;summary.includeSkippedTests=true" -- RunConfiguration.CollectSourceInformation=true
\ No newline at end of file
diff --git a/build/WeSay.proj b/build/WeSay.proj
index ececc74cc..6c07bc21d 100644
--- a/build/WeSay.proj
+++ b/build/WeSay.proj
@@ -6,7 +6,7 @@
 		<SolutionPath>$(RootDir)/$(Solution)</SolutionPath>
 		<Configuration Condition="'$(Configuration)'==''">Debug</Configuration>
 		<LinuxExcludeCategories Condition="'$(OS)'!='Windows_NT'">KnownMonoIssue,</LinuxExcludeCategories>
-		<ExtraExcludeCategories Condition="'$(teamcity_version)' != '' Or '$(JENKINS_URL)' != '' Or '$(CI)' != ''">SkipOnTeamCity,$(LinuxExcludeCategories)</ExtraExcludeCategories>
+		<ExtraExcludeCategories Condition="'$(teamcity_version)' != '' Or '$(JENKINS_URL)' != '' Or '$(CI)' != ''">SkipOnCI,$(LinuxExcludeCategories)</ExtraExcludeCategories>
 		<useNUnit-x86 Condition="'$(OS)'=='Windows_NT'">true</useNUnit-x86>
 		<Platform Condition="'$(Platform)'==''">x</Platform>
 		<useNUnit-x86 Condition="'$(OS)'!='Windows_NT'">false</useNUnit-x86>
diff --git a/build/build.common.proj b/build/build.common.proj
index ee279dd2d..b21710a09 100644
--- a/build/build.common.proj
+++ b/build/build.common.proj
@@ -5,7 +5,7 @@
 	<PropertyGroup>
 		<useNUnit-x86 Condition="'$(OS)'=='Windows_NT'">true</useNUnit-x86>
 		<useNUnit-x86 Condition="'$(OS)'!='Windows_NT'">false</useNUnit-x86>
-		<ExtraExcludeCategories Condition="'$(teamcity_version)' != ''">SkipOnTeamCity,$(ExtraExcludeCategories)</ExtraExcludeCategories>
+		<ExtraExcludeCategories Condition="'$(teamcity_version)' != ''">SkipOnCI,$(ExtraExcludeCategories)</ExtraExcludeCategories>
 	</PropertyGroup>
 
 	<PropertyGroup>
diff --git a/build/build.mono.proj b/build/build.mono.proj
index e1ad093c8..383b9ab75 100644
--- a/build/build.mono.proj
+++ b/build/build.mono.proj
@@ -51,7 +51,7 @@
 			Targets="Build"
 			Properties="Configuration=$(Configuration);Constants=$(Constants)" />
 		<Exec Condition="'$(action)' == 'test'"
-			Command="$(MONO_PREFIX)/bin/mono --debug $(MONO_PREFIX)/lib/mono/4.0/nunit-console.exe -noshadow -exclude=SkipOnTeamCity [!P]*.Tests.dll -xml=WeSay.nunit-output.xml"
+			Command="$(MONO_PREFIX)/bin/mono --debug $(MONO_PREFIX)/lib/mono/4.0/nunit-console.exe -noshadow -exclude=SkipOnCI [!P]*.Tests.dll -xml=WeSay.nunit-output.xml"
 			WorkingDirectory="$(RootDir)/output/$(Configuration)"
 			Timeout="4500000"/>
 	</Target>
diff --git a/src/Addin.Transform.Tests/LibreOfficePdfTests.cs b/src/Addin.Transform.Tests/LibreOfficePdfTests.cs
index 265d119df..f410fb816 100644
--- a/src/Addin.Transform.Tests/LibreOfficePdfTests.cs
+++ b/src/Addin.Transform.Tests/LibreOfficePdfTests.cs
@@ -107,7 +107,7 @@ private static void CopyFolder(string sourceFolder, string destFolder)
 		}
 
 		[Test]
-		[Category("SkipOnTeamCity")]
+		[Category("SkipOnCI")]
 		[Platform(Exclude = "Win", Reason = "Mono only test")]
 		public void TestOpenDocumentPdf()
 		{
@@ -132,7 +132,7 @@ public void TestOpenDocumentPdf()
 		}
 
 		[Test]
-		[Category("SkipOnTeamCity")]
+		[Category("SkipOnCI")]
 		[Platform(Exclude = "Win", Reason = "Mono only test")]
 		public void TestOpenDocumentPdfOpen()
 		{
diff --git a/src/Addin.Transform.Tests/PdfMakerTests.cs b/src/Addin.Transform.Tests/PdfMakerTests.cs
index 8fc09e820..8230690c6 100644
--- a/src/Addin.Transform.Tests/PdfMakerTests.cs
+++ b/src/Addin.Transform.Tests/PdfMakerTests.cs
@@ -61,14 +61,14 @@ public void TearDown()
 		}
 
 		[Test]
-		[Category("SkipOnTeamCity")]
+		[Category("SkipOnCI")]
 		public void CreatePDF()
 		{
 			LaunchAddin();
 		}
 
 		[Test]
-		[Category("SkipOnTeamCity")]
+		[Category("SkipOnCI")]
 		public void CreatePdfAndOpen()
 		{
 			LaunchAddin();
diff --git a/src/Addin.Transform.Tests/SfmTransformerTests.cs b/src/Addin.Transform.Tests/SfmTransformerTests.cs
index 8ee58c2b2..697356336 100644
--- a/src/Addin.Transform.Tests/SfmTransformerTests.cs
+++ b/src/Addin.Transform.Tests/SfmTransformerTests.cs
@@ -11,7 +11,7 @@
 
 namespace Addin.Transform.Tests
 {
-	[Category("SkipOnTeamCity")] // Uses ProgressDialog during transforms. 
+	[Category("SkipOnCI")] // Uses ProgressDialog during transforms. 
 	[TestFixture]
 	public class SfmTransformerTests
 	{
diff --git a/src/WeSay.ConfigTool.Tests/AdminWindowTests.cs b/src/WeSay.ConfigTool.Tests/AdminWindowTests.cs
index fa14048fa..f0f34e43b 100644
--- a/src/WeSay.ConfigTool.Tests/AdminWindowTests.cs
+++ b/src/WeSay.ConfigTool.Tests/AdminWindowTests.cs
@@ -12,7 +12,7 @@
 
 namespace WeSay.ConfigTool.Tests
 {
-	[Category("SkipOnTeamCity")]
+	[Category("SkipOnCI")]
 	[TestFixture, Apartment(ApartmentState.STA)]
 	public class AdminWindowTests
 	{
@@ -136,7 +136,7 @@ public void CreateAndOpenProject_EnglishAsVernacular_DoesNotCrash()
 	}
 
 	/* these are more modern, without use of static, "pretend" project, or the big setup/teardown of the old style */
-	[Category("SkipOnTeamCity")]
+	[Category("SkipOnCI")]
 	[TestFixture]
 	public class MoreAdminWindowTests
 	{
diff --git a/src/WeSay.UI.Tests/AutoCompleteWithCreationBoxTests.cs b/src/WeSay.UI.Tests/AutoCompleteWithCreationBoxTests.cs
index f847e2956..c26e986d4 100644
--- a/src/WeSay.UI.Tests/AutoCompleteWithCreationBoxTests.cs
+++ b/src/WeSay.UI.Tests/AutoCompleteWithCreationBoxTests.cs
@@ -11,7 +11,7 @@
 
 namespace WeSay.UI.Tests
 {
-	[Category("SkipOnTeamCity")]
+	[Category("SkipOnCI")]
 	[TestFixture]
 	public class AutoCompleteWithCreationBoxTests
 	{
diff --git a/src/WeSay.UI.Tests/DetailListTests.cs b/src/WeSay.UI.Tests/DetailListTests.cs
index 5da3593a8..6eb57ac35 100644
--- a/src/WeSay.UI.Tests/DetailListTests.cs
+++ b/src/WeSay.UI.Tests/DetailListTests.cs
@@ -7,7 +7,7 @@
 
 namespace WeSay.UI.Tests
 {
-	[Category("SkipOnTeamCity")]
+	[Category("SkipOnCI")]
 	[TestFixture, Apartment(ApartmentState.STA)]
 	public class DetailListTests
 	{
diff --git a/src/WeSay.UI.Tests/GeckoListBoxTests.cs b/src/WeSay.UI.Tests/GeckoListBoxTests.cs
index cbe8e58cc..6afd5bb5a 100644
--- a/src/WeSay.UI.Tests/GeckoListBoxTests.cs
+++ b/src/WeSay.UI.Tests/GeckoListBoxTests.cs
@@ -141,7 +141,7 @@ public void TestDrawItem()
 		}
 
 		[Test]
-		[Category("SkipOnTeamCity")]
+		[Category("SkipOnCI")]
 		[Ignore("FLAKY - sometimes fails in run all in VS.")]
 		public void TestGetRectangle()
 		{
diff --git a/src/WeSay.UI.Tests/ReferenceCollectionEditorTests.cs b/src/WeSay.UI.Tests/ReferenceCollectionEditorTests.cs
index 898514083..98b5f48a9 100644
--- a/src/WeSay.UI.Tests/ReferenceCollectionEditorTests.cs
+++ b/src/WeSay.UI.Tests/ReferenceCollectionEditorTests.cs
@@ -11,7 +11,7 @@
 
 namespace WeSay.UI.Tests
 {
-	[Category("SkipOnTeamCity")]
+	[Category("SkipOnCI")]
 	[TestFixture]
 	public class ReferenceCollectionEditorTests : IReceivePropertyChangeNotifications
 	{

From 71b1a8f22802501ae4d3b0e38bef689d862f6516 Mon Sep 17 00:00:00 2001
From: Joseph Myers <wjosephmyers@gmail.com>
Date: Fri, 12 Jul 2024 09:46:46 +0700
Subject: [PATCH 28/29] Skip a few extra tests

These are passing locally but appear dependent on a particular file to be in the filesystem. We could probably look into what it'd take to not skip these in a future task, if desired.
---
 src/WeSay.UI.Tests/BindingTests.cs      | 2 ++
 src/WeSay.UI.Tests/GhostBindingTests.cs | 4 ++++
 2 files changed, 6 insertions(+)

diff --git a/src/WeSay.UI.Tests/BindingTests.cs b/src/WeSay.UI.Tests/BindingTests.cs
index de591370b..870e3ee69 100644
--- a/src/WeSay.UI.Tests/BindingTests.cs
+++ b/src/WeSay.UI.Tests/BindingTests.cs
@@ -24,6 +24,7 @@ public void TearDown()
 		}
 
 		[Test]
+		[Category("SkipOnCI")]
 		public void TargetToWidget()
 		{
 			MultiText text = new MultiText();
@@ -42,6 +43,7 @@ public void TargetToWidget()
 		}
 
 		[Test]
+		[Category("SkipOnCI")]
 		public void WidgetToTarget()
 		{
 			MultiText text = new MultiText();
diff --git a/src/WeSay.UI.Tests/GhostBindingTests.cs b/src/WeSay.UI.Tests/GhostBindingTests.cs
index 72cb038e7..b3abea90f 100644
--- a/src/WeSay.UI.Tests/GhostBindingTests.cs
+++ b/src/WeSay.UI.Tests/GhostBindingTests.cs
@@ -8,6 +8,7 @@
 using WeSay.Project;
 using WeSay.TestUtilities;
 using WeSay.UI.TextBoxes;
+using CategoryAttribute = NUnit.Framework.CategoryAttribute;
 
 namespace WeSay.UI.Tests
 {
@@ -126,6 +127,7 @@ public void TearDown()
 		}
 
 		[Test]
+		[Category("SkipOnCI")]
 		public void EmptyListGrows()
 		{
 			Assert.AreEqual(0, _papa.Children.Count);
@@ -135,6 +137,7 @@ public void EmptyListGrows()
 		}
 
 		[Test]
+		[Category("SkipOnCI")]
 		public void NewItemGetsValue()
 		{
 			_ghostFirstNameWidget.Text = "Samuel";
@@ -143,6 +146,7 @@ public void NewItemGetsValue()
 		}
 
 		[Test]
+		[Category("SkipOnCI")]
 		public void NewItemTriggersEvent()
 		{
 			_binding.ReferenceControl = (Control)_papaNameWidget;

From 06bc0d6397c3108491f823bb684c60ff191e2a7f Mon Sep 17 00:00:00 2001
From: Joseph Myers <wjosephmyers@gmail.com>
Date: Fri, 12 Jul 2024 10:45:07 +0700
Subject: [PATCH 29/29] Cleaup

---
 .github/workflows/PR.yml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/.github/workflows/PR.yml b/.github/workflows/PR.yml
index 91ff60fca..24d4144e6 100644
--- a/.github/workflows/PR.yml
+++ b/.github/workflows/PR.yml
@@ -25,12 +25,12 @@ jobs:
       with:
         dotnet-version: 8.0.x
 
-    # Run the unit tests
     - name: Restore
       run: dotnet restore
 
     - name: Build
       run: dotnet build
+
     - name: Test
       # space after -- before RunConfig is required
       run: dotnet test  --filter "TestCategory != SkipOnCI" --no-build -maxcpucount:1 --logger "GitHubActions;summary.includePassedTests=true;summary.includeSkippedTests=true" -- RunConfiguration.CollectSourceInformation=true
\ No newline at end of file