private Assembly MyResolveEventHandler(object sender, ResolveEventArgs args) { var assembly = AssemblyResolve?.Invoke(sender, args); if (assembly != null) { return(assembly); } if (_currentPath == null) { return(null); } try { AssemblyName name = new AssemblyName(args.Name); string assemblyPath = _currentPath + "\\" + name.Name + ".dll"; return(Assembly.LoadFile(assemblyPath)); } catch (Exception) { try { AssemblyName name = new AssemblyName(args.Name); string assemblyPath = _currentPath + "\\" + name.Name + ".exe"; return(Assembly.LoadFile(assemblyPath)); } catch (Exception) { return(Assembly.LoadFile(args.Name + ".dll")); } } }
static System.Reflection.Assembly CurrentDomainReflectionOnlyAssemblyResolve(object sender, ResolveEventArgs args) { lock (_syncObj) { try { // This event can be invoked from multiple threads so there is a possibility that the assembly // has already been loaded by another thread by the time we get here. Load the assembly to get // the framework reference for it and only add it to the load list it its not already on the list. NetAssembly netAssembly = NetAssembly.ReflectionOnlyLoad(args.Name); if (_assemblyList.ContainsKey(netAssembly)) { return(netAssembly); } _assemblyList.Add(netAssembly, null); _assemblyListChanged = true; return(netAssembly); } catch (Exception) { if (AssemblyResolve != null) { foreach (AssemblyResolveEvent eventHandler in AssemblyResolve.GetInvocationList()) { try { FileInfo fileInfo = eventHandler.Invoke(sender, args); if (fileInfo != null) { NetAssembly netAssembly = NetAssembly.ReflectionOnlyLoadFrom(fileInfo.FullName); _assemblyList.Add(netAssembly, null); _assemblyListChanged = true; return(netAssembly); } } catch (Exception) { } } } throw; } } }
static TypeLoader() { Resolver = new DefaultAssemblyResolver(); ReaderParameters = new ReaderParameters { AssemblyResolver = Resolver }; Resolver.ResolveFailure += (sender, reference) => { if (Utility.TryParseAssemblyName(reference.FullName, out var name) && (Utility.TryResolveDllAssembly(name, Paths.BepInExAssemblyDirectory, ReaderParameters, out var assembly) || Utility.TryResolveDllAssembly(name, Paths.PluginPath, ReaderParameters, out assembly) || Utility.TryResolveDllAssembly(name, Paths.ManagedPath, ReaderParameters, out assembly))) { return(assembly); } return(AssemblyResolve?.Invoke(sender, reference)); }; }
public static AssemblyDefinition CecilResolveOnFailure(object sender, AssemblyNameReference reference) { if (!Utility.TryParseAssemblyName(reference.FullName, out var name)) { return(null); } if (Utility.TryResolveDllAssembly(name, Paths.BepInExAssemblyDirectory, ReaderParameters, out var assembly) || Utility.TryResolveDllAssembly(name, Paths.PluginPath, ReaderParameters, out assembly)) { return(assembly); } foreach (var dir in SearchDirectories) { if (Utility.TryResolveDllAssembly(name, dir, ReaderParameters, out assembly)) { return(assembly); } } return(AssemblyResolve?.Invoke(sender, reference)); }
internal static Assembly?DoAssemblyResolve(string name) { return(AssemblyResolve?.Invoke(null, new ResolveEventArgs(name))); }
public static void Initialize(string[] args, ConsoleArgsParsedDelegate parseErrorHandler = null) { AssemblyResolve.Monitor(() => { ILogger logger = Logger; if (logger == null) { logger = new ConsoleLogger { AddDetails = false }; logger.StartLoggingThread(); } return(logger); }); if (parseErrorHandler == null) { parseErrorHandler = (a) => { throw new ArgumentException(a.Message); }; } ArgsParsedError += parseErrorHandler; AddValidArgument("i", true, description: "Run interactively"); AddValidArgument("?", true, description: "Show usage"); AddValidArgument("t", true, description: "Run all unit tests"); AddValidArgument("it", true, description: "Run all integration tests"); ParseArgs(args); if (Arguments.Contains("?")) { Usage(Assembly.GetEntryAssembly()); Exit(); } else if (Arguments.Contains("i")) { Interactive(); return; } else if (Arguments.Contains("t")) { RunAllUnitTests(Assembly.GetEntryAssembly()); return; } else if (Arguments.Contains("it")) { IntegrationTestRunner.RunIntegrationTests(Assembly.GetEntryAssembly()); return; } else { if (DefaultMethod != null) { Expect.IsTrue(DefaultMethod.IsStatic, "DefaultMethod must be static."); if (DefaultMethod.GetParameters().Length > 0) { DefaultMethod.Invoke(null, new object[] { Arguments }); } else { DefaultMethod.Invoke(null, null); } return; } } }
public WSSurtimientoEktCom() { AssemblyResolve.InitResolveEvent(); }
public WSSistemasInfProducto() { AssemblyResolve.InitResolveEvent(); }