先月、Vladimir Kelman氏が新しい Razorビュー エンジンをF#で使うことができるか質問した。 Scott Guthrie と Marcin Doboszの両氏と話して、必要なプラグインを全て自分でビルドして、インストールすればできることがわかった。
最初のハードルは、シンタックスである。古いASPスタイルのビュー エンジンと違って、ビューとインラインコード間の境界は、非常に微妙で、多くの言語が構文的に非互換である可能性が高い。 Scott Guthrie氏によれば、「Razorは概念的にはF#をサポートできる(シンタックスは問題ない、という意味」。彼は、その後、実際に繋ぐために何が必要かを説明した Marcin Dobosz 氏との話で、前のことを撤回した。
純粋のRazor側(System.Web.Razor.dll)では、 CodeParser, RazorCodeGenerator そして RazorCodeLanguageから派生した自分のクラスを(必要な他のユーティリティ クラスと一緒に)実装する必要があり、それから、ファイル拡張子を RazorCodeLanguage.Languagesで登録します。あなた自身の言語を実装するためのチュートリアルはないので、ソースを見て、 CSharp やVBに関連したクラスが何をやっているのか見る必要があるでしょう。
MVCサイド(もし@modelをサポートしたいなら)では、 MvcWebPageRazorHostから派生し、自分のベースのパーサーやジェネレータから派生したMVC特有のパーサーとジェネレータを返す必要があります。同じように、 System.Web.Mvc.Razorネームスペースにあるクラスのソースコードを見てください。あるいは、これらをあなたのベースのパーサーとジェネレータに実装することもできます。そうすると、すべてがMVCプロジェクトのみでしか動かなくなりますが。
もちろん、これは、新しい言語でRazorを動かすための本当に最小限のことである。もしあなたがパーサーやジェネレータを書く労力を惜しまないなら、Visual Studioでちゃんと動くために必要なプロジェクト、アイテムそしてT4テンプレートを作成するための、余分な仕事も喜んでやるだろう。
ASP.NET MVC 3の October 2010 betaのソースコード は、 Codeplexで入手できる。ASP.NET プレリリース コンポーネント用Microsoft ソースコード ライセンスのもとでリリースされている。