この数週間で集中的にゲームの新サーバーを作り直してるんだけど、APIはRESTFul、サーバーからの通知はWebSocket、の予定でUnity3DのクライエントにロードできるC# バインディングのライブラリも同時進行で作ってた。
はじめる前に調べりゃ良かったんだけど、.NET Frameworkの4.x で使えるHttpClientがとっても便利で(特にRESTのHTTP動詞を使い分けたりJsonのペイロードをシリアライズしたりするのに)、4.5を前提に突っ走ってた・・
WebSocketにはSignalR、前に使ったときからバージョンアップして今は2.0。NuGetでパッケージダウンロードしてサンプルが動くまでに15分とかからず意気揚々とGit commmit しながら「進んでる進んでるw」とご満悦w
ふと、「ところでUnity 3D (というかMono)がサポートしてる.NET Frameworkのバージョンって当然いつも遅れてる、4.5使ってもいいよね~?」知らべたら・・
ダメです。今んとこ、3.5までです (><)
SignarlR、使えません。1.0でも4.0が必要。さらにHttpClientも使えません。前のWebClientに戻して、抽象化は自分でやりましょう。APIのエンドポイント一つ一つに対して作り直さなきゃならんです ...orz
ということでプロジェクトのターゲット.NET Framework を3.5に設定し直してリビルトする・・とうぜん参照エラーの山。それはつまり#ifdefとコメントアウトの山。せめてもの救いはタスク・パラレル・ライブラリーを多用してなかった(まだ非同期プログラミングの理解が甘いから避けてただけ、という噂)のでそこらへんの致命傷はない。