This should be a pretty short post, just to outline using .NET core on Linux/Ubuntu server via Docker.
We could look to install .NET core via apt-get, but I’ve found it so much simpler running up a Docker container with .NET core already implemented in, so let’s do that.
First up, we run
docker run -it microsoft/dotnet:latest
This is an official Microsoft owned container. The use of :latest means we should get the latest version each time we run this command. The -it switch switches us straight into the Docker instance when it’s started, I/e/ into bash.
Now this is great if you’re happy to lose any code within the Docker image when it’s removed, but if you want to link into your hosts file system it’s better to run
docker run -it -v /home/putridparrot/dev:/development microsoft/dotnet:latest
Where /home/putridparrot/dev on the left of the colon, is a folder on your host/server filesystem and maps to a folder inside the Docker instance which will be named development (i.e. it acts like a link/shortcut).
Now when you are within the Docker instance you can save files to the host (and vice/versa) and they’ll persist beyond the life of the Docker instance and also allow us a simply means of copying files from, say a Windows machine into the instance of dotnet on the Linux server.
And that literally is that.
But let’s write some code and run it to prove everything is working.
To be honest, you should go and look at Install for Windows (or one of the installs for Linux or Mac) as I’m pretty much going to recreate the documentation on running dotnet from these pages
To run the .NET core framework, this includes compiling code, we use the command
dotnet
Before we get going, .NET core is very much a preview/RC release, so this is the version I’m currently using (there’s no guarantee this will work the same way in a production release), running
dotnet --version
we get version 1.0.0-preview2-003131.
Let’s create the standard first application
Now, navigate to home and then make a directory for some source code
cd /home mkdir HelloWorld cd /HelloWorld
yes, we’re going to write the usual, Hello World application, but that’s simply because the dotnet command has a built in “new project” which generates this for us. So run
dotnet new
This creates two files, Program.cs looks like this
using System; namespace ConsoleApplication { public class Program { public static void Main(string[] args) { Console.WriteLine("Hello World!"); } } }
nothing particularly interesting here, i.e. its a standard Hello World implementation.
However a second file is created (which is a little more interesting), the project.json, which looks like this
{ "version": "1.0.0-*", "buildOptions": { "debugType": "portable", "emitEntryPoint": true }, "dependencies": {}, "frameworks": { "netcoreapp1.0": { "dependencies": { "Microsoft.NETCore.App": { "type": "platform", "version": "1.0.1" } }, "imports": "dnxcore50" } } }
Now, we need to run the following from the same folder as the project (as it will use the project.json file)
dotnet restore
this will restore any packages required for the project to build. To build and run the program we use
dotnet run
What are the dotnet cmd options
Obviously you can run dotnet –help and find these out yourself, but just to give a quick overview, this is what you’ll see as a list of commands
Common Commands: new Initialize a basic .NET project restore Restore dependencies specified in the .NET project build Builds a .NET project publish Publishes a .NET project for deployment (including the runtime) run Compiles and immediately executes a .NET project test Runs unit tests using the test runner specified in the project pack Creates a NuGet package
.NET Core in Visual Studio 2015
Visual Studio (2015) offers three .NET core specific project templates, Class Library, Console application and ASP.NET Core.
References
https://docs.microsoft.com/en-us/dotnet/articles/core/tutorials/using-with-xplat-cli
https://docs.asp.net/en/latest/getting-started.html
https://docs.microsoft.com/en-us/dotnet/articles/core/tools/project-json