public bool SetVersionProject(DtoProject obj, string version) { XDocument doc = XDocument.Load(obj.FullPath); XNamespace ns = "http://schemas.microsoft.com/developer/msbuild/2003"; Match match = Regex.Match(version, @"^([0-9]{0,3})\.([0-9]{0,3})\.([0-9]{0,3})\.([0-9]{0,3})", RegexOptions.IgnoreCase); if (match.Success) { string temp = doc .Element(ns + "Project") .Elements(ns + "PropertyGroup") .Elements(ns + "ApplicationVersion") .Select(refElem => refElem.Value) .SingleOrDefault <string>(); string sReplace = Regex.Replace(temp, @"^([0-9]{0,3})\.([0-9]{0,3})\.([0-9]{0,3})\.", string.Concat(match.Groups[1], ".", match.Groups[2], ".", match.Groups[3], ".")); doc .Element(ns + "Project") .Element(ns + "PropertyGroup") .SetElementValue(ns + "ApplicationVersion", sReplace); doc .Element(ns + "Project") .Element(ns + "PropertyGroup") .SetElementValue(ns + "ApplicationRevision", match.Groups[4]); doc.Save(obj.FullPath); return(true); } return(false); }
private void ShowInfoVersionProject(DtoProject project) { Print obj = new Print(); obj.ClearConsole(); obj.PrintTitle("Mantenimiento de Versiones Click Once"); obj.PrintString(string.Format("\n Project: {0} \n Version Actual: {1}", project.Name, project.Version)); obj.PrintString("Ingrese la nueva version..."); string version = obj.GetKeyString(); if (!new UtilsProjects().SetVersionProject(project, version)) { obj.PrintError("No se pudo actualizar la version del Click Once"); obj.PressKeyToContinue(); ReloadMenu(); } project.VersionNew = version; }
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()); } }