Las extensiones ofrecen una serie de tareas para MSBuild para trabajar con kbase de Genexus. Para poder utilizar las tareas hay que importar en el script del msbuild el archivo de definiciones "LsiExtensions.targets" que se incluye en la instalación de las extensiones. Las tareas declaradas se describen a continuación.
Si se tiene configurado que al generar se cree el directorio virtual en el IIS,
la ejecución de esta tarea requiere permisos de administrador,
ya que lanza la ejecución de appcmd.exe start apppool ...
. Si se
crease una tarea programada para lanzar msbuild, por ejemplo, para hacer builds
nocturnos, hay que acordarse de marcar "Ejecutar con los privilegios más elevados"
en la tarea programada. Si no se hace, la tarea programada quedará colgada
en el paso "Updating web config ..."
Permiten registrar el log de Genexus de las tareas incluidas entre estas dos tareas. Este log puede mandarse por correo con la tarea LsiSendEmail.
Las otras tareas declaradas por las extensiones no debería incluirse dentro de estas tareas, ya que el log de dichas tareas siempre queda registrado, y siempre se envian en el correo.
Estas tareas pueden usarse varias veces dentro del archivo MsBuild, pero no recursivamente (secciones dentro de secciones).
<LsiLogSectionStart SectionTitle="Build all" IsWeb="false"/> <BuildAll ForceRebuild="false" CompileMains="false" DetailedNavigation="false" /> ... <LsiLogSectionEnd />
SectionTitle | Titulo que se da en el correo al log de la ejecución de las tareas dentro de esta sección. |
IsWeb |
Indica si las tareas que se ejecutan se refieren a generadores web o no. Cuando se manda el log por correo, este se manda en formato HTML. Las tareas intentan parsear errores de compilación C#, y si encuentran alguno, ponen un link al archivo fuente con el error. Este flag se necesita para saber en que directorio está ubicado el archivo fuente con el error (si en la carpeta del modelo, o en la carpeta "web" del modelo). |
Estas tareas sólo registran el log de lo que sería la ventana "Output" de Genexus. Si se incluyen tareas propias de MsBuild (crear directorios, copiar archivos, etc.), el log de dichas tareas no quedará registrado.
Envia por correo el log capturado por las tareas LsiLogSectionStart / LsiLogSectionEnd y el resto de tareas declaradas en estas extensiones.
<LsiSendEmail FromEmail="xxx@xxx.com" ToEmails="@(DestinationEmails)" EmailHost="xxx" EmailUserName="xxx@xxx.com" EmailPassword="xxx" Ssl="true" Port="1234" TimeoutMiliseconds="10000" />
FromEmail | Dirección de correo de origen para enviar el correo con el log del proceso. Si no se indica, no se enviará ningún correo. |
ToEmails | Un ItemGroup con las dirección de correo a las que enviar el correo con el log del proceso. Si no se indica ninguno, no se enviará ningún correo. |
EmailHost | Dirección del servidor de correo. Si no se indica, no se enviará ningún correo. |
EmailUserName / EmailPassword | Usuario y password con los que autenticarse en el servidor de correo. |
Ssl | ¿Usar SSL para el envio del correo?. Por defecto no |
Port | Puerto en el servidor de correo. Por defecto el 25 |
TimeoutMiliseconds | Tiempo de espera para el envio de correo, en milisegundos. Por defecto 100000 |
No hay soporte para configuración avanzada del envio del correo. El envio se hace con SMTP estandar: No se soporta SSL, ni cambiar el puerto de destino ni ningún otro tipo de configuración aparte de la descrita.
Es una tarea para compilar todos los mains de uno o varios generadores de la kbase. En caso de compilar un main con generador c# win, y si la propiedad "Assemblies structure" del generador vale "By main", intenta reparar errores en su RSP. Puede encontrar más información sobre la reparación de RSPs en la documentación de la toolwindow Work with mains.
<LsiCompileTask Generator="$(Generator)" RepairRsp="all"/>
Generator | Descripción del generador del que hay que compilar los mains, por ejemplo "Default (C#)". Si no se indica, se compilarán los mains de todos los generadores. |
RepairRsp |
Sólo se aplica a generadores C# / Win, si la
propiedad "Assemblies structure" del generador vale "By main". Indica
si hay que intentar reparar o no los archivos RSP antes de la compilación.
Puede valer una de estas opciones:
|
Genera todos los objetos Query del entorno actual, sin especificar / generar nada.
<LsiBuildQuerys />
Sólo tiene sentido si se suele usar la operación de compilación personalizada de la toolwindow Work with mains. Esta compilación puede generar archivos de backup en el directorio del modelo. Esta tarea borra dichos archivos.
<LsiDeleteBackups />
Ejecuta las tareas para preparar la producción de la KBase. Si la propiedad "RunWithErrors" es falsa, si alguna tarea anterior ha fallado, esta no se ejecutará. Si es cierta, se preparará la producción aunque haya habido errores. Su valor por defecto es falso.
<LsiPrepareProduction RunWithErrors="false" />
Un ejemplo de archivo msbuild que usan las tarea sería el siguiente:
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <!-- Import standard gx tasks and custom LSI tasks --> <Import Project="C:\Program Files (x86)\Artech\GeneXus\GeneXusXEv3\Genexus.Tasks.targets" /> <Import Project="C:\Program Files (x86)\Artech\GeneXus\GeneXusXEv3\Packages\LsiExtensions.targets" /> <PropertyGroup> <!-- Set the kbase path --> <KBPath Condition=" '$(KBPath)' == '' ">D:\kbases\PruebasWinWebEv3</KBPath> <!--Set the model--> <KBEnvironment Condition=" '$(KBEnvironment)' == '' ">.Net Environment</KBEnvironment> <!--The generator to compile. If its empty, all generators will be compiled--> <!--<Generator>Default (C#)</Generator>--> </PropertyGroup> <!--Email addresses to send compilation reports--> <ItemGroup> <DestinationEmails Include="xxx@xxx.com" /> <!--<DestinationEmails Include="yyy@xxx.com" />--> </ItemGroup> <!--Build kbase--> <Target Name="Build"> <OpenKnowledgeBase Directory="$(KBPath)" /> <SetActiveEnvironment EnvironmentName="$(KBEnvironment)" /> <!--Start log section--> <LsiLogSectionStart SectionTitle="Build all" IsWeb="false"/> <!--Run a gx msbuild task--> <BuildAll ForceRebuild="false" CompileMains="false" DetailedNavigation="false" /> <!--End log section--> <LsiLogSectionEnd /> <!--Compile--> <LsiCompileTask Generator="$(Generator)" RepairRsp="all"/> <!--Generate query objects--> <LsiBuildQuerys /> <!--Delete backup files--> <LsiDeleteBackups /> <!--Send email--> <LsiSendEmail FromEmail="xxx@xxx.com" ToEmails="@(DestinationEmails)" EmailHost="xxx" EmailUserName="xxx@xxx.com" EmailPassword="xxx" /> <CloseKnowledgeBase /> </Target> </Project>
El correo enviado tiene un formato parecido al siguiente:
KBase | D:\kbases\PruebasWinWeb |
Enviroment | Prototipo |