是的.我在Linux上使用mono.
You need mono 2.10.2+ from the stable sources from
http://ftp.novell.com/pub/mono/sources-stable/
http://download.mono-project.com/sources/mono/
然后,您需要将这些程序集本地复制到应用程序的bin目录中(从Windows上的Visual Studio获取):
System.Web.Mvc.dll
System.Web.Razor.dll
System.Web.WebPages.dll
System.Web.WebPages.Deployment.dll
System.Web.WebPages.Razor.dll
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
directory.
Resolution: Delete Microsoft.Web.Infrastructure.dll and use the mono
version.
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
directory.
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
directory.
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=1.0.0.0, 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
Edit
As of mono 2.12 / MonoDevelop 2.8, all of this is not necessary anymore.
请注意,在2.10(Ubuntu11.10)上,你也需要本地复制System.Web.DynamicData.dll
,否则你会得到一个只在App_Start上发生的错误(如果你不这样做,你会在第一次调用页面时得到一个YSOD,但只有在第一次,因为只有在那时App_Start才被调用).
Note
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: 127.0.0.1, server: localhost, request: "GET / HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000", 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:
#!/bin/bash
# Your mono directory
#PREFIX=/usr
PREFIX=/opt/mono/3.0.3
FILES=('mod-mono-server4'
'fastcgi-mono-server4'
'xsp4')
cd $PREFIX/lib/mono/4.0
for file in "${FILES[@]}"
do
cp "$file.exe" ../4.5
done
cd $PREFIX/bin
for file in "${FILES[@]}"
do
sed -ie 's|mono/4.0|mono/4.5|g' $file
done
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)
PS:
You can get the .debs for 3.x from here:
https://www.meebey.net/posts/mono_3.0_preview_debian_ubuntu_packages/
or compile them yourselfs from github
Installing Mono 3.x in Ubuntu/Debian
or like this from the stable sources
http://ubuntuforums.org/showthread.php?t=1591370
2015
你现在可以使用Xamarin provided packages
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --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
如果你需要不同的最新功能,如果你需要最新(或几乎最新)的版本,你也可以获取CI packages (nightly builds, so to say)
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF
echo "deb http://jenkins.mono-project.com/repo/debian sid main" | sudo tee /etc/apt/sources.list.d/mono-jenkins.list
sudo apt-get update