/// ------------------------------------------------------------------------------------ /// <summary> /// Build one project /// </summary> /// <param name="guid"></param> /// <param name="id"></param> /// <param name="customIn"></param> /// <param name="customOut"></param> /// <param name="fCancelDefault"></param> /// ------------------------------------------------------------------------------------ public void OnBuildProject(string guid, int id, object customIn, object customOut, ref bool fCancelDefault) { if (!m_fAddinEnabled) { return; } if (m_nantBuild.IsRunning) { fCancelDefault = true; return; } try { fCancelDefault = false; bool fRebuild = !(id == 886 || id == 892 || (id >= 979 && id <= 988)); EnvDTE.SolutionConfiguration config = DTE.Solution.SolutionBuild.ActiveConfiguration; Array activeProjects = (Array)DTE.ActiveSolutionProjects; EnvDTE.Project vsProject = (EnvDTE.Project)activeProjects.GetValue(0); fCancelDefault = m_nantBuild.BuildProject(Modifiers, fRebuild, vsProject.Name, config.Name, config.SolutionContexts.Item(1).PlatformName, new string[] { vsProject.FullName }, false); ResetFlags(); } catch (Exception e) { Debug.WriteLine("OnBuildProject: Got exception: " + e.Message); } }
/// ------------------------------------------------------------------------------------ /// <summary> /// Do a build when debugging. /// </summary> /// <returns><c>true</c> if debug needs to be canceled, otherwise <c>false</c>. /// </returns> /// ------------------------------------------------------------------------------------ private bool BuildForDebugging() { bool fOk = false; EnvDTE.SolutionConfiguration config = DTE.Solution.SolutionBuild.ActiveConfiguration; Array activeProjects = (Array)DTE.ActiveSolutionProjects; EnvDTE.Project vsProject = (EnvDTE.Project)activeProjects.GetValue(0); ArrayList projects = new ArrayList(); projects.Add(vsProject.FullName); if (DTE.Solution.FullName != null && DTE.Solution.FullName.Length > 0) { string firstProject = Path.GetFileName(vsProject.FullName); Array startupProjects = (Array)DTE.Solution.SolutionBuild.StartupProjects; string solutionPath = Path.GetDirectoryName(DTE.Solution.FullName); foreach (string prjName in startupProjects) { if (Path.GetFileName(prjName) != firstProject) { projects.Add(Path.Combine(solutionPath, prjName)); } } } foreach (string prj in projects) { Debug.WriteLine("build project=" + prj); } string[] strProjects = new string[projects.Count]; projects.CopyTo(strProjects); try { fOk = m_nantBuild.BuildProject(Modifiers, false, vsProject.Name, config.Name, config.SolutionContexts.Item(1).PlatformName, strProjects, true); ResetFlags(); if (!fOk) { DialogResult dlgResult = MessageBox.Show("Build errors. Do you want to debug anyway?", "Build errors", MessageBoxButtons.YesNo); return(dlgResult == DialogResult.No); } } catch (TargetException e) { // handled in outer method throw e; } catch (Exception) { fOk = false; } return(!fOk); }
/// ------------------------------------------------------------------------------------ /// <summary> /// Build the entire solution. /// </summary> /// <param name="guid"></param> /// <param name="id"></param> /// <param name="customIn"></param> /// <param name="customOut"></param> /// <param name="fCancelDefault"></param> /// ------------------------------------------------------------------------------------ public void OnBuildSolution(string guid, int id, object customIn, object customOut, ref bool fCancelDefault) { if (!m_fAddinEnabled) { return; } if (m_nantBuild.IsRunning) { fCancelDefault = true; return; } try { fCancelDefault = false; bool fRebuild = (id != 882); EnvDTE.SolutionConfiguration config = DTE.Solution.SolutionBuild.ActiveConfiguration; int nProjects = DTE.Solution.SolutionBuild.ActiveConfiguration.SolutionContexts.Count; string[] projects = new string[nProjects]; for (int i = 0; i < nProjects; i++) { SolutionContext prj = DTE.Solution.SolutionBuild.ActiveConfiguration.SolutionContexts.Item(i + 1); projects[i] = prj.ProjectName; } fCancelDefault = m_nantBuild.BuildSolution(Modifiers, fRebuild, DTE.Solution.FullName, config.Name, string.Empty, projects); ResetFlags(); } catch (Exception e) { Debug.WriteLine("OnBuildSolution: Got exception: " + e.Message); } }