/// <summary> /// Called when the resolution of an assembly fails, gives us the opportunity to feed the required asssembly /// to the program /// </summary> /// <param name="sender"></param> /// <param name="args"></param> /// <returns></returns> public static Assembly AssemblyResolver(object sender, ResolveEventArgs args) { try { var requestedAssembly = new AssemblyName(args.Name); // new library request! if (!requestedAssembly.Name.Contains(".")) { var pathToLib = Path.Combine(Config.FolderLibrary, requestedAssembly.Name + ".dll"); // replace the library if outdated or if it doesn't exist if (string.IsNullOrEmpty(pathToLib) || !File.Exists(pathToLib) || requestedAssembly.Version.ToString().IsHigherVersionThan(GetAssemblyVersionFromPath(pathToLib))) { var lib = (byte[])Resources.ResourceManager.GetObject(requestedAssembly.Name); if (lib != null) { if (Npp.NumberOfNppStarted <= 1) { Utils.FileWriteAllBytes(pathToLib, lib); } } else { // the library doesn't exist in 3P! return(null); } } return(Assembly.LoadFrom(pathToLib)); } } catch (Exception e) { ErrorHandler.ShowErrors(e, "Error in LibLoader"); } return(null); }