web-dev-qa-db-ja.com

Razor View EngineはMonoで動作しますか?

少し検索してみましたが、答えが見つかりませんでした。 Razor View EngineはMonoで動作しますか?

48
Earlz

はい、そうです。 Linuxのモノで動作しています。

安定したソースからのモノ2.10.2+が必要です
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を削除し、モノバージョンを使用します。


エラー:モジュール内のクラスをロードできません。説明:HTTP500。リクエストの処理中にエラーが発生しました。
原因:System.Web.WebPages.Administration.dllがbinディレクトリにローカルコピーされました。
解決策:System.Web.WebPages.Administration.dllを削除し、参照を解除します


エラー:タイプを読み込めませんでした
'System.Web.WebPages.Razor.RazorBuildProvider' from Assembly 'System.Web.WebPages.Razor、Version = 1.0.0.0、Culture = neutral、PublicKeyToken = 31bf3856ad364e35'説明:HTTP500。リクエストの処理中にエラーが発生しました。
原因:System.Web.Razor.dllが破損または欠損しています。 (またはx32の代わりにx64またはその逆) ...
解決策:System.Web.Razor.dllの破損していないバージョンを取得し、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など)を介して使用する場合、chuncked_encodingバグのTransmitFileにもこの修正が必要です。
画像の先頭に不要な余分なバイトがあるのはなぜですか? (mono 3.2.3で修正済み)

PS:
ここから3.xの.debsを取得できます。
https://www.meebey.net/posts/mono_3.0_preview_debian_ubuntu_packages/ またはgithubから自分でコンパイル buntu/DebianへのMono 3.xのインストール または安定したソースからこれのように http://ubuntuforums.org/showthread.php?t=159137

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
60
Stefan Steiger
4
yojimbo87

Mono 2.10以降はMVC3とRazorを完全にサポートしていますが、Mono Projectは現在、MVC3/Razorスタックのオープンソース実装を含む(MVC1およびMVC2と同じ方法で)まだMonoを出荷できません。

リリースノート から:

ASP.NET MVC3はオープンソースであり、MS-PLライセンスの条件に基づいてライセンスされますが、オープンソースではなく、Microsoft.NET Frameworkの一部でもない新しいライブラリにいくつかの依存関係が必要です。

この時点では、これらのライブラリのオープンソース実装がないため、ASP.NET MVC3スタック全体をMonoとともに出荷することはできません(デプロイメントを楽しむために、ASP.NET MVC 1およびMVC 2をMonoとともに出荷します)。

ただし、このMonoリリースには、ASP.NET MVC3サイトを実行できる十分なバグ修正とパッチがあります。

3
Kynth

私の推測では、MVC3のリリースが(オープンソースになると)完全に回答できるようになるまで、待たなければならないでしょう。

Monoチームはきっとうまくいくと思います。

3
Will Dean

私たちはそこに着いたようです:

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

まだ公開されているバージョンにはないようですが、ソース管理から実行できます。

1
Alastair