From 35415f44b7d09be16659bd37e519647f9f6b2b9c Mon Sep 17 00:00:00 2001 From: Tijoy Tom Kalathiparambil Date: Tue, 30 May 2017 17:36:46 -0700 Subject: [PATCH 1/2] ConfigurationManager fix for UAPAOT Use Assembly.CodeBase is not available on uapaot,replacing with Path.Combine(AppDomain.CurrentDomain.BaseDirectory, assemblyName.Name) --- .../src/System/Configuration/ClientConfigPaths.cs | 8 +++++--- .../src/System/Configuration/ClientConfigurationHost.cs | 2 +- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/src/System.Configuration.ConfigurationManager/src/System/Configuration/ClientConfigPaths.cs b/src/System.Configuration.ConfigurationManager/src/System/Configuration/ClientConfigPaths.cs index 467a70b6e536..66469b1515d5 100644 --- a/src/System.Configuration.ConfigurationManager/src/System/Configuration/ClientConfigPaths.cs +++ b/src/System.Configuration.ConfigurationManager/src/System/Configuration/ClientConfigPaths.cs @@ -60,7 +60,9 @@ private ClientConfigPaths(string exePath, bool includeUserConfig) // used for local paths and "file://" for UNCs. Simply removing the prefix will make // local paths relative on Unix (e.g. "file:///home" will become "home" instead of // "/home"). - Uri uri = new Uri(exeAssembly.CodeBase); + string configBasePath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, exeAssembly.GetName().Name); + Uri uri = new Uri(configBasePath); + if (uri.IsFile) { ApplicationUri = uri.LocalPath; @@ -68,7 +70,7 @@ private ClientConfigPaths(string exePath, bool includeUserConfig) } else { - ApplicationUri = exeAssembly.EscapedCodeBase; + ApplicationUri = Uri.EscapeDataString(configBasePath); } } @@ -201,7 +203,7 @@ private static string GetTypeAndHashSuffix(string exePath) if (assembly != null) { AssemblyName assemblyName = assembly.GetName(); - Uri codeBase = new Uri(assembly.CodeBase); + Uri codeBase = new Uri(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, assemblyName.Name)); hash = IdentityHelper.GetNormalizedStrongNameHash(assemblyName); if (hash != null) diff --git a/src/System.Configuration.ConfigurationManager/src/System/Configuration/ClientConfigurationHost.cs b/src/System.Configuration.ConfigurationManager/src/System/Configuration/ClientConfigurationHost.cs index 5c7c5e56ced9..d5b7e0435bca 100644 --- a/src/System.Configuration.ConfigurationManager/src/System/Configuration/ClientConfigurationHost.cs +++ b/src/System.Configuration.ConfigurationManager/src/System/Configuration/ClientConfigurationHost.cs @@ -46,7 +46,7 @@ internal static string MachineConfigFilePath { if (s_machineConfigFilePath == null) { - string directory = RuntimeEnvironment.GetRuntimeDirectory(); + string directory = AppDomain.CurrentDomain.BaseDirectory; s_machineConfigFilePath = Path.Combine(Path.Combine(directory, MachineConfigSubdirectory), MachineConfigFilename); } From 8b2db17fad914af66d6087ddf8183080cf83f340 Mon Sep 17 00:00:00 2001 From: Tijoy Tom Kalathiparambil Date: Wed, 31 May 2017 10:14:45 -0700 Subject: [PATCH 2/2] Use Assembly.ManifestModule.Name instead of Assembly.Name --- .../src/System/Configuration/ClientConfigPaths.cs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/System.Configuration.ConfigurationManager/src/System/Configuration/ClientConfigPaths.cs b/src/System.Configuration.ConfigurationManager/src/System/Configuration/ClientConfigPaths.cs index 66469b1515d5..b62f8851870f 100644 --- a/src/System.Configuration.ConfigurationManager/src/System/Configuration/ClientConfigPaths.cs +++ b/src/System.Configuration.ConfigurationManager/src/System/Configuration/ClientConfigPaths.cs @@ -60,7 +60,7 @@ private ClientConfigPaths(string exePath, bool includeUserConfig) // used for local paths and "file://" for UNCs. Simply removing the prefix will make // local paths relative on Unix (e.g. "file:///home" will become "home" instead of // "/home"). - string configBasePath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, exeAssembly.GetName().Name); + string configBasePath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, exeAssembly.ManifestModule.Name); Uri uri = new Uri(configBasePath); if (uri.IsFile) @@ -203,7 +203,7 @@ private static string GetTypeAndHashSuffix(string exePath) if (assembly != null) { AssemblyName assemblyName = assembly.GetName(); - Uri codeBase = new Uri(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, assemblyName.Name)); + Uri codeBase = new Uri(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, assembly.ManifestModule.Name)); hash = IdentityHelper.GetNormalizedStrongNameHash(assemblyName); if (hash != null) @@ -331,4 +331,4 @@ private static string Validate(string str, bool limitSize) return validated; } } -} \ No newline at end of file +}