예제 #1
0
        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);
            }
        }