Compact FrameworkでのT4

Windows Phone Developer Tools Betaを弄ったりしていて、ちょっと思い出したように小ネタ(・ω・)


WP7については、いつなんだろうねという感じですが。
現状、例えば業務用ハンディの開発については、まだまだVisual Studio 2008を使ってCompact Frameworkアプリの開発という状況で(・ω・;)
また、それとは関係無い話で、最近はVisual Studioを使った開発では、T4の利用もコモディティ化してきたかな〜、なんて感じるこの頃ですが(´∀`)


っということで、その2点をミックスしたCompact FrameworkでのT4の利用について(・ω・)


Visual Studio 2008でSmart Deviceプロジェクトを作って、そこにttファイルを追加しても、CodeDomが無いよと怒られてしまいますが(´・ω・`)
ちなみにこれはSilverlightプロジェクトでも一緒。
なお、この問題はVisual Studio 2010では解消されていますが(・ω・)
ついでにWindows Phoneの開発について言えば、あれはCompact Frameworkとは別の、SilverlightWindows Phone Profileってもんですが。


っで、現状のVisual Studio 2008でのCompact Frameworkを使った開発ではどう対応するのかと言えば(・ω・)
シンプルな解決策としては、コードの生成はSmart Deviceプロジェクト内ではなく、別途Full Framework用のプロジェクトを作成してその中でT4を使用して、Smart Deviceプロジェクトには、そこで生成されたソースを含めてしまえば良いと言うだけのお話(・ω・)
構成の例としてはこんな感じで。

ここでのGeneratorProjectはT4を利用するためだけのもので、アウトプットのアセンブリは使用しません野田。
っで、生成されたソース(Generator.cs)をSmart Deviceプロジェクトに含めれば、Compact FrameworkがCodeDomをサポートしていなくてもT4を利用できるという単純なお話(・∀・)



まあ、Compact FrameworkというかSmart Device向けの開発って、PCと同じほどには富豪的アプローチは出来ないのが現状で(´・ω・`)
PCで言うのであれば、10年前くらいのスペックを想定した設計が必要な感じで。
っとなると、リフレクションや動的な処理にはためらいが発生するケースがあるのもしかり。
定型処理については、テンプレートを使ったコード生成で静的にやろうよ、っという感じなのでした(・ω・)