Mandarine-wp7

これまでの日記でWindows Phone 7に関して書いてきたコード片を全てGoogle Codeにアップすることにした。

Mandarine-wp7 - library framework for Windows Phone 7 | Google Code Hosting

"Mandarine"というプロジェクト名はWindows Phone 7.5のコードネームが"Mango"だったので似た言葉でなんとなく付けたもの。あまり意味は無い。(本当はあるのだが、今は伏せておく)

"フレームワーク"と格好を付けたところで現在の所

    • MVVMのViewModelとCommandのベースクラス実装
    • T4 TemplateによるViewModelクラスの自動生成
    • System.ComponentModel.DataAnnotationsを使った属性バリデーション
    • Blend 4で動作する幾つかのビヘイビア
    • NLogの改変コードを利用したログ採取

これしか実装がないし、テストもまだ書いていないし、なんといってもドキュメントが無いので、私以外は使いようが無い。その内ドキュメントも書きたいと考えているが、そもそも日記を書いていく中で扱うコードをまとめただけなのだが少しずつまとめて、Windows Phone 7アプリケーションを開発する際の道具箱のようなものにしたいと考えている。

前回に約束したIsoratedStorageFileにログを吐くNLog Tagetクラスのソースコードも公開済みだ。
IsolatedStorageTarget.cs
なお、通常のNLogのアセンブリとこのクラスを組合わせても上手く動かない。(というかコンパイルが通らない)
リポジトリ上の改変されたNLogを使えば動かすことができるが、あまり褒められたことではないのでここは出来るだけ早く解決したい。

NLogのソースコードを改変している箇所は

    • NLog.Targets.ArchiveNumberingMode.csのコンパイル条件"!WINDOWS_PHONE"をコメントアウト
    • NLog.Targets.FileArchivePeriod.csも同様にコンパイル条件"!WINDOWS_PHONE"をコメントアウト
    • NLog.Config.XmlLoggingConfiguration.csでソリューション中で参照されているアセンブリをロード可能にするコードを追加

以上だ。


今回から練習の意味もあり、Google Codeのリポジトリをgitで構成しているが、プッシュも速くて中々快適だ。