Control de la versión del SDK de .NET Core

Descripción general:

Pequeño apunte sobreo como corregir el Aviso/Error de compilacion NETSDK1057: Está usando una versión preliminar de .NET.


↑↑↑

A modo de introducción

Recientemente estaba construyendo una aplicación de ejemplo y vi una advertencia de compilación que decía que estaba usando una versión previa del SDK .NET Core.


La recompilación se inició a las 10:10...
1>------ Operación Recompilar todo iniciada: proyecto: Wpf_Dll_Infraestructura2026,
1>C:\Program Files\dotnet\sdk\10.0.200-preview.0.26103.119\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.RuntimeIdentifierInference.targets(383,5): 
message NETSDK1057: Está usando una versión preliminar de .NET. Visite: https://aka.ms/dotnet-support-policy

Puedes ver en la pantalla que la compilación no muestra ninguna advertencia ni errores, pero si hay un texto de advertencia de que se esta usando una versión preliminar de SDK

Básicamente, el sistema nos está informando de que estamos usando un SDK que aún está en fase de pruebas, o preview. Aunque esto no debería ser un problema porque el SDK debería ser totalmente compatible hacia atrás, simplemente es un recordatorio de que no es la versión estable y siempre podríamos encontrarnos algún problema. Esto ocurre porque los comandos del SDK utilizan la última versión instalada en el equipo, por lo que, si hemos instalado una versión preliminar, será ésta la que se utilice. Podemos comprobarlo fácilmente ejecutando el siguiente comando en consola, que nos mostrará la versión del SDK que se está utilizando por defecto:

Normalmente, el mensaje NETSDK1057 podemos ignorarlo sin problema, pero si por cualquier motivo queremos eliminarlo o simplemente queremos forzar el uso de una versión determinada del SDK de .NET en algún proyecto o de forma global, podremos hacerlo usando un archivo llamado global.json.


↑↑↑

Forzar la versión del SDK

Para forzar el uso de una versión específica del SDK de .NET, bien sea de forma global o bien en un proyecto concreto, lo primero que debemos hacer es determinar qué versiones del SDK tenemos instaladas en nuestro equipo. Para ello, podemos ejecutar el siguiente comando en la consola:

Primero para ver la versión que estamos usando


C:\> dotnet –version

Después para ver las versiones que tenemos instaladas


C:\>dotnet –list-sdks

Imagen del símbolo del sistema con las instrucción [dotnet]

Una vez sabemos qué versiones del SDK tenemos instaladas y cuál queremos forzar, lo siguiente es crear un archivo llamado global.json. Su ubicación es importante, porque su ámbito se extiende a todos los proyectos que estén en la misma carpeta o en sus subdirectorios a cualquier nivel de profundidad.

Es decir, si creamos el archivo global.json en la raíz de un proyecto , afectará únicamente a ese proyecto y a sus subproyectos. Si lo creamos en una carpeta superior, por ejemplo en la carpeta de una solución , afectará a todos sus proyectos, que típicamente se encontrarán en subdirectorios. Si lo creamos en la carpeta raíz de un disco duro, afectará a todos los proyectos guardados en él.

El archivo global.json es un archivo JSON con una estructura muy sencilla (puedes consultarla  siguiendo este enlace ). Básicamente en él indicaremos la versión del SDK que queremos forzar a los proyectos que se encuentren en su ámbito, así como algunas opciones adicionales para personalizar su comportamiento.