static void LoadAndRegisterPlugins(params string[] fileNames) { foreach (var fileName in fileNames) { if (File.Exists(fileName)) { PluginStorage.LoadAndRegister(fileName); } } }
static PluginLoaderEntryPoint() { //determinar probingPath var privatePath = "~/_plugins"; try { var configFile = XElement.Load(AppDomain.CurrentDomain.SetupInformation.ConfigurationFile); var probingElement = (from runtime in configFile.Descendants("runtime") from assemblyBinding in runtime.Elements(XName.Get("assemblyBinding", "urn:schemas-microsoft-com:asm.v1")) from probing in assemblyBinding.Elements(XName.Get("probing", "urn:schemas-microsoft-com:asm.v1")) select probing).FirstOrDefault(); if (probingElement != null) { var paths = probingElement.Attribute("privatePath").Value; //pode conter vários paths, separados por ';' Trace.TraceInformation("[PluginLoader]:Private Paths are '{0}'", paths); privatePath = paths.Split(';')[0]; if (privatePath.IndexOf('/') != 0) { privatePath = "/" + privatePath; } } } catch (Exception ex) { Trace.TraceInformation("Error reading probing privatePath in web.config. {0}", ex.Message); } PluginFolder = new DirectoryInfo(HostingEnvironment.MapPath(privatePath)); if (!PluginFolder.Exists) { PluginFolder.Create(); } Storage = new PluginStorage(PluginFolder); }