From c188a599a8541f38fd93c47a68ac0d4710a31cc6 Mon Sep 17 00:00:00 2001 From: Willy Date: Thu, 9 Jun 2016 11:49:43 +0300 Subject: [PATCH] Modified: Allow running with partial plug-ins configuration --- DocumentPagingUtils/FrmMain.cs | 36 ++++++++++++++++++++++++++-------- 1 file changed, 28 insertions(+), 8 deletions(-) diff --git a/DocumentPagingUtils/FrmMain.cs b/DocumentPagingUtils/FrmMain.cs index 2e4b691..c10eaf6 100644 --- a/DocumentPagingUtils/FrmMain.cs +++ b/DocumentPagingUtils/FrmMain.cs @@ -25,13 +25,24 @@ public static IEnumerable GetImplementations(Type interfaceType, String pa from assembly in AppDomain.CurrentDomain.GetAssemblies() select assembly.Location; - var assemblies = - ( - from path_temp in paths_assemblies - let path = Path.GetFullPath(path_temp) - where !paths_assemblies_loaded.Contains(path) - select Assembly.LoadFile(path) - ).ToArray(); + var assemblies = new List(); + foreach (var path_temp in paths_assemblies) + { + var path = Path.GetFullPath(path_temp); + if (!paths_assemblies_loaded.Contains(path)) + { + try + { + assemblies.Add(Assembly.LoadFile(path)); + } + catch (Exception e) + { + MessageBox.Show( + string.Format("Skipping assembly (Its OK): {0}\n\nException:\n{1}", path, e.ToString()) + ); + } + } + } return GetImplementations(interfaceType, assemblies); //return GetImplementations(interfaceType, AppDomain.CurrentDomain.GetAssemblies()); @@ -351,7 +362,16 @@ private void FrmMain_Load(object sender, EventArgs e) ); foreach (var implementation in GetImplementations(typeof(DocumentUtilsBase), "Plugins")) - cmbDocType.Items.Add(Activator.CreateInstance(implementation)); + try + { + cmbDocType.Items.Add(Activator.CreateInstance(implementation)); + } + catch (Exception exception) + { + MessageBox.Show( + string.Format("Skipping Plugin (Its OK): {0}\n\nException:\n{1}", implementation.ToString(), exception.ToString()) + ); + } if(cmbDocType.Items.Count > 0) cmbDocType.SelectedIndex = 0;