Flujo de trabajo para escribir, implementar, depurar y solucionar problemas de código X++ en múltiples entornos

Este artículo describe un flujo de trabajo para escribir, implementar, depurar y solucionar problemas de código X++ en múltiples entornos.

Nota

Puede obtener más información viendo la presentación y las demostraciones de la serie Dynamics 365 FastTrack Tech Talk. Experiencia de desarrollo unificada para finanzas y operaciones | Charla técnica Dynamics 365 FastTrack

Empecemos hablando de una máquina de desarrollo con múltiples entornos de desarrollo unificados.

¿Varios entornos de desarrollo unificados?

Se puede utilizar una máquina de desarrollador para conectarse a múltiples entornos de desarrollo unificados. Sin embargo, una instancia de Visual Studio puede estar conectada en cualquier momento a un solo entorno y tener solo una configuración de metadatos activa. Puede cambiar la configuración activa utilizando el elemento de menú Extensiones>Dynamics 365>Configurar metadatos.

Cambiar la configuración de metadatos activos no cambia el entorno al que está conectado. Puede cambiarlo desde el elemento de menú Visual Studio Herramientas>Conectar a Dataverse.

La misma configuración puede ser válida para múltiples entornos con las mismas versiones de plataforma y aplicación de operaciones y finanzas. Aún es mejor tener una configuración de metadatos por entorno. Estas configuraciones pueden tener valores comunes para carpetas de metadatos personalizados y de referencia, y más. La configuración actual y la conexión actual determinan conjuntamente qué se despliega y a qué entorno.

Diferentes entornos con diferentes versiones de aplicaciones y plataformas financieras y operativas podrían utilizarse para diferentes fines. Se recomienda que la versión de la extensión de Visual Studio de finanzas y operaciones coincida con el entorno.

El compilador X++, el compilador de etiquetas y otras herramientas invocadas por cualquier versión de la extensión de Visual Studio corresponde a la versión de la aplicación de la configuración activa que haya establecido como actual.

Si no hay cambios de ruptura entre las distintas versiones de la aplicación y la plataforma de destino que utilizan la versión más antigua para la financiación y el funcionamiento, la versión de extensión de Visual Studio garantizaría que los artefactos construidos son compatibles con versiones de tiempo de ejecución superiores en los entornos.

Un entorno de desarrollador unificado y múltiples máquinas de desarrollador

Ya se trate del mismo desarrollador o de otro diferente, si se utilizan varias máquinas de desarrollo es más probable, aunque no inevitable, que se dañe involuntariamente el entorno de desarrollo unificado común. Esto podría suceder al implementar un cambio que no tiene en cuenta lo que ya está implementado en el mismo entorno.

La situación descrita anteriormente también podría surgir de la misma máquina de desarrollo, en caso de que el código de metadatos personalizado pierda consistencia, por ejemplo al cambiar de rama de Git.

La forma de mantener la coherencia y evitar cambios no deseados en los entornos de desarrollo unificados es utilizar el control de versiones, por ejemplo Azure DevOps con Git, para garantizar un registro referenciado de lo que se implementa en cualquier entorno.

Importante

Nunca insistiremos lo suficiente en el importante papel del control de versiones para garantizar una buena higiene del código y proporcionar registros históricos, puntos de control y puntos de sincronización.

Implementar código y sincronizar la base de datos

Veamos sus opciones a la hora de desplegar el código y sincronizar la base de datos en un entorno de desarrollo unificado.

Escenario Método de implementación Notas
Implementar uno o varios módulos que ya están construidos Utilice el diálogo Dynamics 365>Implementar>Implementar modelos .... Opcionalmente, puede sincronizar la base de datos de los módulos.
Implementar uno o varios módulos como parte de una compilación completa Inicie mediante Dynamics 365>Compilar modelos después de configurar la opción para Implementar al entorno en línea conectado . Opcionalmente, puede sincronizar la base de datos de los módulos mediante la opción sincronizar la base de datos en la misma pestaña Opciones.
Implemente uno o varios módulos como parte de una compilación/reconstrucción de proyectos X++ desde el Explorador de soluciones Inicie mediante compilación/reconstrucción de los proyectos o la solución después de configurar la opción para Implementar cambios en el entorno en línea. Esto solo despliega los cambios desde el último despliegue exitoso y es más rápido Opcionalmente puede sincronizar la base de datos para los cambios incluidos
Implementar un módulo para un proyecto X++ determinado desde el Explorador de soluciones Inicie haciendo clic con el botón secundario en el proyecto y eligiendo Implementar modelo para proyecto.... Esto solo implementará los cambios desde la última implementación correcta, pero no sincronizará la base de datos del módulo.
No implementar ningún módulo, pero sincronizar la base de datos para todos los módulos en el entorno Inicie a través del diálogo Dynamics 365>Sincronizar base de datos.... Esta es una operación de larga duración ya que DBSync se ejecuta para todos los módulos.

Nota

  • La construcción e implementación incrementales continuas podrían ser mucho más rápidas que la implementación completa para módulos grandes.
  • Para módulos solo binarios recibidos de ISV u otros terceros, realice una implementación completa y sincronización de base de datos.
  • No cambie ni intente implementar módulos del sistema.

Agregar módulos recibidos de los ISV o de terceros

Puede recibir módulos X++ de muchas formas diferentes. Podría compartirse con usted como archivos zip o paquetes totalmente implementables, individualmente o como una colección de módulos, con código o solo binario, incluidas licencias ISV o no.

