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"/>