2010-11-21 17 views
50

Ich habe versucht, ein wenig zu suchen und habe keine Antwort gefunden. Funktioniert die Razor View Engine in Mono?Funktioniert die Razor View Engine für Mono?

+0

Irgendwelche Vorschläge über [diese] müssen (http://stackoverflow.com/questions/30497900/how-to- use-rasiermesser-in-asp-net-mvc-5-mono)? – xameeramir

Antwort

62

Ja, es tut. Ich arbeite mit Mono unter Linux.

Sie mono benötigen 2.10.2+ aus den stabilen Quellen von
http://ftp.novell.com/pub/mono/sources-stable/
http://download.mono-project.com/sources/mono/

Dann müssen Sie diese Baugruppen in Ihrer App-Verzeichnis bin localcopy (Sie nehmen sie von Visual Studio unter Windows):

System.Web.Mvc.dll
System.Web.Razor.dll
System.Web.WebPages.dll
System.Web.WebPages.Deployment.dll
System.Web.WebPages.Razor.dll

Dann können Sie der folgenden Fehler loswerden müssen Sie so gemacht haben könnte:

Fehler: Speicherbereiche können nicht erstellt werden, wenn _AppStart ausgeführt wird.
Ursache: Microsoft.Web.Infrastructure.dll wurde lokal in den Ordner Verzeichnis kopiert.
Auflösung: Löschen Sie Microsoft.Web.Infrastructure.dll und verwenden Sie die Mono Version. Fehler: Ungültiger IL-Code in System.Web.Handlers.ScriptModule: .ctor(): Methodenkörper ist leer.
Ursache: System.Web.Extensions.dll wird irgendwie lokal in das Verzeichnis Verzeichnis kopiert.
Auflösung: Löschen Sie System.Web.Extensions.dll und verwenden Sie die Mono-Version.

Fehler: Die Klassen im Modul können nicht geladen werden. Beschreibung: HTTP 500. Fehler bei der Verarbeitungsanforderung.
Ursache: System.Web.WebPages.Administration.dll wurde lokal in den Ordner Verzeichnis kopiert.
Auflösung: Löschen System.Web.WebPages.Administration.dll und Nichtbezugs es


Fehler: Typ konnte nicht
'System.Web.WebPages.Razor.RazorBuildProvider' aus Assembly ‚System laden. Web.WebPages.Razor, Version = 1.0.0.0, Kultur = neutral, PublicKeyToken = 31bf3856ad364e35 '. Beschreibung: HTTP 500. Fehler Verarbeitungsanforderung.
Ursache: System.Web.Razor.dll ist beschädigt oder (oder x64 statt x32 oder umgekehrt) fehlt ...
Auflösung: eine uncorrupted Version von System.Web.Razor.dll Erhalten und localcopy in das Verzeichnis bin

bearbeiten
Ab Mono 2.12/MonoDevelop 2.8, all dies ist nicht mehr notwendig.

Beachten Sie, dass Sie auf 2.10 (Ubuntu 11.10) auch System.Web.DynamicData.dll lokalkopieren müssen, sonst erhalten Sie einen Fehler, der nur bei App_Start auftritt (wenn Sie dies nicht tun, erhalten Sie beim ersten Anruf ein YSOD) eine Seite, aber NUR das erste Mal, weil nur dann App_Start aufgerufen wird.).

Hinweis
für mono 3.0+ mit ASP.NET MVC4: Es gibt ein "Bug" im Skript installieren. Oder eher eine Unvollständigkeit.

mod-mono, fastcgi-mono-server4 und xsp4 werden nicht korrekt funktionieren.
Zum Beispiel: FastCGI-Mono-server4 gibt Ihnen diese Debug-Ausgabe:

[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" 

Dies ist, weil nach der Installation von Mono3, verwendet es Rahmen 4.5, aber xsp, FastCGI-Mono-server4 und mod-mono sind nicht in der 4.5 GAC, nur die 4.0 gac.
Um dies zu beheben, verwenden Sie dieses Bash-Skript:

#!/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 

Und wenn Sie es über FastCGI (zB nginx), müssen Sie auch dieses Update für TransmitFile für die chuncked_encoding Fehler
Why do I have unwanted extra bytes at the beginning of image? (in Mono 3.2 fixiert. 3)

PS:
Sie können die .debs 3 erhalten.x von hier:
https://www.meebey.net/posts/mono_3.0_preview_debian_ubuntu_packages/ oder sie yourselfs von Github Installing Mono 3.x in Ubuntu/Debian oder wie dies aus den stabilen Quellen http://ubuntuforums.org/showthread.php?t=1591370


Sie können nun die 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 
verwenden kompilieren

Wenn Sie die Variante spät benötigen st verfügt, können Sie auch die CI packages (nightly builds, so to say) holen, wenn Sie die neueste (oder fast letzte) Version

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 
+0

Ich kann keine x64 oder x86 (x32 wie du schreibst) Versionen finden. Ich glaube nicht, dass es wirklich einen gibt. Obwohl ich für ein paar Minuten den gleichen Fehler habe, ist es plötzlich verschwunden und ich kann nicht herausfinden, warum :( – Adaptabi

+0

@DotNetWise: Du bist genau da. Ich konnte die Rasierklinge zuerst nicht finden, Also habe ich es von der MSIL GAC auf x64 genommen, es funktionierte nicht, ich konnte es zunächst nicht auf mono referenzieren, und ich dachte es könnte 32/64 Bit Probleme verursachen, es war wahrscheinlich wegen Abstürzen korrupt , aber es ist strage funktioniert es richtig auf Windows dann. Aber etwas ist definitiv fischig über System.Web.Razor.dll. –

+1

Sie sind ein Champion - ich hatte den Fehler mit Storage Scopes für eine Weile, fand dies und es Danke –

3

Meine Vermutung ist, dass Sie auf die Veröffentlichung von MVC3 warten müssen (wenn es Open-Source wird), bevor das perfekt beantwortet werden kann.

Ich bin mir sicher, dass das Mono-Team es funktionieren wird.

3

Mono 2.10 unterstützt MVC3 und Razor vollständig, obwohl das Mono-Projekt derzeit Mono nicht mit einer Open-Source-Implementierung des MVC3/Razor-Stacks (wie MVC1 und MVC2) enthalten kann.

Vom 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 it.

Verwandte Themen