A lot has changed in the land of .NET Core since my last blog post.
For me, the best change is the .NET Core tooling. The command line interface (CLI) has really been greatly improved. I'd previously recommended yeoman to setup a new .NET Core project, but now for most scenarios I use the CLI.
The .NET Core CLI
The .NET Core CLI gives you a quick easy way to do things like:
- Start a new project (
- Restore package dependencies (
- Build your code (
- Run your code (
- Package your code for production hosting (
The CLI works across all platforms, so if you're doing dev work on Windows, Linux, or Mac all the commands should be the same. This is pretty cool.
I work with .NET Core almost exclusively through Visual Studio Code (VSCode), again this is cross platform. One thing I almost always forget is that there is a different command to add nuget packages.
In Visual Studio (not VSCode) you can use the Package Manager Console and
Install-Package. With the CLI you will use the
dotnet add package (details) command to add a package, and the
dotnet remove package (details) command to remove a package. The linked docs show how to add a package to a specific project if you're working in a multi-project solution.
dotnet new for starting up my new projects now. It has a good syntax that allows me to specify the folder to ouput the new project to (via the -o or --output option), and it also now takes a "template" to get you started more quickly. The templates that come pre-installed with the SDK are:
Templates Short Name Language Tags ---------------------------------------------------------------------- Console Application console [C#], F# Common/Console Class library classlib [C#], F# Common/Library Unit Test Project mstest [C#], F# Test/MSTest xUnit Test Project xunit [C#], F# Test/xUnit ASP.NET Core Empty web [C#] Web/Empty ASP.NET Core Web App mvc [C#], F# Web/MVC ASP.NET Core Web API webapi [C#] Web/WebAPI Solution File sln Solution
dotnet new command also provides more options to specify:
- The name of the project created
- The language to be used (C#/F#)
- Framework version
- Type of authentication
Non .NET Core CLI Bonus
If you've installed VSCode after you setup your new project you can enter
code . in your console window and you'll launch an instance of VSCode to your current working directory. This is pretty handy. This works for me on Windows 10, I'm assuming it will work on other platforms as well.
Building & Running
The .NET Core CLI provides a few commands for building and running your code. The first one you'll want to run is
dotnet restore to restore your Nuget dependencies.
After you've got all your packages restored you could run
dotnet build and then
dotnet run, but using
dotnet run by itself will also build your code (if it detects any changes) before running it. Assuming you're working with a webapi template, running the
dotnet run command you'll see output like this:
c:\core\hello-webapi>dotnet run Hosting environment: Production Content root path: c:\core\hello-webapi Now listening on: http://localhost:5000 Application started. Press Ctrl+C to shut down.
Building For Deployment
When I'm ready to put code on a server I'll run
dotnet publish, which packs the application and its dependencies into a folder for deployment. The publish command is useful to prep for deployment and other tasks like building a Dockerfile.
A typical publish command will look something like
dotnet publish --output dist --configuration release. In this example the publish command specifies the output location and configuration (debug/release) for the code.