diff --git a/.editorconfig b/.editorconfig
index 95836f70b47..707f7695dc2 100644
--- a/.editorconfig
+++ b/.editorconfig
@@ -12,7 +12,7 @@ insert_final_newline = true
 charset = utf-8-bom
 
 # XML project files
-[*.{csproj,vbproj,vcxproj,vcxproj.filters,proj,projitems,shproj,wixproj}]
+[*.{csproj,vbproj,vcxproj,vcxproj.filters,proj,projitems,shproj,wixproj,msbuildproj}]
 indent_size = 2
 
 # XML config files
diff --git a/Cyberduck.sln b/Cyberduck.sln
index 92f036b5dd6..a7a00c5df4f 100644
--- a/Cyberduck.sln
+++ b/Cyberduck.sln
@@ -51,195 +51,106 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "i18n-gen", "core\i18n-gen\i
 EndProject
 Project("{C7167F0D-BC9F-4E6E-AFE1-012C56B48DB5}") = "package", "windows\src\main\package\package.wapproj", "{55CDD736-9A8A-4091-AC99-60E2F9C73269}"
 EndProject
-Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "Cyberduck.Core", "core\dll\Cyberduck.Core.msbuildproj", "{1B4DFDAD-C676-4338-B435-F2F62D79E096}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Cyberduck.Core", "core\dll\Cyberduck.Core.msbuildproj", "{1B4DFDAD-C676-4338-B435-F2F62D79E096}"
 EndProject
-Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "Cyberduck.Bonjour", "bonjour\dll\Cyberduck.Bonjour.msbuildproj", "{B31E6C36-D710-443F-8ED7-16BE3BD51FC4}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Cyberduck.Bonjour", "bonjour\dll\Cyberduck.Bonjour.msbuildproj", "{B31E6C36-D710-443F-8ED7-16BE3BD51FC4}"
 EndProject
-Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "Cyberduck.Importer", "importer\dll\Cyberduck.Importer.msbuildproj", "{C9B1C169-1354-4348-9938-7892399C6336}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Cyberduck.Importer", "importer\dll\Cyberduck.Importer.msbuildproj", "{C9B1C169-1354-4348-9938-7892399C6336}"
 EndProject
-Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "Cyberduck.Protocols", "protocols\dll\Cyberduck.Protocols.msbuildproj", "{9C7B827F-AE30-44C4-A210-E49DF883C720}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Cyberduck.Protocols", "protocols\dll\Cyberduck.Protocols.msbuildproj", "{9C7B827F-AE30-44C4-A210-E49DF883C720}"
 EndProject
-Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "Cyberduck.Cryptomator", "cryptomator\dll\Cyberduck.Cryptomator.msbuildproj", "{7EFC0398-8F4D-4850-BBE3-A0CC85410559}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Cyberduck.Cryptomator", "cryptomator\dll\Cyberduck.Cryptomator.msbuildproj", "{7EFC0398-8F4D-4850-BBE3-A0CC85410559}"
 EndProject
-Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "Cyberduck.Cli", "cli\dll\Cyberduck.Cli.msbuildproj", "{2D33598A-21A1-4117-82DC-250F4CE8D5E5}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Cyberduck.Cli", "cli\dll\Cyberduck.Cli.msbuildproj", "{2D33598A-21A1-4117-82DC-250F4CE8D5E5}"
 EndProject
 Global
 	GlobalSection(SolutionConfigurationPlatforms) = preSolution
-		Debug|Windows = Debug|Windows
-		Release|Windows = Release|Windows
+		Debug|x64 = Debug|x64
+		Release|x64 = Release|x64
 	EndGlobalSection
 	GlobalSection(ProjectConfigurationPlatforms) = postSolution
-		{1B4DFDAD-C676-4338-B435-F2F62D79E096}.Debug|Windows.ActiveCfg = Debug|Any CPU
-		{1B4DFDAD-C676-4338-B435-F2F62D79E096}.Debug|Windows.Build.0 = Debug|Any CPU
-		{1B4DFDAD-C676-4338-B435-F2F62D79E096}.Release|Windows.ActiveCfg = Release|Any CPU
-		{1B4DFDAD-C676-4338-B435-F2F62D79E096}.Release|Windows.Build.0 = Release|Any CPU
-		{2D33598A-21A1-4117-82DC-250F4CE8D5E5}.Debug|Windows.ActiveCfg = Debug|Any CPU
-		{2D33598A-21A1-4117-82DC-250F4CE8D5E5}.Debug|Windows.Build.0 = Debug|Any CPU
-		{2D33598A-21A1-4117-82DC-250F4CE8D5E5}.Release|Windows.ActiveCfg = Release|Any CPU
-		{2D33598A-21A1-4117-82DC-250F4CE8D5E5}.Release|Windows.Build.0 = Release|Any CPU
-		{7EFC0398-8F4D-4850-BBE3-A0CC85410559}.Debug|Windows.ActiveCfg = Debug|Any CPU
-		{7EFC0398-8F4D-4850-BBE3-A0CC85410559}.Debug|Windows.Build.0 = Debug|Any CPU
-		{7EFC0398-8F4D-4850-BBE3-A0CC85410559}.Release|Windows.ActiveCfg = Release|Any CPU
-		{7EFC0398-8F4D-4850-BBE3-A0CC85410559}.Release|Windows.Build.0 = Release|Any CPU
-		{89D94AC6-3D04-4B67-A39B-C1DEFB8A1766}.Debug|Windows.ActiveCfg = Debug|x64
-		{89D94AC6-3D04-4B67-A39B-C1DEFB8A1766}.Debug|Windows.Build.0 = Debug|x64
-		{89D94AC6-3D04-4B67-A39B-C1DEFB8A1766}.Release|Windows.ActiveCfg = Release|x64
-		{89D94AC6-3D04-4B67-A39B-C1DEFB8A1766}.Release|Windows.Build.0 = Release|x64
-		{1926AB55-690C-4081-99D5-170847C206D9}.Debug|Windows.ActiveCfg = Debug|x64
-		{1926AB55-690C-4081-99D5-170847C206D9}.Debug|Windows.Build.0 = Debug|x64
-		{1926AB55-690C-4081-99D5-170847C206D9}.Release|Windows.ActiveCfg = Release|x64
-		{1926AB55-690C-4081-99D5-170847C206D9}.Release|Windows.Build.0 = Release|x64
-		{581C7683-D22D-4346-B3BF-DC2936231C46}.Debug|Windows.ActiveCfg = Debug|x64
-		{581C7683-D22D-4346-B3BF-DC2936231C46}.Debug|Windows.Build.0 = Debug|x64
-		{581C7683-D22D-4346-B3BF-DC2936231C46}.Release|Windows.ActiveCfg = Release|x64
-		{581C7683-D22D-4346-B3BF-DC2936231C46}.Release|Windows.Build.0 = Release|x64
-		{2287E64E-3515-4324-9833-553348295C15}.Debug|Windows.ActiveCfg = Debug|x64
-		{2287E64E-3515-4324-9833-553348295C15}.Debug|Windows.Build.0 = Debug|x64
-		{2287E64E-3515-4324-9833-553348295C15}.Release|Windows.ActiveCfg = Release|x64
-		{2287E64E-3515-4324-9833-553348295C15}.Release|Windows.Build.0 = Release|x64
-		{04AFCFBB-97D5-44EA-B087-F0CFAEB51E30}.Debug|Windows.ActiveCfg = Debug|x64
-		{04AFCFBB-97D5-44EA-B087-F0CFAEB51E30}.Debug|Windows.Build.0 = Debug|x64
-		{04AFCFBB-97D5-44EA-B087-F0CFAEB51E30}.Release|Windows.ActiveCfg = Release|x64
-		{04AFCFBB-97D5-44EA-B087-F0CFAEB51E30}.Release|Windows.Build.0 = Release|x64
-		{9C7B827F-AE30-44C4-A210-E49DF883C720}.Debug|Windows.ActiveCfg = Debug|Any CPU
-		{9C7B827F-AE30-44C4-A210-E49DF883C720}.Debug|Windows.Build.0 = Debug|Any CPU
-		{9C7B827F-AE30-44C4-A210-E49DF883C720}.Release|Windows.ActiveCfg = Release|Any CPU
-		{9C7B827F-AE30-44C4-A210-E49DF883C720}.Release|Windows.Build.0 = Release|Any CPU
-		{B31E6C36-D710-443F-8ED7-16BE3BD51FC4}.Debug|Windows.ActiveCfg = Debug|Any CPU
-		{B31E6C36-D710-443F-8ED7-16BE3BD51FC4}.Debug|Windows.Build.0 = Debug|Any CPU
-		{B31E6C36-D710-443F-8ED7-16BE3BD51FC4}.Release|Windows.ActiveCfg = Release|Any CPU
-		{B31E6C36-D710-443F-8ED7-16BE3BD51FC4}.Release|Windows.Build.0 = Release|Any CPU
-		{B5565834-1164-4858-AF50-AE89CFC9BDD2}.Debug|Windows.ActiveCfg = Debug|x64
-		{B5565834-1164-4858-AF50-AE89CFC9BDD2}.Debug|Windows.Build.0 = Debug|x64
-		{B5565834-1164-4858-AF50-AE89CFC9BDD2}.Release|Windows.ActiveCfg = Release|x64
-		{B5565834-1164-4858-AF50-AE89CFC9BDD2}.Release|Windows.Build.0 = Release|x64
-		{C9B1C169-1354-4348-9938-7892399C6336}.Debug|Windows.ActiveCfg = Debug|Any CPU
-		{C9B1C169-1354-4348-9938-7892399C6336}.Debug|Windows.Build.0 = Debug|Any CPU
-		{C9B1C169-1354-4348-9938-7892399C6336}.Release|Windows.ActiveCfg = Release|Any CPU
-		{C9B1C169-1354-4348-9938-7892399C6336}.Release|Windows.Build.0 = Release|Any CPU
-		{FBA5EFE2-362B-4BAD-A748-3248F79468AC}.Debug|Windows.ActiveCfg = Debug|Win32
-		{FBA5EFE2-362B-4BAD-A748-3248F79468AC}.Debug|Windows.Build.0 = Debug|Win32
-		{FBA5EFE2-362B-4BAD-A748-3248F79468AC}.Release|Windows.ActiveCfg = Release|Win32
-		{FBA5EFE2-362B-4BAD-A748-3248F79468AC}.Release|Windows.Build.0 = Release|Win32
-		{00858CE5-437F-46BE-8A2E-519B552DBF7D}.Debug|Windows.ActiveCfg = Debug|x86
-		{00858CE5-437F-46BE-8A2E-519B552DBF7D}.Debug|Windows.Build.0 = Debug|x86
-		{00858CE5-437F-46BE-8A2E-519B552DBF7D}.Release|Windows.ActiveCfg = Release|x86
-		{00858CE5-437F-46BE-8A2E-519B552DBF7D}.Release|Windows.Build.0 = Release|x86
-		{65AB4CE3-5AF4-411A-928C-7FFD250C6D85}.Debug|Windows.ActiveCfg = Debug|x86
-		{65AB4CE3-5AF4-411A-928C-7FFD250C6D85}.Debug|Windows.Build.0 = Debug|x86
-		{65AB4CE3-5AF4-411A-928C-7FFD250C6D85}.Release|Windows.ActiveCfg = Release|x86
-		{65AB4CE3-5AF4-411A-928C-7FFD250C6D85}.Release|Windows.Build.0 = Release|x86
-		{EF87DE0E-BC36-4D3C-8852-C8AD11D01F04}.Debug|Windows.ActiveCfg = Debug|x86
-		{EF87DE0E-BC36-4D3C-8852-C8AD11D01F04}.Debug|Windows.Build.0 = Debug|x86
-		{EF87DE0E-BC36-4D3C-8852-C8AD11D01F04}.Release|Windows.ActiveCfg = Release|x86
-		{EF87DE0E-BC36-4D3C-8852-C8AD11D01F04}.Release|Windows.Build.0 = Release|x86
-		{F6975079-F730-4A31-9909-DE536E524764}.Debug|Windows.ActiveCfg = Debug|x86
-		{F6975079-F730-4A31-9909-DE536E524764}.Debug|Windows.Build.0 = Debug|x86
-		{F6975079-F730-4A31-9909-DE536E524764}.Release|Windows.ActiveCfg = Release|x86
-		{F6975079-F730-4A31-9909-DE536E524764}.Release|Windows.Build.0 = Release|x86
-		{D1286C4A-9D6A-4904-B9AD-CB7688483EDB}.Debug|Windows.ActiveCfg = Debug|x64
-		{D1286C4A-9D6A-4904-B9AD-CB7688483EDB}.Debug|Windows.Build.0 = Debug|x64
-		{D1286C4A-9D6A-4904-B9AD-CB7688483EDB}.Release|Windows.ActiveCfg = Release|x64
-		{D1286C4A-9D6A-4904-B9AD-CB7688483EDB}.Release|Windows.Build.0 = Release|x64
-		{ABB0D3AD-BCDA-4F73-88C3-C67B76AAB6FE}.Debug|Windows.ActiveCfg = Debug|Any CPU
-		{ABB0D3AD-BCDA-4F73-88C3-C67B76AAB6FE}.Debug|Windows.Build.0 = Debug|Any CPU
-		{ABB0D3AD-BCDA-4F73-88C3-C67B76AAB6FE}.Release|Windows.ActiveCfg = Release|Any CPU
-		{ABB0D3AD-BCDA-4F73-88C3-C67B76AAB6FE}.Release|Windows.Build.0 = Release|Any CPU
-		{55CDD736-9A8A-4091-AC99-60E2F9C73269}.Debug|Windows.ActiveCfg = Debug|x64
-		{55CDD736-9A8A-4091-AC99-60E2F9C73269}.Debug|Windows.Build.0 = Debug|x64
-		{55CDD736-9A8A-4091-AC99-60E2F9C73269}.Debug|Windows.Deploy.0 = Debug|x64
-		{55CDD736-9A8A-4091-AC99-60E2F9C73269}.Release|Windows.ActiveCfg = Release|x64
-		{55CDD736-9A8A-4091-AC99-60E2F9C73269}.Release|Windows.Build.0 = Release|x64
-		{55CDD736-9A8A-4091-AC99-60E2F9C73269}.Release|Windows.Deploy.0 = Release|x64
-	EndGlobalSection
-	GlobalSection(SolutionProperties) = preSolution
-		HideSolutionNode = FALSE
-	EndGlobalSection
-	GlobalSection(NestedProjects) = preSolution
-		{1B4DFDAD-C676-4338-B435-F2F62D79E096} = {72B4BA09-65D8-4C49-930E-B14104B2AB1B}
-		{2D33598A-21A1-4117-82DC-250F4CE8D5E5} = {72B4BA09-65D8-4C49-930E-B14104B2AB1B}
-		{7EFC0398-8F4D-4850-BBE3-A0CC85410559} = {72B4BA09-65D8-4C49-930E-B14104B2AB1B}
-		{89D94AC6-3D04-4B67-A39B-C1DEFB8A1766} = {72B4BA09-65D8-4C49-930E-B14104B2AB1B}
-		{1926AB55-690C-4081-99D5-170847C206D9} = {72B4BA09-65D8-4C49-930E-B14104B2AB1B}
-		{581C7683-D22D-4346-B3BF-DC2936231C46} = {8B08EF96-10D6-4F35-94C1-986F9F0F1506}
-		{2287E64E-3515-4324-9833-553348295C15} = {3FAE38FB-24D9-4F8C-81BA-68BAD19FC81D}
-		{72B4BA09-65D8-4C49-930E-B14104B2AB1B} = {3FAE38FB-24D9-4F8C-81BA-68BAD19FC81D}
-		{04AFCFBB-97D5-44EA-B087-F0CFAEB51E30} = {3FAE38FB-24D9-4F8C-81BA-68BAD19FC81D}
-		{9C7B827F-AE30-44C4-A210-E49DF883C720} = {72B4BA09-65D8-4C49-930E-B14104B2AB1B}
-		{B31E6C36-D710-443F-8ED7-16BE3BD51FC4} = {72B4BA09-65D8-4C49-930E-B14104B2AB1B}
-		{B5565834-1164-4858-AF50-AE89CFC9BDD2} = {8B08EF96-10D6-4F35-94C1-986F9F0F1506}
-		{457F1D6D-8AEC-42E2-9211-2A8405C95019} = {0DF59FB4-AEA9-4213-A935-6DB851411B67}
-		{7D32EE61-B6F0-4978-B500-45172B181283} = {0DF59FB4-AEA9-4213-A935-6DB851411B67}
-		{C9B1C169-1354-4348-9938-7892399C6336} = {72B4BA09-65D8-4C49-930E-B14104B2AB1B}
-		{FBA5EFE2-362B-4BAD-A748-3248F79468AC} = {7D32EE61-B6F0-4978-B500-45172B181283}
-		{00858CE5-437F-46BE-8A2E-519B552DBF7D} = {7D32EE61-B6F0-4978-B500-45172B181283}
-		{65AB4CE3-5AF4-411A-928C-7FFD250C6D85} = {7D32EE61-B6F0-4978-B500-45172B181283}
-		{EF87DE0E-BC36-4D3C-8852-C8AD11D01F04} = {457F1D6D-8AEC-42E2-9211-2A8405C95019}
-		{F6975079-F730-4A31-9909-DE536E524764} = {457F1D6D-8AEC-42E2-9211-2A8405C95019}
-		{D1286C4A-9D6A-4904-B9AD-CB7688483EDB} = {72B4BA09-65D8-4C49-930E-B14104B2AB1B}
-		{ABB0D3AD-BCDA-4F73-88C3-C67B76AAB6FE} = {72B4BA09-65D8-4C49-930E-B14104B2AB1B}
-		{55CDD736-9A8A-4091-AC99-60E2F9C73269} = {7D32EE61-B6F0-4978-B500-45172B181283}
-	EndGlobalSection
-	GlobalSection(ExtensibilityGlobals) = postSolution
-		SolutionGuid = {289E6003-15D5-4377-ADA6-2E7093785BCD}
-	EndGlobalSection
-EndGlobal
-|Windows.ActiveCfg = Debug|Any CPU
-		{C9B1C169-1354-4348-9938-7892399C6336}.Debug|Windows.Build.0 = Debug|Any CPU
-		{C9B1C169-1354-4348-9938-7892399C6336}.Release|Any CPU.ActiveCfg = Release|Any CPU
-		{C9B1C169-1354-4348-9938-7892399C6336}.Release|Any CPU.Build.0 = Release|Any CPU
-		{C9B1C169-1354-4348-9938-7892399C6336}.Release|Windows.ActiveCfg = Release|Any CPU
-		{C9B1C169-1354-4348-9938-7892399C6336}.Release|Windows.Build.0 = Release|Any CPU
-		{D1286C4A-9D6A-4904-B9AD-CB7688483EDB}.Debug|Any CPU.ActiveCfg = Debug|x64
-		{D1286C4A-9D6A-4904-B9AD-CB7688483EDB}.Debug|Any CPU.Build.0 = Debug|x64
-		{D1286C4A-9D6A-4904-B9AD-CB7688483EDB}.Release|Any CPU.ActiveCfg = Release|x64
-		{D1286C4A-9D6A-4904-B9AD-CB7688483EDB}.Release|Any CPU.Build.0 = Release|x64
-		{EF87DE0E-BC36-4D3C-8852-C8AD11D01F04}.Debug|Any CPU.ActiveCfg = Debug|x86
-		{EF87DE0E-BC36-4D3C-8852-C8AD11D01F04}.Debug|Any CPU.Build.0 = Debug|x86
-		{EF87DE0E-BC36-4D3C-8852-C8AD11D01F04}.Release|Any CPU.ActiveCfg = Release|x86
-		{EF87DE0E-BC36-4D3C-8852-C8AD11D01F04}.Release|Any CPU.Build.0 = Release|x86
-		{F6975079-F730-4A31-9909-DE536E524764}.Debug|Any CPU.ActiveCfg = Debug|x86
-		{F6975079-F730-4A31-9909-DE536E524764}.Debug|Any CPU.Build.0 = Debug|x86
-		{F6975079-F730-4A31-9909-DE536E524764}.Release|Any CPU.ActiveCfg = Release|x86
-		{F6975079-F730-4A31-9909-DE536E524764}.Release|Any CPU.Build.0 = Release|x86
-		{FBA5EFE2-362B-4BAD-A748-3248F79468AC}.Debug|Any CPU.ActiveCfg = Debug|Win32
-		{FBA5EFE2-362B-4BAD-A748-3248F79468AC}.Debug|Any CPU.Build.0 = Debug|Win32
-		{FBA5EFE2-362B-4BAD-A748-3248F79468AC}.Debug|Windows.ActiveCfg = Debug|Win32
-		{FBA5EFE2-362B-4BAD-A748-3248F79468AC}.Debug|Windows.Build.0 = Debug|Win32
-		{FBA5EFE2-362B-4BAD-A748-3248F79468AC}.Release|Any CPU.ActiveCfg = Release|Win32
-		{FBA5EFE2-362B-4BAD-A748-3248F79468AC}.Release|Any CPU.Build.0 = Release|Win32
-		{FBA5EFE2-362B-4BAD-A748-3248F79468AC}.Release|Windows.ActiveCfg = Release|Win32
-		{FBA5EFE2-362B-4BAD-A748-3248F79468AC}.Release|Windows.Build.0 = Release|Win32
-		{00858CE5-437F-46BE-8A2E-519B552DBF7D}.Debug|Windows.ActiveCfg = Debug|x86
-		{00858CE5-437F-46BE-8A2E-519B552DBF7D}.Debug|Windows.Build.0 = Debug|x86
-		{00858CE5-437F-46BE-8A2E-519B552DBF7D}.Release|Windows.ActiveCfg = Release|x86
-		{00858CE5-437F-46BE-8A2E-519B552DBF7D}.Release|Windows.Build.0 = Release|x86
-		{65AB4CE3-5AF4-411A-928C-7FFD250C6D85}.Debug|Windows.ActiveCfg = Debug|x86
-		{65AB4CE3-5AF4-411A-928C-7FFD250C6D85}.Debug|Windows.Build.0 = Debug|x86
-		{65AB4CE3-5AF4-411A-928C-7FFD250C6D85}.Release|Windows.ActiveCfg = Release|x86
-		{65AB4CE3-5AF4-411A-928C-7FFD250C6D85}.Release|Windows.Build.0 = Release|x86
-		{EF87DE0E-BC36-4D3C-8852-C8AD11D01F04}.Debug|Windows.ActiveCfg = Debug|x86
-		{EF87DE0E-BC36-4D3C-8852-C8AD11D01F04}.Debug|Windows.Build.0 = Debug|x86
-		{EF87DE0E-BC36-4D3C-8852-C8AD11D01F04}.Release|Windows.ActiveCfg = Release|x86
-		{EF87DE0E-BC36-4D3C-8852-C8AD11D01F04}.Release|Windows.Build.0 = Release|x86
-		{F6975079-F730-4A31-9909-DE536E524764}.Debug|Windows.ActiveCfg = Debug|x86
-		{F6975079-F730-4A31-9909-DE536E524764}.Debug|Windows.Build.0 = Debug|x86
-		{F6975079-F730-4A31-9909-DE536E524764}.Release|Windows.ActiveCfg = Release|x86
-		{F6975079-F730-4A31-9909-DE536E524764}.Release|Windows.Build.0 = Release|x86
-		{D1286C4A-9D6A-4904-B9AD-CB7688483EDB}.Debug|Windows.ActiveCfg = Debug|x64
-		{D1286C4A-9D6A-4904-B9AD-CB7688483EDB}.Debug|Windows.Build.0 = Debug|x64
-		{D1286C4A-9D6A-4904-B9AD-CB7688483EDB}.Release|Windows.ActiveCfg = Release|x64
-		{D1286C4A-9D6A-4904-B9AD-CB7688483EDB}.Release|Windows.Build.0 = Release|x64
-		{ABB0D3AD-BCDA-4F73-88C3-C67B76AAB6FE}.Debug|Windows.ActiveCfg = Debug|Any CPU
-		{ABB0D3AD-BCDA-4F73-88C3-C67B76AAB6FE}.Debug|Windows.Build.0 = Debug|Any CPU
-		{ABB0D3AD-BCDA-4F73-88C3-C67B76AAB6FE}.Release|Windows.ActiveCfg = Release|Any CPU
-		{ABB0D3AD-BCDA-4F73-88C3-C67B76AAB6FE}.Release|Windows.Build.0 = Release|Any CPU
-		{55CDD736-9A8A-4091-AC99-60E2F9C73269}.Debug|Windows.ActiveCfg = Debug|x64
-		{55CDD736-9A8A-4091-AC99-60E2F9C73269}.Debug|Windows.Build.0 = Debug|x64
-		{55CDD736-9A8A-4091-AC99-60E2F9C73269}.Debug|Windows.Deploy.0 = Debug|x64
-		{55CDD736-9A8A-4091-AC99-60E2F9C73269}.Release|Windows.ActiveCfg = Release|x64
-		{55CDD736-9A8A-4091-AC99-60E2F9C73269}.Release|Windows.Build.0 = Release|x64
-		{55CDD736-9A8A-4091-AC99-60E2F9C73269}.Release|Windows.Deploy.0 = Release|x64
+		{1B4DFDAD-C676-4338-B435-F2F62D79E096}.Debug|x64.ActiveCfg = Debug|Any CPU
+		{1B4DFDAD-C676-4338-B435-F2F62D79E096}.Debug|x64.Build.0 = Debug|Any CPU
+		{1B4DFDAD-C676-4338-B435-F2F62D79E096}.Release|x64.ActiveCfg = Release|Any CPU
+		{1B4DFDAD-C676-4338-B435-F2F62D79E096}.Release|x64.Build.0 = Release|Any CPU
+		{2D33598A-21A1-4117-82DC-250F4CE8D5E5}.Debug|x64.ActiveCfg = Debug|Any CPU
+		{2D33598A-21A1-4117-82DC-250F4CE8D5E5}.Debug|x64.Build.0 = Debug|Any CPU
+		{2D33598A-21A1-4117-82DC-250F4CE8D5E5}.Release|x64.ActiveCfg = Release|Any CPU
+		{2D33598A-21A1-4117-82DC-250F4CE8D5E5}.Release|x64.Build.0 = Release|Any CPU
+		{7EFC0398-8F4D-4850-BBE3-A0CC85410559}.Debug|x64.ActiveCfg = Debug|Any CPU
+		{7EFC0398-8F4D-4850-BBE3-A0CC85410559}.Debug|x64.Build.0 = Debug|Any CPU
+		{7EFC0398-8F4D-4850-BBE3-A0CC85410559}.Release|x64.ActiveCfg = Release|Any CPU
+		{7EFC0398-8F4D-4850-BBE3-A0CC85410559}.Release|x64.Build.0 = Release|Any CPU
+		{89D94AC6-3D04-4B67-A39B-C1DEFB8A1766}.Debug|x64.ActiveCfg = Debug|x64
+		{89D94AC6-3D04-4B67-A39B-C1DEFB8A1766}.Debug|x64.Build.0 = Debug|x64
+		{89D94AC6-3D04-4B67-A39B-C1DEFB8A1766}.Release|x64.ActiveCfg = Release|x64
+		{89D94AC6-3D04-4B67-A39B-C1DEFB8A1766}.Release|x64.Build.0 = Release|x64
+		{1926AB55-690C-4081-99D5-170847C206D9}.Debug|x64.ActiveCfg = Debug|Any CPU
+		{1926AB55-690C-4081-99D5-170847C206D9}.Debug|x64.Build.0 = Debug|Any CPU
+		{1926AB55-690C-4081-99D5-170847C206D9}.Release|x64.ActiveCfg = Release|Any CPU
+		{1926AB55-690C-4081-99D5-170847C206D9}.Release|x64.Build.0 = Release|Any CPU
+		{581C7683-D22D-4346-B3BF-DC2936231C46}.Debug|x64.ActiveCfg = Debug|x64
+		{581C7683-D22D-4346-B3BF-DC2936231C46}.Debug|x64.Build.0 = Debug|x64
+		{581C7683-D22D-4346-B3BF-DC2936231C46}.Release|x64.ActiveCfg = Release|x64
+		{581C7683-D22D-4346-B3BF-DC2936231C46}.Release|x64.Build.0 = Release|x64
+		{2287E64E-3515-4324-9833-553348295C15}.Debug|x64.ActiveCfg = Debug|x64
+		{2287E64E-3515-4324-9833-553348295C15}.Debug|x64.Build.0 = Debug|x64
+		{2287E64E-3515-4324-9833-553348295C15}.Release|x64.ActiveCfg = Release|x64
+		{2287E64E-3515-4324-9833-553348295C15}.Release|x64.Build.0 = Release|x64
+		{04AFCFBB-97D5-44EA-B087-F0CFAEB51E30}.Debug|x64.ActiveCfg = Debug|x64
+		{04AFCFBB-97D5-44EA-B087-F0CFAEB51E30}.Debug|x64.Build.0 = Debug|x64
+		{04AFCFBB-97D5-44EA-B087-F0CFAEB51E30}.Release|x64.ActiveCfg = Release|x64
+		{04AFCFBB-97D5-44EA-B087-F0CFAEB51E30}.Release|x64.Build.0 = Release|x64
+		{9C7B827F-AE30-44C4-A210-E49DF883C720}.Debug|x64.ActiveCfg = Debug|Any CPU
+		{9C7B827F-AE30-44C4-A210-E49DF883C720}.Debug|x64.Build.0 = Debug|Any CPU
+		{9C7B827F-AE30-44C4-A210-E49DF883C720}.Release|x64.ActiveCfg = Release|Any CPU
+		{9C7B827F-AE30-44C4-A210-E49DF883C720}.Release|x64.Build.0 = Release|Any CPU
+		{B31E6C36-D710-443F-8ED7-16BE3BD51FC4}.Debug|x64.ActiveCfg = Debug|Any CPU
+		{B31E6C36-D710-443F-8ED7-16BE3BD51FC4}.Debug|x64.Build.0 = Debug|Any CPU
+		{B31E6C36-D710-443F-8ED7-16BE3BD51FC4}.Release|x64.ActiveCfg = Release|Any CPU
+		{B31E6C36-D710-443F-8ED7-16BE3BD51FC4}.Release|x64.Build.0 = Release|Any CPU
+		{B5565834-1164-4858-AF50-AE89CFC9BDD2}.Debug|x64.ActiveCfg = Debug|x64
+		{B5565834-1164-4858-AF50-AE89CFC9BDD2}.Debug|x64.Build.0 = Debug|x64
+		{B5565834-1164-4858-AF50-AE89CFC9BDD2}.Release|x64.ActiveCfg = Release|x64
+		{B5565834-1164-4858-AF50-AE89CFC9BDD2}.Release|x64.Build.0 = Release|x64
+		{C9B1C169-1354-4348-9938-7892399C6336}.Debug|x64.ActiveCfg = Debug|Any CPU
+		{C9B1C169-1354-4348-9938-7892399C6336}.Debug|x64.Build.0 = Debug|Any CPU
+		{C9B1C169-1354-4348-9938-7892399C6336}.Release|x64.ActiveCfg = Release|Any CPU
+		{C9B1C169-1354-4348-9938-7892399C6336}.Release|x64.Build.0 = Release|Any CPU
+		{FBA5EFE2-362B-4BAD-A748-3248F79468AC}.Debug|x64.ActiveCfg = Debug|Win32
+		{FBA5EFE2-362B-4BAD-A748-3248F79468AC}.Debug|x64.Build.0 = Debug|Win32
+		{FBA5EFE2-362B-4BAD-A748-3248F79468AC}.Release|x64.ActiveCfg = Release|Win32
+		{FBA5EFE2-362B-4BAD-A748-3248F79468AC}.Release|x64.Build.0 = Release|Win32
+		{00858CE5-437F-46BE-8A2E-519B552DBF7D}.Debug|x64.ActiveCfg = Debug|x86
+		{00858CE5-437F-46BE-8A2E-519B552DBF7D}.Debug|x64.Build.0 = Debug|x86
+		{00858CE5-437F-46BE-8A2E-519B552DBF7D}.Release|x64.ActiveCfg = Release|x86
+		{00858CE5-437F-46BE-8A2E-519B552DBF7D}.Release|x64.Build.0 = Release|x86
+		{65AB4CE3-5AF4-411A-928C-7FFD250C6D85}.Debug|x64.ActiveCfg = Debug|x86
+		{65AB4CE3-5AF4-411A-928C-7FFD250C6D85}.Debug|x64.Build.0 = Debug|x86
+		{65AB4CE3-5AF4-411A-928C-7FFD250C6D85}.Release|x64.ActiveCfg = Release|x86
+		{65AB4CE3-5AF4-411A-928C-7FFD250C6D85}.Release|x64.Build.0 = Release|x86
+		{EF87DE0E-BC36-4D3C-8852-C8AD11D01F04}.Debug|x64.ActiveCfg = Debug|x86
+		{EF87DE0E-BC36-4D3C-8852-C8AD11D01F04}.Debug|x64.Build.0 = Debug|x86
+		{EF87DE0E-BC36-4D3C-8852-C8AD11D01F04}.Release|x64.ActiveCfg = Release|x86
+		{EF87DE0E-BC36-4D3C-8852-C8AD11D01F04}.Release|x64.Build.0 = Release|x86
+		{F6975079-F730-4A31-9909-DE536E524764}.Debug|x64.ActiveCfg = Debug|x86
+		{F6975079-F730-4A31-9909-DE536E524764}.Debug|x64.Build.0 = Debug|x86
+		{F6975079-F730-4A31-9909-DE536E524764}.Release|x64.ActiveCfg = Release|x86
+		{F6975079-F730-4A31-9909-DE536E524764}.Release|x64.Build.0 = Release|x86
+		{D1286C4A-9D6A-4904-B9AD-CB7688483EDB}.Debug|x64.ActiveCfg = Debug|x64
+		{D1286C4A-9D6A-4904-B9AD-CB7688483EDB}.Debug|x64.Build.0 = Debug|x64
+		{D1286C4A-9D6A-4904-B9AD-CB7688483EDB}.Release|x64.ActiveCfg = Release|x64
+		{D1286C4A-9D6A-4904-B9AD-CB7688483EDB}.Release|x64.Build.0 = Release|x64
+		{ABB0D3AD-BCDA-4F73-88C3-C67B76AAB6FE}.Debug|x64.ActiveCfg = Debug|Any CPU
+		{ABB0D3AD-BCDA-4F73-88C3-C67B76AAB6FE}.Debug|x64.Build.0 = Debug|Any CPU
+		{ABB0D3AD-BCDA-4F73-88C3-C67B76AAB6FE}.Release|x64.ActiveCfg = Release|Any CPU
+		{ABB0D3AD-BCDA-4F73-88C3-C67B76AAB6FE}.Release|x64.Build.0 = Release|Any CPU
+		{55CDD736-9A8A-4091-AC99-60E2F9C73269}.Debug|x64.ActiveCfg = Debug|x64
+		{55CDD736-9A8A-4091-AC99-60E2F9C73269}.Debug|x64.Build.0 = Debug|x64
+		{55CDD736-9A8A-4091-AC99-60E2F9C73269}.Debug|x64.Deploy.0 = Debug|x64
+		{55CDD736-9A8A-4091-AC99-60E2F9C73269}.Release|x64.ActiveCfg = Release|x64
+		{55CDD736-9A8A-4091-AC99-60E2F9C73269}.Release|x64.Build.0 = Release|x64
+		{55CDD736-9A8A-4091-AC99-60E2F9C73269}.Release|x64.Deploy.0 = Release|x64
 	EndGlobalSection
 	GlobalSection(SolutionProperties) = preSolution
 		HideSolutionNode = FALSE
