Rebuild All en GeneXus

Me llego una consulta de un colega y dejo la respuesta tambien aca, por si a alguien mas le sive.

Antes de hacer un REBUILD ALL, con GeneXus, es bueno aprovechar y borrar algunos archivos que pueden haber quedado desactualizados.

Lo que yo hago antes de ejecutar un rebuild es ejecutar el BAT

echo ----------------------------------
set dirGX=C:\GeneXus\GeneXusEv2U7
set dirKB=C:\models\ev2\KBdir
echo --- Borrado previo REBUILD ALL ---
del %dirKB%\*.ari /s/q 
del %dirKB%\*.0?? /s/q 
for /f %%i in ('dir /a:d /s /b %dirKB%\*') do rd /s /q %%i
MSBuild /nologo Rebuild.msbuild /p:KBDir=%dirKB%;GXDir=%DirGx%  /t:Rebuild
echo --- TERMINO EN BUILD ALL       ---


Que hace este archivo de comandos? 

Borra todos los archivos *.ARI de la KB (de la version actual y de todas la versiones de la KB). 
Borra todos los archivos donde se guardan referencias entre objetos que tienen extensiones 001, 005, etc). Estos archivos muchas veces quedan mal, cuando se tiene mas de un generador en la KB y son causante de muchos de los errores de compilacion cuando hay objetos que se generan WIN y pasan a generarse WEB y cosas asi. 
Borra todos los directorios que estan en bajo la KB (el directorio de la propiedad TargetPath, mas todos los directorios de usuarios, donde se guardan las especificaciones, el GXLock, etc, etc). 

Es bastante peligroso, por lo que conviene correrlo con cuidado y backups, pero es sano para tener un rebuild limpito. 

Para poder ejecutar el rebuild desde linea de comandos, tengo un proyecto MSBUILD que tiene

<Project DefaultTargets="Rebuild" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(GXDir)\Genexus.Tasks.targets" />
<Target Name="OpenKnowledgeBase">
   <OpenKnowledgeBase Directory="$(KBDir)"/>
</Target>
<Target Name="Rebuild" DependsOnTargets="OpenKnowledgeBase">
       <BuildAll ForceRebuild="true" CompileMains="true" DetailedNavigation="false" />    
</Target>
</Project>

Comentarios

Entradas más populares de este blog

La nefasta influencia del golero de Cacho Bochinche en el fútbol uruguayo

Aplicación monolítica o distribuida?

Funcionalidades de GeneXus que vale la pena conocer: DATE Constants.