Configurar el Pipeline de Azure DevOps para compilar proyectos .NET 5
Introducción
A apenas algunas semanas o días para que aparezca la versión final de .NET 5, la RC 2 publicada el pasado 13 de Octubre es una versión go live, es decir, una versión que podemos poner en producción.
En una entrada anterior, explicaba cómo podíamos probar .NET 5 de forma rápida y sencilla.
En esta ocasión, voy a abordar la explicación de cómo podemos configurar Azure DevOps para poder configurar un Pipeline para que compile correctamente nuestros proyectos de .NET 5, aunque estemos aún con versiones preliminares o RC.
Proyecto sencillo
Para no complicarlo, he decidido crear un proyecto de Azure DevOps y meter en su correspondiente repositorio el sencillo proyecto de tipo Hello World que preparé en la entrada que comentaba anteriormente sobre probar .NET 5.
He creado un Pipeline para trabajar con el proyecto que tengo en el repositorio y he creado su correspondiente fichero azure-pipelines.yml.
El aspecto de mi fichero Yaml es el siguiente:
# .NET 5 trigger: - master pool: vmImage: 'ubuntu-latest' variables: buildConfiguration: 'Release' steps: - task: DotNetCoreCLI@2 inputs: command: 'build' projects: '**/*.csproj'
Toda la estructura completa de mi repositorio ya preparado es la que indico en la siguiente imagen:
Ejecutando el repositorio en el Pipeline
En este punto, estamos preparados para ejecutar el repositorio en nuestro Pipeline.
Así que iniciaremos el proceso.
Una vez iniciemos el proceso, deberíamos recibir un error dentro del Pipeline.
Este error no deja dudas:
##[error]/usr/share/dotnet/sdk/3.1.403/Microsoft.Common.CurrentVersion.targets(1177,5):
Error MSB3644: The reference assemblies for .NETFramework,Version=v5.0 were not found
Hemos tratado de compilar un proyecto de .NET 5 como si fuera de .NET Core 3.1, y al no encontrar referencias sobre .NET 5, se ha generado un error.
Revisando el Job, vemos que efectivamente el problema se produce en el paso que corresponde a la ejecución de la tarea DotNetCoreCLI.
Resolviendo el problema y compilando para .NET 5
¿Cómo resolver el problema?.
Basta con modificar el fichero azure-pipelines.yml indicando allí un paso adicional para que compile proyectos .NET 5.
Nuestro código YAML quedará entonces de la siguiente forma:
# .NET 5
trigger:
- master
pool:
vmImage: 'ubuntu-latest'
variables:
buildConfiguration: 'Release'
steps:
- task: UseDotNet@2
displayName: 'Install .NET 5.0.x SDK'
inputs:
version: '5.0.x'
performMultiLevelLookup: true
includePreviewVersions: true # Required for preview versions
- task: DotNetCoreCLI@2
inputs:
command: 'build'
projects: '**/*.csproj'
Ejecutaremos nuevamente nuestro Pipeline y obtendremos ahora sí, un resultado positivo:
Lo que hemos hecho en ese paso adicional previo a la compilación de nuestro proyecto, es el de instalar el SDK de .NET 5 incluyendo versiones preliminares, ya que sino, sólo buscará la versión final de .NET 5.
Cuando aparezca la versión final de .NET 5, el uso de includePreviewVersions no será necesario.
De esta forma tan sencilla, tendremos la posibilidad de ejecutar .NET 5 en nuestros pipelines de Azure DevOps.
Happy Coding!