Quando o .NET Core ainda era denominado ASP.NET vNEXT utilizávamos as ferramentas e comandos da CLI (.NET Core Command Line) através do DNX e DNU (para restore) que passou a se chamar "dotnet" após o denominação passar a ser .NET Core.
O DNX e o DNU agora não existem mais e com o .NET Core os comandos e ferramentas da CLI estão presentes dentro do SDK (Software Development Kit) e de forma versionada.
O "dotnet" é um driver genérico para facilitar a execução da CLI.
SDK
O SDK em uso é sempre o último instalado e através do powershell é possível verificar qual está em execução através do comando abaixo.
PS C:\> dotnet --version
O resultado independe de qualquer configuração, diferentemente do ASP.NET vNEXT onde a versão em execução dependia do caminho nas variáveis de ambiente do OS.
Lista de SDKs
O "dotnet" permite a exibição de uma lista de SDKs disponíveis para uso através do comando abaixo
PS C:\> dotnet --list-sdks
Isso permite que trabalhemos com projetos .NET Core utilizando SDKs distintos, por mais que a execução atual do "dotnet" seja sempre do último SDK instalado.
Você pode conferir a última versão do SDK aqui e baixar a versão mais atualizada e instalá-la. É importante sempre manter o SDK atualizado.
global.json
Depois de todo esse entendimento, vamos ao que interessa. Para que um projeto possa ser executado com um SDK específico, basta criar um arquivo global.json e dentro dele colocar o código conforme abaixo, porém é importante destacar que a versão do SDK precisa estar instalada.
{
"sdk": { "version": "2.1.302" }
}
Quando o SDK precisa ser mantido, é importante que o arquivo seja configurado para que sempre seja atualizado na geração da build.
Dica
Utilize o comando abaixo, pois ele vai fazer o trabalho manual de forma automatica.
PS C:\Users\alext> dotnet new globaljson
Conclusão
Sim, podemos ter projetos/soluções distintas sendo executadas com SDKs diferentes, por fim, podemos ter projetos sendo executados no .NET Core 2.0 e também no .NET Core 2.1 ao mesmo tempo.