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站点。