System.Web.Script.Serialization
昨日、ちょっとだけ作ってみようかと邪心が芽生えたのだけど、SimpleTypeResolverの挙動が何か想定外で何か気持ち悪かったので、やめてしまったのだった。型IDは"string"とか"number"じゃないのかよ、みたいな。そしたら今日になって、やってみようかなと思っている、という人が出てきた。そんなわけで、僕自身はスタブだけ提供することにした。
クラスライブラリのスタブも勝手を知らないと面倒なのだ。
- mcs/classやolive/classの下にアセンブリ名でディレクトリを作る。今回はSystem.Web.Extensions
- そのディレクトリにMakefileを作る。とりあえず余所からコピーして、アセンブリ名とアセンブリ参照(-r:blah.dll)だけ変える。
- Assemblyディレクトリを作って、その中にAssemblyInfo.csを作る。これもコピーしてアセンブリ名とバージョンと公開鍵ファイルの名前だけ変更。
- この公開鍵ファイルがくせ者なのだけど、
sn -e System.Web.Extensions.dll
でMSのアセンブリから取り出せる。これは他のファイルと共通かもしれない(msfinal.pub, msfinal3.pub, winfx.pub...)。 - クラスライブラリのネームスペースごとにディレクトリを作る。とりあえず実装する分だけでおk
- 該当ネームスペースのディレクトリに[TypeName].csを作ってコードを書く。
- NUnitテストには、Testディレクトリを作り、その下にネームスペースごとのディレクトリを作り、その下に[TypeName]Test.csを作って書く。
- ソースファイルリストを作る。ls */*.cs > System.Web.Extensionsdll.sources; ls Test/*/*.cs > System.Web.Extensions_test.dll.sources
これで終わり。あとはmake, make run-testが使える。
…というわけで誰か未実装のアセンブリを実装してみません? (w