Razor View Engine是否适用于Mono?

我尝试了一下search,没有find答案。 Razor视图引擎是否在Mono中工作?

是的,它确实。 我在Linux上使用单声道。

你需要来自稳定来源的单声道2.10.2+
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

然后,你可能不得不摆脱你可能做出这样的错误:

错误:_AppStart正在执行时,无法创build存储范围。
原因:Microsoft.Web.Infrastructure.dll被localcopied到bin目录。
解决方法:删除Microsoft.Web.Infrastructure.dll 并使用单声道版本

错误:System.Web.Handlers.ScriptModule中无效的IL代码:.ctor():方法体是空的。
原因:System.Web.Extensions.dll以某种方式获取localcopied到bin目录。
解决方法:删除System.Web.Extensions.dll 并使用单声道版本

错误:模块中的类无法加载。 说明:HTTP 500.error handling请求。
原因:System.Web.WebPages.Administration.dll被localcopied到bin目录。
解决方法:删除System.Web.WebPages.Administration.dll 并将其解除

错误:无法加载types
'System.Web.WebPages.Razor.RazorBuildProvider'从程序集'System.Web.WebPages.Razor,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35'。 说明:HTTP 500.error handling请求。
原因:System.Web.Razor.dll损坏或丢失(或x64,而不是x32,反之亦然)
解决方法:获取System.Web.Razor.dll和localcopy的无损版本到bin目录

编辑
从单声道2.12 / MonoDevelop 2.8开始,所有这些都不再需要了。

请注意,在2.10(Ubuntu 11.10)上,还需要本地拷贝System.Web.DynamicData.dll ,否则你会得到一个只发生在App_Start上的错误(如果你不这样做,你会第一次得到YSOD你只是第一次调用一个页面,因为只有App_Start被调用。)。

注意
对于使用ASP.NET MVC4的单声道3.0+:安装脚本中有一个“错误”。 或者不完整。

mod-mono,fastcgi-mono-server4和xsp4将无法正常工作。
例如:fastcgi-mono-server4给你这个debugging输出:

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

这是因为安装了mono3之后,它使用的是framework 4.5,但是xp,fastcgi-mono-server4和mod-mono都不在4.5 GAC中,只有4.0 gac。
要解决这个问题,请使用这个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 

如果你通过FastCGI(例如nginx)来使用它,你还需要为这个修正传送文件的chuncked_encoding错误
为什么在图像的开头有不需要的额外字节? (固定在单声道3.2.3)

PS:
你可以从这里得到3.x的.debs:
https://www.meebey.net/posts/mono_3.0_preview_debian_ubuntu_packages/或从github自己编译它们在Ubuntu / Debian中安装Mono 3.x,或者从http://buntuforums.org/showthread.php中获取这样的内容。; T = 1591370

2015年

您现在可以使用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 

如果你需要不同的最新function,如果你需要最新的(或几乎最新的)版本,你也可以获取CI包(每晚构build,这样说)

 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 

还没。

我的猜测是,你需要等待MVC3的发布(当它成为开源的时候)才能够得到完美的回答。

不过,我确信Mono团队将会成功。

Mono 2.10以上版本完全支持MVC3和Razor,尽pipe目前Mono Project目前还不能提供MVC3 / Razor栈的开源实现(就像MVC1和MVC2一样)。

从发行说明 :

虽然ASP.NET MVC3是开源的,并且根据MS-PL许可证的条款获得许可,但它对新的不是开放源代码的库,也不是Microsoft.NET框架的一部分依赖。

在这一点上,我们没有这些库的开源实现,所以我们不能用Mono发布完整的ASP.NET MVC3栈(我们仍然用Mono发布ASP.NET MVC 1和MVC 2,以便部署)。

然而,这个Mono版本有足够的错误修复和补丁,您将能够使用它运行ASP.NET MVC3站点。

看起来我们到了那里:

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

看起来它还没有在任何发布的版本,但你可以从源代码pipe理运行它。