我尝试了一下,没有找到答案.Razor View引擎是否可以在Mono中运行?
是的,它确实.我在Linux上使用mono.
您需要来自
http://ftp.novell.com/pub/mono/sources-stable/ http://download.mono-project.com/sources/mono/的稳定来源的mono 2.10.2+
然后,您需要将这些程序集本地复制到应用程序的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时无法创建存储范围.
原因:Microsoft.Web.Infrastructure.dll被本地复制到bin目录.
解决方案:删除Microsoft.Web.Infrastructure.dll 并使用单声道版本.
错误:System.Web.Handlers.ScriptModule中的IL代码无效:.ctor():方法体为空.
原因:System.Web.Extensions.dll以某种方式被本地复制到bin目录.
解决方法:删除System.Web.Extensions.dll 并使用单声道版本.
错误:无法加载模块中的类.描述:HTTP 500.错误处理请求.
原因:System.Web.WebPages.Administration.dll被本地复制到bin目录.
解决方案:删除System.Web.WebPages.Administration.dll 并取消它的
错误:无法
从程序集'System.Web.WebPages.Razor,Version = 1.0.0.0,Culture中加载'System.Web.WebPages.Razor.RazorBuildProvider' 类型=中立,PublicKeyToken = 31bf3856ad364e35'.描述:HTTP 500.错误处理请求.
原因:System.Web.Razor.dll已损坏或丢失(或x64而不是x32,反之亦然) ...
解决方案:获取未受损坏的System.Web.Razor.dll和localcopy版本到bin目录
编辑
从单声道2.12/MonoDevelop 2.8开始,所有这些都不再需要了.
请注意,在2.10(Ubuntu 11.10)上,也需要localcopy System.Web.DynamicData.dll
,否则您只会在App_Start上出现错误(如果您不这样做,则第一次调用页面时会出现YSOD,但仅限于第一次,因为只有那时才调用App_Start.).
使用ASP.NET MVC4的mono 3.0+ 注意事项:安装脚本中存在"错误".或者更确切地说是不完整.
mod-mono,fastcgi-mono-server4和xsp4将无法正常工作.
例如:fastcgi-mono-server4为您提供此调试输出:
[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之后,它使用了框架4.5,但是xsp,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 bug的TransmitFile修复这个问题
为什么我在图像的开头有不需要的额外字节?(固定在单声道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://ubuntuforums.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
如果您需要不同的最新功能,您还可以获取CI包(每晚构建,可以这么说),如果您需要最新(或几乎最新)的版本
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