public static void AssemblyLoadFileName() { try { Console.WriteLine("AssemblyLoadFileName()"); String path = typeof(Program).Assembly.Location; Assembly a = Assembly.LoadFile(path); Assert(a != typeof(Program).Assembly); AssemblyLoadContext alc = AssemblyLoadContext.GetLoadContext(a); Assert(PropertyAllContainsContext(alc)); Assert(AssembliesContainAssembly(alc, a)); Assert(alc != AssemblyLoadContext.Default); Console.WriteLine(alc.Name); Assert(alc.Name == String.Format("Assembly.LoadFile({0})", path)); Console.WriteLine(alc.GetType().ToString()); Assert(alc.GetType().ToString() == "System.Runtime.Loader.IndividualAssemblyLoadContext"); Console.WriteLine(alc.ToString()); Assert(alc.ToString().Contains("\"" + String.Format("Assembly.LoadFile({0})", path))); Assert(alc.ToString().Contains("\" System.Runtime.Loader.IndividualAssemblyLoadContext")); Assert(alc.ToString().Contains(" #")); } catch (Exception e) { Assert(false, e.ToString()); } }
public static void DefaultName() { try { Console.WriteLine("DefaultName()"); AssemblyLoadContext alc = AssemblyLoadContext.Default; Assert(alc == AssemblyLoadContext.GetLoadContext(typeof(Program).Assembly)); Assert(PropertyAllContainsContext(alc)); Assert(AssembliesContainAssembly(alc, typeof(Program).Assembly)); Console.WriteLine(alc.Name); Assert(alc.Name == "Default"); Console.WriteLine(alc.GetType().ToString()); Assert(alc.GetType().ToString() == "System.Runtime.Loader.DefaultAssemblyLoadContext"); Console.WriteLine(alc.ToString()); Assert(alc.ToString().Contains("\"Default")); Assert(alc.ToString().Contains("\" System.Runtime.Loader.DefaultAssemblyLoadContext")); Assert(alc.ToString().Contains(" #")); } catch (Exception e) { Assert(false, e.ToString()); } }
public static void CustomName() { try { Console.WriteLine("CustomName()"); // ALC should be a concrete class AssemblyLoadContext alc = new AssemblyLoadContext("CustomName"); Assert(PropertyAllContainsContext(alc)); Console.WriteLine(alc.Name); Assert(alc.Name == "CustomName"); Console.WriteLine(alc.GetType().ToString()); Assert(alc.GetType().ToString() == "System.Runtime.Loader.AssemblyLoadContext"); Console.WriteLine(alc.ToString()); Assert(alc.ToString().Contains("\"CustomName")); Assert(alc.ToString().Contains("\" System.Runtime.Loader.AssemblyLoadContext")); Assert(alc.ToString().Contains(" #")); } catch (Exception e) { Assert(false, e.ToString()); } }
public static void AssemblyLoadByteArrayName() { #if runDisabled // This test case fails when the assembly is a ready2run image try { Console.WriteLine("AssemblyLoadByteArrayName()"); String path = typeof(Program).Assembly.Location; Byte [] byteArray = System.IO.File.ReadAllBytes(path); Assembly a = Assembly.Load(byteArray); AssemblyLoadContext alc = AssemblyLoadContext.GetLoadContext(a); Assert(PropertyAllContainsContext(alc)); Assert(AssembliesContainAssembly(alc, a)); Console.WriteLine(alc.Name); Assert(alc.Name == "Assembly.Load(byte[], ...)"); Console.WriteLine(alc.GetType().ToString()); Assert(alc.GetType().ToString() == "System.Runtime.Loader.IndividualAssemblyLoadContext"); Console.WriteLine(alc.ToString()); Assert(alc.ToString().Contains("\"Assembly.Load(byte[], ...)\"")); Assert(alc.ToString().Contains("\" System.Runtime.Loader.IndividualAssemblyLoadContext")); Assert(alc.ToString().Contains(" #")); } catch (Exception e) { Assert(false, e.ToString()); } #endif }
public static void AssemblyLoadByteArrayName() { #if ReadAllBytes // System.IO.File.ReadAllBytes is not found when ReferenceSystemPrivateCoreLib is true try { Console.WriteLine("AssemblyLoadByteArrayName()"); String path = typeof(Program).Assembly.Location; Byte [] byteArray = System.IO.File.ReadAllBytes(path); Assembly a = Assembly.Load(byteArray); AssemblyLoadContext alc = AssemblyLoadContext.GetLoadContext(a); Assert(PropertyAllContainsContext(alc)); Assert(AssembliesContainAssembly(alc, a)); Console.WriteLine(alc.Name); Assert(alc.Name == "Assembly.Load(byte[], ...)"); Console.WriteLine(alc.GetType().ToString()); Assert(alc.GetType().ToString() == "System.Runtime.Loader.IndividualAssemblyLoadContext"); Console.WriteLine(alc.ToString()); Assert(alc.ToString().Contains("\"Default")); Assert(alc.ToString().Contains("\" System.Runtime.Loader.IndividualAssemblyLoadContext")); Assert(alc.ToString().Contains(" #")); } catch (Exception e) { Assert(false, e.ToString()); } #endif }
public LoadContextWrapper(AssemblyLoadContext assemblyLoadContext) { _assemblyLoadContext = assemblyLoadContext; var typeInfo = _assemblyLoadContext.GetType().GetTypeInfo(); var loaderFileMethod = typeInfo.GetDeclaredMethod("LoadFile"); var loadStreamMethod = typeInfo.GetDeclaredMethod("LoadStream"); _loadFile = (Func <string, Assembly>)loaderFileMethod.CreateDelegate(typeof(Func <string, Assembly>), _assemblyLoadContext); _loadStream = (Func <Stream, Stream, Assembly>)loadStreamMethod.CreateDelegate(typeof(Func <Stream, Stream, Assembly>), _assemblyLoadContext); }