Inicio rápido: uso de tareas de MSBuild para convertir archivos y parámetros de Bicep en JSON
Artículo
En este inicio rápido, aprenderá a usar el sistema de compilación en Visual Studio, MSBuild, para convertir archivos de Bicep en plantillas JSON de Azure Resource Manager (plantillas de ARM). También es posible usar MSBuild con la versión 0.23.x o posterior del paquete NuGet para convertir archivos de parámetros de Bicep a archivos de parámetros de Azure Resource Manager. En los ejemplos de este artículo se muestra cómo usar la línea de comandos con los archivos de proyecto de MSBuild y C# para la conversión, y con estos archivos se muestra cómo usar los archivos de proyecto en una canalización de integración continua de MSBuild.
Requisitos previos
Instalación de Visual Studio o Visual Studio Code. La versión de Visual Studio Community es gratis e instala .NET 6.0, .NET Core 3.1, el SDK de .NET, MSBuild, .NET Framework 4.8, el administrador de paquetes NuGet y el compilador de C#. En el instalador, seleccione Cargas de trabajo>Desarrollo de escritorio de .NET. Con Visual Studio Code, es necesario instalar las extensiones de Bicep y Herramientas de Azure Resource Manager (ARM).
Instale Azure PowerShell o un shell de línea de comandos para el sistema operativo.
En función de cómo se configure nuget.config en su entorno y si nuget.org no se configura como fuente de paquetes, es posible que tenga que ejecutar el siguiente comando:
En determinados entornos, el uso de una sola fuente de paquetes ayuda a evitar conflictos entre paquetes con el mismo identificador y versión, pero con contenido diferente en fuentes diferentes. Para los usuarios de Azure Artifacts, los orígenes ascendentes pueden almacenar paquetes de diferentes orígenes en una fuente.
Tareas de MSBuild y paquetes de Bicep
Use paquetes de la CLI y tareas de MSBuild a lo largo de la canalización de integración continua para convertir archivos de Bicep y archivos de parámetros Bicep en JSON. Esta funcionalidad se basa en los siguientes paquetes de NuGet:
Estos vínculos muestran la última versión del paquete NuGet. En la captura de pantalla siguiente, se muestra la última versión del paquete NuGet que coincide con la versión de la CLI de Bicep:
Azure.Bicep.MSBuild
Cuando el paquete Azure.Bicep.MSBuild se incluye en la propiedad PackageReference de un archivo de proyecto, importa la tarea de Bicep para invocar la CLI de Bicep:
El paquete transforma la salida de la CLI de Bicep en errores de MSBuild e importa el destino BicepCompile para simplificar cómo se usa la tarea de Bicep. De manera predeterminada, BicepCompile se ejecuta después del destino Build, compilando todos los elementos de @(Bicep) y @(BicepParam). A continuación, deposita la salida en $(OutputPath) con el mismo nombre de archivo y una extensión .json.
En el ejemplo siguiente, se muestra la configuración del archivo de proyecto para compilar los archivos main.bicep y main.bicepparam en el mismo directorio que el archivo del proyecto y colocando los archivos main.json y main.parameters.json en el directorio $(OutputPath).
Puede invalidad la ruta de acceso de salida por archivo mediante los metadatos de OutputFile en elementos Bicep. En el ejemplo siguiente, se buscan de forma recursiva todos los archivos main.bicep y se colocan los archivos .json compilados en $(OutputPath) en un subdirectorio con el mismo nombre en $(OutputPath):
Se pueden crear más personalizaciones estableciendo una de las siguientes propiedades en PropertyGroup en el proyecto:
Nombre de propiedad
Valor predeterminado
Descripción
BicepCompileAfterTargets
Build
Se usa como valor AfterTargets para el destino de BicepCompile. Cambie el valor para invalidar la programación del destino de BicepCompile en el proyecto.
BicepCompileDependsOn
Ninguna
Se usa como valor DependsOnTargets para el destino de BicepCompile. Esta propiedad se puede establecer en destinos de los que quiera que el destino de BicepCompile dependa.
BicepCompileBeforeTargets
Ninguno
Se usa como valor BeforeTargets para el destino de BicepCompile.
BicepOutputPath
$(OutputPath)
Establezca esta propiedad para invalidar la ruta de acceso de salida predeterminada para la plantilla de ARM compilada. Los metadatos de OutputFile en los elementos Bicep tienen prioridad sobre este valor.
Para que Azure.Bicep.MSBuild funcione, es necesario establecer una variable de entorno BicepPath. Consulte el siguiente elemento de viñeta para configurar BicepPath.
Azure.Bicep.CommandLine
Los paquetes Azure.Bicep.CommandLine.* están disponibles para Windows, Linux y macOS. En el ejemplo siguiente, se hace referencia al paquete para Windows:
Cuando se hace referencia a ellos en un archivo de proyecto, los paquetes Azure.Bicep.CommandLine.* establecen automáticamente la propiedad BicepPath en la ruta de acceso completa del archivo ejecutable Bicep para la plataforma. La referencia a este paquete se puede omitir si la CLI de Bicep se instala de otras maneras. En este caso, en lugar de hacer referencia a un paquete Azure.Bicep.Commandline, configure una variable de entorno denominada BicepPath o agregue BicepPath a PropertyGroup. Por ejemplo:
En los ejemplos siguientes, se muestra cómo configurar archivos de proyecto de aplicación de consola de C# para convertir archivos de Bicep y archivos de parámetros de Bicep en JSON. En los siguientes ejemplos, reemplace __LATEST_VERSION__ por la última versión de los paquetes NuGet de Bicep. Consulte tareas de MSBuild y paquetes de Bicep para obtener más información sobre cómo encontrar el último paquete.
El SDK de proyecto de MSBuild Microsoft.Build.NoTargets permite a los propietarios del árbol de proyecto definir proyectos que no compilen un ensamblado. Este SDK permite la creación de proyectos independientes que compilan solo archivos de Bicep.
Use solo el ejemplo clásico si los ejemplos anteriores no le funcionasen. En este ejemplo, las propiedades ProjectGuid, RootNamespace y AssemblyName contienen valores de marcador de posición. Al crear un archivo de proyecto, se crea un GUID único y los valores de nombre coinciden con el nombre del proyecto.
En estos ejemplos se muestra cómo usar MSBuild para convertir un archivo de Bicep y un archivo de parámetros de Bicep en JSON. Empiece por crear un archivo de proyecto para .NET, .NET Core 3.1 o el marco clásico. A continuación, genere un archivo de Bicep y un archivo de parámetros de Bicep antes de ejecutar MSBuild para convertirlos a JSON.
Abra msBuildDemo.csproj por un editor y reemplace el contenido por el ejemplo de .NET 6 o el SDK de NoTargets. Además, reemplace __LATEST_VERSION__ por la última versión del paquete NuGet de Bicep.
Guarde el archivo.
Para usar la CLI de .NET para compilar un proyecto en .NET Core 3.1:
Abra Visual Studio Code y seleccione Terminal>Nuevo terminal para iniciar una sesión de PowerShell.
Cree un directorio denominado msBuildDemo y vaya al directorio. En el ejemplo siguiente se usa C:\msBuildDemo:
Reemplace __LATEST_VERSION__ por la última versión del paquete NuGet de Bicep.
Guarde el archivo.
Para usar el marco Clásico para compilar un proyecto, use Visual Studio para crear el archivo de proyecto y las dependencias:
Abre Visual Studio.
Seleccione Crear un proyecto.
Para el lenguaje C#, seleccione Aplicación de consola (.NET Framework) y, a continuación, Siguiente.
Escriba un nombre de proyecto. En este ejemplo, use msBuildDemo para el proyecto.
Seleccione Colocar la solución y el proyecto en el mismo directorio.
Seleccione .NET Framework 4.8.
Seleccione Crear.
Si sabe cómo descargar y volver a cargar un proyecto, edite msBuildDemo.csproj en Visual Studio. De lo contrario, edite el archivo de proyecto en Visual Studio Code:
Abra Visual Studio Code y vaya al directorio msBuildDemo.
Reemplace msBuildDemo.csproj por el ejemplo de código del marco clásico.
Reemplace __LATEST_VERSION__ por el último paquete NuGet de Bicep.
Guarde el archivo.
Creación de un archivo de Bicep
Creación de un archivo de Bicep y un archivo BicepParam antes de convertirlos en JSON:
Cree un archivo main.bicep en la misma carpeta que el archivo del proyecto (por ejemplo: el directorio C:\msBuildDemo), además del siguiente contenido:
Cree un archivo main.bicepparam en el directorio C:\msBuildDemo con el siguiente contenido:
Bicep
using'./main.bicep'paramprefix = '{prefix}'
Reemplace {prefix} por un valor de cadena usado como prefijo para el nombre de la cuenta de almacenamiento.
Ejecución de MSBuild
Ejecute MSBuild para convertir el archivo de Bicep y el archivo de parámetros de Bicep en el JSON:
Abra una sesión de terminal de Visual Studio Code.
En la sesión de PowerShell, vaya a la carpeta que contiene el archivo del proyecto. Por ejemplo, el directorio C:\msBuildDemo.
Ejecutar MSBuild.
PowerShell
MSBuild.exe -restore .\msBuildDemo.csproj
El parámetro restore crea las dependencias necesarias para compilar el archivo Bicep durante la compilación inicial. El parámetro es opcional después de la compilación inicial.
Para usar .NET Core, ejecute:
PowerShell
dotnet build .\msBuildDemo.csproj
o
PowerShell
dotnet restore .\msBuildDemo.csproj
Vaya al directorio de salida y abra el archivo main.json, que debería ser similar al ejemplo siguiente.
MSBuild crea un directorio de salida basado en la versión del SDK o del marco:
Cree soluciones de un extremo a otro en Microsoft Azure para crear Azure Functions, implementar y administrar aplicaciones web, desarrollar soluciones que usen Azure Storage, etc.