private void Load() { // Pre clean up _directoryChangeNotifier.ClearListeners(); var configData = Config.Load(DTE.Solution.GetDirectory()); foreach (var settingData in configData?.TriggerGroups) { string generatorPath = configData.GetGeneratorPath(settingData.GeneratorName); AssemblyExtensions.CopyDlls(generatorPath, DTE.Solution.GetDirectory()); if (settingData.Triggers.Count == 0) { continue; } Project project = DTE.Solution.FindProject(settingData.UniqueProjectName); var directoryChangeListener = FactoryMethods.GetRelativeDirectoryChangeListener(project.GetDirectory()); var generatorRunner = new GeneratorRunner(generatorPath, settingData.UniqueProjectName, settingData.EntitasCfgPath, settingData.EntitasUserCfgPath); directoryChangeListener.Add(settingData.Triggers.ToArray()); directoryChangeListener.Changed += () => generatorRunner.Run(); _directoryChangeNotifier.AddListener(directoryChangeListener); } }