我试着找了一会儿,也没找到答案.Razor View引擎在Mono中可以工作吗?

推荐答案

是的.我在Linux上使用mono.

You need mono 2.10.2+ from the stable sources from
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

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

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

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

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

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 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"

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

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:
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 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

Asp.net相关问答推荐

DataTables-如何修改来自JSON响应或其他DataTables参数的无结果(ZeroRecords)消息

是否可以发布 ASP.NET 5 应用程序以使目标机器不需要安装 DNX?

创建项目 ASP.NET Core (.NET Core) 和 ASP.NET Core (.NET Framework) 有什么区别

HttpRuntime.Cache[] 与 Application[]

如何在 Javascript 中获取 C# 枚举

我可以根据角色隐藏/显示 asp:Menu 项吗?

倒带请求正文流

使用 gridview asp.net 进行排序和分页

Web Api 参数始终为空

ASP.Net 自定义客户端验证

等价于 ASP.NET Core 中的 Html.RenderAction

ASP.NET IIS Web.config [内部服务器错误]

从 IFrame 重定向父页面

如何忽略身份框架的魔力,只使用 OWIN 身份验证中间件来获取我寻求的声明?

.NET AJAX 调用 ASMX 或 ASPX 或 ASHX?

在资源文件中使用 HTML

避免将重复元素添加到列表 C#

哪个控件导致了回发?

验证请求事件

ASP.NET 5 (vNext) - 获取配置设置