我试了一下,没找到答案。 Razor View引擎是否可以在Mono中运行?
答案 0 :(得分:59)
是的,确实如此。我在Linux上使用mono。
你需要来自稳定来源的单声道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时无法创建存储范围。
原因: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.RazorBuildProvider”
'System.Web.WebPages.Razor,Version = 1.0.0.0,Culture = neutral,
公钥= 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错误的TransmitFile修复此问题 Why do I have unwanted extra bytes at the beginning of image?(在单声道3.2.3中修复)
PS:
你可以从这里获得3.x的.debs:
https://www.meebey.net/posts/mono_3.0_preview_debian_ubuntu_packages/
或者从github自己编译
Installing Mono 3.x in Ubuntu/Debian
或者来自稳定的来源
http://ubuntuforums.org/showthread.php?t=1591370
<强> 2015 强>
您现在可以使用Xamarin provided packages
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 packages (nightly builds, so to say),如果您需要最新版本(或近乎最新版本)
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
答案 1 :(得分:4)
答案 2 :(得分:3)
我的猜测是你需要等待MVC3的发布(当它变成开源时)才能完全回答。
我确信Mono团队会让它发挥作用。
答案 3 :(得分:3)
Mono 2.10以后完全支持MVC3和Razor,尽管Mono Project目前还不能提供包含MVC3 / Razor堆栈的开源实现的Mono(与MVC1和MVC2相同)。
虽然ASP.NET MVC3是开源的 并根据条款获得许可 MS-PL许可证,需要一些 依赖于新的库 不是开源的,也不是它们的一部分 Microsoft.NET Framework。
此时我们还没有打开 这些的源实现 图书馆,所以我们无法发货 与Mono的ASP.NET MVC3堆栈(我们仍然 使用Mono发布ASP.NET MVC 1和MVC 2 为您的部署享受)。
然而,这个Mono版本已经足够了 您将成为错误修复和补丁 能够运行ASP.NET MVC3站点 它
答案 4 :(得分:1)