Switch between dotnet core SDK versions
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 the3.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.
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
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 aglobal.json
file iteratively reverse-navigating the path upward from the current working directory. -
dotnet
uses the SDK specified in the firstglobal.json
found. -
dotnet
uses the latest installed SDK if noglobal.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