diff --git a/src/Accounts/Accounts/Accounts.csproj b/src/Accounts/Accounts/Accounts.csproj index 5205276d799c..7feec4b8cc55 100644 --- a/src/Accounts/Accounts/Accounts.csproj +++ b/src/Accounts/Accounts/Accounts.csproj @@ -11,21 +11,8 @@ - - - - - - - - - - - - - - - + + @@ -38,10 +25,12 @@ + + diff --git a/src/Accounts/Accounts/ChangeLog.md b/src/Accounts/Accounts/ChangeLog.md index 6436491e0f52..0b57e8b49f1b 100644 --- a/src/Accounts/Accounts/ChangeLog.md +++ b/src/Accounts/Accounts/ChangeLog.md @@ -18,6 +18,7 @@ - Additional information about change #1 --> ## Upcoming Release +* Update preloaded assemblies [#12024,#11976] * Updated Azure.Core assembly * Fixed an issue that may cause `Connect-AzAccount` to fail in multi-threaded execution [#11201] diff --git a/src/Accounts/Accounts/PostImportScripts/LoadAuthenticators.ps1 b/src/Accounts/Accounts/PostImportScripts/LoadAuthenticators.ps1 index d151cd60dfa5..fa6326df53c4 100644 --- a/src/Accounts/Accounts/PostImportScripts/LoadAuthenticators.ps1 +++ b/src/Accounts/Accounts/PostImportScripts/LoadAuthenticators.ps1 @@ -2,8 +2,4 @@ try { [Microsoft.Azure.PowerShell.Authenticators.DesktopAuthenticatorBuilder]::Apply([Microsoft.Azure.Commands.Common.Authentication.AzureSession]::Instance) } catch {} - - try { - [Microsoft.Azure.Commands.Profile.Utilities.CustomAssemblyResolver]::Initialize() - } catch {} } \ No newline at end of file diff --git a/src/Accounts/Accounts/StartupScripts/InitializeAssemblyResolver.ps1 b/src/Accounts/Accounts/StartupScripts/InitializeAssemblyResolver.ps1 new file mode 100644 index 000000000000..91c32b461788 --- /dev/null +++ b/src/Accounts/Accounts/StartupScripts/InitializeAssemblyResolver.ps1 @@ -0,0 +1,5 @@ +if ($PSEdition -eq 'Desktop') { + try { + [Microsoft.Azure.Commands.Profile.Utilities.CustomAssemblyResolver]::Initialize() + } catch {} +} \ No newline at end of file diff --git a/src/Accounts/Accounts/Utilities/CustomAssemblyResolver.cs b/src/Accounts/Accounts/Utilities/CustomAssemblyResolver.cs index fe3dba6098eb..67f3501ccb23 100644 --- a/src/Accounts/Accounts/Utilities/CustomAssemblyResolver.cs +++ b/src/Accounts/Accounts/Utilities/CustomAssemblyResolver.cs @@ -1,13 +1,31 @@ using System; +using System.Collections.Generic; using System.IO; using System.Reflection; +using Newtonsoft.Json; namespace Microsoft.Azure.Commands.Profile.Utilities { public static class CustomAssemblyResolver { + private static IDictionary NetFxPreloadAssemblies = + new Dictionary(StringComparer.InvariantCultureIgnoreCase); + + private static string PreloadAssemblyFolder { get; set; } + public static void Initialize() { + var accountFolder = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location); + PreloadAssemblyFolder = Path.Combine(accountFolder, "PreloadAssemblies"); + var assemblyInfo = File.ReadAllText(Path.Combine(accountFolder, "PreloadAssemblyInfo.json")); + + var root = JsonConvert.DeserializeObject>>(assemblyInfo); + var netfx = root["netfx"]; + foreach(var info in netfx) + { + NetFxPreloadAssemblies[info.Key] = new Version(info.Value); + } + AppDomain.CurrentDomain.AssemblyResolve += CurrentDomain_AssemblyResolve; } @@ -19,13 +37,13 @@ public static Assembly CurrentDomain_AssemblyResolve(object sender, ResolveEvent try { AssemblyName name = new AssemblyName(args.Name); - if(string.Equals(name.Name, "Azure.Core", StringComparison.OrdinalIgnoreCase) - && name.Version?.Major == 1 && (name.Version?.Minor == 2 && name.Version?.Build <= 1 || - name.Version?.Minor == 1)) + if (NetFxPreloadAssemblies.TryGetValue(args.Name, out Version version)) { - string accountFolder = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location); - string azureCorePath = Path.Combine(accountFolder, @"PreloadAssemblies\Azure.Core.dll"); - return Assembly.LoadFrom(azureCorePath); + if (version >= name.Version && version.Major == name.Version.Major) + { + string requiredAssembly = Path.Combine(PreloadAssemblyFolder, $"{args.Name}.dll"); + return Assembly.LoadFrom(requiredAssembly); + } } } catch diff --git a/src/lib/Azure.Core/PreloadAssemblies/System.Diagnostics.DiagnosticSource.dll b/src/lib/Azure.Core/PreloadAssemblies/System.Diagnostics.DiagnosticSource.dll deleted file mode 100644 index 917a04adfb4e..000000000000 Binary files a/src/lib/Azure.Core/PreloadAssemblies/System.Diagnostics.DiagnosticSource.dll and /dev/null differ diff --git a/src/lib/Azure.Core/PreloadAssemblies/System.Runtime.CompilerServices.Unsafe.4.0.4.0.dll b/src/lib/Azure.Core/PreloadAssemblies/System.Runtime.CompilerServices.Unsafe.4.0.4.0.dll deleted file mode 100644 index 0b45903440b9..000000000000 Binary files a/src/lib/Azure.Core/PreloadAssemblies/System.Runtime.CompilerServices.Unsafe.4.0.4.0.dll and /dev/null differ diff --git a/src/lib/Azure.Core/PreloadAssemblies/System.Runtime.CompilerServices.Unsafe.4.0.4.1.dll b/src/lib/Azure.Core/PreloadAssemblies/System.Runtime.CompilerServices.Unsafe.4.0.4.1.dll deleted file mode 100644 index 3156239266db..000000000000 Binary files a/src/lib/Azure.Core/PreloadAssemblies/System.Runtime.CompilerServices.Unsafe.4.0.4.1.dll and /dev/null differ diff --git a/src/lib/Azure.Core/PreloadAssemblies/System.Threading.Tasks.Extensions.4.3.1.0.dll b/src/lib/Azure.Core/PreloadAssemblies/System.Threading.Tasks.Extensions.4.3.1.0.dll deleted file mode 100644 index ff691490b4a3..000000000000 Binary files a/src/lib/Azure.Core/PreloadAssemblies/System.Threading.Tasks.Extensions.4.3.1.0.dll and /dev/null differ diff --git a/src/lib/Azure.Core/NetCoreAssemblies/Azure.Core.dll b/src/lib/NetCorePreloadAssemblies/Azure.Core.dll similarity index 100% rename from src/lib/Azure.Core/NetCoreAssemblies/Azure.Core.dll rename to src/lib/NetCorePreloadAssemblies/Azure.Core.dll diff --git a/src/lib/Azure.Core/NetCoreAssemblies/Microsoft.Bcl.AsyncInterfaces.dll b/src/lib/NetCorePreloadAssemblies/Microsoft.Bcl.AsyncInterfaces.dll similarity index 100% rename from src/lib/Azure.Core/NetCoreAssemblies/Microsoft.Bcl.AsyncInterfaces.dll rename to src/lib/NetCorePreloadAssemblies/Microsoft.Bcl.AsyncInterfaces.dll diff --git a/src/lib/Microsoft.IdentityModel.Clients.ActiveDirectory/NetCore/Microsoft.IdentityModel.Clients.ActiveDirectory.Platform.dll b/src/lib/NetCorePreloadAssemblies/Microsoft.IdentityModel.Clients.ActiveDirectory.Platform.dll similarity index 100% rename from src/lib/Microsoft.IdentityModel.Clients.ActiveDirectory/NetCore/Microsoft.IdentityModel.Clients.ActiveDirectory.Platform.dll rename to src/lib/NetCorePreloadAssemblies/Microsoft.IdentityModel.Clients.ActiveDirectory.Platform.dll diff --git a/src/lib/Microsoft.IdentityModel.Clients.ActiveDirectory/NetCore/Microsoft.IdentityModel.Clients.ActiveDirectory.dll b/src/lib/NetCorePreloadAssemblies/Microsoft.IdentityModel.Clients.ActiveDirectory.dll similarity index 100% rename from src/lib/Microsoft.IdentityModel.Clients.ActiveDirectory/NetCore/Microsoft.IdentityModel.Clients.ActiveDirectory.dll rename to src/lib/NetCorePreloadAssemblies/Microsoft.IdentityModel.Clients.ActiveDirectory.dll diff --git a/src/lib/Azure.Core/NetCoreAssemblies/System.Numerics.Vectors.dll b/src/lib/NetCorePreloadAssemblies/System.Numerics.Vectors.dll similarity index 100% rename from src/lib/Azure.Core/NetCoreAssemblies/System.Numerics.Vectors.dll rename to src/lib/NetCorePreloadAssemblies/System.Numerics.Vectors.dll diff --git a/src/lib/Azure.Core/NetCoreAssemblies/System.Runtime.CompilerServices.Unsafe.dll b/src/lib/NetCorePreloadAssemblies/System.Runtime.CompilerServices.Unsafe.dll similarity index 100% rename from src/lib/Azure.Core/NetCoreAssemblies/System.Runtime.CompilerServices.Unsafe.dll rename to src/lib/NetCorePreloadAssemblies/System.Runtime.CompilerServices.Unsafe.dll diff --git a/src/lib/Azure.Core/NetCoreAssemblies/System.Text.Encodings.Web.dll b/src/lib/NetCorePreloadAssemblies/System.Text.Encodings.Web.dll similarity index 100% rename from src/lib/Azure.Core/NetCoreAssemblies/System.Text.Encodings.Web.dll rename to src/lib/NetCorePreloadAssemblies/System.Text.Encodings.Web.dll diff --git a/src/lib/Azure.Core/NetCoreAssemblies/System.Text.Json.dll b/src/lib/NetCorePreloadAssemblies/System.Text.Json.dll similarity index 100% rename from src/lib/Azure.Core/NetCoreAssemblies/System.Text.Json.dll rename to src/lib/NetCorePreloadAssemblies/System.Text.Json.dll diff --git a/src/lib/Azure.Core/NetCoreAssemblies/System.Threading.Tasks.Extensions.dll b/src/lib/NetCorePreloadAssemblies/System.Threading.Tasks.Extensions.dll similarity index 100% rename from src/lib/Azure.Core/NetCoreAssemblies/System.Threading.Tasks.Extensions.dll rename to src/lib/NetCorePreloadAssemblies/System.Threading.Tasks.Extensions.dll diff --git a/src/lib/Azure.Core/PreloadAssemblies/Azure.Core.dll b/src/lib/NetFxPreloadAssemblies/Azure.Core.dll similarity index 100% rename from src/lib/Azure.Core/PreloadAssemblies/Azure.Core.dll rename to src/lib/NetFxPreloadAssemblies/Azure.Core.dll diff --git a/src/lib/Azure.Core/PreloadAssemblies/Microsoft.Bcl.AsyncInterfaces.dll b/src/lib/NetFxPreloadAssemblies/Microsoft.Bcl.AsyncInterfaces.dll similarity index 100% rename from src/lib/Azure.Core/PreloadAssemblies/Microsoft.Bcl.AsyncInterfaces.dll rename to src/lib/NetFxPreloadAssemblies/Microsoft.Bcl.AsyncInterfaces.dll diff --git a/src/lib/Microsoft.IdentityModel.Clients.ActiveDirectory/NetFx/Microsoft.IdentityModel.Clients.ActiveDirectory.Platform.dll b/src/lib/NetFxPreloadAssemblies/Microsoft.IdentityModel.Clients.ActiveDirectory.Platform.dll similarity index 100% rename from src/lib/Microsoft.IdentityModel.Clients.ActiveDirectory/NetFx/Microsoft.IdentityModel.Clients.ActiveDirectory.Platform.dll rename to src/lib/NetFxPreloadAssemblies/Microsoft.IdentityModel.Clients.ActiveDirectory.Platform.dll diff --git a/src/lib/Microsoft.IdentityModel.Clients.ActiveDirectory/NetFx/Microsoft.IdentityModel.Clients.ActiveDirectory.dll b/src/lib/NetFxPreloadAssemblies/Microsoft.IdentityModel.Clients.ActiveDirectory.dll similarity index 100% rename from src/lib/Microsoft.IdentityModel.Clients.ActiveDirectory/NetFx/Microsoft.IdentityModel.Clients.ActiveDirectory.dll rename to src/lib/NetFxPreloadAssemblies/Microsoft.IdentityModel.Clients.ActiveDirectory.dll diff --git a/src/lib/Newtonsoft.Json.10.dll b/src/lib/NetFxPreloadAssemblies/Newtonsoft.Json.dll similarity index 100% rename from src/lib/Newtonsoft.Json.10.dll rename to src/lib/NetFxPreloadAssemblies/Newtonsoft.Json.dll diff --git a/src/lib/System.Buffers.dll b/src/lib/NetFxPreloadAssemblies/System.Buffers.dll similarity index 100% rename from src/lib/System.Buffers.dll rename to src/lib/NetFxPreloadAssemblies/System.Buffers.dll diff --git a/src/lib/Azure.Core/PreloadAssemblies/System.Diagnostics.DiagnosticSource.4.0.4.0.dll b/src/lib/NetFxPreloadAssemblies/System.Diagnostics.DiagnosticSource.dll similarity index 100% rename from src/lib/Azure.Core/PreloadAssemblies/System.Diagnostics.DiagnosticSource.4.0.4.0.dll rename to src/lib/NetFxPreloadAssemblies/System.Diagnostics.DiagnosticSource.dll diff --git a/src/lib/Azure.Core/PreloadAssemblies/System.Memory.dll b/src/lib/NetFxPreloadAssemblies/System.Memory.dll similarity index 100% rename from src/lib/Azure.Core/PreloadAssemblies/System.Memory.dll rename to src/lib/NetFxPreloadAssemblies/System.Memory.dll diff --git a/src/lib/System.Net.Http.WinHttpHandler.dll b/src/lib/NetFxPreloadAssemblies/System.Net.Http.WinHttpHandler.dll similarity index 100% rename from src/lib/System.Net.Http.WinHttpHandler.dll rename to src/lib/NetFxPreloadAssemblies/System.Net.Http.WinHttpHandler.dll diff --git a/src/lib/Azure.Core/PreloadAssemblies/System.Numerics.Vectors.dll b/src/lib/NetFxPreloadAssemblies/System.Numerics.Vectors.dll similarity index 100% rename from src/lib/Azure.Core/PreloadAssemblies/System.Numerics.Vectors.dll rename to src/lib/NetFxPreloadAssemblies/System.Numerics.Vectors.dll diff --git a/src/lib/System.Private.ServiceModel.dll b/src/lib/NetFxPreloadAssemblies/System.Private.ServiceModel.dll similarity index 100% rename from src/lib/System.Private.ServiceModel.dll rename to src/lib/NetFxPreloadAssemblies/System.Private.ServiceModel.dll diff --git a/src/lib/System.Reflection.DispatchProxy.dll b/src/lib/NetFxPreloadAssemblies/System.Reflection.DispatchProxy.dll similarity index 100% rename from src/lib/System.Reflection.DispatchProxy.dll rename to src/lib/NetFxPreloadAssemblies/System.Reflection.DispatchProxy.dll diff --git a/src/lib/NetFxPreloadAssemblies/System.Runtime.CompilerServices.Unsafe.dll b/src/lib/NetFxPreloadAssemblies/System.Runtime.CompilerServices.Unsafe.dll new file mode 100644 index 000000000000..0c27a0e21c7e Binary files /dev/null and b/src/lib/NetFxPreloadAssemblies/System.Runtime.CompilerServices.Unsafe.dll differ diff --git a/src/lib/Azure.Core/PreloadAssemblies/System.Security.AccessControl.dll b/src/lib/NetFxPreloadAssemblies/System.Security.AccessControl.dll similarity index 100% rename from src/lib/Azure.Core/PreloadAssemblies/System.Security.AccessControl.dll rename to src/lib/NetFxPreloadAssemblies/System.Security.AccessControl.dll diff --git a/src/lib/Azure.Core/PreloadAssemblies/System.Security.Permissions.dll b/src/lib/NetFxPreloadAssemblies/System.Security.Permissions.dll similarity index 100% rename from src/lib/Azure.Core/PreloadAssemblies/System.Security.Permissions.dll rename to src/lib/NetFxPreloadAssemblies/System.Security.Permissions.dll diff --git a/src/lib/Azure.Core/PreloadAssemblies/System.Security.Principal.Windows.dll b/src/lib/NetFxPreloadAssemblies/System.Security.Principal.Windows.dll similarity index 100% rename from src/lib/Azure.Core/PreloadAssemblies/System.Security.Principal.Windows.dll rename to src/lib/NetFxPreloadAssemblies/System.Security.Principal.Windows.dll diff --git a/src/lib/System.ServiceModel.Primitives.dll b/src/lib/NetFxPreloadAssemblies/System.ServiceModel.Primitives.dll similarity index 100% rename from src/lib/System.ServiceModel.Primitives.dll rename to src/lib/NetFxPreloadAssemblies/System.ServiceModel.Primitives.dll diff --git a/src/lib/Azure.Core/PreloadAssemblies/System.Text.Encodings.Web.dll b/src/lib/NetFxPreloadAssemblies/System.Text.Encodings.Web.dll similarity index 100% rename from src/lib/Azure.Core/PreloadAssemblies/System.Text.Encodings.Web.dll rename to src/lib/NetFxPreloadAssemblies/System.Text.Encodings.Web.dll diff --git a/src/lib/Azure.Core/PreloadAssemblies/System.Text.Json.dll b/src/lib/NetFxPreloadAssemblies/System.Text.Json.dll similarity index 100% rename from src/lib/Azure.Core/PreloadAssemblies/System.Text.Json.dll rename to src/lib/NetFxPreloadAssemblies/System.Text.Json.dll diff --git a/src/lib/Azure.Core/PreloadAssemblies/System.Threading.Tasks.Extensions.4.2.0.0.dll b/src/lib/NetFxPreloadAssemblies/System.Threading.Tasks.Extensions.dll similarity index 100% rename from src/lib/Azure.Core/PreloadAssemblies/System.Threading.Tasks.Extensions.4.2.0.0.dll rename to src/lib/NetFxPreloadAssemblies/System.Threading.Tasks.Extensions.dll diff --git a/src/lib/Azure.Core/PreloadAssemblies/System.Xml.ReaderWriter.dll b/src/lib/NetFxPreloadAssemblies/System.Xml.ReaderWriter.dll similarity index 100% rename from src/lib/Azure.Core/PreloadAssemblies/System.Xml.ReaderWriter.dll rename to src/lib/NetFxPreloadAssemblies/System.Xml.ReaderWriter.dll diff --git a/src/lib/PreloadAssemblyInfo.json b/src/lib/PreloadAssemblyInfo.json new file mode 100644 index 000000000000..1402cba825fa --- /dev/null +++ b/src/lib/PreloadAssemblyInfo.json @@ -0,0 +1,36 @@ +{ + "netfx": { + "Azure.Core": "1.2.1.0", + "Microsoft.Bcl.AsyncInterfaces": "1.0.0.0", + "Microsoft.IdentityModel.Clients.ActiveDirectory": "3.19.2.6005", + "Microsoft.IdentityModel.Clients.ActiveDirectory.Platform": "3.19.2.6005", + "Newtonsoft.Json": "10.0.0.0", + "System.Buffers": "4.0.2.0", + "System.Diagnostics.DiagnosticSource": "4.0.4.0", + "System.Memory": "4.0.1.1", + "System.Net.Http.WinHttpHandler": "4.0.2.0", + "System.Numerics.Vectors": "4.1.3.0", + "System.Private.ServiceModel": "4.1.2.1", + "System.Reflection.DispatchProxy": "4.0.3.0", + "System.Runtime.CompilerServices.Unsafe": "4.0.5.0", + "System.Security.AccessControl": "4.1.1.0", + "System.Security.Permissions": "4.0.1.0", + "System.Security.Principal.Windows": "4.1.1.0", + "System.ServiceModel.Primitives": "4.2.0.0", + "System.Text.Encodings.Web": "4.0.4.0", + "System.Text.Json": "4.0.0.0", + "System.Threading.Tasks.Extensions": "4.2.0.0", + "System.Xml.ReaderWriter": "4.1.0.0" + }, + "netcore": { + "Azure.Core": "1.2.1.0", + "Microsoft.Bcl.AsyncInterfaces": "1.0.0.0", + "Microsoft.IdentityModel.Clients.ActiveDirectory": "3.19.2.6005", + "Microsoft.IdentityModel.Clients.ActiveDirectory.Platform": "3.19.2.6005", + "System.Numerics.Vectors": "4.1.4.0", + "System.Runtime.CompilerServices.Unsafe": "4.0.6.0", + "System.Text.Encodings.Web": "4.0.5.0", + "System.Text.Json": "4.0.0.0", + "System.Threading.Tasks.Extensions": "4.3.1.0" + } +} \ No newline at end of file diff --git a/src/lib/System.Security.AccessControl.dll b/src/lib/System.Security.AccessControl.dll deleted file mode 100644 index e8074324cd13..000000000000 Binary files a/src/lib/System.Security.AccessControl.dll and /dev/null differ diff --git a/src/lib/System.Security.Permissions.dll b/src/lib/System.Security.Permissions.dll deleted file mode 100644 index d1af38f0f8b7..000000000000 Binary files a/src/lib/System.Security.Permissions.dll and /dev/null differ diff --git a/src/lib/System.Security.Principal.Windows.dll b/src/lib/System.Security.Principal.Windows.dll deleted file mode 100644 index afd187c14918..000000000000 Binary files a/src/lib/System.Security.Principal.Windows.dll and /dev/null differ diff --git a/src/lib/test.net472.config b/src/lib/test.net472.config index 2781ffa42106..131361166d84 100644 --- a/src/lib/test.net472.config +++ b/src/lib/test.net472.config @@ -9,7 +9,7 @@ + href="../../../../../libNetFxPreloadAssemblies/Newtonsoft.Json.dll"/>