public void Bootstrap() { MainViewModel vm = new MainViewModel(); List <DirectoryCatalog> directories = new List <DirectoryCatalog>(); NameValueCollection configDirectories = ConfigurationManager.GetSection("pluginDirectory") as NameValueCollection; try { foreach (var key in configDirectories.AllKeys) { directories.Add(new DirectoryCatalog(configDirectories[key])); } } catch (DirectoryNotFoundException e) { Console.WriteLine(e.Message + "\nPress any key to exit."); Console.ReadKey(); Environment.Exit(2); } directories.Add(new DirectoryCatalog(@".")); AggregateCatalog catalog = new AggregateCatalog(directories); catalog.Catalogs.Add(new AssemblyCatalog(typeof(PathProvider).Assembly)); CompositionContainer container = new CompositionContainer(catalog); List <string> missingModules; try { container.ComposeParts(vm); missingModules = CompositionCheck.GetMissingModules(directories).ToList(); if (missingModules.Any()) { throw new CompositionException(); } mainVM = vm; } catch (CompositionException compositionException) { missingModules = CompositionCheck.GetMissingModules(directories).ToList(); if (missingModules.Any()) { foreach (var missingModule in missingModules) { Console.WriteLine(missingModule + " plugin missing!"); } } else { Console.WriteLine("Only one plugin of each type is allowed."); } Console.WriteLine("Press any key to exit."); Console.ReadKey(); Environment.Exit(1); } }
private void Bootstrap() { MainViewModel vm = new MainViewModel(); List <DirectoryCatalog> directories = new List <DirectoryCatalog>(); NameValueCollection configDirectories = ConfigurationManager.GetSection("pluginDirectory") as NameValueCollection; try { foreach (var key in configDirectories.AllKeys) { directories.Add(new DirectoryCatalog(configDirectories[key])); } } catch (DirectoryNotFoundException e) { MessageBox.Show(e.Message); System.Windows.Application.Current.Shutdown(); } directories.Add(new DirectoryCatalog(@".")); AggregateCatalog catalog = new AggregateCatalog(directories); catalog.Catalogs.Add(new AssemblyCatalog(typeof(WPFPathProvider).Assembly)); CompositionContainer container = new CompositionContainer(catalog); List <string> missingModules; try { container.ComposeParts(vm); missingModules = CompositionCheck.GetMissingModules(directories).ToList(); if (missingModules.Any()) { throw new CompositionException(); } MainWindow window = new MainWindow(); MainWindow.DataContext = vm; window.Show(); } catch (CompositionException compositionException) { missingModules = CompositionCheck.GetMissingModules(directories).ToList(); if (missingModules.Any()) { foreach (var missingModule in missingModules) { MessageBox.Show(missingModule + " plugin missing!"); } } else { MessageBox.Show("Only one plugin of each type is allowed."); } Environment.Exit(-1); } }