Il Razor View Engine funziona con Mono?

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

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

Hai bisogno di 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 questi assembly nella directory bin dell’applicazione (li si preleva da Visual Studio su Windows):

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

Quindi, potresti dover eliminare i seguenti errori che potresti aver fatto in questo modo:

Errore: non è ansible creare ambiti di archiviazione quando _AppStart è in esecuzione.
Causa: Microsoft.Web.Infrastructure.dll è stato localcopied nella directory bin.
Soluzione: 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.
Soluzione: eliminare System.Web.Extensions.dll e utilizzare la versione mono .

Errore: imansible caricare le classi nel modulo. Descrizione: HTTP 500. Errore durante l’elaborazione della richiesta.
Causa: System.Web.WebPages.Administration.dll è stato localcopied nella directory bin.
Soluzione: eliminare System.Web.WebPages.Administration.dll e annullarlo

Errore: imansible caricare il tipo
‘System.Web.WebPages.Razor.RazorBuildProvider’ dall’assembly ‘System.Web.WebPages.Razor, Version = 1.0.0.0, Culture = neutral, PublicKeyToken = 31bf3856ad364e35’. Descrizione: HTTP 500. Errore durante l’elaborazione della richiesta.
Causa: System.Web.Razor.dll è danneggiato o mancante (o x64 invece di x32 o viceversa)
Risoluzione: ottenere una versione non corrotta di System.Web.Razor.dll e localcopy nella directory bin

modificare
A partire da mono 2.12 / MonoDevelop 2.8, tutto ciò non è più necessario.

Si noti che alla 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 chiami una pagina, ma SOLO la prima volta, perché solo allora viene chiamato 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 funzioneranno correttamente.
Ad esempio: fastcgi-mono-server4 fornisce 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 il 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, usa 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 usi tramite FastCGI (es. Nginx), hai bisogno anche di questa correzione per TransmitFile per il bug chuncked_encoding
Perché ho byte extra indesiderati all’inizio dell’immagine? (corretto in mono 3.2.3)

PS:
Puoi ottenere i file .debs per 3.x da qui:
https://www.meebey.net/posts/mono_3.0_preview_debian_ubuntu_packages/ o compilarli da github Installazione di Mono 3.x in Ubuntu / Debian o simile da fonti stabili http://ubuntuforums.org/showthread.php? t = 1591370

2015

Ora puoi usare i pacchetti forniti da Xamarin

 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 le ultime funzionalità, puoi anche recuperare i pacchetti CI (build notturne, per così dire) , se hai bisogno della versione più recente (o quasi più recente)

 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 

Non ancora.

La mia ipotesi è che dovrai aspettare il rilascio di MVC3 (quando diventa open-source) prima di poter rispondere alla perfezione.

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

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

Dalle note di rilascio :

Sebbene ASP.NET MVC3 sia open source e concesso in licenza in base ai termini della licenza MS-PL, sono necessarie alcune dipendenze da nuove librerie che non sono open source né fanno parte di Microsoft.NET Framework.

A questo punto non abbiamo implementazioni open source di queste librerie, quindi non possiamo spedire lo stack completo ASP.NET MVC3 con Mono (Spediamo ancora ASP.NET MVC 1 e MVC 2 con Mono per il tuo godimento di implementazione).

Questa versione di Mono tuttavia ha abbastanza correzioni di errori e patch che saranno in grado di eseguire i siti ASP.NET MVC3 con esso.

Sembra che ci stiamo arrivando:

http://gonzalo.name/blog/archive/2011/Jan-21.html

Sembra che non sia ancora in nessuna delle versioni pubblicate, ma puoi eseguirlo dal controllo del codice sorgente.