Head over to the main .NET Core download page and pick up .NET Core 2.1 - Preview 1.
The SDK contains the tools you need to build and run apps with .NET Core and supports Mac, Windows, Ubuntu, Debian, Fedora, CentOS/Oracle, openSUSE, and we even have Docker images for Stretch, Alpine, and more. It's not your grandmother's Microsoft. ;)
Once you've installed it, from a prompt type "dotnet" and note a few new built-in switches:
C:\Users\scott> dotnet Usage: dotnet [options] Usage: dotnet [path-to-application] Options: -h|--help Display help. --version Display the current SDK version. --list-sdks Display the installed SDKs. --list-runtimes Display the installed runtimes. path-to-application: The path to an application .dll file to execute.
I'll run it again twice with --list-sdks and --list-runtimes:
C:\Users\scott> dotnet --list-sdks 2.1.300-preview1-008174 [C:\Program Files\dotnet\sdk] 2.1.4 [C:\Program Files\dotnet\sdk]
C:\Users\scott> dotnet --list-runtimes Microsoft.AspNetCore.All 2.1.0-preview1-final [C:\Program Files\dotnet\shared] Microsoft.AspNetCore.App 2.1.0-preview1-final [C:\Program Files\dotnet\shared] Microsoft.NETCore.App 2.0.5 [C:\Program Files\dotnet\shared] Microsoft.NETCore.App 2.1.0-preview1-26216-03 [C:\Program Files\dotnet\shared]
There's a few interesting things happening here. Youc an see before I had the runtime for .NET Core 2.0.5, and now I also have the 2.1.0 Preview.
It can also be a little confusing that the SDK and Runtime sometimes have different versions, similar to JREs and JDKs. Simply stated - the thing that builds sometimes updates while then thing that runs doesn't. So the .NET Core SDK and compilers might get fixes but the runtime doesn't. I'm told they're going to line things up better. You can read deeply on versioning if you like.
You'll also notice AspNetCore.App, which is a metapackage (package of packages) that's got less than All and helps you make smaller apps.
If you install a beta or preview you might be worried it'll mess stuff up. It won't.
You can type "dotnet new globaljson" and make a file that looks like this! Then "pin" the SDK version you want to use:
{ "sdk": { "version": "2.1.300-preview1-008174" } }
I'll change this to .NET Core's older SDK and try building the .NET Core based Gameboy Emulator in my last post. It's amazing.
Let's see how fast it builds today on .NET 2.0:
C:\github\Retro.Net> Measure-Command { dotnet build } Milliseconds : 586 Ticks : 65864065 TotalSeconds : 6.5864065 TotalMilliseconds : 6586.4065
Ok, about 6.5 seconds on my Surface.
Let's make the SDK version the new .NET Core 2.1 Preview 1 - it has a bunch of build speed improvements.
All I have to do is change the global.json file. Update the sdk version in the global.json and type "dotnet --version" to see that it took.
I can have as many .NET Core SDKs as I like on my machine and I can control what SDK versions are being used on a tree by tree basis. That means you CAN download .NET Core 2.1 and not mess things up if you're paying attention.
C:\github\Retro.Net> Measure-Command { dotnet build } Milliseconds : 727 Ticks : 27270864 TotalSeconds : 2.7270864 TotalMilliseconds : 2727.0864
Hey it's less than 3 seconds. 2.7 in fact! More than twice as fast.
The bigger the app, the faster incremental builds should be. In some cases we will see (by release) 10x improvements.
It's quick to install (and quick to uninstall) and you can control the SDK version (list them with "dotnet --list-sdks") with the global.json.
Please go download the preview and let me know either on Twitter or in the comments what your before and after build times are!
Sponsor: Unleash a faster Python! Supercharge your applications performance on future forward Intel platforms with The Intel Distribution for Python. Available for Windows, Linux, and macOS. Get the Intel® Distribution for Python Now!
© 2017 Scott Hanselman. All rights reserved.