Pergunta

Tentei pesquisar um pouco e não encontrei resposta.O Razor View Engine funciona em Mono?

Foi útil?

Solução

Sim.Eu tenho que trabalhar com mono no Linux.

Você precisa do mono 2.10.2+ das fontes estáveis ​​de
http://ftp.novell.com/pub/mono/sources-stable/
http://download.mono-project.com/sources/mono/

Em seguida, você precisa copiar localmente esses assemblies no diretório bin do seu aplicativo (você os obtém do Visual Studio no Windows):

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

Então, talvez você precise se livrar dos seguintes erros que pode ter cometido:

Erro:Os escopos de armazenamento não podem ser criados quando _AppStart está em execução.
Causa:Microsoft.Web.infrastructure.dll foi localizado no diretório da bin.
Resolução:Excluir Microsoft.Web.Infrastructure.dll e use a versão mono.

Erro:Código IL inválido em System.Web.Handlers.ScriptModule:.ctor():o corpo do método está vazio.
Causa:System.web.extensions.dll de alguma forma é localizado no diretório do bin.
Resolução:Excluir System.Web.Extensions.dll e use a versão mono.


Erro:As classes do módulo não podem ser carregadas.Descrição:HTTP 500.Erro ao processar solicitação.
Causa:System.Web.WebPages.Administration.dll foi localizado no diretório do bin.
Resolução:Excluir System.Web.WebPages.Administration.dll e desreferencia-lo


Erro:Não foi possível carregar o tipo
'System.Web.WebPages.Razor.RazorBuildProvider' da Assembly 'System.Web.WebPages.Razor, versão = 1.0.0.0, Culture = neutro, PublicKeyToken = 31BF3856Ad364E35'.Descrição:HTTP 500.Solicitação de processamento de erros.
Causa:System.Web.Razor.dll está corrompido ou ausente (ou x64 em vez de x32 ou vice-versa) ...
Resolução:Obtenha um não corrompido Versão do System.web.razor.dll e LocalCopy para o diretório de bin

Editar
A partir do mono 2.12/MonoDevelop 2.8, tudo isso não é mais necessário.

Observe que no 2.10 (Ubuntu 11.10), é necessário fazer cópia local System.Web.DynamicData.dll também, ou então você receberá um erro que ocorre apenas em App_Start (se você não fizer isso, você receberá um YSOD na primeira vez que chamar uma página, mas SOMENTE na primeira vez, porque somente então App_Start será chamado.).

Observação
para mono 3.0+ com ASP.NET MVC4:Há um "bug" no script de instalação.Ou melhor, uma incompletude.

mod-mono, fastcgi-mono-server4 e xsp4 não funcionarão corretamente.
Por exemplo:fastcgi-mono-server4 fornece esta saída de depuração:

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

Isso porque após a instalação do mono3, ele utiliza o framework 4.5, mas xsp, fastcgi-mono-server4 e mod-mono não estão no 4.5 GAC, apenas no 4.0 gac.
Para corrigir isso, use este 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 você usá-lo via FastCGI (por exemplo,nginx), você também precisa desta correção para TransmitFile para o bug chunced_encoding
Por que tenho bytes extras indesejados no início da imagem? (corrigido em mono 3.2.3)

PS:
Você pode obter o .debs para 3.x aqui:
https://www.meebey.net/posts/mono_3.0_preview_debian_ubuntu_packages/ou compile-os você mesmo no githubInstalando o Mono 3.x no Ubuntu/Debianou assim de fontes estáveishttp://ubuntuforums.org/showthread.php?t=1591370

2015

Agora você pode usar o Pacotes fornecidos pelo 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 precisar dos recursos mais recentes, você também pode buscar o Pacotes CI (compilações noturnas, por assim dizer), se você precisar da versão mais recente (ou quase mais 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

Outras dicas

Meu palpite é que você precisará aguardar o lançamento do MVC3 (quando ele se tornar de código aberto) antes que isso possa ser respondido perfeitamente.

Tenho certeza de que a equipe mono fará com que funcione.

O Mono 2.10 em diante suporta totalmente o MVC3 e o Razor, embora o projeto mono não possa ser enviado atualmente com uma implementação de código aberto da pilha MVC3/RAZOR incluída (da mesma maneira que o MVC1 e o MVC2 estão incluídos) ainda.

De Notas de liberação:

Embora o ASP.NET MVC3 seja de código aberto e licenciado nos termos da licença MS-PL, são necessárias algumas dependências de novas bibliotecas que não fazem código aberto nem fazem parte da estrutura do Microsoft.NET.

Nesse ponto, não temos implementações de código aberto dessas bibliotecas, portanto, não podemos enviar a pilha completa do ASP.NET MVC3 com o Mono (ainda enviamos asp.net MVC 1 e MVC 2 com mono para o seu desfrute de implantação).

Essa versão mono, no entanto, possui correções e patches de bugs suficientes para que você possa executar sites ASP.NET MVC3 com ele.

Parece que estamos chegando lá:

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

Parece que ainda não está em nenhuma das versões publicadas, mas você pode executá -lo no controle de origem.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top