Beispiel #1
0
        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);
            }
        }
Beispiel #2
0
        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;
        }