diff --git a/Directory.Build.props b/Directory.Build.props
index c33d4a964be..6ec281e88af 100644
--- a/Directory.Build.props
+++ b/Directory.Build.props
@@ -16,29 +16,36 @@
 
 <Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
 
-    <PropertyGroup Label="AssemblyInfo">
-        <Company>iterate GmbH</Company>
-        <Description>Libre FTP, SFTP, WebDAV, S3 and OpenStack Swift browser for Mac and Windows.</Description>
-    </PropertyGroup>
-
-    <PropertyGroup>
-        <CyberduckDir>$(MSBuildThisFileDirectory)</CyberduckDir>
-        <TargetBuildDir>$(ModulePath)target\</TargetBuildDir>
-
-        <BaseIntermediateOutputPath>$(TargetBuildDir)obj\$(MSBuildProjectName)\</BaseIntermediateOutputPath>
-        <BaseOutputPath>$(TargetBuildDir)</BaseOutputPath>
-        <IntermediateOutputPath>$(BaseIntermediateOutputPath)$(Configuration)\</IntermediateOutputPath>
-        <OutputPath>$(BaseOutputPath)</OutputPath>
-
-        <AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkToOutputPath>
-        <AppendRuntimeIdentifierToOutputPath>false</AppendRuntimeIdentifierToOutputPath>
-        <LangVersion>12</LangVersion>
-    </PropertyGroup>
-
-    <ItemDefinitionGroup>
-        <CyberduckReference>
-            <ProjectPath />
-        </CyberduckReference>
-    </ItemDefinitionGroup>
-
-</Project>
+  <PropertyGroup Label="AssemblyInfo">
+    <Company>iterate GmbH</Company>
+    <Description>Libre FTP, SFTP, WebDAV, S3 and OpenStack Swift browser for Mac and Windows.</Description>
+  </PropertyGroup>
+
+  <PropertyGroup>
+    <CyberduckDir>$(MSBuildThisFileDirectory)</CyberduckDir>
+    <BuildSupportDir>$(CyberduckDir)src\main\msbuild\</BuildSupportDir>
+    <TargetBuildDir>$(ModulePath)target\</TargetBuildDir>
+    <LibDir>$(TargetBuildDir)lib\</LibDir>
+    <GeneratedMSBuildDir>$(TargetBuildDir)generated\msbuild\</GeneratedMSBuildDir>
+
+    <ArtifactsPath>$(TargetBuildDir)</ArtifactsPath>
+    <UseArtifactsOutput>false</UseArtifactsOutput>
+
+    <BaseIntermediateOutputPath>$(ArtifactsPath)obj\$(MSBuildProjectName)\</BaseIntermediateOutputPath>
+    <BaseOutputPath>$(ArtifactsPath)</BaseOutputPath>
+    <IntermediateOutputPath>$(BaseIntermediateOutputPath)$(Configuration)\</IntermediateOutputPath>
+    <OutputPath>$(BaseOutputPath)</OutputPath>
+
+    <AppendRuntimeIdentifierToOutputPath>false</AppendRuntimeIdentifierToOutputPath>
+    <LangVersion>12</LangVersion>
+  </PropertyGroup>
+
+  <ItemDefinitionGroup>
+    <CyberduckReference>
+      <ProjectPath />
+    </CyberduckReference>
+  </ItemDefinitionGroup>
+
+  <Import Project="$(GeneratedMSBuildDir)Version.props" Condition="Exists('$(GeneratedMSBuildDir)Version.props')" />
+
+</Project>
\ No newline at end of file
diff --git a/Directory.Build.targets b/Directory.Build.targets
index 996c6e37562..f3c3736c548 100644
--- a/Directory.Build.targets
+++ b/Directory.Build.targets
@@ -16,66 +16,71 @@
 
 <Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
 
-    <Sdk Name="Microsoft.Build.CentralPackageVersions" Version="2.0.41" />
+  <Sdk Name="Microsoft.Build.CentralPackageVersions" Version="2.0.41" />
 
-    <ItemGroup>
-        <CyberduckReference Update="Bonjour">
-            <ProjectPath>$(CyberduckDir)bonjour\dll\Cyberduck.Bonjour.msbuildproj</ProjectPath>
-        </CyberduckReference>
-        <CyberduckReference Update="Bonjour.Native">
-            <ProjectPath>$(CyberduckDir)bonjour\src\main\csharp\Cyberduck.Bonjour.Native.csproj</ProjectPath>
-        </CyberduckReference>
-        <CyberduckReference Update="Cli">
-            <ProjectPath>$(CyberduckDir)cli\dll\Cyberduck.Cli.msbuildproj</ProjectPath>
-        </CyberduckReference>
-        <CyberduckReference Update="Core">
-            <ProjectPath>$(CyberduckDir)core\dll\Cyberduck.Core.msbuildproj</ProjectPath>
-        </CyberduckReference>
-        <CyberduckReference Update="Core.Native">
-            <ProjectPath>$(CyberduckDir)core\src\main\csharp\Cyberduck.Core.Native.csproj</ProjectPath>
-        </CyberduckReference>
-        <CyberduckReference Update="Core.Refresh">
-            <ProjectPath>$(CyberduckDir)core\native\refresh\src\main\csharp\Cyberduck.Core.Refresh.csproj</ProjectPath>
-        </CyberduckReference>
-        <CyberduckReference Update="Cryptomator">
-            <ProjectPath>$(CyberduckDir)cryptomator\dll\Cyberduck.Cryptomator.msbuildproj</ProjectPath>
-        </CyberduckReference>
-        <CyberduckReference Update="Importer">
-          <ProjectPath>$(CyberduckDir)importer\dll\Cyberduck.Importer.msbuildproj</ProjectPath>
-        </CyberduckReference>
-        <CyberduckReference Update="Protocols">
-            <ProjectPath>$(CyberduckDir)protocols\dll\Cyberduck.Protocols.msbuildproj</ProjectPath>
-        </CyberduckReference>
-    </ItemGroup>
+  <PropertyGroup>
+    <AssemblySearchPaths>$(LibDir);$(AssemblySearchPaths)</AssemblySearchPaths>
+  </PropertyGroup>
 
-    <ItemGroup>
-        <CyberduckProjectReferences Include="@(CyberduckReference->HasMetadata('ProjectPath'))" Condition=" '$(BuildingInsideVisualStudio)'=='True' " />
-        <CyberduckLibraryReferences Include="@(CyberduckReference)" Exclude="@(CyberduckProjectReferences)" />
+  <PropertyGroup Condition=" '$(TargetFramework)' != '' ">
+    <LibDirFramework Condition="$([MSBuild]::IsTargetFrameworkCompatible('$(TargetFramework)', 'net472'))">net472</LibDirFramework>
+    <LibDirFramework Condition="$([MSBuild]::IsTargetFrameworkCompatible('$(TargetFramework)', 'net8.0'))">net8.0</LibDirFramework>
+    <AssemblySearchPaths Condition=" '$(LibDirFramework)' != '' ">$(LibDir)$(LibDirFramework)\;$(AssemblySearchPaths)</AssemblySearchPaths>
+  </PropertyGroup>
 
