public static AddinInfo Load(string file) { try { byte[] buffer = File.ReadAllBytes(file); Assembly asm = Assembly.Load(buffer); if (asm != null && AddinLoader.ContainsAddin(asm)) { var info = new AddinInfo(); info.Name = asm.FullName; info.File = file; info.Assembly = asm; return(info); } else { throw new Exception("Can not load assembly."); } } catch (Exception ex) { Console.WriteLine("[Error] Not an addin file: " + file); return(null); } }
public static void Init(string path, ResolveEventHandler handler) { if (!Directory.Exists(path)) { Directory.CreateDirectory(path); } var files = Directory.GetFiles(path, "*.dll", SearchOption.AllDirectories); foreach (var file in files) { var addin = AddinLoader.Load(file); if (addin != null && !_map.ContainsKey(addin.Name)) { _map.Add(addin.Name, addin); } } AppDomain.CurrentDomain.AssemblyResolve += handler; }