private PluginManager(Type pluginType, object[] args) { plugins = new Dictionary <string, Plugin>(); this.pluginType = pluginType; ctorArgTypes = new Type[args.Length]; ctorArgs = args; for (int i = 0; i < ctorArgs.Length; i++) { ctorArgTypes[i] = ctorArgs[i].GetType(); } // find system-wide plugins string systemPluginDir = FileResourcePath.GetBinPath(); string[] systemPluginFiles = Directory.GetFiles(systemPluginDir); CompareInfo compare = CultureInfo.InvariantCulture.CompareInfo; foreach (string file in systemPluginFiles) { if (compare.IndexOf(file, "plugin", CompareOptions.IgnoreCase) >= 0 && file.EndsWith(".dll")) { //Console.WriteLine("Searching File {0}", file); AddPluginFile(file); } } try { // find local user plugins string userPluginDir = FileResourcePath.GetUserPath("plugins"); string[] userPluginFiles = Directory.GetFiles(userPluginDir); foreach (string file in userPluginFiles) { if (compare.IndexOf(file, "plugin", CompareOptions.IgnoreCase) >= 0 && file.EndsWith(".dll")) { //Console.WriteLine("Searching File {0}", file); AddPluginFile(file); } } } catch (IOException e) { System.Console.WriteLine("Failed to open plugins directory: " + e.Message); } }