-        <ProjectReference Include="@(CyberduckProjectReferences->'%(ProjectPath)')">
-            <Name>Cyberduck.%(Identity)</Name>
-        </ProjectReference>
-        <Reference Include="@(CyberduckLibraryReferences->'Cyberduck.%(Identity)')">
-            <HintPath>$(TargetBuildDir)%(Identity).dll</HintPath>
-        </Reference>
-    </ItemGroup>
+  <ItemGroup>
+    <CyberduckReference Update="Bonjour">
+      <ProjectPath>$(CyberduckDir)bonjour\dll\Cyberduck.Bonjour.msbuildproj</ProjectPath>
+    </CyberduckReference>
+    <CyberduckReference Update="Bonjour.Native">
+      <ProjectPath>$(CyberduckDir)bonjour\src\main\csharp\Cyberduck.Bonjour.Native.csproj</ProjectPath>
+    </CyberduckReference>
+    <CyberduckReference Update="Cli">
+      <ProjectPath>$(CyberduckDir)cli\dll\Cyberduck.Cli.msbuildproj</ProjectPath>
+    </CyberduckReference>
+    <CyberduckReference Update="Core">
+      <ProjectPath>$(CyberduckDir)core\dll\Cyberduck.Core.msbuildproj</ProjectPath>
+    </CyberduckReference>
+    <CyberduckReference Update="Core.Native">
+      <ProjectPath>$(CyberduckDir)core\src\main\csharp\Cyberduck.Core.Native.csproj</ProjectPath>
+    </CyberduckReference>
+    <CyberduckReference Update="Core.Refresh">
+      <ProjectPath>$(CyberduckDir)core\native\refresh\src\main\csharp\Cyberduck.Core.Refresh.csproj</ProjectPath>
+    </CyberduckReference>
+    <CyberduckReference Update="Cryptomator">
+      <ProjectPath>$(CyberduckDir)cryptomator\dll\Cyberduck.Cryptomator.msbuildproj</ProjectPath>
+    </CyberduckReference>
+    <CyberduckReference Update="Importer">
+      <ProjectPath>$(CyberduckDir)importer\dll\Cyberduck.Importer.msbuildproj</ProjectPath>
+    </CyberduckReference>
+    <CyberduckReference Update="Protocols">
+      <ProjectPath>$(CyberduckDir)protocols\dll\Cyberduck.Protocols.msbuildproj</ProjectPath>
+    </CyberduckReference>
 
-    <PropertyGroup Condition=" '$(NETCoreSdkVersion)'!='' ">
-        <!-- Treat SDK 6.0.301 as last known to work. -->
-        <NETSDKBeforeFeature>$([MSBuild]::VersionLessThanOrEquals('$(NETCoreSdkVersion)', '6.0.301'))</NETSDKBeforeFeature>
-        <NETSDKAfterFix>$([MSBuild]::VersionGreaterThanOrEquals('$(NETCoreSdkVersion)', '6.0.401'))</NETSDKAfterFix>
-        <CoreCompileDependsOn Condition="!($(NETSDKBeforeFeature) or $(NETSDKAfterFix))">SDKFix_RemoveDuplicateAnalyzers;$(CoreCompileDependsOn)</CoreCompileDependsOn>
-    </PropertyGroup>
+    <CyberduckProjectReferences Include="@(CyberduckReference->HasMetadata('ProjectPath'))" Condition=" '$(BuildingInsideVisualStudio)'=='True' " />
+    <CyberduckLibraryReferences Include="@(CyberduckReference->'Cyberduck.%(Identity)')" Exclude="@(CyberduckProjectReferences)" />
+    <ProjectReference Include="@(CyberduckProjectReferences->'%(ProjectPath)')">
+      <Name>Cyberduck.%(Identity)</Name>
+    </ProjectReference>
+    <Reference Include="@(CyberduckLibraryReferences)" />
+  </ItemGroup>
 
-    <Target Name="SDKFix_RemoveDuplicateAnalyzers">
-        <ItemGroup>
-          <FilteredAnalyzer Include="@(Analyzer-&gt;Distinct())" />
-          <Analyzer Remove="@(Analyzer)" />
-          <Analyzer Include="@(FilteredAnalyzer)" />
-          <FilteredAnalyzer Remove="@(FilteredAnalyzer)" />
-      </ItemGroup>
+  <PropertyGroup Condition=" '$(NETCoreSdkVersion)'!='' ">
+    <!-- Treat SDK 6.0.301 as last known to work. -->
+    <NETSDKBeforeFeature>$([MSBuild]::VersionLessThanOrEquals('$(NETCoreSdkVersion)', '6.0.301'))</NETSDKBeforeFeature>
+    <NETSDKAfterFix>$([MSBuild]::VersionGreaterThanOrEquals('$(NETCoreSdkVersion)', '6.0.401'))</NETSDKAfterFix>
+    <CoreCompileDependsOn Condition="!($(NETSDKBeforeFeature) or $(NETSDKAfterFix))">SDKFix_RemoveDuplicateAnalyzers;$(CoreCompileDependsOn)</CoreCompileDependsOn>
+  </PropertyGroup>
+
+  <Target Name="SDKFix_RemoveDuplicateAnalyzers">
+    <ItemGroup>
+      <FilteredAnalyzer Include="@(Analyzer-&gt;Distinct())" />
+      <Analyzer Remove="@(Analyzer)" />
+      <Analyzer Include="@(FilteredAnalyzer)" />
+      <FilteredAnalyzer Remove="@(FilteredAnalyzer)" />
+    </ItemGroup>
   </Target>
-  
+
   <Target Name="_ExportReference" />
 
-</Project>
+</Project>
\ No newline at end of file
diff --git a/Packages.props b/Packages.props
index 1e3979263f3..ced17f28823 100644
--- a/Packages.props
+++ b/Packages.props
@@ -33,7 +33,10 @@
     <PackageReference Update="ReactiveUI" Version="17.1.50" />
     <PackageReference Update="ReactiveUI.WPF" Version="17.1.50" />
     <PackageReference Update="StructureMap" Version="2.6.4.1" />
+    <PackageReference Update="System.Configuration.ConfigurationManager" Version="8.0.0" />
     <PackageReference Update="System.Memory" Version="4.5.5" />
+    <PackageReference Update="System.Runtime.Caching" Version="8.0.0" />
+    <PackageReference Update="System.Security.Cryptography.ProtectedData" Version="8.0.0" />
 
     <GlobalPackageReference Include="MSBuildTasks" Version="1.5.0.235" GeneratePathProperty="true" />
   </ItemGroup>
diff --git a/bonjour/dll/Cyberduck.Bonjour.msbuildproj b/bonjour/dll/Cyberduck.Bonjour.msbuildproj
index 1189e4e76ef..2ba81c75dc8 100644
--- a/bonjour/dll/Cyberduck.Bonjour.msbuildproj
+++ b/bonjour/dll/Cyberduck.Bonjour.msbuildproj
@@ -1,12 +1,17 @@
 <Project Sdk="IKVM.NET.Sdk">
-    <PropertyGroup>
-        <TargetFramework>net472</TargetFramework>
-    </PropertyGroup>
+  <PropertyGroup>
+    <!--
+      Only really used in Cyberduck.
+    -->
+    <TargetFramework>net472</TargetFramework>
+  </PropertyGroup>
 
-    <ItemGroup>
-        <CyberduckReference Include="Core" />
-        
-        <Convert Include="$(TargetBuildDir)ch.cyberduck.bonjour.jar" />
-        <Convert Include="$(TargetBuildDir)com.apple.dnssd.jar" />
-    </ItemGroup>
-</Project>
+  <Import Project="$(BuildSupportDir)Cyberduck.Java.props" />
+
+  <ItemGroup>
+    <CyberduckReference Include="Core" />
+
+    <Convert Include="$(TargetBuildDir)ch.cyberduck.bonjour.jar" />
+    <Convert Include="$(TargetBuildDir)com.apple.dnssd.jar" />
+  </ItemGroup>
+</Project>
\ No newline at end of file
diff --git a/bonjour/dll/Directory.Build.props b/bonjour/dll/Directory.Build.props
index 82445b2700b..415d5cdf9b5 100644
--- a/bonjour/dll/Directory.Build.props
+++ b/bonjour/dll/Directory.Build.props
@@ -20,6 +20,5 @@
     </PropertyGroup>
 
     <Import Project="../Directory.Build.props" />
-    <Import Project="$([MSBuild]::GetPathOfFileAbove('Directory.Build.Java.props', '$(MSBuildThisFileDirectory)../'))" />
 
 </Project>
diff --git a/bonjour/dll/build.xml b/bonjour/dll/build.xml
index f5fec0f93bb..e0509917d22 100644
--- a/bonjour/dll/build.xml
+++ b/bonjour/dll/build.xml
@@ -29,11 +29,9 @@
         </msbuild>
     </target>
 
-    <target name="build" if="platform.windows" depends="version,restore,msbuild.configuration">
+    <target name="build" if="platform.windows" depends="restore,msbuild">
         <msbuild buildfile="Cyberduck.Bonjour.msbuildproj">
             <property name="Configuration" value="${msbuild.configuration}" />
-            <property name="Copyright" value="${copyright}" />
-            <property name="Version" value="${version}.${revision}" />
         </msbuild>
     </target>
 
diff --git a/bonjour/dll/pom.xml b/bonjour/dll/pom.xml
index c9a70a90e14..8cb21bc0f03 100644
--- a/bonjour/dll/pom.xml
+++ b/bonjour/dll/pom.xml
@@ -58,8 +58,9 @@
                                 <configuration>
                                     <artifacts>
                                         <artifact>
+                                            <classifier>net472</classifier>
                                             <type>dll</type>
-                                            <file>${project.build.directory}/Cyberduck.Bonjour.dll</file>
+                                            <file>${project.build.directory}/net472/Cyberduck.Bonjour.dll</file>
                                         </artifact>
                                     </artifacts>
                                 </configuration>
@@ -75,6 +76,7 @@
                 <dependency>
                     <groupId>ch.cyberduck</groupId>
                     <artifactId>Cyberduck.Core</artifactId>
+                    <classifier>net472</classifier>
                     <version>${project.version}</version>
                     <type>dll</type>
                 </dependency>
@@ -87,6 +89,13 @@
             <groupId>ch.cyberduck</groupId>
             <artifactId>bonjour</artifactId>
             <version>${project.version}</version>
+            <scope>provided</scope>
+            <exclusions>
+                <exclusion>
+                    <groupId>ch.cyberduck</groupId>
+                    <artifactId>core</artifactId>
+                </exclusion>
+            </exclusions>
         </dependency>
     </dependencies>
 </project>
\ No newline at end of file
diff --git a/bonjour/native/build.xml b/bonjour/native/build.xml
index 6a5c585a427..fd59646a58f 100644
--- a/bonjour/native/build.xml
+++ b/bonjour/native/build.xml
@@ -23,31 +23,18 @@
 
     <import file="../../build.xml"/>
 
-    <property name="msbuild.configuration" value="release"/>
-
-    <target name="init-msbuild">
-        <taskdef name="msbuild" classname="org.apache.ant.dotnet.build.MSBuildTask">
-            <classpath path="${lib.ext}/ant-dotnet-1.1.jar"/>
-        </taskdef>
-    </target>
-
-    <target name="restore" depends="init-msbuild, version">
+    <target name="restore" depends="msbuild">
         <msbuild buildfile="../src/main/csharp/Cyberduck.Bonjour.Native.csproj">
             <target name="Restore" />
         </msbuild>
     </target>
 
-    <target name="build" depends="init-msbuild, version">
+    <target name="build" depends="restore,msbuild">
         <!-- Create DLL Cyberduck.Bonjour.Native -->
         <msbuild buildfile="../src/main/csharp/Cyberduck.Bonjour.Native.csproj">
             <target name="Build"/>
 
-            <property name="Version"
-                      value="${version}.${revision}"/>
-            <property name="ShortVersion"
-                      value="${version} (${revision})"/>
-            <property name="Configuration"
-                      value="${msbuild.configuration}"/>
+            <property name="Configuration" value="${msbuild.configuration}"/>
         </msbuild>
     </target>
 </project>
diff --git a/bonjour/native/pom.xml b/bonjour/native/pom.xml
index 18b20d3fec5..3959d4429be 100644
--- a/bonjour/native/pom.xml
+++ b/bonjour/native/pom.xml
@@ -36,8 +36,9 @@
                                 <configuration>
                                     <artifacts>
                                         <artifact>
+                                            <classifier>net472</classifier>
                                             <type>dll</type>
-                                            <file>${project.build.directory}/Cyberduck.Bonjour.Native.dll</file>
+                                            <file>${project.build.directory}/net472/Cyberduck.Bonjour.Native.dll</file>
                                         </artifact>
                                     </artifacts>
                                 </configuration>
@@ -46,36 +47,6 @@
                     </plugin>
                     <plugin>
                         <artifactId>maven-antrun-plugin</artifactId>
-                        <executions>
-                            <execution>
-                                <id>run-ant-restore-target</id>
-                                <phase>initialize</phase>
-                                <goals>
-                                    <goal>run</goal>
-                                </goals>
-                                <configuration>
-                                    <target>
-                                        <property name="home" value="${main.basedir}" />
-                                        <ant antfile="${project.basedir}/build.xml" target="restore" dir="." />
-                                    </target>
-                                </configuration>
-                            </execution>
-                            <execution>
-                                <id>run-ant-build-target</id>
-                                <phase>compile</phase>
-                                <goals>
-                                    <goal>run</goal>
-                                </goals>
-                                <configuration>
-                                    <target>
-                                        <property name="home" value="${main.basedir}" />
-                                        <property name="version" value="${project.version}" />
-                                        <property name="revision" value="${git.commitsCount}" />
-                                        <ant antfile="${project.basedir}/build.xml" target="build" dir="." />
-                                    </target>
-                                </configuration>
-                            </execution>
-                        </executions>
                     </plugin>
                 </plugins>
             </build>
@@ -83,19 +54,11 @@
                 <dependency>
                     <groupId>ch.cyberduck</groupId>
                     <artifactId>Cyberduck.Bonjour</artifactId>
+                    <classifier>net472</classifier>
                     <type>dll</type>
                     <version>${project.version}</version>
-                    <scope>runtime</scope>
                 </dependency>
             </dependencies>
         </profile>
     </profiles>
-
-    <dependencies>
-        <dependency>
-            <groupId>ch.cyberduck</groupId>
-            <artifactId>bonjour</artifactId>
-            <version>${project.version}</version>
-        </dependency>
-    </dependencies>
 </project>
diff --git a/bonjour/pom.xml b/bonjour/pom.xml
index ab6fc8b79d5..73667535edb 100644
--- a/bonjour/pom.xml
+++ b/bonjour/pom.xml
@@ -55,22 +55,6 @@
             <properties>
                 <maven.test.skip>true</maven.test.skip>
             </properties>
-            <build>
-                <plugins>
-                    <plugin>
-                        <artifactId>maven-dependency-plugin</artifactId>
-                    </plugin>
-                </plugins>
-            </build>
-            <dependencies>
-                <dependency>
-                    <groupId>ch.cyberduck</groupId>
-                    <artifactId>Cyberduck.Core</artifactId>
-                    <type>dll</type>
-                    <version>${project.version}</version>
-                    <scope>runtime</scope>
-                </dependency>
-            </dependencies>
         </profile>
         <profile>
             <id>linux</id>
diff --git a/bonjour/src/main/csharp/Cyberduck.Bonjour.Native.csproj b/bonjour/src/main/csharp/Cyberduck.Bonjour.Native.csproj
index 6f20a8480c7..b176bbca869 100644
--- a/bonjour/src/main/csharp/Cyberduck.Bonjour.Native.csproj
+++ b/bonjour/src/main/csharp/Cyberduck.Bonjour.Native.csproj
@@ -1,24 +1,21 @@
 <Project Sdk="Microsoft.NET.Sdk">
 
   <PropertyGroup>
+    <!--
+      Only really used in Cyberduck.
+    -->
     <TargetFramework>net472</TargetFramework>
     <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
   </PropertyGroup>
 
   <ItemGroup>
-    <CyberduckReference Include="Bonjour" />
+    <CyberduckReference Include="Core;Bonjour" />
   </ItemGroup>
 
   <ItemGroup>
     <PackageReference Include="IKVM" />
   </ItemGroup>
 
-  <ItemGroup>
-    <Reference Include="Microsoft.VisualBasic" />
-    <Reference Include="Microsoft.CSharp" />
-    <Reference Include="System.Windows.Forms" />
-  </ItemGroup>
-
   <ItemGroup>
     <COMReference Include="Bonjour">
       <Guid>{18FBED6D-F2B7-4EC8-A4A4-46282E635308}</Guid>
diff --git a/bonjour/src/main/csharp/Directory.Build.props b/bonjour/src/main/csharp/Directory.Build.props
index f42b355a991..12cf8c164a2 100644
--- a/bonjour/src/main/csharp/Directory.Build.props
+++ b/bonjour/src/main/csharp/Directory.Build.props
@@ -20,9 +20,4 @@
   </PropertyGroup>
   <Import Project="$(_BonjourBasePath)native/Directory.Build.props" />
 
-  <PropertyGroup>
-    <Platforms>x64</Platforms>
-    <Platform Condition=" '$(Platform)'=='' ">x64</Platform>
-  </PropertyGroup>
-
 </Project>
diff --git a/build.xml b/build.xml
index a22adfaf88e..ed1113ebfb3 100644
--- a/build.xml
+++ b/build.xml
@@ -78,10 +78,6 @@
     <condition property="debug" value="on" else="off">
         <equals arg1="${configuration}" arg2="debug" />
     </condition>
-    <condition property="ikvm.debug">
-        <equals arg1="${configuration}" arg2="debug" />
-    </condition>
-
     <target name="init" depends="timestamp">
         <echo message=""/>
         <echo message="	  ---------------------------------------------------------------"/>
@@ -131,16 +127,24 @@
         </tstamp>
     </target>
 
-    <target name="msbuild">
+    <target name="msbuild" depends="version">
         <taskdef name="msbuild" classname="org.apache.ant.dotnet.build.MSBuildTask">
             <classpath path="${lib.ext}/ant-dotnet-1.1.jar"/>
         </taskdef>
-    </target>
-    
-    <target name="msbuild.configuration">
+
         <condition property="msbuild.configuration" value="Debug">
-            <equals arg1="${configuration}" arg2="debug" />
+            <equals arg1="${configuration}" arg2="debug"/>
         </condition>
-        <property name="msbuild.configuration" value="Release" />
+        <property name="msbuild.configuration" value="Release"/>
+
+        <copy todir="${build}/generated/msbuild" overwrite="True">
+            <resources>
+                <fileset dir="${home}/src/template/msbuild" erroronmissingdir="false"/>
+                <fileset dir="${module}/src/template/msbuild" erroronmissingdir="false"/>
+            </resources>
+            <filterchain>
+                <expandproperties/>
+            </filterchain>
+        </copy>
     </target>
 </project>
diff --git a/cli/dll/Cyberduck.Cli.msbuildproj b/cli/dll/Cyberduck.Cli.msbuildproj
index 3129c18dab5..c550adab78c 100644
--- a/cli/dll/Cyberduck.Cli.msbuildproj
+++ b/cli/dll/Cyberduck.Cli.msbuildproj
@@ -1,13 +1,15 @@
 <Project Sdk="IKVM.NET.Sdk">
-    <PropertyGroup>
-        <TargetFramework>net472</TargetFramework>
-    </PropertyGroup>
+  <PropertyGroup>
+    <TargetFramework>net472</TargetFramework>
+  </PropertyGroup>
 
-    <ItemGroup>
-        <CyberduckReference Include="Core;Bonjour;Protocols;Cryptomator" />
+  <Import Project="$(BuildSupportDir)Cyberduck.Java.props" />
 
-        <Convert Include="$(TargetBuildDir)ch.cyberduck.cli.jar" />
-        <Convert Include="$(TargetBuildDir)commons-cli.commons-cli.jar" />
-        <Convert Include="$(TargetBuildDir)org.fusesource.jansi.jansi.jar" />
-    </ItemGroup>
-</Project>
+  <ItemGroup>
+    <CyberduckReference Include="Core;Bonjour;Protocols;Cryptomator" />
+
+    <Convert Include="$(TargetBuildDir)ch.cyberduck.cli.jar" />
+    <Convert Include="$(TargetBuildDir)commons-cli.commons-cli.jar" />
+    <Convert Include="$(TargetBuildDir)org.fusesource.jansi.jansi.jar" />
+  </ItemGroup>
+</Project>
\ No newline at end of file
diff --git a/cli/dll/Directory.Build.props b/cli/dll/Directory.Build.props
index 82445b2700b..415d5cdf9b5 100644
--- a/cli/dll/Directory.Build.props
+++ b/cli/dll/Directory.Build.props
@@ -20,6 +20,5 @@
     </PropertyGroup>
 
     <Import Project="../Directory.Build.props" />
