【发布时间】:2011-05-13 11:36:37
【问题描述】:
我尝试搜索了一下,但没有找到答案。 Razor 视图引擎是否在 Mono 中工作?
【问题讨论】:
-
对this有什么建议吗?
我尝试搜索了一下,但没有找到答案。 Razor 视图引擎是否在 Mono 中工作?
【问题讨论】:
是的,确实如此。我让它在 Linux 上与 mono 一起工作。
您需要来自 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:.ctor () 中的 IL 代码无效:
方法体为空。
原因: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,版本=1.0.0.0,文化=中性,
PublicKeyToken=31bf3856ad364e35'。说明:HTTP 500。错误
处理请求。
原因:System.Web.Razor.dll 损坏或丢失(或 x64 而不是 x32,反之亦然) ...
解决方法:获取未损坏的版本的 System.Web.Razor.dll 和
localcopy到bin目录
编辑
从 mono 2.12 / MonoDevelop 2.8 开始,所有这些都不再需要了。
请注意,在 2.10 (Ubuntu 11.10) 上,还需要 localcopy System.Web.DynamicData.dll,否则您会收到仅在 App_Start 上发生的错误(如果您不这样做,您第一次会收到 YSOD调用一个页面,但只是第一次,因为只有 App_Start 才会被调用。)。
注意
对于带有 ASP.NET MVC4 的单声道 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)使用它,您还需要为 TransmitFile 修复 chuncked_encoding 错误
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
【讨论】:
【讨论】:
我的猜测是你需要等待 MVC3 的发布(当它成为开源时)才能得到完美的回答。
不过,我相信 Mono 团队会成功的。
【讨论】:
Mono 2.10 及更高版本完全支持 MVC3 和 Razor,尽管 Mono 项目目前还不能提供包含 MVC3/Razor 堆栈的开源实现的 Mono(与包含 MVC1 和 MVC2 的方式相同)。
虽然 ASP.NET MVC3 是开源的 并根据条款获得许可 MS-PL 许可证,需要一些时间 对新库的依赖 不是开源的,也不是它们的一部分 Microsoft.NET 框架。
此时我们还没有打开 那些的源实现 图书馆,所以我们不能运送完整的 带有 Mono 的 ASP.NET MVC3 堆栈(我们仍然 使用 Mono 发布 ASP.NET MVC 1 和 MVC 2 为了您的部署乐趣)。
然而,这个 Mono 版本已经足够 您将成为的错误修复和补丁 能够运行 ASP.NET MVC3 站点 它。
【讨论】:
【讨论】: