Razor View Engine 是否适用于 Mono? [英] Does the Razor View Engine work for Mono?

查看:21
本文介绍了Razor View Engine 是否适用于 Mono?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我尝试搜索了一下,但没有找到答案.Razor 视图引擎是否在 Mono 中工作?

I tried searching a bit and didn't find an answer. Does the Razor View Engine work in Mono?

推荐答案

是的.我让它在 Linux 上与 mono 一起工作.

Yes, it does. I have it working with mono on Linux.

您需要来自
的稳定来源的单声道 2.10.2+http://ftp.novell.com/pub/mono/sources-稳定/
http://download.mono-project.com/sources/mono/

然后,您需要将这些程序集本地复制到应用程序的 bin 目录中(您从 Windows 上的 Visual Studio 中获取它们):

Then, you need to localcopy these assemblies into your app's bin directory (you take them from Visual Studio on Windows):

System.Web.Mvc.dll
System.Web.Razor.dll
System.Web.WebPages.dll
System.Web.WebPages.Deployment.dll
System.Web.WebPages.Razor.dll

System.Web.Mvc.dll
System.Web.Razor.dll
System.Web.WebPages.dll
System.Web.WebPages.Deployment.dll
System.Web.WebPages.Razor.dll

然后,您可能必须摆脱您可能犯的以下错误:

Then, you might have to get rid of the following errors you might have made like this:

错误:执行 _AppStart 时无法创建存储范围.
原因:Microsoft.Web.Infrastructure.dll 被本地复制到 bin目录.
解决方法:删除 Microsoft.Web.Infrastructure.dll 并使用单声道版本.

错误:System.Web.Handlers.ScriptModule:.ctor () 中的 IL 代码无效:方法体为空.
原因:System.Web.Extensions.dll 以某种方式被本地复制到 bin目录.
解决方法:删除 System.Web.Extensions.dll 并使用单声道版本.


错误:无法加载模块中的类.说明:HTTP500. 错误处理请求.
原因:System.Web.WebPages.Administration.dll 被本地复制到 bin目录.
解决方法:删除 System.Web.WebPages.Administration.dll 并取消引用它


错误:无法加载类型
来自程序集的System.Web.WebPages.Razor.RazorBuildProvider"'System.Web.WebPages.Razor,版本=1.0.0.0,文化=中性,PublicKeyToken=31bf3856ad364e35'.说明:HTTP 500.错误处理请求.
原因:System.Web.Razor.dll 损坏或丢失 (或 x64 而不是 x32,反之亦然) ...
解决方法:获取未损坏的版本的 System.Web.Razor.dll 和localcopy到bin目录

Error: Storage scopes cannot be created when _AppStart is executing.
Cause: Microsoft.Web.Infrastructure.dll was localcopied to the bin directory.
Resolution: Delete Microsoft.Web.Infrastructure.dll and use the mono version.

Error: Invalid IL code in System.Web.Handlers.ScriptModule:.ctor (): method body is empty.
Cause: System.Web.Extensions.dll somehow gets localcopied to the bin directory.
Resolution: Delete System.Web.Extensions.dll and use the mono version.


Error: The classes in the module cannot be loaded. Description: HTTP 500. Error processing request.
Cause: System.Web.WebPages.Administration.dll was localcopied to the bin directory.
Resolution: Delete System.Web.WebPages.Administration.dll and unreference it


Error: Could not load type
'System.Web.WebPages.Razor.RazorBuildProvider' from assembly 'System.Web.WebPages.Razor, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'. Description: HTTP 500. Error processing request.
Cause: System.Web.Razor.dll is corrupt or missing (or x64 instead of x32 or vice-versa) ...
Resolution: Get an uncorrupted version of System.Web.Razor.dll and localcopy to the bin directory

编辑
从 mono 2.12/MonoDevelop 2.8 开始,所有这些都不再需要了.

Edit
As of mono 2.12 / MonoDevelop 2.8, all of this is not necessary anymore.

请注意,在 2.10 (Ubuntu 11.10) 上,还需要本地复制 System.Web.DynamicData.dll,否则您会收到仅在 App_Start 上发生的错误(如果您不这样做,您第一次调用页面时会得到 YSOD,但只有第一次,因为只有 App_Start 才会被调用.).

Note that on 2.10 (Ubuntu 11.10), one needs to localcopy System.Web.DynamicData.dll as well, or else you get an error that only occurs on App_Start (if you don't do that, you get a YSOD the first time you call a page, but ONLY the first time, because only then App_Start is called.).

注意
对于带有 ASP.NET MVC4 的单声道 3.0+:安装脚本中有一个错误".或者说是不完整.

Note
for mono 3.0+ with ASP.NET MVC4: There is a "bug" in the install script. Or rather an incompleteness.

mod-mono、fastcgi-mono-server4 和 xsp4 无法正常工作.
例如:fastcgi-mono-server4 给你这个调试输出:

mod-mono, fastcgi-mono-server4 and xsp4 won't work correctly.
For example: fastcgi-mono-server4 gives you this debug output:

[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,但是xsp、fastcgi-mono-server4和mod-mono不在4.5 GAC中,只有4.0 gac.
要解决此问题,请使用此 bash 脚本:

This is, because after the installation of mono3, it uses framework 4.5, but xsp, fastcgi-mono-server4 and mod-mono are not in the 4.5 GAC, only the 4.0 gac.
To fix this, use this bash script:

#!/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)使用它,您还需要对 TransmitFile 进行此修复以解决 chuncked_encoding 错误
为什么我有图像开头不需要的额外字节?(在单声道 3.2.3 中修复)

And if you use it via FastCGI (e.g. nginx), you also need this fix for TransmitFile for the chuncked_encoding bug
Why do I have unwanted extra bytes at the beginning of image? (fixed in mono 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

PS:
You can get the .debs for 3.x from here:
https://www.meebey.net/posts/mono_3.0_preview_debian_ubuntu_packages/ or compile them yourselfs from github Installing Mono 3.x in Ubuntu/Debian or like this from the stable sources 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 包(可以说是夜间构建),如果您需要最新(或几乎最新)版本

If you need the vary latest features, you can also fetch the CI packages (nightly builds, so to say), if you need the latest (or almost latest) version

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

这篇关于Razor View Engine 是否适用于 Mono?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