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);
        }