Dotnet CLI is a command line interface used for working with .NET projects. It’s not something new in .NET world. It was established in 2015. Back then there was another try with DNX in 2013 – not very successful.
Why to bother CLI?
You do not need CLI if you work with .NET code only from perspective of Visual Studio. CLI is really needed if you want to setup build pipeline, because build agent does not have to have Visual Studio installed. But let’s not forget about .NET migrating from Windows to the world. From now on you can run it everywhere (far far away there are systems without *.exe files) and build it with notepad, VIM or emacs. And that’s when dotnet CLI comes in.
It’s also valuable in Windows – from time to time you may want to automate your job by running specific tests just before “git commit” or run the application simply, without knowing full “../bin/Debug/net461” location.
When working with dotnet CLI you can see that the solution file is no longer needed. Actually now it is fully based on solution folder containing necessary projects. If you want to build/run some project, you need to run “dotnet run <path/to/project/folder>”. It should build all dependencies as well. You can also run “dotnet restore” command in “solution” folder which should restore dependencies for all the projects inside. It’s very useful when creating new solutions. The only thing to do is preparing folder structure for the new solution and running “dotnet new” in each of them.
New dotnet CLI can be downloaded from here: https://github.com/dotnet/core/blob/master/release-notes/download-archive.md
While installing, I prefer to download *.zip package and extract it to my known place without affecting the whole system. Doing so remember about adding “dotnet” location to PATH or adding alias.
Finally you should be able to run the following commands:
# list all available project templates dotnet new # create new xunit test project dotnet new xunit # restore projects dependencies (can be run in solution folder) dotnet restore # build specific project (run without parameter when in project's folder) dotnet build .\src\project1 # run tests in project (run without parameter when in project's folder) dotnet test .\test\project1.Tests # add package to project dotnet add .\src\syncfiles\Syncfiles.csproj package Newtonsoft.Json # add project reference dotnet add .\test\Syncfiles.Tests\Syncfiles.Tests.csproj reference .\src\syncfiles\Syncfiles.csproj # create deployment package dotnet publish .\src\syncfiles
There is a list of commands we can use when working with .NET projects:
|new||Creates a new project, configuration file or solution based on the specified template|
|migrate||Migrates existing project from project.json to *.csproj version|
|restore||Restores dependencies of a project.|
|run||Runs the project. Alternative to running produced *.exe file in Windows. Unified way of running .NET project for all supporter operating systems. It runs “dotnet build” when needed.|
|build||Builds the project. It does not run “dotnet restore” automatically – you have to run it manually prior to building the project|
|test||Runs test project with specific test runner (restored with other dependencies). You don’t have to select anything.|
|publish||Packs the application and all of its dependencies into a folder getting it ready for publishing. Such folder can then be deployed to desired environment.|
|pack||Packs the code into a NuGet package.|
|clean||Cleans build outputs|
|sln||Add/remove projects in solution|
|add||Add project reference or package from nuget repository|
|remove||Remove project reference or package|
|list||List project dependencies|
|nuget||Publish package to nuget server or delete it|
|msbuild||Wrapper for msbuild.exe|
|vstest||Wrapper for vstest.console.exe|
|help||Shows help screen|