Does the Razor View Engine work for Mono?

I tried searching a bit and didn’t find an answer. Does the Razor View Engine work in Mono?


Thank you for visiting the Q&A section on Magenaut. Please note that all the answers may not help you solve the issue immediately. So please treat them as advisements. If you found the post helpful (or not), leave a comment & I’ll get back to you as soon as possible.

Method 1

Yes, it does. I have it working with mono on Linux.

You need mono 2.10.2+ from the stable sources from

Then, you need to localcopy these assemblies into your app’s bin directory (you take them from Visual Studio on Windows):


Then, you might have to get rid of the following errors you might have made like this:

Error: Storage scopes cannot be created when _AppStart is executing.
Cause: Microsoft.Web.Infrastructure.dll was localcopied to the bin
Resolution: Delete Microsoft.Web.Infrastructure.dll and use the mono

Error: Invalid IL code in System.Web.Handlers.ScriptModule:.ctor ():
method body is empty.
Cause: System.Web.Extensions.dll somehow gets localcopied to the bin
Resolution: Delete System.Web.Extensions.dll and use the mono version.

Error: The classes in the module cannot be loaded. Description: HTTP
500. Error processing request.
Cause: System.Web.WebPages.Administration.dll was localcopied to the bin
Resolution: Delete System.Web.WebPages.Administration.dll and unreference it

Error: Could not load type
‘System.Web.WebPages.Razor.RazorBuildProvider’ from assembly
‘System.Web.WebPages.Razor, Version=, Culture=neutral,
PublicKeyToken=31bf3856ad364e35’. Description: HTTP 500. Error
processing request.
Cause: System.Web.Razor.dll is corrupt or missing (or x64 instead of x32 or vice-versa)
Resolution: Get an uncorrupted version of System.Web.Razor.dll and
localcopy to the bin directory

As of mono 2.12 / MonoDevelop 2.8, all of this is not necessary anymore.

Note that on 2.10 (Ubuntu 11.10), one needs to localcopy System.Web.DynamicData.dll as well, or else you get an error that only occurs on App_Start (if you don’t do that, you get a YSOD the first time you call a page, but ONLY the first time, because only then App_Start is called.).

for mono 3.0+ with ASP.NET MVC4:
There is a “bug” in the install script.
Or rather an incompleteness.

mod-mono, fastcgi-mono-server4 and xsp4 won’t work correctly.
For example: fastcgi-mono-server4 gives you this debug output:

[error] 3384#0: *101 upstream sent unexpected FastCGI record: 3 while reading response header from upstream, client:, server: localhost, request: "GET / HTTP/1.1", upstream: "fastcgi://", host: "localhost:8000"

This is, because after the installation of mono3, it uses framework 4.5, but xsp, fastcgi-mono-server4 and mod-mono are not in the 4.5 GAC, only the 4.0 gac.
To fix this, use this bash script:

# Your mono directory


cd $PREFIX/lib/mono/4.0

for file in "${FILES[@]}"
   cp "$file.exe" ../4.5

cd $PREFIX/bin

for file in "${FILES[@]}"
  sed -ie 's|mono/4.0|mono/4.5|g' $file

And if you use it via FastCGI (e.g. nginx), you also need this fix for TransmitFile for the chuncked_encoding bug
Why do I have unwanted extra bytes at the beginning of image? (fixed in mono 3.2.3)

You can get the .debs for 3.x from here:
or compile them yourselfs from github
Installing Mono 3.x in Ubuntu/Debian
or like this from the stable sources


You can now use the Xamarin provided packages

sudo apt-key adv --keyserver hkp:// --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF
echo "deb wheezy main" | sudo tee /etc/apt/sources.list.d/mono-xamarin.list
sudo apt-get update

If you need the vary latest features, you can also fetch the CI packages (nightly builds, so to say), if you need the latest (or almost latest) version
sudo apt-key adv --keyserver hkp:// --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF
echo "deb sid main" | sudo tee /etc/apt/sources.list.d/mono-jenkins.list
sudo apt-get update

Method 2

Not yet.

Method 3

My guess is that you’ll need to wait for the release of MVC3 (when it becomes open-source) before that can be answered perfectly.

I’m sure the Mono team will make it work, though.

Method 4

Mono 2.10 onwards fully supports MVC3 and Razor, albeit the Mono Project cannot currently ship Mono with an open-source implementation of the MVC3/Razor stack included (in the same way as MVC1 and MVC2 are included) just yet.

From the Release Notes:

Although ASP.NET MVC3 is open source
and licensed under the terms of the
MS-PL license, it takes a few
dependencies on new libraries that are
not open source nor are they part of
the Microsoft.NET Framework.

At this point we do not have open
source implementations of those
libraries, so we can not ship the full
ASP.NET MVC3 stack with Mono (We still
ship ASP.NET MVC 1 and MVC 2 with Mono
for your deployment enjoyment).

This Mono release however has enough
bug fixes and patches that you will be
able to run ASP.NET MVC3 sites with

Method 5

It looks like we’re getting there:

Looks like it isn’t in any of the published versions yet, but you can run it from source control.

All methods was sourced from or, is licensed under cc by-sa 2.5, cc by-sa 3.0 and cc by-sa 4.0

0 0 votes
Article Rating
Notify of

Inline Feedbacks
View all comments
Would love your thoughts, please comment.x