Switch between dotnet core SDK versions

C#asp.net Core.Net Core

C# Problem Overview


I recently installed VS 2017 RC and then automatically my dotnet version pointed to 1.0.0-preview4-004233. Due to that whenever I create a new project using command dotnet new -t Console I cannot see project.json though I see .csproj file.

When I check dotnet versions available on my machine at - C:\Program Files\dotnet\sdk I see multiple versions available.

Is there any way to switch dotnet core back to an earlier version - 1.0.0-preview2-003133 from 1.0.0-preview4-004233 without uninstalling.

C# Solutions


Solution 1 - C#

You can do this with a global.json file in the root of your project:

  • Verify the list of SDKs on your machine:
dotnet --list-sdks

You'll see a list like this.

2.1.100 [C:\Program Files\dotnet\sdk]
2.1.101 [C:\Program Files\dotnet\sdk]
2.1.103 [C:\Program Files\dotnet\sdk]
2.1.104 [C:\Program Files\dotnet\sdk]
[...lines omitted...]
2.1.601 [C:\Program Files\dotnet\sdk]
2.2.101 [C:\Program Files\dotnet\sdk]
3.0.100-preview3-010431 [C:\Program Files\dotnet\sdk]
  • Create a folder to be the root of your project, where you are going to run dotnet new.
  • In that folder, run this command: dotnet new globaljson

The result will look something like this:

{
  "sdk": {
    "version": "3.0.100-preview3-010431"
  }
}
  • In version, replace the 3.0.100-preview3-010431 with the version you prefer from the --list-sdks list. For example:
{
  "sdk": {
    "version": "2.2.101"
  }
}
  • Run dotnet --version to verify. You should see:
2.2.101
  • Run the appropriate dotnet new commands to create your project.

Solution 2 - C#

Dotnet usually uses the latest SDK version, unless it finds a global.json file that tells it to do otherwise. The explanation by microsoft

dotnet looks for the file in the working directory (not necessarily the project or solution directory), and if it can't find one it starts searching upwards from there. documentation

An easy way to create a global.json file would be to run dotnet new globaljson --sdk-version 1.0.0-preview2-003133 in the directory of your project. create a global.json from the cli

Solution 3 - C#

When we install each dotnet core SDK on OS, the each project can use SDKs version separately. Because the SDK have global installation. We can configuration each project settings by create global.json via this command:

dotnet new globaljson

and finally selected the correct version.

The process for selecting an SDK version is:

  • dotnet searches for a global.json file iteratively reverse-navigating the path upward from the current working directory.
  • dotnet uses the SDK specified in the first global.json found.
  • dotnet uses the latest installed SDK if no global.json is found.

References: https://docs.microsoft.com/en-us/dotnet/core/tools/global-json?tabs=netcore3x#globaljson-and-the-net-core-cli

Step-by-Step: https://stackoverflow.com/a/42078060/14557383

Solution 4 - C#

If you want to create a new project using a specific version you can go to this directory 'C:\Program Files\dotnet\sdk' then add an underscore to newer version (all of them) of dotnet that you don't want (only the newer ones is enough) then create your project.

Image of the directory which has the dotnet versions.

Solution 5 - C#

You can check in global.json

Run the command dotnet --list-sdks

You will see the results

2.2.110 [C:\Program Files\dotnet\sdk] 5.0.103 [C:\Program Files\dotnet\sdk]

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionAvi KenjaleView Question on Stackoverflow
Solution 1 - C#SetView Answer on Stackoverflow
Solution 2 - C#AlenrosView Answer on Stackoverflow
Solution 3 - C#FaramarzView Answer on Stackoverflow
Solution 4 - C#EACUAMBAView Answer on Stackoverflow
Solution 5 - C#Manoj TyagiView Answer on Stackoverflow