These last days i have been trying out .NET development on my MacBook, not using Mono but .NET Core. Here's a short summary on what .NET Core is:
.NET Core is a modular version of the .NET Framework designed to be portable across platforms for maximum code reuse and code sharing. In addition, .NET Core will be open-sourced and accept contributions from the community.
This means Microsoft supported cross-platform .NET development. Microsoft has also released a new editor, Visual Studio Code which together with with OmniSharp supports IntelliSense, continuous building, and refactoring.
One cool thing about .NET Core is the modularity of the framwork, which means that you only pull in the parts of the .NET Core framework you need. Before when using the full .NET Framework the user was required to download the full .NET Framework, even if the user only needed 10% of it.
To pull in some libraries you run
$ dnu install System.Data.Common for example, which will download and install
System.Data.Common. Also, no more
.csproj files, instead a
project.json file has been introduced, which from the file-extension one can see is the human readable JSON format. In this
project.json file the project's dependencies, along with some other metadata, are defined. If you download the source code for a .NET Core project which depends on some third-party library, you can just run
$ dnu restore to download that library. Extremely simple.
A lot of stuff libraries are unfortunately broken in Core CLR due to it missing big chunks compared to the full .NET framework on which libraries depend. Most hurting is the fact that
System.Data is missing, which means that you cannot use any third-party library which depends on
System.Data. Which is pretty much all database drivers. So, at the moment, no
DbConnection for you.
What does work on the other hand, is ASP.NET 5 and to my excitement, Nancy. These webapps can be hosted using Kestrel by running
dnx . kestrel. It is amazing how fast the open-sourcing of .NET have moved.
You can find installation instructions for Core CLR on OS X here.