当前位置:  开发笔记 > 编程语言 > 正文

Razor View引擎是否适用于Mono?

如何解决《RazorView引擎是否适用于Mono?》经验,为你挑选了1个好方法。

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



1> Stefan Steig..:

是的,它确实.我在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


只需快速说明[MVC 3已被添加到Mono](https://github.com/mono/mono/commit/3f4e22a0ce7206b9321991123893a63b2dd398d4),因此没有必要跳过Mono 2.12中的所有箍和后来.
推荐阅读
我我檬檬我我186
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有