2010-11-21 16 views
50

Ho provato a cercare un po 'e non ho trovato risposta. Il Razor View Engine funziona in mono?Il Razor View Engine funziona con Mono?

+0

Eventuali suggerimenti su [questo] (http://stackoverflow.com/questions/30497900/how-to- utilizzare rasoio-in-asp-net-mvc-5-mono)? – xameeramir

risposta

62

Sì, lo fa. Ho lavorato con mono su Linux.

È necessario mono 2.10.2+ dalle fonti stabili da
http://ftp.novell.com/pub/mono/sources-stable/
http://download.mono-project.com/sources/mono/

Quindi, è necessario localcopy queste assemblee nella directory bin della tua app (la loro assunzione da Visual Studio in Windows):

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

Quindi, potrebbe essere necessario sbarazzarsi dei seguenti errori si potrebbe avere reso in questo modo:

Errore: impossibile creare ambiti di archiviazione quando _AppStart è in esecuzione.
Causa: Microsoft.Web.Infrastructure.dll era localcopied nella directory bin .
Risoluzione: eliminare Microsoft.Web.Infrastructure.dll e utilizzare la versione mono.

Errore: codice IL non valido in System.Web.Handlers.ScriptModule: .ctor(): il corpo del metodo è vuoto.
Causa: System.Web.Extensions.dll in qualche modo viene localcopied nella directory bin .
Risoluzione: eliminare System.Web.Extensions.dll e utilizzare la versione mono.


Errore: impossibile caricare le classi nel modulo. Descrizione: HTTP 500. Errore durante l'elaborazione della richiesta.
Causa: System.Web.WebPages.Administration.dll era localcopied nella directory bin .
Risoluzione: Elimina System.Web.WebPages.Administration.dll e unreference si


Errore: Impossibile caricare il tipo
'System.Web.WebPages.Razor.RazorBuildProvider' dal montaggio 'Sistema. Web.WebPages.Razor, Version = 1.0.0.0, Culture = neutral, PublicKeyToken = 31bf3856ad364e35 '. Descrizione: HTTP 500. Errore nella richiesta di elaborazione .
Causa: System.Web.Razor.dll è danneggiato o mancante (o x64 anziché x32 o viceversa) ...
Risoluzione: Ottenere una versione non danneggiata di System.Web.Razor.dll e localcopy alla directory bin

Modifica
a partire dal mono 2.12/MonoDevelop 2.8, tutto questo non è più necessario.

Si noti che su 2.10 (Ubuntu 11.10), è necessario localcopy System.Web.DynamicData.dll, oppure si verifica un errore che si verifica solo su App_Start (se non lo si fa, si ottiene un YSOD la prima volta che si chiama una pagina, ma SOLO la prima volta, perché viene chiamato solo App_Start.).

Nota
per Mono 3.0 + con ASP.NET MVC4: C'è un "bug" nello script di installazione. O piuttosto una incompletezza.

mod-mono, fastcgi-mono-server4 e xsp4 non funzionano correttamente.
Per esempio: FastCGI-mono-server4 ti dà questo output di debug:

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

Questo è, perché dopo l'installazione di mono3, utilizza framework 4.5, ma xsp, FastCGI-mono-server4 e mod-mono non sono nel 4.5 GAC, solo nel 4.0 gac.
Per risolvere questo problema, utilizzare questo script bash:

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

E se lo si utilizza tramite FastCGI (ad esempio nginx), è inoltre necessario questa correzione per TransmitFile per il bug chuncked_encoding
Why do I have unwanted extra bytes at the beginning of image? (fisso in mono 3.2. 3)

PS:
è possibile ottenere il .deb per 3.x da qui:
https://www.meebey.net/posts/mono_3.0_preview_debian_ubuntu_packages/ o compilarli yourselfs da github Installing Mono 3.x in Ubuntu/Debian o come questo dalle fonti stabili http://ubuntuforums.org/showthread.php?t=1591370


È ora possibile utilizzare il 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 

Se hai bisogno di variare in ritardo st funzionalità, è possibile anche prendere il CI packages (nightly builds, so to say), se avete bisogno della versione più recente (o quasi ultima)

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

Non riesco a trovare alcuna versione x64 o x86 (x32 come hai scritto). Non penso che ce ne sia davvero uno. Anche se ho lo stesso errore per un paio di minuti, improvvisamente è scomparso e non riesco a capire perché :(( – Adaptabi

+0

@DotNetWise: sei proprio lì. Non riuscivo a trovare il gruppo del rasoio in un primo momento, quindi l'ho preso da MSIL GAC su x64. Non ha funzionato quindi, non ho potuto fare riferimento a mono in un primo momento e ho pensato che potrebbe essere causa di problemi 32/64 bit. Probabilmente era corrotto a causa di crash , ma è strage funziona correttamente su Windows allora, ma qualcosa è sicuramente difficile su System.Web.Razor.dll. –

+1

Sei un campione - Ho combattuto l'errore con gli ambiti di archiviazione per un po ', ho trovato questo e Grazie –

3

Secondo me è necessario attendere il rilascio di MVC3 (quando diventa open source) prima che sia possibile rispondere perfettamente.

Sono sicuro che il team Mono lo farà funzionare, però.

3

Mono 2.10 in poi supporta pienamente MVC3 e Razor, anche se il Progetto Mono non può attualmente spedire Mono con un'implementazione open source dello stack MVC3/Razor incluso (nello stesso modo in cui MVC1 e MVC2 sono inclusi) ancora.

Dal 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.

Problemi correlati