Работает ли Razor View Engine для Mono?

Я попытался немного поискать и не нашел ответа. Работает ли Razor View Engine в Mono?

5 ответов

Решение

Да, это так. У меня это работает с моно на Linux.

Вам нужен моно 2.10.2+ из стабильных источников из
http://ftp.novell.com/pub/mono/sources-stable/
http://download.mono-project.com/sources/mono/

Затем вам нужно скопировать эти сборки в каталог bin вашего приложения (вы берете их из Visual Studio в Windows):

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 и используйте моно версию.

Ошибка: неверный код IL в System.Web.Handlers.ScriptModule:.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, версия =1.0.0.0, культура = нейтральная, PublicKeyToken=31bf3856ad364e35'. Описание: HTTP 500. Ошибка обработки запроса.
Причина: System.Web.Razor.dll поврежден или отсутствует (или x64 вместо x32 или наоборот)...
Решение. Загрузите исправленную версию System.Web.Razor.dll и скопируйте ее в каталог bin.

редактировать
Начиная с Mono 2.12 / MonoDevelop 2.8, все это больше не нужно.

Обратите внимание, что 2.10 (Ubuntu 11.10) требуется локальная копия System.Web.DynamicData.dll также, иначе вы получите ошибку, которая возникает только в App_Start (если вы этого не сделаете, вы получите YSOD при первом вызове страницы, но ТОЛЬКО в первый раз, потому что только тогда вызывается App_Start.).

Заметка
для mono 3.0+ с ASP.NET MVC4: в скрипте установки есть "ошибка". Вернее, незавершенность.

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
Почему у меня есть лишние байты в начале изображения? (исправлено в моно 3.2.3)

PS:
Вы можете получить.debs для 3.x отсюда:
https://www.meebey.net/posts/mono_3.0_preview_debian_ubuntu_packages/ или скомпилируйте их самостоятельно из github. Установка Mono 3.x в Ubuntu/Debian или что-то подобное из стабильных источников 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

Я предполагаю, что вам нужно подождать выхода MVC3 (когда он станет открытым), прежде чем на него можно будет полностью ответить.

Я уверен, что команда Mono заставит это работать.

Mono 2.10 и далее полностью поддерживает MVC3 и Razor, хотя Mono Project в настоящее время не может поставлять Mono с включенной реализацией стека MVC3/Razor с открытым исходным кодом (точно так же, как включены MVC1 и MVC2) только пока.

Из примечаний к выпуску:

Хотя ASP.NET MVC3 имеет открытый исходный код и лицензируется в соответствии с условиями лицензии MS-PL, он требует нескольких зависимостей от новых библиотек, которые не являются открытым исходным кодом и не являются частью Microsoft.NET Framework.

На данный момент у нас нет реализаций этих библиотек с открытым исходным кодом, поэтому мы не можем поставлять полный стек ASP.NET MVC3 с Mono (Мы все еще поставляем ASP.NET MVC 1 и MVC 2 с Mono для вашего удобства развертывания).

Однако в этом выпуске Mono достаточно исправлений и исправлений, чтобы вы могли запускать на нем сайты ASP.NET MVC3.

Похоже, мы туда добираемся:

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

Похоже, его нет ни в одной из опубликованных версий, но вы можете запустить его из системы контроля версий.

Другие вопросы по тегам