-    <Import Project="$([MSBuild]::GetPathOfFileAbove('Directory.Build.Java.props', '$(MSBuildThisFileDirectory)../'))" />
 
 </Project>
diff --git a/cli/dll/build.xml b/cli/dll/build.xml
index f047e8c0e13..68d88d0cf85 100644
--- a/cli/dll/build.xml
+++ b/cli/dll/build.xml
@@ -24,11 +24,9 @@
         </msbuild>
     </target>
 
-    <target name="build" if="platform.windows" depends="version,restore,msbuild.configuration">
+    <target name="build" if="platform.windows" depends="restore,msbuild">
         <msbuild buildfile="Cyberduck.Cli.msbuildproj">
             <property name="Configuration" value="${msbuild.configuration}" />
-            <property name="Copyright" value="${copyright}" />
-            <property name="Version" value="${version}.${revision}" />
         </msbuild>
     </target>
 </project>
diff --git a/cli/dll/pom.xml b/cli/dll/pom.xml
index f85f6d31891..0296c1e89f3 100644
--- a/cli/dll/pom.xml
+++ b/cli/dll/pom.xml
@@ -70,8 +70,9 @@
                                 <configuration>
                                     <artifacts>
                                         <artifact>
+                                            <classifier>net472</classifier>
                                             <type>dll</type>
-                                            <file>${project.build.directory}/Cyberduck.Cli.dll</file>
+                                            <file>${project.build.directory}/net472/Cyberduck.Cli.dll</file>
                                         </artifact>
                                     </artifacts>
                                 </configuration>
@@ -90,29 +91,30 @@
                 <dependency>
                     <groupId>ch.cyberduck</groupId>
                     <artifactId>Cyberduck.Core</artifactId>
+                    <classifier>net472</classifier>
                     <type>dll</type>
                     <version>${project.version}</version>
-                    <scope>runtime</scope>
                 </dependency>
                 <dependency>
                     <groupId>ch.cyberduck</groupId>
                     <artifactId>Cyberduck.Core.Native</artifactId>
+                    <classifier>net472</classifier>
                     <type>dll</type>
                     <version>${project.version}</version>
                 </dependency>
                 <dependency>
                     <groupId>ch.cyberduck</groupId>
                     <artifactId>Cyberduck.Protocols</artifactId>
+                    <classifier>net472</classifier>
                     <type>dll</type>
                     <version>${project.version}</version>
-                    <scope>runtime</scope>
                 </dependency>
                 <dependency>
                     <groupId>ch.cyberduck</groupId>
                     <artifactId>Cyberduck.Cryptomator</artifactId>
+                    <classifier>net472</classifier>
                     <type>dll</type>
                     <version>${project.version}</version>
-                    <scope>runtime</scope>
                 </dependency>
             </dependencies>
         </profile>
@@ -123,6 +125,21 @@
             <groupId>ch.cyberduck</groupId>
             <artifactId>cli</artifactId>
             <version>${project.version}</version>
+            <scope>provided</scope>
+            <exclusions>
+                <exclusion>
+                    <groupId>ch.cyberduck</groupId>
+                    <artifactId>core</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>ch.cyberduck</groupId>
+                    <artifactId>cryptomator</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>ch.cyberduck</groupId>
+                    <artifactId>protocols</artifactId>
+                </exclusion>
+            </exclusions>
         </dependency>
     </dependencies>
 </project>
diff --git a/cli/src/main/csharp/duck.csproj b/cli/src/main/csharp/duck.csproj
index 23828e56ebe..24881b26752 100644
--- a/cli/src/main/csharp/duck.csproj
+++ b/cli/src/main/csharp/duck.csproj
@@ -20,6 +20,10 @@
       <Link>$(Filename)$(Extension)</Link>
       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
     </Content>
+    <Content Include="$(TargetBuildDir)lib\jnidispatch.dll">
+      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+      <Link>$(Filename)$(Extension)</Link>
+    </Content>
 
     <Content Include="$(CyberduckDir)bookmarks/*.duck">
       <Link>bookmarks/%(Filename)%(Extension)</Link>
@@ -36,10 +40,8 @@
   </ItemGroup>
 
   <ItemGroup>
-    <PackageReference Include="IKVM">
-      <PrivateAssets>contentfiles;analyzers;build;buildTransitive</PrivateAssets>
-    </PackageReference>
+    <PackageReference Include="IKVM" />
     <PackageReference Include="System.Memory" />
   </ItemGroup>
 
-</Project>
+</Project>
\ No newline at end of file
diff --git a/cli/src/main/wix/Bundle/duck.bundle.wixproj b/cli/src/main/wix/Bundle/duck.bundle.wixproj
index 1c22127b548..5daa10a2cb2 100644
--- a/cli/src/main/wix/Bundle/duck.bundle.wixproj
+++ b/cli/src/main/wix/Bundle/duck.bundle.wixproj
@@ -36,7 +36,7 @@
     </HarvestDirectory>
     <HarvestDirectory Include="$(TargetBuildDir)ikvm" SuppressCom="true" SuppressRegistry="true">
       <Link>ikvm</Link>
-      <DirectoryRefId>INSTALLFOLDER</DirectoryRefId>
+      <DirectoryRefId>INSTALLLOCATION</DirectoryRefId>
       <ComponentGroupName>IkvmRuntime</ComponentGroupName>
       <PreprocessorVariable>var.IkvmRuntimeDir</PreprocessorVariable>
     </HarvestDirectory>
diff --git a/cli/windows/Directory.Build.props b/cli/windows/Directory.Build.props
index 446ced77aa6..345496fbdd4 100644
--- a/cli/windows/Directory.Build.props
+++ b/cli/windows/Directory.Build.props
@@ -17,6 +17,7 @@
 
     <PropertyGroup>
         <ModulePath Condition="'$(ModulePath)'==''">$(MSBuildThisFileDirectory)</ModulePath>
+        <AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkToOutputPath>
     </PropertyGroup>
 
     <Import Project="$([MSBuild]::GetPathOfFileAbove('Directory.Build.Props', $(MSBuildThisFileDirectory)../))" />
diff --git a/cli/windows/build.xml b/cli/windows/build.xml
index 213babf5c02..4a773374c78 100644
--- a/cli/windows/build.xml
+++ b/cli/windows/build.xml
@@ -19,26 +19,12 @@
     <import file="../../build.xml"/>
     <import file="../../archive.xml"/>
 
-    <condition property="msbuild.configuration" value="Debug">
-        <equals arg1="${configuration}" arg2="debug" />
-    </condition>
-    <condition property="msbuild.configuration" value="Release">
-        <equals arg1="${configuration}" arg2="release" />
-    </condition>
-
     <property name="cpack.bin" value="${env.ChocolateyInstall}/bin/cpack"/>
 
     <property name="chocolatey.source" value="${setup}/chocolatey/duck"/>
     <property name="chocolatey.target" value="${build.deploy}"/>
 
-    <target name="init-msbuild">
-        <taskdef name="msbuild"
-                 classname="org.apache.ant.dotnet.build.MSBuildTask">
-            <classpath path="${lib.ext}/ant-dotnet-1.1.jar"/>
-        </taskdef>
-    </target>
-
-    <target name="restore" depends="init-msbuild, version">
+    <target name="restore" depends="msbuild">
         <msbuild buildfile="build.proj">
             <target name="Restore" />
 
@@ -47,20 +33,16 @@
         </msbuild>
     </target>
 
-    <target name="build" depends="init-msbuild, version">
+    <target name="build" depends="restore,msbuild">
         <msbuild buildfile="build.proj">
             <target name="Build" />
 
             <property name="Configuration" value="${msbuild.configuration}" />
-            <property name="Copyright" value="${copyright}" />
             <property name="Exe" value="true" />
-            <property name="Platform" value="x64" />
-            <property name="ShortVersion" value="${version} (${revision})" />
-            <property name="Version" value="${version}.${revision}" />
         </msbuild>
     </target>
 
-    <target name="package" depends="init-msbuild, version">
+    <target name="package" depends="restore,msbuild">
         <condition property="msbuild.sign" value="false">
             <istrue value="${skip}" />
         </condition>
@@ -71,11 +53,8 @@
 
             <property name="BuildProjectReferences" value="false" />
             <property name="Configuration" value="${msbuild.configuration}" />
-            <property name="Copyright" value="${copyright}" />
             <property name="Installer" value="true" />
-            <property name="ShortVersion" value="${version} (${revision})" />
             <property name="SignOutput" value="${msbuild.sign}" />
-            <property name="Version" value="${version}.${revision}" />
         </msbuild>
     </target>
 
diff --git a/cli/windows/pom.xml b/cli/windows/pom.xml
index 8e98281a563..065e296c419 100644
--- a/cli/windows/pom.xml
+++ b/cli/windows/pom.xml
@@ -39,34 +39,6 @@
                     <plugin>
                         <artifactId>maven-antrun-plugin</artifactId>
                         <executions>
-                            <execution>
-                                <id>run-ant-restore-target</id>
-                                <phase>initialize</phase>
-                                <goals>
-                                    <goal>run</goal>
-                                </goals>
-                                <configuration>
-                                    <target>
-                                        <property name="home" value="${main.basedir}" />
-                                        <ant antfile="${project.basedir}/build.xml" target="restore" dir="." />
-                                    </target>
-                                </configuration>
-                            </execution>
-                            <execution>
-                                <id>run-ant-build-target</id>
-                                <phase>compile</phase>
-                                <goals>
-                                    <goal>run</goal>
-                                </goals>
-                                <configuration>
-                                    <target>
-                                        <property name="home" value="${main.basedir}" />
-                                        <property name="version" value="${project.version}" />
-                                        <property name="revision" value="${git.commitsCount}" />
-                                        <ant antfile="${project.basedir}/build.xml" target="build" dir="." />
-                                    </target>
-                                </configuration>
-                            </execution>
                             <execution>
                                 <id>run-ant-installer-target</id>
                                 <phase>package</phase>
@@ -111,46 +83,39 @@
                 <dependency>
                     <groupId>ch.cyberduck</groupId>
                     <artifactId>Cyberduck.Core</artifactId>
+                    <classifier>net472</classifier>
                     <type>dll</type>
                     <version>${project.version}</version>
-                    <scope>runtime</scope>
                 </dependency>
                 <dependency>
                     <groupId>ch.cyberduck</groupId>
                     <artifactId>Cyberduck.Core.Native</artifactId>
+                    <classifier>net472</classifier>
                     <type>dll</type>
                     <version>${project.version}</version>
                 </dependency>
                 <dependency>
                     <groupId>ch.cyberduck</groupId>
                     <artifactId>Cyberduck.Protocols</artifactId>
+                    <classifier>net472</classifier>
                     <type>dll</type>
                     <version>${project.version}</version>
-                    <scope>runtime</scope>
                 </dependency>
                 <dependency>
                     <groupId>ch.cyberduck</groupId>
                     <artifactId>Cyberduck.Cryptomator</artifactId>
+                    <classifier>net472</classifier>
                     <type>dll</type>
                     <version>${project.version}</version>
-                    <scope>runtime</scope>
                 </dependency>
                 <dependency>
                     <groupId>ch.cyberduck</groupId>
                     <artifactId>Cyberduck.Cli</artifactId>
+                    <classifier>net472</classifier>
                     <type>dll</type>
                     <version>${project.version}</version>
-                    <scope>runtime</scope>
                 </dependency>
             </dependencies>
         </profile>
     </profiles>
-
-    <dependencies>
-        <dependency>
-            <groupId>ch.cyberduck</groupId>
-            <artifactId>cli</artifactId>
-            <version>${project.version}</version>
-        </dependency>
-    </dependencies>
 </project>
diff --git a/core/dll/Cyberduck.Core.msbuildproj b/core/dll/Cyberduck.Core.msbuildproj
index 6cded0ee5d2..434b974e1ce 100644
--- a/core/dll/Cyberduck.Core.msbuildproj
+++ b/core/dll/Cyberduck.Core.msbuildproj
@@ -1,53 +1,55 @@
 <Project Sdk="IKVM.NET.Sdk">
-    <PropertyGroup>
-        <TargetFramework>net472</TargetFramework>
-    </PropertyGroup>
+  <PropertyGroup>
+    <TargetFrameworks>net472;net8.0</TargetFrameworks>
+  </PropertyGroup>
 
-    <ItemGroup>
-        <Convert Include="$(TargetBuildDir)ch.cyberduck.core.jar" />
-        <Convert Include="$(TargetBuildDir)ch.cyberduck.defaults.jar" />
-        <Convert Include="$(TargetBuildDir)ch.iterate.s3.jets3t.jar" />
-        <Convert Include="$(TargetBuildDir)com.auth0.java-jwt.jar" />
-        <Convert Include="$(TargetBuildDir)com.fasterxml.jackson.core.jackson-annotations.jar" />
-        <Convert Include="$(TargetBuildDir)com.fasterxml.jackson.core.jackson-core.jar" />
-        <Convert Include="$(TargetBuildDir)com.fasterxml.jackson.core.jackson-databind.jar" />
-        <Convert Include="$(TargetBuildDir)com.google.code.findbugs.jsr305.jar" />
-        <Convert Include="$(TargetBuildDir)com.google.code.gson.gson.jar" />
-        <Convert Include="$(TargetBuildDir)com.google.errorprone.error_prone_annotations.jar" />
-        <Convert Include="$(TargetBuildDir)com.google.guava.failureaccess.jar" />
-        <Convert Include="$(TargetBuildDir)com.google.guava.guava.jar" />
-        <Convert Include="$(TargetBuildDir)com.google.guava.listenablefuture.jar" />
-        <Convert Include="$(TargetBuildDir)com.google.j2objc.j2objc-annotations.jar" />
-        <Convert Include="$(TargetBuildDir)com.googlecode.plist.dd-plist.jar" />
-        <Convert Include="$(TargetBuildDir)com.jamesmurty.utils.java-xmlbuilder.jar" />
-        <Convert Include="$(TargetBuildDir)com.joyent.util.fast-md5.jar" />
-        <Convert Include="$(TargetBuildDir)com.nulab-inc.zxcvbn.jar" />
-        <Convert Include="$(TargetBuildDir)commons-codec.commons-codec.jar" />
-        <Convert Include="$(TargetBuildDir)commons-io.commons-io.jar" />
-        <Convert Include="$(TargetBuildDir)commons-logging.commons-logging.jar" />
-        <Convert Include="$(TargetBuildDir)commons-net.commons-net.jar" />
-        <Convert Include="$(TargetBuildDir)javax.activation.activation.jar" />
-        <Convert Include="$(TargetBuildDir)net.iharder.base64.jar" />
-        <Convert Include="$(TargetBuildDir)net.java.dev.jna.jna-min.jar" />
-        <Convert Include="$(TargetBuildDir)net.java.dev.jna.jna-platform.jar" />
-        <Convert Include="$(TargetBuildDir)org.apache.commons.commons-collections4.jar" />
-        <Convert Include="$(TargetBuildDir)org.apache.commons.commons-lang3.jar" />
-        <Convert Include="$(TargetBuildDir)org.apache.commons.commons-pool2.jar" />
-        <Convert Include="$(TargetBuildDir)org.apache.commons.commons-text.jar" />
-        <Convert Include="$(TargetBuildDir)org.apache.httpcomponents.httpclient-win.jar" />
-        <Convert Include="$(TargetBuildDir)org.apache.httpcomponents.httpclient.jar" />
-        <Convert Include="$(TargetBuildDir)org.apache.httpcomponents.httpcore.jar" />
-        <Convert Include="$(TargetBuildDir)org.apache.httpcomponents.httpmime.jar" />
-        <Convert Include="$(TargetBuildDir)org.apache.logging.log4j.log4j-api.jar" />
-        <Convert Include="$(TargetBuildDir)org.apache.logging.log4j.log4j-core.jar" />
-        <Convert Include="$(TargetBuildDir)org.apache.logging.log4j.log4j-slf4j-impl.jar" />
-        <Convert Include="$(TargetBuildDir)org.bouncycastle.bcpkix-jdk18on.jar" />
-        <Convert Include="$(TargetBuildDir)org.bouncycastle.bcprov-jdk18on.jar" />
-        <Convert Include="$(TargetBuildDir)org.bouncycastle.bcutil-jdk18on.jar" />
-        <Convert Include="$(TargetBuildDir)org.checkerframework.checker-qual.jar" />
-        <Convert Include="$(TargetBuildDir)org.codehaus.jackson.jackson-core-asl.jar" />
-        <Convert Include="$(TargetBuildDir)org.codehaus.jackson.jackson-mapper-asl.jar" />
-        <Convert Include="$(TargetBuildDir)org.slf4j.jul-to-slf4j.jar" />
-        <Convert Include="$(TargetBuildDir)org.slf4j.slf4j-api.jar" />
-    </ItemGroup>
+  <Import Project="$(BuildSupportDir)Cyberduck.Java.props" />
+
+  <ItemGroup>
+    <Convert Include="$(TargetBuildDir)ch.cyberduck.core.jar" />
+    <Convert Include="$(TargetBuildDir)ch.cyberduck.defaults.jar" />
+    <Convert Include="$(TargetBuildDir)ch.iterate.s3.jets3t.jar" />
+    <Convert Include="$(TargetBuildDir)com.auth0.java-jwt.jar" />
+    <Convert Include="$(TargetBuildDir)com.fasterxml.jackson.core.jackson-annotations.jar" />
+    <Convert Include="$(TargetBuildDir)com.fasterxml.jackson.core.jackson-core.jar" />
+    <Convert Include="$(TargetBuildDir)com.fasterxml.jackson.core.jackson-databind.jar" />
+    <Convert Include="$(TargetBuildDir)com.google.code.findbugs.jsr305.jar" />
+    <Convert Include="$(TargetBuildDir)com.google.code.gson.gson.jar" />
+    <Convert Include="$(TargetBuildDir)com.google.errorprone.error_prone_annotations.jar" />
+    <Convert Include="$(TargetBuildDir)com.google.guava.failureaccess.jar" />
+    <Convert Include="$(TargetBuildDir)com.google.guava.guava.jar" />
+    <Convert Include="$(TargetBuildDir)com.google.guava.listenablefuture.jar" />
+    <Convert Include="$(TargetBuildDir)com.google.j2objc.j2objc-annotations.jar" />
+    <Convert Include="$(TargetBuildDir)com.googlecode.plist.dd-plist.jar" />
+    <Convert Include="$(TargetBuildDir)com.jamesmurty.utils.java-xmlbuilder.jar" />
+    <Convert Include="$(TargetBuildDir)com.joyent.util.fast-md5.jar" />
+    <Convert Include="$(TargetBuildDir)com.nulab-inc.zxcvbn.jar" />
+    <Convert Include="$(TargetBuildDir)commons-codec.commons-codec.jar" />
+    <Convert Include="$(TargetBuildDir)commons-io.commons-io.jar" />
+    <Convert Include="$(TargetBuildDir)commons-logging.commons-logging.jar" />
+    <Convert Include="$(TargetBuildDir)commons-net.commons-net.jar" />
+    <Convert Include="$(TargetBuildDir)javax.activation.activation.jar" />
+    <Convert Include="$(TargetBuildDir)net.iharder.base64.jar" />
+    <Convert Include="$(TargetBuildDir)net.java.dev.jna.jna-min.jar" />
+    <Convert Include="$(TargetBuildDir)net.java.dev.jna.jna-platform.jar" />
+    <Convert Include="$(TargetBuildDir)org.apache.commons.commons-collections4.jar" />
+    <Convert Include="$(TargetBuildDir)org.apache.commons.commons-lang3.jar" />
+    <Convert Include="$(TargetBuildDir)org.apache.commons.commons-pool2.jar" />
+    <Convert Include="$(TargetBuildDir)org.apache.commons.commons-text.jar" />
+    <Convert Include="$(TargetBuildDir)org.apache.httpcomponents.httpclient-win.jar" />
+    <Convert Include="$(TargetBuildDir)org.apache.httpcomponents.httpclient.jar" />
+    <Convert Include="$(TargetBuildDir)org.apache.httpcomponents.httpcore.jar" />
+    <Convert Include="$(TargetBuildDir)org.apache.httpcomponents.httpmime.jar" />
+    <Convert Include="$(TargetBuildDir)org.apache.logging.log4j.log4j-api.jar" />
+    <Convert Include="$(TargetBuildDir)org.apache.logging.log4j.log4j-core.jar" />
+    <Convert Include="$(TargetBuildDir)org.apache.logging.log4j.log4j-slf4j-impl.jar" />
+    <Convert Include="$(TargetBuildDir)org.bouncycastle.bcpkix-jdk18on.jar" />
+    <Convert Include="$(TargetBuildDir)org.bouncycastle.bcprov-jdk18on.jar" />
+    <Convert Include="$(TargetBuildDir)org.bouncycastle.bcutil-jdk18on.jar" />
+    <Convert Include="$(TargetBuildDir)org.checkerframework.checker-qual.jar" />
+    <Convert Include="$(TargetBuildDir)org.codehaus.jackson.jackson-core-asl.jar" />
+    <Convert Include="$(TargetBuildDir)org.codehaus.jackson.jackson-mapper-asl.jar" />
+    <Convert Include="$(TargetBuildDir)org.slf4j.jul-to-slf4j.jar" />
+    <Convert Include="$(TargetBuildDir)org.slf4j.slf4j-api.jar" />
+  </ItemGroup>
 </Project>
