public static void Execute(ProjectItem projectItem)
        {
            if (projectItem.Name.EndsWith(".config", StringComparison.CurrentCulture) && projectItem.Contains("<moduleConfiguration") && !projectItem.ContainingProject.IsTestProject())
            {
                var    dte        = (DTE)Package.GetGlobalService(typeof(SDTE));
                string configFile = projectItem.ReadAllText();

                var moduleConfig = configFile.Deserialize <XmlModuleConfig>();
                if (moduleConfig != null)
                {
                    var project           = dte.Solution.FindProject(p => p.Name == moduleConfig.AssemblyName);
                    var moduleProjectItem = project.FindProjectItem(p => p.Name == moduleConfig.CsFileName);

                    string csFile = moduleProjectItem.ReadAllText();

                    string newConfig = DetermineNewConfig(configFile, csFile);

                    if (!(configFile.EqualsExcludingWhitespace(newConfig)))
                    {
                        projectItem.Document?.Activate();
                        projectItem.ClearAllText();
                        projectItem.SetText(newConfig);
                    }
                }
            }
        }
		public static void Execute(ProjectItem projectItem)
		{
			if (projectItem.Name.EndsWith(".config", StringComparison.CurrentCulture) && projectItem.Contains("<moduleConfiguration") && !projectItem.ContainingProject.IsTestProject())
			{
				var dte = (DTE)Package.GetGlobalService(typeof(SDTE));
				string configFile = projectItem.ReadAllText();

				var moduleConfig = configFile.Deserialize<XmlModuleConfig>();
				if (moduleConfig != null)
				{
					var project = dte.Solution.FindProject(p => p.Name == moduleConfig.AssemblyName);
					var moduleProjectItem = project.FindProjectItem(p => p.Name == moduleConfig.CsFileName);

					string csFile = moduleProjectItem.ReadAllText();

					string newConfig = DetermineNewConfig(configFile, csFile);

					if (!(configFile.EqualsExcludingWhitespace(newConfig)))
					{
						projectItem.Document?.Activate();
						projectItem.ClearAllText();
						projectItem.SetText(newConfig);
					}
				}
			}
		}
        private void MenuItemCallback(object sender, EventArgs e)
        {
            var         dte    = (DTE)Package.GetGlobalService(typeof(SDTE));
            ProjectItem module = null;
            ProjectItem config = null;

            if (this.isModuleClass)
            {
                module = dte.ActiveDocument.ProjectItem;
                config = SearchService.FindConfigFromModule(module);
            }
            else
            {
                config = dte.ActiveDocument.ProjectItem;
                module = SearchService.FindModuleFromConfig(config);
            }

            dte.UndoContext.Open("ctx");
            try
            {
                if (dte.ActiveDocument.ProjectItem.IsDirty)
                {
                    dte.ActiveDocument.Save();
                }

                string existingConfigText  = config.ReadAllText();
                string generatedConfigText = ModuleClassService.GenerateConfig(module, config);

                if (!ModuleClassService.CompareTwoConfigFiles(generatedConfigText, existingConfigText))
                {
                    config.OpenInEditor();
                    config.ClearAllText();
                    config.SetText(generatedConfigText);
                    dte.FormatDocument();
                }
                else if (!config.IsOpen)
                {
                    config.OpenInEditor();
                }
            }
            finally
            {
                dte.UndoContext.Close();
            }
        }