Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 3 additions & 2 deletions src/DynamoRevit/DynamoRevit.cs
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -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);

Expand Down Expand Up @@ -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);
}
}

Expand Down
7 changes: 4 additions & 3 deletions src/DynamoRevit/DynamoRevitApp.cs
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -105,7 +106,7 @@ private Result loadDependentComponents()
{
try
{
var dynamoRevitAditionsAss = Assembly.LoadFrom(dynamoRevitAditionsPath);
var dynamoRevitAditionsAss = AssemblyLoadContext.GetLoadContext(Assembly.GetExecutingAssembly()).LoadFromAssemblyPath(dynamoRevitAditionsPath);
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

There is one more Assembly.LoadFrom call in this file that also needs to be replaced. See Line number #62.

if (dynamoRevitAditionsAss != null)
{
var dynamoRevitAditionsLoader = dynamoRevitAditionsAss.CreateInstance("DynamoRevitAdditions.LoadManager");
Expand Down Expand Up @@ -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;
Expand All @@ -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)
{
Expand Down
7 changes: 4 additions & 3 deletions src/Legacy/DynamoRevitVersionSelector/VersionSelectorApp.cs
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -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 });

Expand Down Expand Up @@ -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;
Expand Down Expand Up @@ -292,7 +293,7 @@ private void RemoveCommandBinding()

private static IEnumerable<DynamoProduct> 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(
Expand Down
Loading