private DtoProject GetClickOnceRelation(DtoProject proj)
        {
            DtoProject[] CLICK_ONCE_FINDED = new UtilsProjects().FindProjects(_CLICK_ONCE_PATH, true);
            DtoProject   clickOnce;
            Print        obj = new Print();

            if (proj == null)
            {
                obj.PrintError("No se ha encontrado el proyecto.");
                obj.PressKeyToContinue();
                ReloadMenu();
            }

            if (string.IsNullOrEmpty(proj.ClickOnceSolution))
            {
                clickOnce = (DtoProject)CLICK_ONCE_FINDED
                            .Where(x => x.Name == (string.IsNullOrEmpty(_CLICK_ONCE_PREFIX) ? proj.Name : string.Concat(proj.Name, ".", _CLICK_ONCE_PREFIX)))
                            .SingleOrDefault();
            }
            else
            {
                clickOnce = (DtoProject)CLICK_ONCE_FINDED
                            .Where(x => x.Name == proj.ClickOnceSolution)
                            .SingleOrDefault();
            }

            if (clickOnce == null)
            {
                obj.PrintError("No se ha encontrado el proyecto del Click Once asociado.");
                obj.PressKeyToContinue();
                ReloadMenu();
            }

            ShowInfoVersionProject(clickOnce);
            return(clickOnce);
        }
        private void GenerateClickOnce()
        {
            Print obj = new Print();

            obj.ClearConsole();
            obj.PrintTitle("Proyectos Disponibles para la Publicacion");
            obj.PrintNewLine();

            DtoProject[] PROJECTS_FINDED = new UtilsProjects().FindProjects(Directory.GetParent(_SOLUTION_PATH).ToString());

            foreach (DtoProject project in PROJECTS_FINDED)
            {
                obj.PrintString(string.Format("{0}: {1}", project.id, project.Name));
            }

            obj.PrintNewLine();
            obj.PrintString("Seleccione los proyectos que desee publicar.....");
            obj.PrintString("Ejemplo...");
            obj.PrintString("\t Para un solo Proyecto: 1");
            obj.PrintString("\t Para Multiples Proyectos: 1 3");
            obj.PrintString("\t Para Todos los proyectos: A");
            obj.PrintString("\t Para Cancelar teclee Esc");
            obj.PrintNewLine();

            object[] selection = obj.GetKeyInt(" ");
            ValidProjectSelection(selection, PROJECTS_FINDED);

            obj.ClearConsole();
            obj.PrintString("Iniciando espere un momento...");

            obj.PrintInfo("Compilando Solucion....");

            //COMPILE SOLUTION
            if (!RunDevEnv(_SOLUTION_PATH))
            {
                obj.PrintError("No se puede continuar error en la compilación del proyecto.");
                return;
            }

            obj.PrintString("Iniciando Generacion de Click Once....");

            List <DtoProject> CollectionCO = new List <DtoProject>();

            foreach (object valor in selection)
            {
                DtoProject proj      = (DtoProject)PROJECTS_FINDED.Where(x => x.id == int.Parse(valor.ToString())).SingleOrDefault();
                DtoProject clickOnce = GetClickOnceRelation(proj);

                obj.PrintInfo("Generando Click Once....");

                //PUBLISH PROJECT
                if (!RunMsbuild(clickOnce.FullPath))
                {
                    if (!obj.ShowQuestionContinue())
                    {
                        return;
                    }
                }
                CollectionCO.Add(clickOnce);
            }

            if (_SQL_GENERATE)
            {
                GenerateScripts(CollectionCO.ToArray());
            }
        }