diff --git a/src/DynamoRevit/DynamoRevit.cs b/src/DynamoRevit/DynamoRevit.cs index f2a9b7b5dc..2d1c4fe603 100644 --- a/src/DynamoRevit/DynamoRevit.cs +++ b/src/DynamoRevit/DynamoRevit.cs @@ -5,6 +5,7 @@ using System.Linq; using System.Reflection; using System.Runtime.InteropServices; +using System.Runtime.Loader; using System.Runtime.Serialization; using System.Text; using System.Text.RegularExpressions; @@ -539,7 +540,7 @@ private static void UpdateSystemPathForProcess() public static string GetGeometryFactoryPath(string corePath, Version version) { var dynamoAsmPath = Path.Combine(corePath, "DynamoShapeManager.dll"); - var assembly = Assembly.LoadFrom(dynamoAsmPath); + var assembly = AssemblyLoadContext.GetLoadContext(Assembly.GetExecutingAssembly()).LoadFromAssemblyPath(dynamoAsmPath); if (assembly == null) throw new FileNotFoundException("File not found", dynamoAsmPath); @@ -568,7 +569,7 @@ private static void PreloadDynamoCoreDlls() if (!File.Exists(assemblyPath)) assemblyPath = Path.Combine(Path.GetDirectoryName(Environment.ProcessPath), assembly); if (File.Exists(assemblyPath)) - Assembly.LoadFrom(assemblyPath); + AssemblyLoadContext.GetLoadContext(Assembly.GetExecutingAssembly()).LoadFromAssemblyPath(assemblyPath); } } diff --git a/src/DynamoRevit/DynamoRevitApp.cs b/src/DynamoRevit/DynamoRevitApp.cs index e6a7b58f39..4236269398 100644 --- a/src/DynamoRevit/DynamoRevitApp.cs +++ b/src/DynamoRevit/DynamoRevitApp.cs @@ -7,6 +7,7 @@ using System.Linq; using System.Reflection; using System.Resources; +using System.Runtime.Loader; using System.Windows; using System.Windows.Interop; using System.Windows.Media; @@ -105,7 +106,7 @@ private Result loadDependentComponents() { try { - var dynamoRevitAditionsAss = Assembly.LoadFrom(dynamoRevitAditionsPath); + var dynamoRevitAditionsAss = AssemblyLoadContext.GetLoadContext(Assembly.GetExecutingAssembly()).LoadFromAssemblyPath(dynamoRevitAditionsPath); if (dynamoRevitAditionsAss != null) { var dynamoRevitAditionsLoader = dynamoRevitAditionsAss.CreateInstance("DynamoRevitAdditions.LoadManager"); @@ -341,7 +342,7 @@ public static Assembly ResolveAssembly(object sender, ResolveEventArgs args) assemblyPath = Path.Combine(DynamoRevitApp.DynamoCorePath, assemblyName); if(File.Exists(assemblyPath)) { - return Assembly.LoadFrom(assemblyPath); + return AssemblyLoadContext.GetLoadContext(Assembly.GetExecutingAssembly()).LoadFromAssemblyPath(assemblyPath); } var assemblyLocation = Assembly.GetExecutingAssembly().Location; @@ -356,7 +357,7 @@ public static Assembly ResolveAssembly(object sender, ResolveEventArgs args) assemblyPath = Path.Combine(parentDirectory.FullName, assemblyName); } - return (File.Exists(assemblyPath) ? Assembly.LoadFrom(assemblyPath) : null); + return (File.Exists(assemblyPath) ? AssemblyLoadContext.GetLoadContext(Assembly.GetExecutingAssembly()).LoadFromAssemblyPath(assemblyPath) : null); } catch (Exception ex) { diff --git a/src/Legacy/DynamoRevitVersionSelector/VersionSelectorApp.cs b/src/Legacy/DynamoRevitVersionSelector/VersionSelectorApp.cs index 9b446a7231..bf94a83f14 100644 --- a/src/Legacy/DynamoRevitVersionSelector/VersionSelectorApp.cs +++ b/src/Legacy/DynamoRevitVersionSelector/VersionSelectorApp.cs @@ -4,6 +4,7 @@ using System.IO; using System.Linq; using System.Reflection; +using System.Runtime.Loader; using Autodesk.Revit.Attributes; using Autodesk.Revit.DB; using Autodesk.Revit.UI; @@ -157,7 +158,7 @@ private Result loadProduct(DynamoProduct product, string revitVersion) if (String.IsNullOrEmpty(loadPath)) return Result.Failed; - var ass = Assembly.LoadFrom(loadPath); + var ass = AssemblyLoadContext.GetLoadContext(Assembly.GetExecutingAssembly()).LoadFromAssemblyPath(loadPath); var revitApp = ass.CreateInstance("Dynamo.Applications.DynamoRevitApp"); revitApp.GetType().GetMethod("OnStartup").Invoke(revitApp, new object[] { uiControlledApplication }); @@ -225,7 +226,7 @@ private bool LaunchDynamoCommand(DynamoProduct product, ExecutedEventArgs e,bool data.WriteToRegistry(); //Initialize application - var ass = Assembly.LoadFrom(path); + var ass = AssemblyLoadContext.GetLoadContext(Assembly.GetExecutingAssembly()).LoadFromAssemblyPath(path); var revitApp = ass.CreateInstance("Dynamo.Applications.DynamoRevitApp"); if (null == revitApp) return false; @@ -292,7 +293,7 @@ private void RemoveCommandBinding() private static IEnumerable FindDynamoRevitInstallations(string debugPath, string revitVersion) { - var assembly = Assembly.LoadFrom(Path.Combine(debugPath, "DynamoInstallDetective.dll")); + var assembly = AssemblyLoadContext.GetLoadContext(Assembly.GetExecutingAssembly()).LoadFromAssemblyPath(Path.Combine(debugPath, "DynamoInstallDetective.dll")); var type = assembly.GetType("DynamoInstallDetective.Utilities"); var installationsMethod = type.GetMethod(