Chris Gomez

Development topics for the indie programmer

ASP.NET 5 on Ubuntu Linux "from scratch"

[Now on GITHUB!  I've started a GitHub repo for automating the setup of ASP.NET across platforms.  It currently supports Ubuntu and CentOS flavors, but I plan to keep testing and updating, and include an automated setup for Windows]

[Update: The following is working with ASP.NET beta 6 and was tested on August 22, 2015.  I'll try to keep the post updated, but for one thing I have seen in Announcements for beta 7 that they are changing the dnx command syntax so that may need to be updated in the future.]

[Update: August 22, 2015: I was having problems with dnu restore. The script has been updated to add an environment variable to .bashrc to give Mono more threads per cpu, which made dnu restore much more reliable.]

I've been working at getting ASP.NET 5 running on Linux.  This post doesn't replace the great work of the documentation at the ASP.NET repos at github, or the great work of those working on the Yeoman generators for aspnet.  This merely stands on their shoulders.

I wanted a single script I could use to bootstrap a Linux VM.  After working at it and testing again and again for a few days, here is the script I've come up with for now:

install_aspnet.sh Gist on Github

This follows the instructions (essentially) for installing mono, libuv, and dnvm.  Then it installs node and yeoman (remember, I am basing this on a clean install of Ubuntu 14.04 LTS) and puts you just a few steps away from running an ASP.NET template.

How clean is that Ubuntu install?

My Ubuntu installation for this test is via VirtualBox 5.0.2.  The host is Windows Server 2012 R2.  I did accept the third party software and didn't skip anything during the installation.  I let the system get all the Software Updates.  Then I installed the VirtualBox Guest Additions just to make things smoother.  Finally, I installed Atom text editor from atom.io.

Getting the script

Method 1: Copy/Paste into Atom

If you enable the Shared Clipboard and at least Host to Guest (Bidrectional works too), I've opened the VM, opened atom and then copy and pasted the script home folder as install_aspnet5.sh.

Then I run:

bash install_aspnet5.sh

I had no interruptions other than needing to elevate for the sudo portions of the script right when it started.

Method 2: The one liner

Here, I copy the file down using wget (which seems to be preinstalled) and immediately run bash, but after authenticating for sudo elevation, I can walk away.

wget http://bit.ly/1U0reF6 --output-document=install_aspnet5.sh && bash install_aspnet5.sh


"How did this happen?" Q&A

1) Why not "sudo bash"?  Because the dnvm download in particular didn't really want to be installed as root.  I was much happier having that portion installed as my user.  Since the dnvm script updates .bashrc, if you download dnvm as root, you have trouble with the various utilities (dnvm, dnu, dnx) running in your user environment.

2) Why did you wget and then run via bash instead of piping curl output to bash?

A month ago, that sentence would have been meaningless to me.  I am not sure if it is truly literate or sounds like a first grader.  In any case, I really wanted to download and pipe the script to bash.  But what I found was, the script would halt after mono was installed.  I don't know why and I found that getting the file and then calling bash on it worked.  Why wget instead of curl?  No reason.  curl -L [url] > [filename] should work, too.


Script's Done

DNVM and the Mono environment won't be set up for you.  The shell will tell you it has no idea what dnvm is and you really need an environment variable set before you run dnu restore later.  The ASP.NET team's script adds dnvm to .bashrc, and after some reading, I decided to export the Mono environment variable there, too.  Let me know what you think about these choices.

You could always open a new shell but I found manually running:

source .bashrc

did what I wanted and I could continue on from here.

Now you take over

The script ends with mono, libuv, dnvm, node, yeoman, and the aspnet generators installed (along with dependencies).


You still need a version of aspnet to be installed (dnvm list shows none).  So:

dnvm install latest

After this was done, I still need to generate an ASP.NET 5 project using:

yo aspnet


So far I've tried the Console and WebApplicationBasic templates.  After one is created, it will give you a quick rundown of getting them running.  But for review:

First you need to cd to the folder you created the project in and restore NuGet packages:

dnu restore


Then finally, after all that I could run the Console application with (from beta 7 on, drop the period and use dnx run)

dnx . run


And I could run the WebApplicationBasic application with (from beta 7 on, drop the period and use dnx kestrel)

dnx . kestrel


Once the WebApplicationBasic template is running, point to http://localhost:5000 in your browser.

How does this work for you?  I greatly appreciate suggestions, as I'm coming over to Linux from a career spent in Windows.