\ No newline at end of file
diff --git a/core/dll/Directory.Build.props b/core/dll/Directory.Build.props
index 82445b2700b..415d5cdf9b5 100644
--- a/core/dll/Directory.Build.props
+++ b/core/dll/Directory.Build.props
@@ -20,6 +20,5 @@
     </PropertyGroup>
 
     <Import Project="../Directory.Build.props" />
-    <Import Project="$([MSBuild]::GetPathOfFileAbove('Directory.Build.Java.props', '$(MSBuildThisFileDirectory)../'))" />
 
 </Project>
diff --git a/core/dll/build.xml b/core/dll/build.xml
index d227d35f0de..c49487124ed 100644
--- a/core/dll/build.xml
+++ b/core/dll/build.xml
@@ -29,11 +29,9 @@
         </msbuild>
     </target>
 
-    <target name="build" if="platform.windows" depends="version,restore,msbuild.configuration">
+    <target name="build" if="platform.windows" depends="restore,msbuild">
         <msbuild buildfile="Cyberduck.Core.msbuildproj">
             <property name="Configuration" value="${msbuild.configuration}" />
-            <property name="Copyright" value="${copyright}" />
-            <property name="Version" value="${version}.${revision}" />
         </msbuild>
     </target>
 
diff --git a/core/dll/pom.xml b/core/dll/pom.xml
index 1a5302aca96..0621c0678c6 100644
--- a/core/dll/pom.xml
+++ b/core/dll/pom.xml
@@ -58,8 +58,14 @@
                                 <configuration>
                                     <artifacts>
                                         <artifact>
+                                            <classifier>net472</classifier>
                                             <type>dll</type>
-                                            <file>${project.build.directory}/Cyberduck.Core.dll</file>
+                                            <file>${project.build.directory}/net472/Cyberduck.Core.dll</file>
+                                        </artifact>
+                                        <artifact>
+                                            <classifier>net8.0</classifier>
+                                            <type>dll</type>
+                                            <file>${project.build.directory}/net8.0/Cyberduck.Core.dll</file>
                                         </artifact>
                                     </artifacts>
                                 </configuration>
@@ -78,7 +84,7 @@
                       -->
                     <groupId>com.fasterxml.jackson.core</groupId>
                     <artifactId>jackson-databind</artifactId>
-                    <scope>compile</scope>
+                    <scope>provided</scope>
                 </dependency>
                 <dependency>
                     <!--
@@ -86,7 +92,7 @@
                       -->
                     <groupId>com.auth0</groupId>
                     <artifactId>java-jwt</artifactId>
-                    <scope>compile</scope>
+                    <scope>provided</scope>
                 </dependency>
                 <dependency>
                     <groupId>net.java.dev.jna</groupId>
@@ -105,6 +111,7 @@
             <groupId>ch.cyberduck</groupId>
             <artifactId>core</artifactId>
             <version>${project.version}</version>
+            <scope>provided</scope>
         </dependency>
     </dependencies>
-</project>
+</project>
\ No newline at end of file
diff --git a/core/i18n-gen/i18n-gen.targets b/core/i18n-gen/i18n-gen.targets
index 219a24a80dc..ff9b37d2bfa 100644
--- a/core/i18n-gen/i18n-gen.targets
+++ b/core/i18n-gen/i18n-gen.targets
@@ -1,6 +1,6 @@
 <Project>
   <PropertyGroup>
-    <i18n_gen_dll>$(CyberduckDir)core\target\i18n-gen.dll</i18n_gen_dll>
+    <i18n_gen_dll>$(CyberduckDir)core\target\netstandard2.0\i18n-gen.dll</i18n_gen_dll>
   </PropertyGroup>
 
   <UsingTask TaskName="ResourceGenTask"
diff --git a/core/native/build.proj b/core/native/build.proj
index 96d45290f77..0f8972db81a 100644
--- a/core/native/build.proj
+++ b/core/native/build.proj
@@ -1,7 +1,7 @@
 <Project Sdk="Microsoft.Build.Traversal">
   <ItemGroup>
     <ProjectReference Include="..\i18n-gen\i18n-gen.csproj" />
-    <ProjectReference Include="..\src\main\csharp\Cyberduck.Core.Native.csproj" />
-    <ProjectReference Include="..\src\test\csharp\Cyberduck.Core.Test.csproj" />
+    <ProjectReference Include="..\src\main\csharp\Cyberduck.Core.Native.csproj" SetPlatform="Platform=x64" />
+    <ProjectReference Include="..\src\test\csharp\Cyberduck.Core.Test.csproj" SetPlatform="Platform=x64" />
   </ItemGroup>
 </Project>
diff --git a/core/native/build.xml b/core/native/build.xml
index 116ac198c63..914ac71531e 100644
--- a/core/native/build.xml
+++ b/core/native/build.xml
@@ -23,33 +23,21 @@
 
     <import file="../../build.xml"/>
 
-    <condition property="msbuild.configuration" value="Debug">
-        <equals arg1="${configuration}" arg2="debug" />
-    </condition>
-    <condition property="msbuild.configuration" value="Release">
-        <equals arg1="${configuration}" arg2="release" />
-    </condition>
-
-    <target name="init-msbuild" depends="msbuild" />
-
-    <target name="restore" depends="init-msbuild, version">
+    <target name="restore" depends="msbuild">
         <msbuild buildfile="build.proj">
             <target name="Restore"/>
         </msbuild>
     </target>
 
-    <target name="build" depends="init-msbuild, version">
+    <target name="build" depends="restore,msbuild">
         <msbuild buildfile="build.proj">
             <target name="Build"/>
 
-            <property name="BuildProjectReferences" value="false" />
             <property name="Configuration" value="${msbuild.configuration}" />
-            <property name="Copyright" value="${copyright}" />
-            <property name="Version" value="${version}.${revision}" />
         </msbuild>
     </target>
 
-    <target name="test" depends="init-msbuild, version" unless="${skip}">
+    <target name="test" depends="msbuild" unless="${skip}">
         <msbuild buildfile="../src/test/csharp/Cyberduck.Core.Test.csproj">
             <target name="Test"/>
 
diff --git a/core/native/pom.xml b/core/native/pom.xml
index 45c6f0883c7..9758bb70695 100644
--- a/core/native/pom.xml
+++ b/core/native/pom.xml
@@ -40,8 +40,14 @@
                                 <configuration>
                                     <artifacts>
                                         <artifact>
+                                            <classifier>net472</classifier>
                                             <type>dll</type>
-                                            <file>${project.build.directory}/Cyberduck.Core.Native.dll</file>
+                                            <file>${project.build.directory}/net472/Cyberduck.Core.Native.dll</file>
+                                        </artifact>
+                                        <artifact>
+                                            <classifier>net8.0</classifier>
+                                            <type>dll</type>
+                                            <file>${project.build.directory}/net8.0-windows10.0.22621.0/Cyberduck.Core.Native.dll</file>
                                         </artifact>
                                     </artifacts>
                                 </configuration>
@@ -50,40 +56,11 @@
                     </plugin>
                     <plugin>
                         <artifactId>maven-antrun-plugin</artifactId>
-                        <inherited>false</inherited>
                         <executions>
-                            <execution>
-                                <id>run-ant-restore-target</id>
-                                <phase>initialize</phase>
-                                <goals>
-                                    <goal>run</goal>
-                                </goals>
-                                <configuration>
-                                    <target>
-                                        <property name="home" value="${main.basedir}" />
-                                        <ant antfile="${project.basedir}/build.xml" target="restore" dir="." />
-                                    </target>
-                                </configuration>
-                            </execution>
-                            <execution>
-                                <id>run-ant-build-target</id>
-                                <phase>compile</phase>
-                                <goals>
-                                    <goal>run</goal>
-                                </goals>
-                                <configuration>
-                                    <target>
-                                        <property name="home" value="${main.basedir}" />
-                                        <property name="version" value="${project.version}" />
-                                        <property name="revision" value="${git.commitsCount}" />
-                                        <property name="hash" value="${git.revision}" />
-                                        <ant antfile="${project.basedir}/build.xml" target="build" dir="." />
-                                    </target>
-                                </configuration>
-                            </execution>
                             <execution>
                                 <id>run-ant-test-target</id>
                                 <phase>test</phase>
+                                <inherited>false</inherited>
                                 <goals>
                                     <goal>run</goal>
                                 </goals>
@@ -106,20 +83,22 @@
                 <dependency>
                     <groupId>ch.cyberduck</groupId>
                     <artifactId>Cyberduck.Core</artifactId>
+                    <classifier>net472</classifier>
+                    <type>dll</type>
+                    <version>${project.version}</version>
+                </dependency>
+                <dependency>
+                    <groupId>ch.cyberduck</groupId>
+                    <artifactId>Cyberduck.Core</artifactId>
+                    <classifier>net8.0</classifier>
                     <type>dll</type>
                     <version>${project.version}</version>
-                    <scope>runtime</scope>
                 </dependency>
             </dependencies>
         </profile>
     </profiles>
 
     <dependencies>
-        <dependency>
-            <groupId>ch.cyberduck</groupId>
-            <artifactId>core</artifactId>
-            <version>${project.version}</version>
-        </dependency>
         <dependency>
             <groupId>nunit</groupId>
             <artifactId>nunit.framework</artifactId>
diff --git a/core/native/refresh/build.xml b/core/native/refresh/build.xml
index 36210698428..90d718df519 100644
--- a/core/native/refresh/build.xml
+++ b/core/native/refresh/build.xml
@@ -23,35 +23,19 @@
 
     <import file="../../../build.xml"/>
 
-    <condition property="msbuild.configuration" value="Debug">
-        <equals arg1="${configuration}" arg2="debug" />
-    </condition>
-    <condition property="msbuild.configuration" value="Release">
-        <equals arg1="${configuration}" arg2="release" />
-    </condition>
-
-    <target name="init-msbuild">
-        <taskdef name="msbuild"
-                 classname="org.apache.ant.dotnet.build.MSBuildTask">
-            <classpath path="${lib.ext}/ant-dotnet-1.1.jar"/>
-        </taskdef>
-    </target>
-
-    <target name="restore" depends="init-msbuild, version">
+    <target name="restore" depends="msbuild">
         <msbuild buildfile="src/main/csharp/Cyberduck.Core.Refresh.csproj">
             <target name="Restore" />
         </msbuild>
     </target>
 
-    <target name="build" depends="init-msbuild, version">
+    <target name="build" depends="restore,msbuild">
         <!-- Create DLL Cyberduck.Core.Refresh -->
         <msbuild buildfile="src/main/csharp/Cyberduck.Core.Refresh.csproj">
             <target name="Build"/>
 
-            <property name="BuildProjectReferences" value="false" />
             <property name="Configuration" value="${msbuild.configuration}" />
-            <property name="Copyright" value="${copyright}" />
-            <property name="Version" value="${version}.${revision}" />
+            <property name="Platform" value="x64" />
         </msbuild>
     </target>
 </project>
diff --git a/core/native/refresh/pom.xml b/core/native/refresh/pom.xml
index 892f1acc468..563de868c13 100644
--- a/core/native/refresh/pom.xml
+++ b/core/native/refresh/pom.xml
@@ -36,8 +36,14 @@
                                 <configuration>
                                     <artifacts>
                                         <artifact>
+                                            <classifier>net472</classifier>
                                             <type>dll</type>
-                                            <file>${project.build.directory}/Cyberduck.Core.Refresh.dll</file>
+                                            <file>${project.build.directory}/net472/Cyberduck.Core.Refresh.dll</file>
+                                        </artifact>
+                                        <artifact>
+                                            <classifier>net8.0</classifier>
+                                            <type>dll</type>
+                                            <file>${project.build.directory}/net8.0-windows10.0.22621.0/Cyberduck.Core.Refresh.dll</file>
                                         </artifact>
                                     </artifacts>
                                 </configuration>
@@ -46,37 +52,6 @@
                     </plugin>
                     <plugin>
                         <artifactId>maven-antrun-plugin</artifactId>
-                        <executions>
-                            <execution>
-                                <id>run-ant-restore-target</id>
-                                <phase>initialize</phase>
-                                <goals>
-                                    <goal>run</goal>
-                                </goals>
-                                <configuration>
-                                    <target>
-                                        <property name="home" value="${main.basedir}" />
-                                        <ant antfile="${project.basedir}/build.xml" target="restore" dir="." />
-                                    </target>
-                                </configuration>
-                            </execution>
-                            <execution>
-                                <id>run-ant-build-target</id>
-                                <phase>compile</phase>
-                                <goals>
-                                    <goal>run</goal>
-                                </goals>
-                                <configuration>
-                                    <target>
-                                        <property name="home" value="${main.basedir}" />
-                                        <property name="version" value="${project.version}" />
-                                        <property name="revision" value="${git.commitsCount}" />
-                                        <property name="git.revision" value="${git.revision}" />
-                                        <ant antfile="${project.basedir}/build.xml" target="build" dir="." />
-                                    </target>
-                                </configuration>
-                            </execution>
-                        </executions>
                     </plugin>
                 </plugins>
             </build>
@@ -84,16 +59,16 @@
                 <dependency>
                     <groupId>ch.cyberduck</groupId>
                     <artifactId>Cyberduck.Core.Native</artifactId>
+                    <classifier>net472</classifier>
                     <type>dll</type>
                     <version>${project.version}</version>
-                    <scope>runtime</scope>
                 </dependency>
                 <dependency>
                     <groupId>ch.cyberduck</groupId>
-                    <artifactId>Cyberduck.Protocols</artifactId>
+                    <artifactId>Cyberduck.Core.Native</artifactId>
+                    <classifier>net8.0</classifier>
                     <type>dll</type>
                     <version>${project.version}</version>
-                    <scope>runtime</scope>
                 </dependency>
             </dependencies>
         </profile>
diff --git a/core/native/refresh/src/main/csharp/Cyberduck.Core.Refresh.csproj b/core/native/refresh/src/main/csharp/Cyberduck.Core.Refresh.csproj
index a282a133741..b2429b5cd3a 100644
--- a/core/native/refresh/src/main/csharp/Cyberduck.Core.Refresh.csproj
+++ b/core/native/refresh/src/main/csharp/Cyberduck.Core.Refresh.csproj
@@ -16,7 +16,9 @@
 <Project Sdk="Microsoft.NET.Sdk" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
 
   <PropertyGroup>
-    <TargetFramework>net472</TargetFramework>
+    <TargetFrameworks>net472;net8.0-windows10.0.22621.0</TargetFrameworks>
+    <TargetPlatformMinVersion>10.0.14393.0</TargetPlatformMinVersion>
+    <Platforms>x64</Platforms>
     <LangVersion>12.0</LangVersion>
     <UseWPF>true</UseWPF>
     <UseWindowsForms>true</UseWindowsForms>
@@ -32,6 +34,7 @@
     <PackageReference Include="IKVM" />
     <PackageReference Include="Microsoft.Windows.CsWin32">
       <PrivateAssets>all</PrivateAssets>
+      <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
     </PackageReference>
     <PackageReference Include="ReactiveMarbles.ObservableEvents.SourceGenerator">
       <PrivateAssets>all</PrivateAssets>
@@ -39,10 +42,7 @@
     </PackageReference>
     <PackageReference Include="ReactiveUI.WPF" />
     <PackageReference Include="System.Memory" />
-  </ItemGroup>
-
-  <ItemGroup>
-    <Reference Include="System.Runtime.Caching" />
+    <PackageReference Include="System.Runtime.Caching" />
   </ItemGroup>
 
   <ItemGroup>
@@ -53,4 +53,4 @@
     <ImageResource Include="$(CyberduckDir)cyberduck-application.ico" />
     <ImageResource Include="$(CyberduckDir)cyberduck-document.ico" />
   </ItemGroup>
-</Project>
+</Project>
\ No newline at end of file
diff --git a/core/native/refresh/src/main/csharp/Directory.Build.props b/core/native/refresh/src/main/csharp/Directory.Build.props
index e2b0c542710..3d745f39e25 100644
--- a/core/native/refresh/src/main/csharp/Directory.Build.props
+++ b/core/native/refresh/src/main/csharp/Directory.Build.props
@@ -1,9 +1,5 @@
 <Project>
 
   <Import Project="$([MSBuild]::GetPathOfFileAbove('Directory.Build.props', '$(MSBuildThisFileDirectory)../'))" />
-
-  <PropertyGroup>
-    <Platforms>x64</Platforms>
-    <Platform Condition=" '$(Platform)'=='' ">x64</Platform>
-  </PropertyGroup>
+  
 </Project>
diff --git a/core/src/main/csharp/Cyberduck.Core.Native.csproj b/core/src/main/csharp/Cyberduck.Core.Native.csproj
index 6d7cde59237..d8948205cd8 100644
--- a/core/src/main/csharp/Cyberduck.Core.Native.csproj
+++ b/core/src/main/csharp/Cyberduck.Core.Native.csproj
@@ -16,27 +16,23 @@
 <Project Sdk="Microsoft.NET.Sdk" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
 
   <PropertyGroup>
-    <TargetFramework>net472</TargetFramework>
+    <TargetFrameworks>net472;net8.0-windows10.0.22621.0</TargetFrameworks>
+    <TargetPlatformMinVersion>10.0.14393.0</TargetPlatformMinVersion>
+    <Platforms>x64</Platforms>
     <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
   </PropertyGroup>
 
-  <ItemGroup>
-    <Reference Include="Microsoft.VisualBasic" />
-    <Reference Include="System.Security" />
-  </ItemGroup>
-
   <ItemGroup>
     <CyberduckReference Include="Core" />
   </ItemGroup>
 
   <ItemGroup>
-    <PackageReference Include="ExceptionReporter " />
     <PackageReference Include="IKVM" />
     <PackageReference Include="Microsoft.Toolkit.Uwp.Notifications" />
     <PackageReference Include="Microsoft.Windows.CsWin32">
       <PrivateAssets>all</PrivateAssets>
+      <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
     </PackageReference>
-    <PackageReference Include="Microsoft.Windows.SDK.Contracts" />
     <PackageReference Include="ReactiveMarbles.ObservableEvents.SourceGenerator">
       <PrivateAssets>all</PrivateAssets>
       <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
@@ -44,6 +40,17 @@
     <PackageReference Include="ReactiveUI" />
   </ItemGroup>
 
+  <ItemGroup Condition=" '$(TargetFramework)' != '' And $([MSBuild]::IsTargetFrameworkCompatible('$(TargetFramework)', 'net472')) ">
+    <PackageReference Include="Microsoft.Windows.SDK.Contracts" />
+    <Reference Include="Microsoft.VisualBasic" />
+    <Reference Include="System.Configuration" />
+    <Reference Include="System.Security" />
+  </ItemGroup>
+  <ItemGroup Condition=" '$(TargetFramework)' != '' And $([MSBuild]::IsTargetFrameworkCompatible('$(TargetFramework)', 'net8.0')) ">
+    <PackageReference Include="System.Configuration.ConfigurationManager" />
+    <PackageReference Include="System.Security.Cryptography.ProtectedData" />
+  </ItemGroup>
+
   <ItemGroup>
     <Compile Update="ch\cyberduck\properties\Settings.Designer.cs">
       <DesignTimeSharedInput>True</DesignTimeSharedInput>
@@ -69,4 +76,4 @@
       <CustomToolNamespace>Ch.Cyberduck.Properties</CustomToolNamespace>
     </None>
   </ItemGroup>
-</Project>
+</Project>
\ No newline at end of file
diff --git a/core/src/main/csharp/Directory.Build.props b/core/src/main/csharp/Directory.Build.props
index 0c3264d5b0a..4a975e0eebb 100644
--- a/core/src/main/csharp/Directory.Build.props
+++ b/core/src/main/csharp/Directory.Build.props
@@ -20,9 +20,5 @@
   </PropertyGroup>
 
   <Import Project="$(_CoreBasePath)native/Directory.Build.props" />
-
-  <PropertyGroup>
-    <Platforms>x64</Platforms>
-    <Platform Condition=" '$(Platform)'=='' ">x64</Platform>
-  </PropertyGroup>
+  
 </Project>
diff --git a/core/src/main/csharp/System/Diagnostics/CodeAnalysis/UnscopedRefAttribute.cs b/core/src/main/csharp/System/Diagnostics/CodeAnalysis/UnscopedRefAttribute.cs
index edd68e9f658..cb38a1c362f 100644
--- a/core/src/main/csharp/System/Diagnostics/CodeAnalysis/UnscopedRefAttribute.cs
+++ b/core/src/main/csharp/System/Diagnostics/CodeAnalysis/UnscopedRefAttribute.cs
@@ -1,6 +1,10 @@
 namespace System.Diagnostics.CodeAnalysis;
 
+#if NETFRAMEWORK
+
 [AttributeUsage(AttributeTargets.Method | AttributeTargets.Parameter | AttributeTargets.Property, AllowMultiple = false, Inherited = false)]
 public sealed class UnscopedRefAttribute : Attribute
 {
 }
