示例#1
0
        /// ------------------------------------------------------------------------------------
        /// <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);
            }
        }
示例#2
0
        /// ------------------------------------------------------------------------------------
        /// <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);
        }
示例#3
0
        /// ------------------------------------------------------------------------------------
        /// <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);
            }
        }