Visual Studio 2015 is here! How’s ASP.NET 5 coming?

Visual Studio 2015 is RTM today and there was a live launch event.  Besides a typical keynote highlighting new features, there was also an in-depth feature about building a real application with the new Visual Studio.  Along the way there were tons of great interviews and tidbits of information.

I don’t want to forget everything I looked at today, so frankly this post is mostly about keeping track of all the links to look at over the next few weeks:

Recordings of the Release Event

https://channel9.msdn.com/Events/Visual-Studio/Visual-Studio-2015-Final-Release-Event

Page one is filled with sequential videos of the keynote and then on toward In The Code, the special feature I was mentioning earlier.  If you skip over the out-of-place Git Branches and Policies video that got placed first, you can relive the event by watching these videos.

But don’t stop there.  Page two and beyond have more short videos that expose new features of Visual Studio 2015.

Go Get Visual Studio 2015 now

https://www.visualstudio.com/

If you just want a free version, get Visual Studio Community.  It’s all the features of Visual Studio Professsional, except it’s free and you can use it on small teams or indie development.  Publish your first app, web site, game, or whatever.

ASP.NET 4.6 and .NET 4.6 RTM

ASP.NET 4.6 is finished and “in the box”.  This release is similar to past releases with some nice new incremental features for WebForms, MVC, Web API and so on.  Alongside is the .NET Framework 4.6.  If you’re a seasoned .NET developer, this will all seem like a familiar upgrade progression.  It works much the same as you remember.

Here’s a nice video describing the updates to Web Forms in ASP.NET 4.6:
https://channel9.msdn.com/Events/Visual-Studio/Connect-event-2014/812

Jeff Fritz blogged about ASP.NET 4.6 at the top of this post (that goes into general editor improvements and ASP.NET 5, too)

http://blogs.msdn.com/b/webdev/archive/2015/07/20/announcing-asp-net-4-6-and-asp-net-5-beta-5-in-visual-studio-2015-release.aspx

Okay, so how about ASP.NET 5?

As stated above, Jeff’s post talks about ASP.NET 5 beta 5 being “in the box” of Visual Studio 2015 RTM.  The most important thing to remember here is that ASP.NET 5 is NOT DONE.  I am truly concerned about this and definitely hope the word gets out before people get frustrated with ASP.NET 5 in this release.

But here are some links I want to look at that have to do with this release:

The ASP.NET 5 Roadmap – We have a good release schedule through the end of the year and we’re looking at a possible Q1 2016 release.

The biggest takeaway I got from all of this is SignalR will not be ready.  I’m a big fan of SignalR and I’ve got to dig in and see what we’re going to have and when.  Web Pages also won’t be ready.  I’ve always thought of Web Pages as a gem that is too often overlooked.  There are plenty of web sites that would work just fine just using Web Pages and not getting bogged down in MVC or something larger.

Now, what about stuff Jeff Fritz didn’t blog about?

In an effort not to just reblog here, I loved these videos on ASP.NET 5:

Up and Running with ASP.NET on Linux – Mark Rendle  - Entertaining and informative.  One thing it really brought home (unintentionally) is how the age of package managers makes us that much more dependent on being always online.
https://vimeo.com/131631887

Omnisharp: .NET sans Microsoft – Mathew McLoughlin – Nice look at using the other editors that are being supported in this really cool open source project (plus Visual Studio Code).  Makes you want to jump in and and help, doesn’t it?
https://vimeo.com/131199088

(Don’t forget to look at the OmniSharp site itself)

Migrating your API from Web API 2 to MVC 6 – Filip W – Awesome and insightful look at how it’s REALLY going to feel when you port a Web API over to MVC 6.
https://vimeo.com/131633175

Documentation

ASP.NET 5 documentation seems to be in a few places.  The team is trying out some different things and still supporting the usual places to find things.

ASP.NET 5 documentation on Read the Docs: http://docs.asp.net/en/latest/index.html

ASP.NET 5 on the ASP.NET site: http://www.asp.net/vnext/overview/aspnet-vnext.
Okay, so this isn’t really documentation, but there are some pages here that are documentation like posted by the teams tech writers such as:
Creating a Web API in MVC 6
View components and Inject in ASP.NET MVC 6

And then there’s stuff to read on the wiki in the GitHub repo too

https://github.com/aspnet/Home/wiki

ASP.NET Community Standup

And if you aren’t watching the (usually) weekly ASP.NET Community Standup, then WHY NOT?

ASP.NET Community Standup YouTube Playlist