+
+#endif
diff --git a/core/src/main/csharp/System/IO/StringWriterPolyfills.cs b/core/src/main/csharp/System/IO/StringWriterPolyfills.cs
new file mode 100644
index 00000000000..55f0dd27404
--- /dev/null
+++ b/core/src/main/csharp/System/IO/StringWriterPolyfills.cs
@@ -0,0 +1,16 @@
+#if NETFRAMEWORK
+
+namespace System.IO;
+
+public static class StringWriterPolyfills
+{
+    public static void Write(this StringWriter writer, in ReadOnlySpan<char> chars)
+    {
+        foreach (ref readonly var c in chars)
+        {
+            writer.Write(c);
+        }
+    }
+}
+
+#endif
diff --git a/core/src/main/csharp/ch/cyberduck/core/local/SystemLocal.cs b/core/src/main/csharp/ch/cyberduck/core/local/SystemLocal.cs
index 4a8582d3709..7c37f370412 100644
--- a/core/src/main/csharp/ch/cyberduck/core/local/SystemLocal.cs
+++ b/core/src/main/csharp/ch/cyberduck/core/local/SystemLocal.cs
@@ -143,7 +143,8 @@ private static string Sanitize(string name, bool makeUnc = false)
                         // there is no need to validate hostnames here, would bail out somewhere else
                         // handles all cases of "\\*\"
                         // including, but not limited to: wsl$, wsl.localhost, \\?\ (MAX_PATH bypass), any network share
-                        Append(segment, writer);
+                        writer.Write(segment);
+
                         nextDriveLetter = segment.Length == 1 && (segment[0] == '?' || segment[0] == '.');
                     }
                     else if (firstChanceDriveLetter && segment.Length == 2 && segment[1] == Path.VolumeSeparatorChar)
@@ -198,15 +199,6 @@ private static string Sanitize(string name, bool makeUnc = false)
                 }
             }
             return writer.ToString();
-
-            static void Append(in ReadOnlySpan<char> range, StringWriter writer)
-            {
-                // skip any allocation of strings or arrays.
-                foreach (ref readonly var c in range)
-                {
-                    writer.Write(c);
-                }
-            }
         }
     }
 }
diff --git a/core/src/test/csharp/Cyberduck.Core.Test.csproj b/core/src/test/csharp/Cyberduck.Core.Test.csproj
index 936ee789163..3b01caa9fd3 100644
--- a/core/src/test/csharp/Cyberduck.Core.Test.csproj
+++ b/core/src/test/csharp/Cyberduck.Core.Test.csproj
@@ -2,6 +2,7 @@
 
   <PropertyGroup>
     <TargetFramework>net472</TargetFramework>
+    <Platforms>x64</Platforms>
 
     <IsPackable>false</IsPackable>
     <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
diff --git a/core/src/test/csharp/Directory.Build.props b/core/src/test/csharp/Directory.Build.props
index e2b76fa5166..9107ccfa536 100644
--- a/core/src/test/csharp/Directory.Build.props
+++ b/core/src/test/csharp/Directory.Build.props
@@ -18,11 +18,7 @@
   <PropertyGroup>
     <_CoreBasePath>$([MSBuild]::GetDirectoryNameOfFileAbove('$(MSBuildThisFileDirectory)../', 'Directory.Build.props'))/</_CoreBasePath>
   </PropertyGroup>
+  
   <Import Project="$(_CoreBasePath)native/Directory.Build.props" />
 
-  <PropertyGroup>
-    <Platforms>x64</Platforms>
-    <Platform Condition=" '$(Platform)'=='' ">x64</Platform>
-  </PropertyGroup>
-
 </Project>
diff --git a/cryptomator/dll/Cyberduck.Cryptomator.msbuildproj b/cryptomator/dll/Cyberduck.Cryptomator.msbuildproj
index ae65d8bf1ef..4e0ebcf53b6 100644
--- a/cryptomator/dll/Cyberduck.Cryptomator.msbuildproj
+++ b/cryptomator/dll/Cyberduck.Cryptomator.msbuildproj
@@ -1,13 +1,15 @@
 <Project Sdk="IKVM.NET.Sdk">
-    <PropertyGroup>
-        <TargetFramework>net472</TargetFramework>
-    </PropertyGroup>
+  <PropertyGroup>
+    <TargetFrameworks>net472;net8.0</TargetFrameworks>
+  </PropertyGroup>
 
-    <ItemGroup>
-        <CyberduckReference Include="Core" />
+  <Import Project="$(BuildSupportDir)Cyberduck.Java.props" />
 
-        <Convert Include="$(TargetBuildDir)ch.cyberduck.cryptomator.jar" />
-        <Convert Include="$(TargetBuildDir)ch.iterate.cryptomator.cryptolib.jar" />
-        <Convert Include="$(TargetBuildDir)org.cryptomator.siv-mode.jar" />
-    </ItemGroup>
-</Project>
+  <ItemGroup>
+    <CyberduckReference Include="Core" />
+
+    <Convert Include="$(TargetBuildDir)ch.cyberduck.cryptomator.jar" />
+    <Convert Include="$(TargetBuildDir)ch.iterate.cryptomator.cryptolib.jar" />
+    <Convert Include="$(TargetBuildDir)org.cryptomator.siv-mode.jar" />
+  </ItemGroup>
+</Project>
\ No newline at end of file
diff --git a/cryptomator/dll/Directory.Build.props b/cryptomator/dll/Directory.Build.props
index e0dc1f1ec1f..742c29d2fb8 100644
--- a/cryptomator/dll/Directory.Build.props
+++ b/cryptomator/dll/Directory.Build.props
@@ -20,6 +20,5 @@
     </PropertyGroup>
 
     <Import Project="../../Directory.Build.props" />
-    <Import Project="$([MSBuild]::GetPathOfFileAbove('Directory.Build.Java.props', '$(MSBuildThisFileDirectory)../'))" />
 
 </Project>
diff --git a/cryptomator/dll/build.xml b/cryptomator/dll/build.xml
index 70f00675d3a..f5d9e5435cf 100644
--- a/cryptomator/dll/build.xml
+++ b/cryptomator/dll/build.xml
@@ -23,11 +23,9 @@
         </msbuild>
     </target>
 
-    <target name="build" if="platform.windows" depends="version,restore,msbuild.configuration">
+    <target name="build" if="platform.windows" depends="restore,msbuild">
         <msbuild buildfile="Cyberduck.Cryptomator.msbuildproj">
             <property name="Configuration" value="${msbuild.configuration}" />
-            <property name="Copyright" value="${copyright}" />
-            <property name="Version" value="${version}.${revision}" />
         </msbuild>
     </target>
 
diff --git a/cryptomator/dll/pom.xml b/cryptomator/dll/pom.xml
index d2256db3e65..8cced4aad60 100644
--- a/cryptomator/dll/pom.xml
+++ b/cryptomator/dll/pom.xml
@@ -70,8 +70,14 @@
                                 <configuration>
                                     <artifacts>
                                         <artifact>
+                                            <classifier>net472</classifier>
                                             <type>dll</type>
-                                            <file>${project.build.directory}/Cyberduck.Cryptomator.dll</file>
+                                            <file>${project.build.directory}/net472/Cyberduck.Cryptomator.dll</file>
+                                        </artifact>
+                                        <artifact>
+                                            <classifier>net8.0</classifier>
+                                            <type>dll</type>
+                                            <file>${project.build.directory}/net8.0/Cyberduck.Cryptomator.dll</file>
                                         </artifact>
                                     </artifacts>
                                 </configuration>
@@ -86,6 +92,22 @@
                     </plugin>
                 </plugins>
             </build>
+            <dependencies>
+                <dependency>
+                    <groupId>ch.cyberduck</groupId>
+                    <artifactId>Cyberduck.Core</artifactId>
+                    <classifier>net472</classifier>
+                    <type>dll</type>
+                    <version>${project.version}</version>
+                </dependency>
+                <dependency>
+                    <groupId>ch.cyberduck</groupId>
+                    <artifactId>Cyberduck.Core</artifactId>
+                    <classifier>net8.0</classifier>
+                    <type>dll</type>
+                    <version>${project.version}</version>
+                </dependency>
+            </dependencies>
         </profile>
     </profiles>
 
@@ -94,6 +116,17 @@
             <groupId>ch.cyberduck</groupId>
             <artifactId>cryptomator</artifactId>
             <version>${project.version}</version>
+            <scope>provided</scope>
+            <exclusions>
+                <exclusion>
+                    <groupId>ch.cyberduck</groupId>
+                    <artifactId>core</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>com.auth0</groupId>
+                    <artifactId>java-jwt</artifactId>
+                </exclusion>
+            </exclusions>
         </dependency>
     </dependencies>
-</project>
+</project>
\ No newline at end of file
diff --git a/cryptomator/pom.xml b/cryptomator/pom.xml
index ddc8cccaa12..6ab8bbcb062 100644
--- a/cryptomator/pom.xml
+++ b/cryptomator/pom.xml
@@ -28,29 +28,6 @@
         <cryptolib.version>2.1.2.1</cryptolib.version>
     </properties>
 
-    <profiles>
-        <profile>
-            <id>windows</id>
-            <activation>
-                <os>
-                    <family>Windows</family>
-                </os>
-            </activation>
-            <properties>
-                <maven.test.skip>true</maven.test.skip>
-            </properties>
-            <dependencies>
-                <dependency>
-                    <groupId>ch.cyberduck</groupId>
-                    <artifactId>Cyberduck.Core</artifactId>
-                    <type>dll</type>
-                    <version>${project.version}</version>
-                    <scope>runtime</scope>
-                </dependency>
-            </dependencies>
-        </profile>
-    </profiles>
-
     <dependencies>
         <dependency>
             <groupId>ch.cyberduck</groupId>
diff --git a/importer/dll/Cyberduck.Importer.msbuildproj b/importer/dll/Cyberduck.Importer.msbuildproj
index 917864a442d..119bb07e690 100644
--- a/importer/dll/Cyberduck.Importer.msbuildproj
+++ b/importer/dll/Cyberduck.Importer.msbuildproj
@@ -1,13 +1,15 @@
 <Project Sdk="IKVM.NET.Sdk">
-    <PropertyGroup>
-        <TargetFramework>net472</TargetFramework>
-    </PropertyGroup>
+  <PropertyGroup>
+    <TargetFrameworks>net472;net8.0</TargetFrameworks>
+  </PropertyGroup>
 
-    <ItemGroup>
-        <CyberduckReference Include="Core" />
+  <Import Project="$(BuildSupportDir)Cyberduck.Java.props" />
 
-        <Convert Include="$(TargetBuildDir)ch.cyberduck.binding.jar" />
-        <Convert Include="$(TargetBuildDir)ch.cyberduck.importer.jar" />
-        <Convert Include="$(TargetBuildDir)org.rococoa.rococoa-core.jar" />
-    </ItemGroup>
-</Project>
+  <ItemGroup>
+    <CyberduckReference Include="Core" />
+
+    <Convert Include="$(TargetBuildDir)ch.cyberduck.binding.jar" />
+    <Convert Include="$(TargetBuildDir)ch.cyberduck.importer.jar" />
+    <Convert Include="$(TargetBuildDir)org.rococoa.rococoa-core.jar" />
+  </ItemGroup>
+</Project>
\ No newline at end of file
diff --git a/importer/dll/Directory.Build.props b/importer/dll/Directory.Build.props
index e0dc1f1ec1f..742c29d2fb8 100644
--- a/importer/dll/Directory.Build.props
+++ b/importer/dll/Directory.Build.props
@@ -20,6 +20,5 @@
     </PropertyGroup>
 
     <Import Project="../../Directory.Build.props" />
-    <Import Project="$([MSBuild]::GetPathOfFileAbove('Directory.Build.Java.props', '$(MSBuildThisFileDirectory)../'))" />
 
 </Project>
diff --git a/importer/dll/build.xml b/importer/dll/build.xml
index a4ac25cd91d..547ea69d8d0 100644
--- a/importer/dll/build.xml
+++ b/importer/dll/build.xml
@@ -29,11 +29,9 @@
         </msbuild>
     </target>
 
-    <target name="build" if="platform.windows" depends="version,restore,msbuild.configuration">
+    <target name="build" if="platform.windows" depends="restore,msbuild">
         <msbuild buildfile="Cyberduck.Importer.msbuildproj">
             <property name="Configuration" value="${msbuild.configuration}" />
-            <property name="Copyright" value="${copyright}" />
-            <property name="Version" value="${version}.${revision}" />
         </msbuild>
     </target>
 
diff --git a/importer/dll/pom.xml b/importer/dll/pom.xml
index 11cc01d9a60..7ace536f074 100644
--- a/importer/dll/pom.xml
+++ b/importer/dll/pom.xml
@@ -55,8 +55,14 @@
                                 <configuration>
                                     <artifacts>
                                         <artifact>
+                                            <classifier>net472</classifier>
                                             <type>dll</type>
-                                            <file>${project.build.directory}/Cyberduck.Importer.dll</file>
+                                            <file>${project.build.directory}/net472/Cyberduck.Importer.dll</file>
+                                        </artifact>
+                                        <artifact>
+                                            <classifier>net8.0</classifier>
+                                            <type>dll</type>
+                                            <file>${project.build.directory}/net8.0/Cyberduck.Importer.dll</file>
                                         </artifact>
                                     </artifacts>
                                 </configuration>
@@ -75,6 +81,14 @@
                 <dependency>
                     <groupId>ch.cyberduck</groupId>
                     <artifactId>Cyberduck.Core</artifactId>
+                    <classifier>net472</classifier>
+                    <type>dll</type>
+                    <version>${project.version}</version>
+                </dependency>
+                <dependency>
+                    <groupId>ch.cyberduck</groupId>
+                    <artifactId>Cyberduck.Core</artifactId>
+                    <classifier>net8.0</classifier>
                     <type>dll</type>
                     <version>${project.version}</version>
                 </dependency>
@@ -87,6 +101,13 @@
             <groupId>ch.cyberduck</groupId>
             <artifactId>importer</artifactId>
             <version>${project.version}</version>
+            <scope>provided</scope>
+            <exclusions>
+                <exclusion>
+                    <groupId>ch.cyberduck</groupId>
+                    <artifactId>core</artifactId>
+                </exclusion>
+            </exclusions>
         </dependency>
     </dependencies>
 </project>
diff --git a/importer/pom.xml b/importer/pom.xml
index b014df1881e..5e6652a5937 100644
--- a/importer/pom.xml
+++ b/importer/pom.xml
@@ -35,15 +35,6 @@
             <properties>
                 <maven.test.skip>true</maven.test.skip>
             </properties>
-            <dependencies>
-                <dependency>
-                    <groupId>ch.cyberduck</groupId>
-                    <artifactId>Cyberduck.Core</artifactId>
-                    <type>dll</type>
-                    <version>${project.version}</version>
-                    <scope>runtime</scope>
-                </dependency>
-            </dependencies>
         </profile>
         <profile>
             <id>linux</id>
diff --git a/pom.xml b/pom.xml
index 84bfb5afadc..4eb256fda0a 100644
--- a/pom.xml
+++ b/pom.xml
@@ -603,7 +603,36 @@
                                 <goal>copy-dependencies</goal>
                             </goals>
                             <configuration>
-                                <outputDirectory>${project.build.directory}</outputDirectory>
+                                <outputDirectory>${project.build.directory}/lib</outputDirectory>
+                                <excludeClassifiers>net472,net8.0</excludeClassifiers>
+                                <includeTypes>dll</includeTypes>
+                                <stripClassifier>true</stripClassifier>
+                                <stripVersion>true</stripVersion>
+                            </configuration>
+                        </execution>
+                        <execution>
+                            <id>copy-dependencies-dll-net472-target</id>
+                            <phase>generate-sources</phase>
+                            <goals>
+                                <goal>copy-dependencies</goal>
+                            </goals>
+                            <configuration>
+                                <outputDirectory>${project.build.directory}/lib/net472</outputDirectory>
+                                <classifier>net472</classifier>
+                                <includeTypes>dll</includeTypes>
+                                <stripClassifier>true</stripClassifier>
+                                <stripVersion>true</stripVersion>
+                            </configuration>
+                        </execution>
+                        <execution>
+                            <id>copy-dependencies-dll-net8.0-target</id>
+                            <phase>generate-sources</phase>
+                            <goals>
+                                <goal>copy-dependencies</goal>
+                            </goals>
+                            <configuration>
+                                <outputDirectory>${project.build.directory}/lib/net8.0</outputDirectory>
+                                <classifier>net8.0</classifier>
                                 <includeTypes>dll</includeTypes>
                                 <stripClassifier>true</stripClassifier>
                                 <stripVersion>true</stripVersion>
@@ -1003,6 +1032,7 @@
                                     <configuration>
                                         <prependGroupId>true</prependGroupId>
                                         <stripVersion>true</stripVersion>
+                                        <includeScope>compile</includeScope>
                                     </configuration>
                                 </execution>
                             </executions>
diff --git a/protocols/dll/Cyberduck.Protocols.msbuildproj b/protocols/dll/Cyberduck.Protocols.msbuildproj
index c3a47ee05cf..8bb50810c54 100644
--- a/protocols/dll/Cyberduck.Protocols.msbuildproj
+++ b/protocols/dll/Cyberduck.Protocols.msbuildproj
@@ -1,137 +1,139 @@
 <Project Sdk="IKVM.NET.Sdk">
-    <PropertyGroup>
-        <TargetFramework>net472</TargetFramework>
-    </PropertyGroup>
+  <PropertyGroup>
+    <TargetFrameworks>net472;net8.0</TargetFrameworks>
+  </PropertyGroup>
 
-    <ItemGroup>
-        <CyberduckReference Include="Core" />
+  <Import Project="$(BuildSupportDir)Cyberduck.Java.props" />
 
