Merge branch 'dotnet7' of https://github.com/GoaLitiuM/FlaxEngine into GoaLitiuM-dotnet7
This commit is contained in:
@@ -35,11 +35,8 @@ namespace FlaxEngine
|
||||
return null;
|
||||
|
||||
var dataTypeName = DataTypeName;
|
||||
var assemblies = AppDomain.CurrentDomain.GetAssemblies();
|
||||
|
||||
// Going through the assemblies in order will return collected assemblies first,
|
||||
// use reverse order instead to find the type currently loaded assemblies instead.
|
||||
for (int i = assemblies.Length-1; i >= 0; i--)
|
||||
var assemblies = Utils.GetAssemblies();
|
||||
for (int i = 0; i < assemblies.Length; i++)
|
||||
{
|
||||
var assembly = assemblies[i];
|
||||
if (assembly != null)
|
||||
|
||||
@@ -1038,7 +1038,7 @@ namespace FlaxEngine
|
||||
private static Dictionary<string, IntPtr> loadedNativeLibraries = new();
|
||||
private static Dictionary<string, string> nativeLibraryPaths = new();
|
||||
private static Dictionary<Assembly, string> assemblyOwnedNativeLibraries = new();
|
||||
private static AssemblyLoadContext scriptingAssemblyLoadContext;
|
||||
internal static AssemblyLoadContext scriptingAssemblyLoadContext;
|
||||
|
||||
[System.Diagnostics.DebuggerStepThrough]
|
||||
private static IntPtr NativeLibraryImportResolver(string libraryName, Assembly assembly, DllImportSearchPath? dllImportSearchPath)
|
||||
@@ -2453,7 +2453,7 @@ namespace FlaxEngine
|
||||
// This assembly was already loaded when initializing the host context
|
||||
firstAssemblyLoaded = true;
|
||||
|
||||
Assembly flaxEngineAssembly = AppDomain.CurrentDomain.GetAssemblies().First(x => x.GetName().Name == "FlaxEngine.CSharp");
|
||||
Assembly flaxEngineAssembly = AssemblyLoadContext.Default.Assemblies.First(x => x.GetName().Name == "FlaxEngine.CSharp");
|
||||
*assemblyName = NativeAllocStringAnsi(flaxEngineAssembly.GetName().Name);
|
||||
*assemblyFullName = NativeAllocStringAnsi(flaxEngineAssembly.FullName);
|
||||
return GetAssemblyHandle(flaxEngineAssembly);
|
||||
@@ -2476,7 +2476,7 @@ namespace FlaxEngine
|
||||
// This assembly was already loaded when initializing the host context
|
||||
firstAssemblyLoaded = true;
|
||||
|
||||
Assembly flaxEngineAssembly = AppDomain.CurrentDomain.GetAssemblies().First(x => x.GetName().Name == "FlaxEngine.CSharp");
|
||||
Assembly flaxEngineAssembly = AssemblyLoadContext.Default.Assemblies.First(x => x.GetName().Name == "FlaxEngine.CSharp");
|
||||
*assemblyName = NativeAllocStringAnsi(flaxEngineAssembly.GetName().Name);
|
||||
*assemblyFullName = NativeAllocStringAnsi(flaxEngineAssembly.FullName);
|
||||
return GetAssemblyHandle(flaxEngineAssembly);
|
||||
@@ -2517,13 +2517,9 @@ namespace FlaxEngine
|
||||
internal static ManagedHandle GetAssemblyByName(IntPtr name_, IntPtr* assemblyName, IntPtr* assemblyFullName)
|
||||
{
|
||||
string name = Marshal.PtrToStringAnsi(name_);
|
||||
Assembly assembly = AppDomain.CurrentDomain.GetAssemblies().FirstOrDefault(x => x.GetName().Name == name);
|
||||
Assembly assembly = Utils.GetAssemblies().FirstOrDefault(x => x.GetName().Name == name);
|
||||
if (assembly == null)
|
||||
{
|
||||
assembly = scriptingAssemblyLoadContext.Assemblies.FirstOrDefault(x => x.GetName().Name == name);
|
||||
if (assembly == null)
|
||||
return new ManagedHandle();
|
||||
}
|
||||
return new ManagedHandle();
|
||||
|
||||
*assemblyName = NativeAllocStringAnsi(assembly.GetName().Name);
|
||||
*assemblyFullName = NativeAllocStringAnsi(assembly.FullName);
|
||||
@@ -2593,14 +2589,9 @@ namespace FlaxEngine
|
||||
internal static ManagedHandle GetAssemblyObject(IntPtr assemblyName_)
|
||||
{
|
||||
string assemblyName = Marshal.PtrToStringAnsi(assemblyName_);
|
||||
Assembly assembly = null;
|
||||
assembly = scriptingAssemblyLoadContext.Assemblies.FirstOrDefault(x => x.FullName == assemblyName);
|
||||
Assembly assembly = Utils.GetAssemblies().FirstOrDefault(x => x.FullName == assemblyName);
|
||||
if (assembly == null)
|
||||
{
|
||||
assembly = System.AppDomain.CurrentDomain.GetAssemblies().First(x => x.FullName == assemblyName);
|
||||
if (assembly == null)
|
||||
return new ManagedHandle();
|
||||
}
|
||||
return new ManagedHandle();
|
||||
return ManagedHandle.Alloc(assembly);
|
||||
}
|
||||
|
||||
@@ -2864,7 +2855,7 @@ namespace FlaxEngine
|
||||
// We need private types of this assembly too, DefinedTypes contains a lot of types from other assemblies...
|
||||
var types = referencedTypes.Any() ? assembly.DefinedTypes.Where(x => !referencedTypes.Contains(x.FullName)).ToArray() : assembly.DefinedTypes.ToArray();
|
||||
|
||||
Assert.IsTrue(AppDomain.CurrentDomain.GetAssemblies().Where(x => x.GetName().Name == "FlaxEngine.CSharp").Count() == 1);
|
||||
Assert.IsTrue(Utils.GetAssemblies().Where(x => x.GetName().Name == "FlaxEngine.CSharp").Count() == 1);
|
||||
return types;
|
||||
}
|
||||
|
||||
|
||||
@@ -5,9 +5,8 @@ using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Reflection;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Runtime.InteropServices;
|
||||
using System.Runtime.InteropServices.Marshalling;
|
||||
using System.Runtime.Loader;
|
||||
|
||||
namespace FlaxEngine
|
||||
{
|
||||
@@ -184,6 +183,19 @@ namespace FlaxEngine
|
||||
return true;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Gets all currently loaded assemblies in the runtime.
|
||||
/// </summary>
|
||||
/// <returns>List of assemblies</returns>
|
||||
public static Assembly[] GetAssemblies()
|
||||
{
|
||||
#if USE_NETCORE
|
||||
return AssemblyLoadContext.Default.Assemblies.Concat(NativeInterop.scriptingAssemblyLoadContext.Assemblies).ToArray();
|
||||
#else
|
||||
return AppDomain.CurrentDomain.GetAssemblies();
|
||||
#endif
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Gets the assembly with the given name.
|
||||
/// </summary>
|
||||
@@ -191,7 +203,7 @@ namespace FlaxEngine
|
||||
/// <returns>The assembly or null if not found.</returns>
|
||||
public static Assembly GetAssemblyByName(string name)
|
||||
{
|
||||
return GetAssemblyByName(name, AppDomain.CurrentDomain.GetAssemblies());
|
||||
return GetAssemblyByName(name, GetAssemblies());
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
||||
Reference in New Issue
Block a user