boom, headshotHello / Blog / First experience with .NET Core 1.0.

Microsoft recently released the 1.0 version of their cross-platform implementation of .NET. So far I’ve only played with the samples and test apps they provide, but I really like what I see. I do have some exposure to C# and .NET in general so it isn’t completely foreign but there are still a few things to get used to (mainly due to the fact this is the first time we’ve seen native .NET support for OSX/Linux). Well, second, if we count Mono but I don’t and I’m not sure how it compares to this. I’ll break my comments down into 3 sections: the good, the bad, and the ugly.

The Good

  • Setting up super basic MVC site is straightforward and easy, though it uses Symfony-style annotations for routing by default and I don’t like that at all. Not a big deal as this is totally configurable.
  • Debug/info messages printed in the console are actually useful. Looking forward to seeing if that stays true while doing something more complicated than running a demo.
  • There is a large community making really good contributions and MS is taking their suggestions. This, more than anything else MS is doing, shows me that this is a new MS.
  • Brings C# and a lot of the tools and APIs that are genuinely attractive outside the Microsoft world. I don’t want to run Visual Studio, Windows and all that other stuff to work with C#. I just want to code, and this lets me do that using tools and paradigms that I am familiar with.

The Bad

  • Error messages are obtuse and are 99% stack trace, 1% useful message. Not sure how this would help you diagnose an issue, considering it traverses through all the .NET Core stuff too (not just your app code). Then again, that is how most languages do it I guess.
  • No create model/view/controller commands (like rails generate X). Admittedly this is a design paradigm from the Linux world and I don’t expect MS to fully support stuff like this on a 1.0 product, but it would be really nice.
  • No dotnet manpage, again not a deal breaker but would be nice for devs used to *nix.
  • Some configuration files are XML, some are JSON. I heard this was an issue earlier on in the betas but it seems like they haven’t really fixed it.

The Ugly

  • Everything relies on NuGet. If you can’t connect to NuGet for any reason, everything breaks. No running, no restoring, no making new projects (from the command line, anyways). Never seen a framework that relies so heavily on a package manager before, very unusual design decision.
    • Nuget is actually broken by hosts, which I use for adblocking. Took a while to sort out, but the CDN MS uses for api.nuget.org is in there, causing all requests to fail.
  • No way to connect to a MySQL database unless you want to pay for a 3rd party wrapper. I’d include this in “The Bad” but you have to pay for it and that is just insane for the non-Windows world. A native implementation is apparently coming but is not available as of 1.0. Outside of Postgres I don’t even know what DB you’d use on Linux/OSX.