A half year ago, I decided that Microsoft opening up to Linux with .NET Core, was the perfect opportunity for me to also try to embrace Linux again.
I concluded that if I was going to spend effort on a learning curve, why not put that effort towards expanding my toolbox by trying existing platforms in Linux, instead of just sticking to .NET in another environment.
Unfortunately so far, I have not spend enough effort and willpower yet to cut the Microsoft umbilical cord and climb the unavoidable learning curve of new (for me) platforms.
So for now I ended up dabbling with ASP.NET Core on Ubuntu, for some dead-end pet projects 🙂
Ubuntu to Heroku
Heroku supports Linux technologies and .NET Core runs on Linux, so should be easy. They have a concept of buildpacks to compile your app. .NET Core is obviously not officially supported yet, since even the tooling on Windows is still in preview (sidenote: I don’t think .NET Core 1.0 tooling will ever go passed preview, after reading this, until .NET Core “1.2” when .csproj is back)
There is an experimental ASP.NET 5 buildpack, but it uses an older version of .NET Core (when ASP.NET Core was still called ASP.NET 5). I could not get Heroku to detect my application language.
I needed too much knowledge of the .NET Core internals to troubleshoot the problem and lacked enough Heroku experience, to see any fun in continuing with this.
Ubuntu to Azure App Services
So ditching Microsoft development tooling and hosting environment completely, was too big of a bite.
So I tried sticking to Microsoft hosting, with Azure App Services which supports ASP.NET Core.
Too my disappointment, without Visual Studio, it’s a poor experience.
You can publish with a click from inside Visual Studio, you can continuously deploy from GitHub, and so on. But only if your app comes with a Visual Studio project. Because all those deployment options are build via MSBuild on Azure, which looks for a Visual Studio solution or project to perform its job.
The only deployment option without requiring Visual Studio, is deploying via FTP.
Deploys via FTP cannot be rolled back like the other options. I had to write my own script, to put up an app_offline.htm. Then optimize to only upload differences. The FTP upload regularly fails, because files are in use. Pff.
Getting something on Azure App Services, should be the cloud service experience where you put something up in minutes. This was not it.
I expected .NET Core on Linux would be a smooth introduction to developing on Linux.
The poor experience and guidance, made me wonder if this will really take off.
In the meantime, I should really pick an existing choice on Linux instead of wasting spare time in 1.0 versions and preview tooling.