.NET Core: definindo a versão do SDK utilizada pelo comando dotnet new
O uso do comando dotnet new constitui uma prática bastante comum entre Desenvolvedores que implementam soluções com o .NET Core e o Visual Studio Code. Por default essa instrução, que é executada via linha de comando, utiliza a versão mais recente de um SDK instalada em uma máquina.
Caso instalemos o .NET Core 3, o comando dotnet new assumirá como padrão para a geração de novos projetos esta versão que ainda está em Preview (Dezembro/2018). É o que demonstra a imagem a seguir, em que podemos notar a referência ao .NET Core 3 no arquivo .csproj da nova aplicação:
A execução do comando dotnet --version no diretório inicial deste novo projeto também retornará que o .NET Core 3 corresponde à versão default:
A instrução dotnet --list-sdks trará as diferentes versões de SDKs do .NET Core instaladas em uma máquina. Na próxima imagem se observa a presença do release 2.2.100 do .NET Core 2.2 (destacado em vermelho):
E se quisermos selecionar então o .NET Core 2.2 para a criação de uma nova aplicação via linha de comando? A solução a este tipo de necessidade passa pela geração de um arquivo global.json em um diretório a partir do qual seriam criados novos projetos.
Com o comando dotnet new globaljson --sdk-version 2.2.100 será gerado um global.json configurado para uso do SDK 2.2.100 (primeiro release oficial do .NET Core 2.2) a partir de C:\ASP.NET Core 2.2\:
Na listagem a seguir está o conteúdo deste novo arquivo global.json:
A instrução dotnet --version ao ser executada em C:\ASP.NET Core 2.2\ e seus subdiretórios exibirá como SDK default adotado para o .NET Core a versão 2.2.100:
Um novo projeto Web API chamado TesteAPI2 gerado após esses ajustes estará assim devidamente configurado para uso do .NET Core 2.2 (a instrução Get-Content do PowerShell mostra que no conteúdo do arquivo TesteAPI2.csproj está sendo referenciado o .NET Core 2.2):
Fora de C:\ASP.NET Core 2.2\ a execução de dotnet --version mostrará que o SDK do .NET Core 3 ainda segue como versão padrão: