Saltar al contenido

Artículos, tutoriales, trucos, curiosidades, reflexiones y links sobre programación web ASP.NET Core, MVC, Blazor, SignalR, Entity Framework, C#, Azure, Javascript... y lo que venga ;)

17 años online

el blog de José M. Aguilar

Inicio El autor Contactar

Artículos, tutoriales, trucos, curiosidades, reflexiones y links sobre programación web
ASP.NET Core, MVC, Blazor, SignalR, Entity Framework, C#, Azure, Javascript...

¡Microsoft MVP!
miércoles, 24 de abril de 2019
.NET Core Al hilo del post de ayer, uno de los problemas que vamos a encontrar cuando instalemos versiones preliminares del SDK de .NET Core es que éstas se establecen como las versiones por defecto para el equipo.

Por ejemplo, si instalamos en nuestro equipo la preview del SDK 3.0, a partir de ese momento todos los comandos de la CLI se ejecutarán utilizando esta versión preliminar, como cuando creamos un nuevo proyecto usando dotnet new; en este caso, el proyecto se construirá usando la plantilla proporcionada por la versión más actual del framework (aunque sea preview), lo cual puede resultar molesto en algunas ocasiones.

En este post vamos a ver cómo el propio SDK dispone de mecanismos que nos permiten seleccionar una versión específica, para lo cual trataremos varios comandos útiles de la CLI.

¿Qué versión del SDK estamos utilizando actualmente?

Sencillo: basta con ejecutar el comando dotnet --version. En mi caso, como podéis observar, se trata de una preview de .NET Core 3:
C:\>dotnet --version
3.0.100-preview3-010431

C:\>_

¿Y qué versiones del SDK tenemos instaladas en el equipo?

Esta información podemos obtenerla ejecutando el comando dotnet --list-sdks, como se muestra seguidamente:
C:\>dotnet --list-sdks
1.1.11 [C:\Program Files\dotnet\sdk]
2.1.202 [C:\Program Files\dotnet\sdk]
2.1.503 [C:\Program Files\dotnet\sdk]
2.1.504 [C:\Program Files\dotnet\sdk]
2.1.505 [C:\Program Files\dotnet\sdk]
2.1.602 [C:\Program Files\dotnet\sdk]
2.2.102 [C:\Program Files\dotnet\sdk]
2.2.105 [C:\Program Files\dotnet\sdk]
2.2.202 [C:\Program Files\dotnet\sdk]
2.2.203 [C:\Program Files\dotnet\sdk]
3.0.100-preview3-010431 [C:\Program Files\dotnet\sdk]

C:\>_

¿Cómo creamos un proyecto usando una versión específica del SDK?

Imaginemos que por alguna razón queremos crear un proyecto de consola para .NET Core 1. No es posible hacerlo de forma directa pues, por defecto, los nuevos proyectos serán creados usando la versión más reciente del SDK (en mi caso la preview de .NET Core 3).

Pues bien, lo primero que debemos hacer es crear un archivo llamado global.json en la carpeta raíz del proyecto. Este archivo, cuyo contenido veremos a continuación, permite indicar la versión del SDK que será utilizada en todas las carpetas que se encuentre por debajo en la estructura de directorios.

Podemos crear un global.json a mano (eso sólo un archivo de texto), o bien usando el comando dotnet new global.json especificando la versión del SDK que queremos utilizar que, obviamente, debe ser una de las que tenemos instaladas en el equipo:
C:\test>dotnet new global.json --sdk-version 1.1.11
The template "global.json file" was created successfully.

C:\test>type global.json
{
  "sdk": {
    "version": "1.1.11"
  }
}

C:\test>_
Ahora ya podemos crear el proyecto usando el conocido comando dotnet new, que usará la versión del SDK indicada en global.json:
C:\test>dotnet new console
The template "Console Application" was created successfully.

Processing post-creation actions...
Running 'dotnet restore' on C:\test\test.csproj...
  Restoring packages for C:\test\test.csproj...
  Generating MSBuild file C:\test\obj\test.csproj.nuget.g.props.
  Generating MSBuild file C:\test\obj\test.csproj.nuget.g.targets.
  Restore completed in 712,13 ms for C:\test\test.csproj.

Restore succeeded.

C:\test>_
Para comprobar que el proyecto ha sido creado correctamente, podemos consultar el archivo .csproj, donde veremos las referencias a las versiones correctas del framework, lo que indica que la plantilla utilizada para crearlo ha sido la apropiada:
C:\test>type test.csproj
<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>netcoreapp1.1</TargetFramework>
  </PropertyGroup>
</Project>

C:\test>_

Publicado en: www.variablenotfound.com.

Aún no hay comentarios, ¡sé el primero!