-        <Convert Include="$(TargetBuildDir)ch.cyberduck.azure.jar" />
-        <Convert Include="$(TargetBuildDir)ch.cyberduck.backblaze.jar" />
-        <Convert Include="$(TargetBuildDir)ch.cyberduck.box.jar" />
-        <Convert Include="$(TargetBuildDir)ch.cyberduck.brick.jar" />
-        <Convert Include="$(TargetBuildDir)ch.cyberduck.ctera.jar" />
-        <Convert Include="$(TargetBuildDir)ch.cyberduck.deepbox.jar" />
-        <Convert Include="$(TargetBuildDir)ch.cyberduck.dracoon.jar" />
-        <Convert Include="$(TargetBuildDir)ch.cyberduck.dropbox.jar" />
-        <Convert Include="$(TargetBuildDir)ch.cyberduck.eue.jar" />
-        <Convert Include="$(TargetBuildDir)ch.cyberduck.freenet.jar" />
-        <Convert Include="$(TargetBuildDir)ch.cyberduck.ftp.jar" />
-        <Convert Include="$(TargetBuildDir)ch.cyberduck.googledrive.jar" />
-        <Convert Include="$(TargetBuildDir)ch.cyberduck.googlestorage.jar" />
-        <Convert Include="$(TargetBuildDir)ch.cyberduck.hubic.jar" />
-        <Convert Include="$(TargetBuildDir)ch.cyberduck.irods.jar" />
-        <Convert Include="$(TargetBuildDir)ch.cyberduck.jersey.jar" />
-        <Convert Include="$(TargetBuildDir)ch.cyberduck.manta.jar" />
-        <Convert Include="$(TargetBuildDir)ch.cyberduck.nextcloud.jar" />
-        <Convert Include="$(TargetBuildDir)ch.cyberduck.nio.jar" />
-        <Convert Include="$(TargetBuildDir)ch.cyberduck.oauth.jar" />
-        <Convert Include="$(TargetBuildDir)ch.cyberduck.onedrive.jar" />
-        <Convert Include="$(TargetBuildDir)ch.cyberduck.openstack.jar" />
-        <Convert Include="$(TargetBuildDir)ch.cyberduck.owncloud.jar" />
-        <Convert Include="$(TargetBuildDir)ch.cyberduck.s3.jar" />
-        <Convert Include="$(TargetBuildDir)ch.cyberduck.smb.jar" />
-        <Convert Include="$(TargetBuildDir)ch.cyberduck.spectra.jar" />
-        <Convert Include="$(TargetBuildDir)ch.cyberduck.ssh.jar" />
-        <Convert Include="$(TargetBuildDir)ch.cyberduck.storegate.jar" />
-        <Convert Include="$(TargetBuildDir)ch.cyberduck.tus.jar" />
-        <Convert Include="$(TargetBuildDir)ch.cyberduck.webdav.jar" />
-        <Convert Include="$(TargetBuildDir)ch.iterate.backblaze.b2.jar" />
-        <Convert Include="$(TargetBuildDir)ch.iterate.jargon.jargon-core.jar" />
-        <Convert Include="$(TargetBuildDir)ch.iterate.onedrive.onedrive-java-client.jar" />
-        <Convert Include="$(TargetBuildDir)ch.iterate.openstack.swift.jar" />
-        <Convert Include="$(TargetBuildDir)ch.iterate.spectralogic.ds3-interfaces.jar" />
-        <Convert Include="$(TargetBuildDir)ch.iterate.spectralogic.ds3-sdk.jar" />
-        <Convert Include="$(TargetBuildDir)ch.iterate.spectralogic.ds3-utils.jar" />
-        <Convert Include="$(TargetBuildDir)ch.iterate.ssh.jsch.agentproxy.core.jar" />
-        <Convert Include="$(TargetBuildDir)ch.iterate.ssh.jsch.agentproxy.pageant.jar" />
-        <Convert Include="$(TargetBuildDir)ch.iterate.ssh.jsch.agentproxy.sshagent.jar" />
-        <Convert Include="$(TargetBuildDir)ch.iterate.ssh.jsch.agentproxy.sshj.jar" />
-        <Convert Include="$(TargetBuildDir)ch.iterate.ssh.jsch.agentproxy.usocket-jna.jar" />
-        <Convert Include="$(TargetBuildDir)ch.iterate.ssh.sshj.jar" />
-        <Convert Include="$(TargetBuildDir)ch.iterate.webdav.sardine.jar" />
-        <Convert Include="$(TargetBuildDir)com.amazonaws.aws-java-sdk-cloudfront.jar" />
-        <Convert Include="$(TargetBuildDir)com.amazonaws.aws-java-sdk-core.jar" />
-        <Convert Include="$(TargetBuildDir)com.amazonaws.aws-java-sdk-iam.jar" />
-        <Convert Include="$(TargetBuildDir)com.amazonaws.aws-java-sdk-kms.jar" />
-        <Convert Include="$(TargetBuildDir)com.amazonaws.aws-java-sdk-s3.jar" />
-        <Convert Include="$(TargetBuildDir)com.amazonaws.aws-java-sdk-sts.jar" />
-        <Convert Include="$(TargetBuildDir)com.amazonaws.jmespath-java.jar" />
-        <Convert Include="$(TargetBuildDir)com.dracoon.dracoon-crypto-sdk.jar" />
-        <Convert Include="$(TargetBuildDir)com.dropbox.core.dropbox-core-sdk.jar" />
-        <Convert Include="$(TargetBuildDir)com.eclipsesource.minimal-json.minimal-json.jar" />
-        <Convert Include="$(TargetBuildDir)com.fasterxml.jackson.dataformat.jackson-dataformat-cbor.jar" />
-        <Convert Include="$(TargetBuildDir)com.fasterxml.jackson.dataformat.jackson-dataformat-xml.jar" />
-        <Convert Include="$(TargetBuildDir)com.fasterxml.jackson.datatype.jackson-datatype-joda.jar" />
-        <Convert Include="$(TargetBuildDir)com.fasterxml.jackson.datatype.jackson-datatype-jsr310.jar" />
-        <Convert Include="$(TargetBuildDir)com.fasterxml.jackson.jaxrs.jackson-jaxrs-base.jar" />
-        <Convert Include="$(TargetBuildDir)com.fasterxml.jackson.jaxrs.jackson-jaxrs-json-provider.jar" />
-        <Convert Include="$(TargetBuildDir)com.fasterxml.jackson.module.jackson-module-jaxb-annotations.jar" />
-        <Convert Include="$(TargetBuildDir)com.fasterxml.uuid.java-uuid-generator.jar" />
-        <Convert Include="$(TargetBuildDir)com.fasterxml.woodstox.woodstox-core.jar" />
-        <Convert Include="$(TargetBuildDir)com.google.api-client.google-api-client.jar" />
-        <Convert Include="$(TargetBuildDir)com.google.apis.google-api-services-drive.jar" />
-        <Convert Include="$(TargetBuildDir)com.google.apis.google-api-services-storage.jar" />
-        <Convert Include="$(TargetBuildDir)com.google.auth.google-auth-library-credentials.jar" />
-        <Convert Include="$(TargetBuildDir)com.google.auth.google-auth-library-oauth2-http.jar" />
-        <Convert Include="$(TargetBuildDir)com.google.auto.value.auto-value-annotations.jar" />
-        <Convert Include="$(TargetBuildDir)com.google.code.findbugs.annotations.jar" />
-        <Convert Include="$(TargetBuildDir)com.google.http-client.google-http-client-apache-v2.jar" />
-        <Convert Include="$(TargetBuildDir)com.google.http-client.google-http-client-gson.jar" />
-        <Convert Include="$(TargetBuildDir)com.google.http-client.google-http-client.jar" />
-        <Convert Include="$(TargetBuildDir)com.google.oauth-client.google-oauth-client.jar" />
-        <Convert Include="$(TargetBuildDir)com.hierynomus.asn-one.jar" />
-        <Convert Include="$(TargetBuildDir)com.hierynomus.smbj.jar" />
-        <Convert Include="$(TargetBuildDir)com.jcraft.jzlib.jar" />
-        <Convert Include="$(TargetBuildDir)com.joyent.http-signature.apache-http-client-signature.jar" />
-        <Convert Include="$(TargetBuildDir)com.joyent.http-signature.http-signature-common.jar" />
-        <Convert Include="$(TargetBuildDir)com.joyent.manta.java-manta-client-unshaded.jar" />
-        <Convert Include="$(TargetBuildDir)com.microsoft.azure.azure-keyvault-core.jar" />
-        <Convert Include="$(TargetBuildDir)com.microsoft.azure.azure-storage.jar" />
-        <Convert Include="$(TargetBuildDir)com.rapid7.client.dcerpc.jar" />
-        <Convert Include="$(TargetBuildDir)com.sun.activation.jakarta.activation.jar" />
-        <Convert Include="$(TargetBuildDir)com.sun.istack.istack-commons-runtime.jar" />
-        <Convert Include="$(TargetBuildDir)commons-lang.commons-lang.jar" />
-        <Convert Include="$(TargetBuildDir)io.dropwizard.metrics.metrics-core.jar" />
-        <Convert Include="$(TargetBuildDir)io.dropwizard.metrics.metrics-jmx.jar" />
-        <Convert Include="$(TargetBuildDir)io.grpc.grpc-context.jar" />
-        <Convert Include="$(TargetBuildDir)io.mikael.urlbuilder.jar" />
-        <Convert Include="$(TargetBuildDir)io.opencensus.opencensus-api.jar" />
-        <Convert Include="$(TargetBuildDir)io.opencensus.opencensus-contrib-http-util.jar" />
-        <Convert Include="$(TargetBuildDir)io.swagger.core.v3.swagger-annotations.jar" />
-        <Convert Include="$(TargetBuildDir)io.swagger.swagger-annotations.jar" />
-        <Convert Include="$(TargetBuildDir)jakarta.activation.jakarta.activation-api.jar" />
-        <Convert Include="$(TargetBuildDir)jakarta.annotation.jakarta.annotation-api.jar" />
-        <Convert Include="$(TargetBuildDir)jakarta.ws.rs.jakarta.ws.rs-api.jar" />
-        <Convert Include="$(TargetBuildDir)jakarta.xml.bind.jakarta.xml.bind-api.jar" />
-        <Convert Include="$(TargetBuildDir)joda-time.joda-time.jar" />
-        <Convert Include="$(TargetBuildDir)net.engio.mbassador.jar" />
-        <Convert Include="$(TargetBuildDir)net.i2p.crypto.eddsa.jar" />
-        <Convert Include="$(TargetBuildDir)org.apiguardian.apiguardian-api.jar" />
-        <Convert Include="$(TargetBuildDir)org.codehaus.woodstox.stax2-api.jar" />
-        <Convert Include="$(TargetBuildDir)org.glassfish.hk2.external.aopalliance-repackaged.jar" />
-        <Convert Include="$(TargetBuildDir)org.glassfish.hk2.external.jakarta.inject.jar" />
-        <Convert Include="$(TargetBuildDir)org.glassfish.hk2.hk2-api.jar" />
-        <Convert Include="$(TargetBuildDir)org.glassfish.hk2.hk2-locator.jar" />
-        <Convert Include="$(TargetBuildDir)org.glassfish.hk2.hk2-utils.jar" />
-        <Convert Include="$(TargetBuildDir)org.glassfish.hk2.osgi-resource-locator.jar" />
-        <Convert Include="$(TargetBuildDir)org.glassfish.jaxb.jaxb-runtime.jar" />
-        <Convert Include="$(TargetBuildDir)org.glassfish.jaxb.txw2.jar" />
-        <Convert Include="$(TargetBuildDir)org.glassfish.jersey.connectors.jersey-apache-connector.jar" />
-        <Convert Include="$(TargetBuildDir)org.glassfish.jersey.core.jersey-client.jar" />
-        <Convert Include="$(TargetBuildDir)org.glassfish.jersey.core.jersey-common.jar" />
-        <Convert Include="$(TargetBuildDir)org.glassfish.jersey.ext.jersey-entity-filtering.jar" />
-        <Convert Include="$(TargetBuildDir)org.glassfish.jersey.inject.jersey-hk2.jar" />
-        <Convert Include="$(TargetBuildDir)org.glassfish.jersey.media.jersey-media-json-jackson.jar" />
-        <Convert Include="$(TargetBuildDir)org.glassfish.jersey.media.jersey-media-multipart.jar" />
-        <Convert Include="$(TargetBuildDir)org.javassist.javassist.jar" />
-        <Convert Include="$(TargetBuildDir)org.jetbrains.annotations.jar" />
-        <Convert Include="$(TargetBuildDir)org.jetbrains.kotlin.kotlin-stdlib.jar" />
-        <Convert Include="$(TargetBuildDir)org.json.json.jar" />
-        <Convert Include="$(TargetBuildDir)org.jvnet.mimepull.mimepull.jar" />
-        <Convert Include="$(TargetBuildDir)org.objenesis.objenesis.jar" />
-        <Convert Include="$(TargetBuildDir)org.slf4j.jcl-over-slf4j.jar" />
-        <Convert Include="$(TargetBuildDir)software.amazon.ion.ion-java.jar" />
-        <Convert Include="$(TargetBuildDir)uk.com.robust-it.cloning.jar" />
-    </ItemGroup>
+  <ItemGroup>
+    <CyberduckReference Include="Core" />
+
+    <Convert Include="$(TargetBuildDir)ch.cyberduck.azure.jar" />
+    <Convert Include="$(TargetBuildDir)ch.cyberduck.backblaze.jar" />
+    <Convert Include="$(TargetBuildDir)ch.cyberduck.box.jar" />
+    <Convert Include="$(TargetBuildDir)ch.cyberduck.brick.jar" />
+    <Convert Include="$(TargetBuildDir)ch.cyberduck.ctera.jar" />
+    <Convert Include="$(TargetBuildDir)ch.cyberduck.deepbox.jar" />
+    <Convert Include="$(TargetBuildDir)ch.cyberduck.dracoon.jar" />
+    <Convert Include="$(TargetBuildDir)ch.cyberduck.dropbox.jar" />
+    <Convert Include="$(TargetBuildDir)ch.cyberduck.eue.jar" />
+    <Convert Include="$(TargetBuildDir)ch.cyberduck.freenet.jar" />
+    <Convert Include="$(TargetBuildDir)ch.cyberduck.ftp.jar" />
+    <Convert Include="$(TargetBuildDir)ch.cyberduck.googledrive.jar" />
+    <Convert Include="$(TargetBuildDir)ch.cyberduck.googlestorage.jar" />
+    <Convert Include="$(TargetBuildDir)ch.cyberduck.hubic.jar" />
+    <Convert Include="$(TargetBuildDir)ch.cyberduck.irods.jar" />
+    <Convert Include="$(TargetBuildDir)ch.cyberduck.jersey.jar" />
+    <Convert Include="$(TargetBuildDir)ch.cyberduck.manta.jar" />
+    <Convert Include="$(TargetBuildDir)ch.cyberduck.nextcloud.jar" />
+    <Convert Include="$(TargetBuildDir)ch.cyberduck.nio.jar" />
+    <Convert Include="$(TargetBuildDir)ch.cyberduck.oauth.jar" />
+    <Convert Include="$(TargetBuildDir)ch.cyberduck.onedrive.jar" />
+    <Convert Include="$(TargetBuildDir)ch.cyberduck.openstack.jar" />
+    <Convert Include="$(TargetBuildDir)ch.cyberduck.owncloud.jar" />
+    <Convert Include="$(TargetBuildDir)ch.cyberduck.s3.jar" />
+    <Convert Include="$(TargetBuildDir)ch.cyberduck.smb.jar" />
+    <Convert Include="$(TargetBuildDir)ch.cyberduck.spectra.jar" />
+    <Convert Include="$(TargetBuildDir)ch.cyberduck.ssh.jar" />
+    <Convert Include="$(TargetBuildDir)ch.cyberduck.storegate.jar" />
+    <Convert Include="$(TargetBuildDir)ch.cyberduck.tus.jar" />
+    <Convert Include="$(TargetBuildDir)ch.cyberduck.webdav.jar" />
+    <Convert Include="$(TargetBuildDir)ch.iterate.backblaze.b2.jar" />
+    <Convert Include="$(TargetBuildDir)ch.iterate.jargon.jargon-core.jar" />
+    <Convert Include="$(TargetBuildDir)ch.iterate.onedrive.onedrive-java-client.jar" />
+    <Convert Include="$(TargetBuildDir)ch.iterate.openstack.swift.jar" />
+    <Convert Include="$(TargetBuildDir)ch.iterate.spectralogic.ds3-interfaces.jar" />
+    <Convert Include="$(TargetBuildDir)ch.iterate.spectralogic.ds3-sdk.jar" />
+    <Convert Include="$(TargetBuildDir)ch.iterate.spectralogic.ds3-utils.jar" />
+    <Convert Include="$(TargetBuildDir)ch.iterate.ssh.jsch.agentproxy.core.jar" />
+    <Convert Include="$(TargetBuildDir)ch.iterate.ssh.jsch.agentproxy.pageant.jar" />
+    <Convert Include="$(TargetBuildDir)ch.iterate.ssh.jsch.agentproxy.sshagent.jar" />
+    <Convert Include="$(TargetBuildDir)ch.iterate.ssh.jsch.agentproxy.sshj.jar" />
+    <Convert Include="$(TargetBuildDir)ch.iterate.ssh.jsch.agentproxy.usocket-jna.jar" />
+    <Convert Include="$(TargetBuildDir)ch.iterate.ssh.sshj.jar" />
+    <Convert Include="$(TargetBuildDir)ch.iterate.webdav.sardine.jar" />
+    <Convert Include="$(TargetBuildDir)com.amazonaws.aws-java-sdk-cloudfront.jar" />
+    <Convert Include="$(TargetBuildDir)com.amazonaws.aws-java-sdk-core.jar" />
+    <Convert Include="$(TargetBuildDir)com.amazonaws.aws-java-sdk-iam.jar" />
+    <Convert Include="$(TargetBuildDir)com.amazonaws.aws-java-sdk-kms.jar" />
+    <Convert Include="$(TargetBuildDir)com.amazonaws.aws-java-sdk-s3.jar" />
+    <Convert Include="$(TargetBuildDir)com.amazonaws.aws-java-sdk-sts.jar" />
+    <Convert Include="$(TargetBuildDir)com.amazonaws.jmespath-java.jar" />
+    <Convert Include="$(TargetBuildDir)com.dracoon.dracoon-crypto-sdk.jar" />
+    <Convert Include="$(TargetBuildDir)com.dropbox.core.dropbox-core-sdk.jar" />
+    <Convert Include="$(TargetBuildDir)com.eclipsesource.minimal-json.minimal-json.jar" />
+    <Convert Include="$(TargetBuildDir)com.fasterxml.jackson.dataformat.jackson-dataformat-cbor.jar" />
+    <Convert Include="$(TargetBuildDir)com.fasterxml.jackson.dataformat.jackson-dataformat-xml.jar" />
+    <Convert Include="$(TargetBuildDir)com.fasterxml.jackson.datatype.jackson-datatype-joda.jar" />
+    <Convert Include="$(TargetBuildDir)com.fasterxml.jackson.datatype.jackson-datatype-jsr310.jar" />
+    <Convert Include="$(TargetBuildDir)com.fasterxml.jackson.jaxrs.jackson-jaxrs-base.jar" />
+    <Convert Include="$(TargetBuildDir)com.fasterxml.jackson.jaxrs.jackson-jaxrs-json-provider.jar" />
+    <Convert Include="$(TargetBuildDir)com.fasterxml.jackson.module.jackson-module-jaxb-annotations.jar" />
+    <Convert Include="$(TargetBuildDir)com.fasterxml.uuid.java-uuid-generator.jar" />
+    <Convert Include="$(TargetBuildDir)com.fasterxml.woodstox.woodstox-core.jar" />
+    <Convert Include="$(TargetBuildDir)com.google.api-client.google-api-client.jar" />
+    <Convert Include="$(TargetBuildDir)com.google.apis.google-api-services-drive.jar" />
+    <Convert Include="$(TargetBuildDir)com.google.apis.google-api-services-storage.jar" />
+    <Convert Include="$(TargetBuildDir)com.google.auth.google-auth-library-credentials.jar" />
+    <Convert Include="$(TargetBuildDir)com.google.auth.google-auth-library-oauth2-http.jar" />
+    <Convert Include="$(TargetBuildDir)com.google.auto.value.auto-value-annotations.jar" />
+    <Convert Include="$(TargetBuildDir)com.google.code.findbugs.annotations.jar" />
+    <Convert Include="$(TargetBuildDir)com.google.http-client.google-http-client-apache-v2.jar" />
+    <Convert Include="$(TargetBuildDir)com.google.http-client.google-http-client-gson.jar" />
+    <Convert Include="$(TargetBuildDir)com.google.http-client.google-http-client.jar" />
+    <Convert Include="$(TargetBuildDir)com.google.oauth-client.google-oauth-client.jar" />
+    <Convert Include="$(TargetBuildDir)com.hierynomus.asn-one.jar" />
+    <Convert Include="$(TargetBuildDir)com.hierynomus.smbj.jar" />
+    <Convert Include="$(TargetBuildDir)com.jcraft.jzlib.jar" />
+    <Convert Include="$(TargetBuildDir)com.joyent.http-signature.apache-http-client-signature.jar" />
+    <Convert Include="$(TargetBuildDir)com.joyent.http-signature.http-signature-common.jar" />
+    <Convert Include="$(TargetBuildDir)com.joyent.manta.java-manta-client-unshaded.jar" />
+    <Convert Include="$(TargetBuildDir)com.microsoft.azure.azure-keyvault-core.jar" />
+    <Convert Include="$(TargetBuildDir)com.microsoft.azure.azure-storage.jar" />
+    <Convert Include="$(TargetBuildDir)com.rapid7.client.dcerpc.jar" />
+    <Convert Include="$(TargetBuildDir)com.sun.activation.jakarta.activation.jar" />
+    <Convert Include="$(TargetBuildDir)com.sun.istack.istack-commons-runtime.jar" />
+    <Convert Include="$(TargetBuildDir)commons-lang.commons-lang.jar" />
+    <Convert Include="$(TargetBuildDir)io.dropwizard.metrics.metrics-core.jar" />
+    <Convert Include="$(TargetBuildDir)io.dropwizard.metrics.metrics-jmx.jar" />
+    <Convert Include="$(TargetBuildDir)io.grpc.grpc-context.jar" />
+    <Convert Include="$(TargetBuildDir)io.mikael.urlbuilder.jar" />
+    <Convert Include="$(TargetBuildDir)io.opencensus.opencensus-api.jar" />
+    <Convert Include="$(TargetBuildDir)io.opencensus.opencensus-contrib-http-util.jar" />
+    <Convert Include="$(TargetBuildDir)io.swagger.core.v3.swagger-annotations.jar" />
+    <Convert Include="$(TargetBuildDir)io.swagger.swagger-annotations.jar" />
+    <Convert Include="$(TargetBuildDir)jakarta.activation.jakarta.activation-api.jar" />
+    <Convert Include="$(TargetBuildDir)jakarta.annotation.jakarta.annotation-api.jar" />
+    <Convert Include="$(TargetBuildDir)jakarta.ws.rs.jakarta.ws.rs-api.jar" />
+    <Convert Include="$(TargetBuildDir)jakarta.xml.bind.jakarta.xml.bind-api.jar" />
+    <Convert Include="$(TargetBuildDir)joda-time.joda-time.jar" />
+    <Convert Include="$(TargetBuildDir)net.engio.mbassador.jar" />
+    <Convert Include="$(TargetBuildDir)net.i2p.crypto.eddsa.jar" />
+    <Convert Include="$(TargetBuildDir)org.apiguardian.apiguardian-api.jar" />
+    <Convert Include="$(TargetBuildDir)org.codehaus.woodstox.stax2-api.jar" />
+    <Convert Include="$(TargetBuildDir)org.glassfish.hk2.external.aopalliance-repackaged.jar" />
+    <Convert Include="$(TargetBuildDir)org.glassfish.hk2.external.jakarta.inject.jar" />
+    <Convert Include="$(TargetBuildDir)org.glassfish.hk2.hk2-api.jar" />
+    <Convert Include="$(TargetBuildDir)org.glassfish.hk2.hk2-locator.jar" />
+    <Convert Include="$(TargetBuildDir)org.glassfish.hk2.hk2-utils.jar" />
+    <Convert Include="$(TargetBuildDir)org.glassfish.hk2.osgi-resource-locator.jar" />
+    <Convert Include="$(TargetBuildDir)org.glassfish.jaxb.jaxb-runtime.jar" />
+    <Convert Include="$(TargetBuildDir)org.glassfish.jaxb.txw2.jar" />
+    <Convert Include="$(TargetBuildDir)org.glassfish.jersey.connectors.jersey-apache-connector.jar" />
+    <Convert Include="$(TargetBuildDir)org.glassfish.jersey.core.jersey-client.jar" />
+    <Convert Include="$(TargetBuildDir)org.glassfish.jersey.core.jersey-common.jar" />
+    <Convert Include="$(TargetBuildDir)org.glassfish.jersey.ext.jersey-entity-filtering.jar" />
+    <Convert Include="$(TargetBuildDir)org.glassfish.jersey.inject.jersey-hk2.jar" />
+    <Convert Include="$(TargetBuildDir)org.glassfish.jersey.media.jersey-media-json-jackson.jar" />
+    <Convert Include="$(TargetBuildDir)org.glassfish.jersey.media.jersey-media-multipart.jar" />
+    <Convert Include="$(TargetBuildDir)org.javassist.javassist.jar" />
+    <Convert Include="$(TargetBuildDir)org.jetbrains.annotations.jar" />
+    <Convert Include="$(TargetBuildDir)org.jetbrains.kotlin.kotlin-stdlib.jar" />
+    <Convert Include="$(TargetBuildDir)org.json.json.jar" />
+    <Convert Include="$(TargetBuildDir)org.jvnet.mimepull.mimepull.jar" />
+    <Convert Include="$(TargetBuildDir)org.objenesis.objenesis.jar" />
+    <Convert Include="$(TargetBuildDir)org.slf4j.jcl-over-slf4j.jar" />
+    <Convert Include="$(TargetBuildDir)software.amazon.ion.ion-java.jar" />
+    <Convert Include="$(TargetBuildDir)uk.com.robust-it.cloning.jar" />
+  </ItemGroup>
 </Project>
