Compartir versionado entre ensamblados en .NET Core (II)
Introducción
En una entrada anterior explicaba una forma (completamente válida) de compartir versionado entre ensamblados en .NET Core.
En esta ocasión, voy a explicar otra forma de realizar lo mismo, también válida y quizás algo más simple que la que veíamos en la otra entrada que escribí pero muy similar además de más adecuada para desarrollos en .NET Core.
csproj
Si en la anterior entrada me centraba en modificar el csproj de cada proyecto dentro de la solución, en esta ocasión no necesitaremos ni añadir ni modificar la propiedad GenerateAssemblyInfo en el fichero de proyecto csproj de nuestros proyectos de .NET Core.
Simplemente, escribiremos nuestro código como hemos hecho siempre sin atender a preparar ni parametrizar o personalizar ningún proyecto concreto, sino que realizaremos una acción global a todos los proyectos de una solución y de forma directa.
Directory.Build.props
Este es el fichero clave en nuestra segunda posibilidad de compartir y crear versionado.
Deberemos crear un archivo de nombre Directory.Build.props que deberemos alojarlo en alguna carpeta raiz de donde se encuentran todos nuestros proyectos.
El contenido de este fichero será similar al que se indica a continuación:
<Project>
<PropertyGroup>
<Version>1.2</Version>
<FileVersion>1.2.123.0</FileVersion>
<Company>My Company</Company>
<Copyright>Copyright ©2019 by My Company</Copyright>
</PropertyGroup>
</Project>
Compilación
Una vez hecho esto, bastará con compilar nuestra solución o nuestros proyectos para compartir la versión entre ellos.
La «magia» es que MSBuild buscará este fichero en nuestras carpetas de proyecto, y si no lo encuentra, irá bajando el nivel hasta que llegue abajo del todo o lo encuentre.
Así, si tenemos una carpeta de proyecto, y dentro de ésta una carpeta src por ejemplo, en la que dentro tendremos los diferentes proyectos de nuestra solución, podríamos tener el fichero Directory.Build.props en la raiz.
Por ejemplo:
MSBuild empezará a buscar en las diferentes carpetas el fichero que indico, y recogerá sus propiedades para utilizarlas en la compilación de los diferentes proyectos.
Para más información al respecto, te invito a visitar este enlace de Microsoft.
Cualquiera de las dos formas que explicaba en las dos entradas son válidas, sin embargo, esta segunda forma es la más cómoda de todas y la recomendada.
Espero que te haya resultado útil.
Happy Coding!