In part 1, we set up TFS.
In part 2, we configured our Linux build agent.
Now in part 3, we'll be setting up DNX (the .NET Execution Environment) for Linux. Since DNX/ ASP .NET 5 is still in development, we'll be going against the latest dev branch for extra fun. You can find more details on the ASPNET GitHub page.
First up, we need to install Mono, the open-source CLR and BCL implementation.
Run the following commands to get that process started.
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF
echo "deb http://download.mono-project.com/repo/debian wheezy main" | sudo tee /etc/apt/sources.list.d/mono-xamarin.list
sudo apt-get update
sudo apt-get install mono-complete
As always, answer any prompts that come up with "yes", and wait patiently. Installing Mono takes a while!
When it's done, run mono --version
If everything is okay, you'll see this:
Mono JIT compiler version 4.0.3 (Stable 4.0.3.20/d6946b4 Tue Aug 4 09:43:57 UTC 2015)
Copyright (C) 2002-2014 Novell, Inc, Xamarin Inc and Contributors. www.mono-project.com
TLS: __thread
SIGSEGV: altstack
Notifications: epoll
Architecture: amd64
Disabled: none
Misc: softdebug
LLVM: supported, not enabled.
GC: sgen
Now we can install DNVM/DNX.
sudo apt-get install unzip
curl -sSL https://raw.githubusercontent.com/aspnet/Home/dev/dnvminstall.sh | DNX_BRANCH=dev sh && source ~/.dnx/dnvm/dnvm.sh
Run those commands, answer "yes" to any prompts, and when they're complete, run the
dnvm
command to test that everything is installed:
___ _ ___ ____ ___
/ _ \/ |/ / | / / |/ /
/ // / /| |/ / /|_/ /
/____/_/|_/ |___/_/ /_/
.NET Version Manager - Version 1.0.0-beta7-10410DNVM can be used to download versions of the .NET Execution Environment and mana ge which version you are using.
You can control the URL of the stable and unstable channel by setting the DNX_FE ED and DNX_UNSTABLE_FEED variables.
Current feed settings:
Default Stable: https://www.nuget.org/api/v2
Default Unstable: https://www.myget.org/F/aspnetvnext/api/v2
Current Stable Override:
Current Unstable Override:
Use dnvm [help|-h|-help|--help] to display help text.
Then, we need to make sure we have the most recent DNX, so run dnvm upgrade -u
You'll see text along these lines:
Determining latest version
Latest version is 1.0.0-beta7-12340
Downloading dnx-mono.1.0.0-beta7-12340 from https://www.myget.org/F/aspnetvnext/api/v2
Download: https://www.myget.org/F/aspnetvnext/api/v2/package/dnx-mono/1.0.0-beta7-12340
######################################################################## 100.0%
Installing to /home/ictfs-admin/.dnx/runtimes/dnx-mono.1.0.0-beta7-12340
Adding /home/ictfs-admin/.dnx/runtimes/dnx-mono.1.0.0-beta7-12340/bin to process PATH
Setting alias 'default' to 'dnx-mono.1.0.0-beta7-12340'
Make a note of that path -- you'll need it later.
We also need to add a package source to our NuGet.Config, so modify ~/.config/NuGet/NuGet.Config:
sudo nano ~/.config/NuGet/NuGet.Config
Copy and paste this config into that file and save it. It's okay if the file is empty right now!
Now, a few more prerequisites. We have to install Libuv in order to test that DNX is working properly, so run these commands:
sudo apt-get install automake libtool curl
Answer "yes" to any prompts.
Then run:
curl -sSL https://github.com/libuv/libuv/archive/v1.4.2.tar.gz | sudo tar zxfv - -C /usr/local/src
cd /usr/local/src/libuv-1.4.2
sudo sh autogen.sh
sudo ./configure
sudo make
sudo make install
sudo rm -rf /usr/local/src/libuv-1.4.2 && cd ~/
sudo ldconfig
Finally, we need Git so that we can clone the ASPNET repo with the sample projects in it.
sudo apt-get install git
Answer "yes" to any prompts.
Now we can clone the repo with the sample code in it:
cd ~
git clone https://github.com/aspnet/Home.git
Navigate into the cloned repo:
cd Home/samples/latest/HelloWeb
Run the DNU utility to restore the missing NuGet packages. There are some performance issues with this, so first run
export MONO_THREADS_PER_CPU=2000
then
dnu restore
If you get an error at this step, run
sudo service unscd stop
, then rerun
dnu restore
You may also get some errors about missing packages. This is a development repo, so stuff is in a state of flux. When I was writing this blog, I had to open up project.json and add two dependencies:
"Microsoft.CodeAnalysis.CSharp": "1.0.0-*",
"System.Reflection.Metadata": "1.0.0-*"
and rerun the package restore.
Once the restore is done successfully, we can test that everything is installed and working properly by running
dnx kestrel
You should see
Application started. Press Ctrl+C to shut down.
You should be able to open up a browser and navigate to http://yourbuildserver:5004/ and see the ASP .NET welcome page.
Okay, you're done! Your environment is correctly configured to build ASP .NET 5 applications using DNX!
In our last blog post, we'll create a new TFS build definition that will build and package up this application for deployment!