/// <summary> /// Executes a LoadFrom in the app domain LoaderClass has been loaded into. Attempts to load a given assembly, looking in the /// given paths & the current directory. /// </summary> /// <param name="path">The assembly to load</param> /// <param name="paths">Paths to search for the given assembly</param> public void LoadFrom(string path, string[] paths, ReliabilityFramework rf) { myRf = rf; AssemblyName an = new AssemblyName(); an.CodeBase = assembly = path; //register AssemblyLoad and DomainUnload events AppDomain.CurrentDomain.AssemblyLoad += new AssemblyLoadEventHandler(this.UnloadOnAssemblyLoad); AppDomain.CurrentDomain.DomainUnload += new EventHandler(this.UnloadOnDomainUnload); try { assem = Assembly.Load(an); } catch { try { FileInfo fi = new FileInfo(path); an = new AssemblyName(); an.CodeBase = assembly = fi.FullName; assem = Assembly.Load(an); } catch { if (paths != null) { foreach (string basePath in paths) { try { an = new AssemblyName(); an.CodeBase = assembly = ReliabilityConfig.ConvertPotentiallyRelativeFilenameToFullPath(basePath, path); assem = Assembly.Load(an); } catch { continue; } break; } } } } }
#pragma warning disable SYSLIB0012 // Assembly.CodeBase is obsolete /// <summary> /// Executes a LoadFrom in the app domain LoaderClass has been loaded into. Attempts to load a given assembly, looking in the /// given paths & the current directory. /// </summary> /// <param name="path">The assembly to load</param> /// <param name="paths">Paths to search for the given assembly</param> public void LoadFrom(string path, string[] paths ) { AssemblyLoadContext alc = AssemblyLoadContext.GetLoadContext(Assembly.GetExecutingAssembly()); try { assembly = path; assem = alc.LoadFromAssemblyPath(assembly); } catch { try { FileInfo fi = new FileInfo(path); assembly = fi.FullName; assem = alc.LoadFromAssemblyPath(assembly); } catch { if (paths != null) { foreach (string basePath in paths) { try { assembly = ReliabilityConfig.ConvertPotentiallyRelativeFilenameToFullPath(basePath, path); assem = alc.LoadFromAssemblyPath(assembly); break; } catch { } } } } } }
#pragma warning disable SYSLIB0012 // Assembly.CodeBase is obsolete /// <summary> /// Executes a LoadFrom in the app domain LoaderClass has been loaded into. Attempts to load a given assembly, looking in the /// given paths & the current directory. /// </summary> /// <param name="path">The assembly to load</param> /// <param name="paths">Paths to search for the given assembly</param> public void LoadFrom(string path, string[] paths #if !PROJECTK_BUILD , ReliabilityFramework rf #endif ) { #if !PROJECTK_BUILD myRf = rf; AssemblyName an = new AssemblyName(); an.CodeBase = assembly = path; //register AssemblyLoad and DomainUnload events AppDomain.CurrentDomain.AssemblyLoad += new AssemblyLoadEventHandler(this.UnloadOnAssemblyLoad); AppDomain.CurrentDomain.DomainUnload += new EventHandler(this.UnloadOnDomainUnload); #else AssemblyLoadContext alc = AssemblyLoadContext.GetLoadContext(Assembly.GetExecutingAssembly()); #endif try { #if !PROJECTK_BUILD assem = Assembly.Load(an); #else assembly = path; assem = alc.LoadFromAssemblyPath(assembly); #endif } catch { try { FileInfo fi = new FileInfo(path); assembly = fi.FullName; #if !PROJECTK_BUILD an = new AssemblyName(); an.CodeBase = assembly; assem = Assembly.Load(an); #else assem = alc.LoadFromAssemblyPath(assembly); #endif } catch { if (paths != null) { foreach (string basePath in paths) { try { assembly = ReliabilityConfig.ConvertPotentiallyRelativeFilenameToFullPath(basePath, path); #if !PROJECTK_BUILD an = new AssemblyName(); an.CodeBase = assembly; assem = Assembly.Load(an); #else assem = alc.LoadFromAssemblyPath(assembly); #endif break; } catch { } } } } } }