Razor View引擎是否适用于Mono?

时间:2010-11-21 18:57:44

标签: asp.net mono razor

我试了一下,没找到答案。 Razor View引擎是否可以在Mono中运行?

5 个答案:

答案 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相同)。

来自Release Notes

  

虽然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)

看起来我们正在那里:

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

在任何已发布的版本中看起来都没有,但您可以从源代码管理中运行它。