En todos estos casos, querrá versionarlos verificándolos en algún sistema de control de versiones. Luego querrá actualizar la configuración de metadatos activos para hacer referencia a ellos.

Continúe agregando una nueva referencia en Carpetas para metadatos de referencia haciendo clic en el botón Agregar y navegando a la carpeta primaria para todos los módulos de referencia. Como ejemplo, si desea agregar el Módulo01 y el Módulo02, colóquelos en una carpeta común (por ejemplo, E:\ISVModules) y luego consulte la última carpeta primaria.

Cuándo incluir una licencia para módulos

Las licencias se pueden incluir e implementar directamente colocándolas en la carpeta __License (con dos guiones bajos) en el modelo, en el mismo nivel que su carpeta bin. Esta licencia se verifica y se aplica cuando implementa el paquete.

Como ejemplo, si desea agregar un archivo de licencia licenseFile01 para el Módulo01 presente en E:\ISVModules\Module01, cree una carpeta secundaria E:\ISVModules\Module01__License y coloque el archivo en ella como E:\ISVModules\Module01__License\licenseFile01. Además, se requiere una Sincronización completa de base de datos desde el menú de Dynamics 365 en Extensiones para que la licencia aplicada entre en vigor. .

Obtenga más información en Licencias de proveedores de software independientes (ISV)

Convertir un paquete totalmente implementable (paquete heredado de Lifecycle Services) al nuevo formato

Describamos cómo convertir un paquete totalmente implementable (paquete heredado de Lifecycle Services) al nuevo formato para que sea compatible con la implementación en entornos.

Ubique ModelUtil.exe dentro de la carpeta bin y ejecútelo desde la línea de comando para ver el uso. A continuación, elija la opción -convertToUnifiedPackage y proporcione el zip del paquete y la ubicación de salida como parámetros.

Nota

La conversión a un paquete unificado puede fallar y el mensaje termina en: El archivo 'ruta temporal\nombredelmodelo\bin\nombredearchivo' ya existe. Esto ocurre si se identifican varias versiones del modelo en el paquete original.

Solución: asegúrese/recree el paquete original asegurándose de que solo haya una versión de cada modelo en el paquete en la ubicación <OriginalPackage.zip>/AOSService/Packages/files/<model.version>.

Implementación de paquetes mientras el entorno está en modo de administración

El entorno OnlineDev/UDE admite la implementación de paquetes (solo código) en modo de administración. Esta ruta de recuperación omite la sincronización de la base de datos. Puede implementar un paquete con una corrección antes de volver a intentar salir del modo de administración.

Para obtener más información, consulte Implementación de paquetes en un entorno de desarrollador unificado en modo de administración.

Solucionar problemas de implementación o errores de DBSync

La implementación del paquete podría fallar en varias etapas, incluida la sincronización de la base de datos, por diversos motivos, incluidos errores del desarrollador. Hay un enlace para descargar registros de operaciones disponible en el panel de salida Visual Studio . Se descarga si se produjeron errores o si se habilita la opción en Herramientas> Opciones> Power Platform Tools.

También puede descargar los registros de su organización de Dataverse siguiendo estos pasos.

  1. Iniciar sesión en la organización de Dataverse
  2. Busque Aplicación Finance and Operation Administrador de paquetes en la página principal
  3. Seleccione la aplicación y, a continuación, en el panel izquierdo, seleccione Historial de operaciones
  4. Abra el registro respectivo seleccionando el Nombre de operación y descargue los registros de operación (archivo operationlogs.zip)

La implementación y DBSync se realizaron correctamente, pero es necesario investigar mis cambios

Si la implementación y la sincronización de base de datos son correctas, debe ejecutar su escenario y comparar el comportamiento esperado y real en busca de pistas. Infolog suele ser muy útil en este caso.

Si lo anterior no es suficiente, debe adjuntar el depurador al proceso AOS en ejecución en el entorno unificado usando el menú Dynamics 365>Iniciar depurador. Ejecutar el escenario esta vez con algunos puntos de interrupción establecidos le brindará una mejor perspectiva.

Recomendamos escribir pruebas unitarias X++ para su código para garantizar que las regresiones se detecten fácil y rápidamente. También puede utilizar Application Insights para supervisar y diagnosticar la aplicación que se ejecuta en el entorno de desarrollador unificado.

Obtenga más información sobre la observabilidad: Supervisión y telemetría usando Application Insights

¿Qué información proporcionar al soporte técnico de Microsoft?

Microsoft necesita investigar el ID de correlación, el nombre de la máquina cliente y la marca de tiempo. El id. de correlación está en el panel de salida de Visual Studio.

Los registros también se escriben en archivos Microsoft.PowerPlatformVSExtension*.log en C:\Users<user>\AppData\Local\Microsoft\Dynamics365\Logs. Además, se genera un archivo de registro denominado VisualStudioD365Extension*.log en una ruta similar a C:\Users\AppData\Roaming\Microsoft Corporation\Microsoft® Visual Studio®<version>\VisualStudioD365Extension-*.log.

Consulte también

Experiencia de desarrollo unificada para finanzas y operaciones | Charla técnica Dynamics 365 FastTrack
Escribir, implementar y depurar código X++
Implementación de paquetes en un entorno de desarrollador unificado en modo de administración
Pruebas unitarias en la experiencia unificada del desarrollador
Crear y administrar entornos en el centro de administración de Power Platform
Administrar aplicaciones Dynamics 365