/// <summary> /// Charge tous les plugins spécifiques d'un répertoire /// </summary> /// <param name="strPluginsPath"></param> /// <param name="strPrefixe"></param> /// <returns></returns> public static CResultAErreur InitPlugins(string strPluginsPath, string strPrefixe) { CResultAErreur result = CResultAErreur.True; try { if (strPluginsPath[strPluginsPath.Length - 1] != '\\') { strPluginsPath += "\\"; } string[] strFiles = Directory.GetFiles(strPluginsPath, strPrefixe + "*.dll"); foreach (string strFile in strFiles) { if (!m_tableFaits.ContainsKey(strFile)) { Assembly ass = new CGestionnairePlugins().LoadAssembly(strFile); AppDomain.CurrentDomain.AppendPrivatePath(strPluginsPath); CAutoexecuteurClasses.RunAutoexec(ass, null, null); } } foreach (string strRepertoire in Directory.GetDirectories(strPluginsPath)) { result = InitPlugins(strRepertoire, strPrefixe); if (!result) { return(result); } } } catch (Exception e) { result.EmpileErreur(new CErreurException(e)); } return(result); }
/// <summary> /// Charge explicitement une liste donnée de plugins /// </summary> /// <param name="strFiles"></param> /// <returns></returns> public static CResultAErreur LoadPlugins(string[] strFiles) { CResultAErreur result = CResultAErreur.True; try { foreach (string strFile in strFiles) { if (!m_tableFaits.ContainsKey(strFile)) { if (File.Exists(strFile)) { Assembly ass = new CGestionnairePlugins().LoadAssembly(strFile); } else { C2iEventLog.WriteErreur("Error in LoadPlugins, file doesn't exist : " + strFile); } } } } catch (Exception e) { result.EmpileErreur(new CErreurException(e)); C2iEventLog.WriteErreur("Error in LoadPlugins : " + e.Message); } return(result); }