\ No newline at end of file
diff --git a/protocols/dll/Directory.Build.props b/protocols/dll/Directory.Build.props
index e0dc1f1ec1f..742c29d2fb8 100644
--- a/protocols/dll/Directory.Build.props
+++ b/protocols/dll/Directory.Build.props
@@ -20,6 +20,5 @@
     </PropertyGroup>
 
     <Import Project="../../Directory.Build.props" />
-    <Import Project="$([MSBuild]::GetPathOfFileAbove('Directory.Build.Java.props', '$(MSBuildThisFileDirectory)../'))" />
 
 </Project>
diff --git a/protocols/dll/build.xml b/protocols/dll/build.xml
index 79298e526b7..296b9012ad0 100644
--- a/protocols/dll/build.xml
+++ b/protocols/dll/build.xml
@@ -29,11 +29,9 @@
         </msbuild>
     </target>
 
-    <target name="build" if="platform.windows" depends="version,restore,msbuild.configuration">
+    <target name="build" if="platform.windows" depends="restore,msbuild">
         <msbuild buildfile="Cyberduck.Protocols.msbuildproj">
             <property name="Configuration" value="${msbuild.configuration}" />
-            <property name="Copyright" value="${copyright}" />
-            <property name="Version" value="${version}.${revision}" />
         </msbuild>
     </target>
 </project>
diff --git a/protocols/dll/pom.xml b/protocols/dll/pom.xml
index 425417ac79f..ae8f135c1fc 100644
--- a/protocols/dll/pom.xml
+++ b/protocols/dll/pom.xml
@@ -55,8 +55,14 @@
                                 <configuration>
                                     <artifacts>
                                         <artifact>
+                                            <classifier>net472</classifier>
                                             <type>dll</type>
-                                            <file>${project.build.directory}/Cyberduck.Protocols.dll</file>
+                                            <file>${project.build.directory}/net472/Cyberduck.Protocols.dll</file>
+                                        </artifact>
+                                        <artifact>
+                                            <classifier>net8.0</classifier>
+                                            <type>dll</type>
+                                            <file>${project.build.directory}/net8.0/Cyberduck.Protocols.dll</file>
                                         </artifact>
                                     </artifacts>
                                 </configuration>
@@ -75,9 +81,16 @@
                 <dependency>
                     <groupId>ch.cyberduck</groupId>
                     <artifactId>Cyberduck.Core</artifactId>
+                    <classifier>net472</classifier>
+                    <type>dll</type>
+                    <version>${project.version}</version>
+                </dependency>
+                <dependency>
+                    <groupId>ch.cyberduck</groupId>
+                    <artifactId>Cyberduck.Core</artifactId>
+                    <classifier>net8.0</classifier>
                     <type>dll</type>
                     <version>${project.version}</version>
-                    <scope>runtime</scope>
                 </dependency>
             </dependencies>
         </profile>
@@ -89,6 +102,13 @@
             <artifactId>protocols</artifactId>
             <type>pom</type>
             <version>${project.version}</version>
+            <scope>provided</scope>
+            <exclusions>
+                <exclusion>
+                    <groupId>ch.cyberduck</groupId>
+                    <artifactId>core</artifactId>
+                </exclusion>
+            </exclusions>
         </dependency>
     </dependencies>
-</project>
+</project>
\ No newline at end of file
diff --git a/src/main/msbuild/Cyberduck.Cpp.props b/src/main/msbuild/Cyberduck.Cpp.props
new file mode 100644
index 00000000000..96185344ba5
--- /dev/null
+++ b/src/main/msbuild/Cyberduck.Cpp.props
@@ -0,0 +1,6 @@
+<Project>
+  <PropertyGroup>
+    <OutDir>$(OutputPath)</OutDir>
+    <IntDir>$(IntermediateOutputPath)</IntDir>
+  </PropertyGroup>
+</Project>
\ No newline at end of file
diff --git a/src/main/msbuild/Cyberduck.Java.props b/src/main/msbuild/Cyberduck.Java.props
new file mode 100644
index 00000000000..9c3429b2c88
--- /dev/null
+++ b/src/main/msbuild/Cyberduck.Java.props
@@ -0,0 +1,7 @@
+<Project>
+  <PropertyGroup>
+    <_DirectoryBuildJavaPropsFile>$([MSBuild]::GetPathOfFileAbove('Directory.Build.Java.props', '$(MSBuildProjectDirectory)'))</_DirectoryBuildJavaPropsFile>
+  </PropertyGroup>
+
+  <Import Project="$(_DirectoryBuildJavaPropsFile)" Condition=" '$(_DirectoryBuildJavaPropsFile)' != '' " />
+</Project>
\ No newline at end of file
diff --git a/src/template/msbuild/Version.props b/src/template/msbuild/Version.props
new file mode 100644
index 00000000000..9aa2ba2a632
--- /dev/null
+++ b/src/template/msbuild/Version.props
@@ -0,0 +1,13 @@
+<Project>
+
+  <PropertyGroup Label="AssemblyInfo">
+    <AssemblyVersion>${version}</AssemblyVersion>
+    <InformationalVersion>${fullversion}</InformationalVersion>
+    <Revision>${revision}</Revision>
+    <Revision Condition=" '$(Revision)' == '' ">0</Revision>
+    <FileVersion>$(AssemblyVersion).$(Revision)</FileVersion>
+    <Copyright><![CDATA[${copyright}]]></Copyright>
+    <Version>$(FileVersion)</Version>
+  </PropertyGroup>
+
+</Project>
\ No newline at end of file
diff --git a/windows/Directory.Build.props b/windows/Directory.Build.props
index dd573ef48a9..423651ecc5d 100644
--- a/windows/Directory.Build.props
+++ b/windows/Directory.Build.props
@@ -17,12 +17,9 @@
 
     <PropertyGroup>
         <ModulePath Condition="'$(ModulePath)'==''">$(MSBuildThisFileDirectory)</ModulePath>
+        <AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkToOutputPath>
     </PropertyGroup>
 
     <Import Project="../Directory.Build.props" />
 
-    <PropertyGroup Condition=" '$(BuildVersion)'!='' And '$(Revision)'!='' ">
-        <Version>$(BuildVersion).$(Revision)</Version>
-    </PropertyGroup>
-
 </Project>
diff --git a/windows/build.proj b/windows/build.proj
index 9dd4030f31e..a8e703d6492 100644
--- a/windows/build.proj
+++ b/windows/build.proj
@@ -18,6 +18,6 @@
     <ProjectReference Include="src\main\wix\WindowsVersionCustomAction\WindowsVersionCustomAction.vcxproj" SetPlatform="Platform=Win32" />
     <ProjectReference Include="src\main\wix\Bundle\Cyberduck.Bundle.wixproj" />
     <ProjectReference Include="src\main\wix\Bootstrapper\Cyberduck.Bootstrapper.wixproj" />
-    <ProjectReference Include="src\main\package\package.wapproj" />
+    <ProjectReference Include="src\main\package\package.wapproj" SetPlatform="Platform=x64" />
   </ItemGroup>
 </Project>
diff --git a/windows/build.xml b/windows/build.xml
index 7bd77cfcdbf..aca2f04b9f8 100755
--- a/windows/build.xml
+++ b/windows/build.xml
@@ -31,42 +31,32 @@
     <property name="chocolatey.source" value="${setup}/chocolatey/cyberduck"/>
     <property name="chocolatey.target" value="${build.deploy}"/>
 
-    <condition property="msbuild.configuration" value="Debug">
-        <equals arg1="${configuration}" arg2="debug" />
-    </condition>
-    <condition property="msbuild.configuration" value="Release">
-        <equals arg1="${configuration}" arg2="release" />
-    </condition>
-
     <property name="cpack.bin" value="${env.ChocolateyInstall}/bin/cpack"/>
 
-    <target name="init-msbuild" depends="msbuild" />
-
-    <target name="restore" depends="init-msbuild, version">
+    <target name="restore" depends="msbuild">
         <msbuild buildfile="build.proj">
             <target name="Restore" />
         </msbuild>
     </target>
 
-    <target name="build" depends="init-msbuild, version">
+    <target name="build" depends="restore,msbuild">
         <msbuild buildfile="build.proj">
             <target name="Build" />
 
             <property name="BuildModule" value="Project" />
-            <property name="BuildProjectReferences" value="false" />
             <property name="Configuration" value="${msbuild.configuration}" />
-            <property name="Copyright" value="${copyright}" />
-            <property name="Version" value="${normalized.version}.${revision}" />
         </msbuild>
     </target>
 
-    <target name="test" depends="init-msbuild, version" unless="${skip}">
+    <target name="test" depends="msbuild" unless="${skip}">
         <msbuild buildfile="src/test/csharp/Cyberduck.Test.csproj">
             <target name="Test" />
+            
+            <property name="Configuration" value="${msbuild.configuration}" />
         </msbuild>
     </target>
 
-    <target name="package" depends="init-msbuild, version">
+    <target name="package" depends="msbuild">
         <copy todir="${build}">
             <fileset dir="${home}">
                 <include name="*.ico"/>
@@ -91,15 +81,9 @@
         <msbuild buildfile="build.proj">
             <target name="Build" />
 
-            <property name="Platform" value="x64" />
             <property name="BuildModule" value="Installer" />
-            <property name="BuildProjectReferences" value="false" />
             <property name="Configuration" value="${msbuild.configuration}" />
-            <property name="Copyright" value="${copyright}" />
-            <property name="ShortVersion" value="${version} (${revision})" />
             <property name="SignOutput" value="${msbuild.sign}" />
-            <property name="BuildVersion" value="${normalized.version}" />
-            <property name="Revision" value="${revision}" />
         </msbuild>
     </target>
 
diff --git a/windows/pom.xml b/windows/pom.xml
index 516f8aaa744..f20d8b3c40b 100644
--- a/windows/pom.xml
+++ b/windows/pom.xml
@@ -60,34 +60,6 @@
                     <plugin>
                         <artifactId>maven-antrun-plugin</artifactId>
                         <executions>
-                            <execution>
-                                <id>run-ant-restore-target</id>
-                                <phase>initialize</phase>
-                                <goals>
-                                    <goal>run</goal>
-                                </goals>
-                                <configuration>
-                                    <target>
-                                        <property name="home" value="${main.basedir}" />
-                                        <ant antfile="${project.basedir}/build.xml" target="restore" dir="." />
-                                    </target>
-                                </configuration>
-                            </execution>
-                            <execution>
-                                <id>run-ant-build-target</id>
-                                <phase>compile</phase>
-                                <goals>
-                                    <goal>run</goal>
-                                </goals>
-                                <configuration>
-                                    <target>
-                                        <property name="home" value="${main.basedir}" />
-                                        <property name="version" value="${project.version}" />
-                                        <property name="revision" value="${git.commitsCount}" />
-                                        <ant antfile="${project.basedir}/build.xml" target="build" dir="." />
-                                    </target>
-                                </configuration>
-                            </execution>
                             <execution>
                                 <id>run-ant-test-target</id>
                                 <phase>test</phase>
@@ -145,56 +117,58 @@
                 <dependency>
                     <groupId>ch.cyberduck</groupId>
                     <artifactId>Cyberduck.Core</artifactId>
+                    <classifier>net472</classifier>
                     <type>dll</type>
                     <version>${project.version}</version>
-                    <scope>runtime</scope>
                 </dependency>
                 <dependency>
                     <groupId>ch.cyberduck</groupId>
                     <artifactId>Cyberduck.Core.Native</artifactId>
+                    <classifier>net472</classifier>
                     <type>dll</type>
                     <version>${project.version}</version>
                 </dependency>
                 <dependency>
                     <groupId>ch.cyberduck</groupId>
                     <artifactId>Cyberduck.Core.Refresh</artifactId>
+                    <classifier>net472</classifier>
                     <type>dll</type>
                     <version>${project.version}</version>
                 </dependency>
                 <dependency>
                     <groupId>ch.cyberduck</groupId>
                     <artifactId>Cyberduck.Protocols</artifactId>
+                    <classifier>net472</classifier>
                     <type>dll</type>
                     <version>${project.version}</version>
-                    <scope>runtime</scope>
                 </dependency>
                 <dependency>
                     <groupId>ch.cyberduck</groupId>
                     <artifactId>Cyberduck.Bonjour</artifactId>
+                    <classifier>net472</classifier>
                     <type>dll</type>
                     <version>${project.version}</version>
-                    <scope>runtime</scope>
                 </dependency>
                 <dependency>
                     <groupId>ch.cyberduck</groupId>
                     <artifactId>Cyberduck.Bonjour.Native</artifactId>
+                    <classifier>net472</classifier>
                     <type>dll</type>
                     <version>${project.version}</version>
-                    <scope>runtime</scope>
                 </dependency>
                 <dependency>
                     <groupId>ch.cyberduck</groupId>
                     <artifactId>Cyberduck.Importer</artifactId>
+                    <classifier>net472</classifier>
                     <type>dll</type>
                     <version>${project.version}</version>
-                    <scope>runtime</scope>
                 </dependency>
                 <dependency>
                     <groupId>ch.cyberduck</groupId>
                     <artifactId>Cyberduck.Cryptomator</artifactId>
+                    <classifier>net472</classifier>
                     <type>dll</type>
                     <version>${project.version}</version>
-                    <scope>runtime</scope>
                 </dependency>
                 <dependency>
                     <groupId>com.github.vslavik</groupId>
@@ -210,28 +184,8 @@
                     <classifier>native</classifier>
                     <type>dll</type>
                     <version>1.0.0.1</version>
-                    <scope>runtime</scope>
                 </dependency>
             </dependencies>
         </profile>
     </profiles>
-
-    <dependencies>
-        <dependency>
-            <groupId>ch.cyberduck</groupId>
-            <artifactId>protocols</artifactId>
-            <type>pom</type>
-            <version>${project.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>ch.cyberduck</groupId>
-            <artifactId>importer</artifactId>
-            <version>${project.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>ch.cyberduck</groupId>
-            <artifactId>cryptomator</artifactId>
-            <version>${project.version}</version>
-        </dependency>
-    </dependencies>
 </project>
diff --git a/windows/src/main/csharp/Cyberduck.csproj b/windows/src/main/csharp/Cyberduck.csproj
index 99ea48ee6c6..23466bbff45 100644
--- a/windows/src/main/csharp/Cyberduck.csproj
+++ b/windows/src/main/csharp/Cyberduck.csproj
@@ -19,7 +19,8 @@
   </ItemGroup>
 
   <ItemGroup>
-    <Content Include="$(TargetBuildDir)jnidispatch.dll;$(TargetBuildDir)winsparkle.dll">
+    <Content Include="$(TargetBuildDir)lib\jnidispatch.dll;$(TargetBuildDir)lib\winsparkle.dll">
+      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
       <Link>$(Filename)$(Extension)</Link>
     </Content>
   </ItemGroup>
@@ -30,7 +31,7 @@
 
   <ItemGroup>
     <Reference Include="CustomOpenFileFolderDialog">
-      <HintPath>$(TargetBuildDir)CustomOpenFileFolderDialog.dll</HintPath>
+      <HintPath>$(TargetBuildDir)lib/CustomOpenFileFolderDialog.dll</HintPath>
     </Reference>
     <Reference Include="PresentationFramework.Aero" />
     <Reference Include="System.Design" />
@@ -89,4 +90,4 @@
     </Compile>
   </ItemGroup>
 
-</Project>
+</Project>
\ No newline at end of file
diff --git a/windows/src/main/csharp/Directory.Build.props b/windows/src/main/csharp/Directory.Build.props
index 452a911d2e2..b20cbe14427 100644
--- a/windows/src/main/csharp/Directory.Build.props
+++ b/windows/src/main/csharp/Directory.Build.props
@@ -17,4 +17,4 @@
 
   <Import Project="$([MSBuild]::GetPathOfFileAbove('Directory.Build.Props', $(MSBuildThisFileDirectory)../))" />
 
-</Project>
+</Project>
\ No newline at end of file
diff --git a/core/src/main/csharp/ch/cyberduck/core/CrashReporter.cs b/windows/src/main/csharp/ch/cyberduck/core/CrashReporter.cs
similarity index 100%
rename from core/src/main/csharp/ch/cyberduck/core/CrashReporter.cs
rename to windows/src/main/csharp/ch/cyberduck/core/CrashReporter.cs
diff --git a/windows/src/main/package/package.wapproj b/windows/src/main/package/package.wapproj
index c7466bdd1fd..5f8d27d72bb 100644
--- a/windows/src/main/package/package.wapproj
+++ b/windows/src/main/package/package.wapproj
@@ -63,7 +63,6 @@
         <Content Include="$(CyberduckDir)Acknowledgments.rtf;$(CyberduckDir)i18n/src/main/resources/en.lproj/License.txt">
             <Link>%(Filename)%(Extension)</Link>
         </Content>
-        <Content Include="Directory.Build.props" />
     </ItemGroup>
     <Import Project="$(WapProjPath)\Microsoft.DesktopBridge.targets" />
     <ItemGroup>
diff --git a/windows/src/main/wix/WindowsVersionCustomAction/Directory.Build.props b/windows/src/main/wix/WindowsVersionCustomAction/Directory.Build.props
deleted file mode 100644
index 527aa27e2dc..00000000000
--- a/windows/src/main/wix/WindowsVersionCustomAction/Directory.Build.props
+++ /dev/null
@@ -1,17 +0,0 @@
-<!--
-  ~ Copyright (c) 2002-2019 iterate GmbH. All rights reserved.
-  ~ https://cyberduck.io/
-  ~
-  ~ This program is free software; you can redistribute it and/or modify
-  ~ it under the terms of the GNU General Public License as published by
-  ~ the Free Software Foundation, either version 3 of the License, or
-  ~ (at your option) any later version.
-  ~
-  ~ This program is distributed in the hope that it will be useful,
-  ~ but WITHOUT ANY WARRANTY; without even the implied warranty of
-  ~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-  ~ GNU General Public License for more details.
-  -->
-
-<Project>
-</Project>
diff --git a/windows/src/main/wix/WindowsVersionCustomAction/WindowsVersionCustomAction.vcxproj b/windows/src/main/wix/WindowsVersionCustomAction/WindowsVersionCustomAction.vcxproj
index c0e651409b2..e13162a9c7e 100644
--- a/windows/src/main/wix/WindowsVersionCustomAction/WindowsVersionCustomAction.vcxproj
+++ b/windows/src/main/wix/WindowsVersionCustomAction/WindowsVersionCustomAction.vcxproj
@@ -14,10 +14,10 @@
     <ProjectGuid>{fba5efe2-362b-4bad-a748-3248f79468ac}</ProjectGuid>
     <Keyword>Win32Proj</Keyword>
     <RootNamespace>WindowsVersionCustomAction</RootNamespace>
-    <OutDir>windows\target\</OutDir>
     <WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
   </PropertyGroup>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <Import Project="$(BuildSupportDir)Cyberduck.Cpp.props" />
   <PropertyGroup Label="Configuration">
     <ConfigurationType>DynamicLibrary</ConfigurationType>
     <PlatformToolset>v140</PlatformToolset>
@@ -26,7 +26,6 @@
     <PlatformToolset Condition="'$(VisualStudioVersion)' == '17.0'">v143</PlatformToolset>
     <ConfigurationType>DynamicLibrary</ConfigurationType>
     <CharacterSet>Unicode</CharacterSet>
-    <IntDir>obj\$(Configuration)</IntDir>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)'=='Debug'" Label="Configuration">
     <UseDebugLibraries>true</UseDebugLibraries>