Search code examples
c#linuxmonoxsp

How to run .NET 4.5 on XSP using Mono?


I have installed Mono 3 however when I run xsp or xsp4 it shows that I'm using .NET 4.0. I need to have .NET 4.5. Is it possible? Where can I configure it?

I've seen this page but I don't have any of those folders where I downloaded sources.

This is what it shows when I enter website by running xsp4:

Version Information: 3.2.7 (master/1eef047 C nov 28 18:16:30 EET 2013); ASP.NET Version: 4.0.30319.17020

How I installed Mono and XSP

Firstly I downloaded Lubuntu 13.10 32bit and launched it inside VirtualBox. Then did apt-get update and apt-get upgrade. After that rebooted the system.

Make sure all commands are executed as super user.

sudo -s

Got dependencies

apt-get install autoconf automake libtool g++ gettext libglib2.0-dev libpng12-dev libfontconfig1-dev mono-gmcs git

Downloaded sources of Mono and XSP

cd /opt
git clone git://github.com/mono/mono.git
git clone git://github.com/mono/xsp.git

Installed latest stable Mono from github

cd /opt/mono
./autogen.sh --prefix=/usr
make
make install

Installed latest stable XSP from github

cd /opt/xsp
./autogen.sh --prefix=/usr
make
make install

Tested that I have 4.0 running on XSP instead of 4.5

cd /home/pc/web
xsp4 # 4.0
xsp2 # 2.0
xsp  # 2.0

My configuration

/usr/bin/xsp4 looks like it should use 4.5. Just like this answer suggested. Also, I don't have xsp4.exe in my /usr/lib/mono/4.0/ only in /usr/lib/mono/4.5/ so I cannot copy anything like suggested in that answer.

#!/bin/sh
exec /usr/bin/mono $MONO_OPTIONS "/usr/lib/mono/4.5/xsp4.exe" "$@"

Solution

  • You say "I don't have any of those folders where I downloaded sources" referring to /opt/mono/bin/xsp4. But you're confusing things, and I know it because you shared how you installed mono.

    /opt/mono should not be the place where you clone the mono repository to compile it. You should clone it somewhere else like your home folder. I.e.: /home/username/code/mono.

    /opt/mono is where usually people install a custom version of mono. The way they do it is passing this path to the --prefix argument. But you're passing /usr as the prefix argument! So then you're installing it to a different location compared to the SO answer that you point out.

    Also, it is not recommended that you do ALL those operations as a superuser. You normally compile code without root privileges, and you only need sudo for the install phase. So don't do "sudo -s" before everything. Just compile, and when you're done, do sudo make install. This will also make you have binaries that are not owned by root.