Tweetの取得にTweetSharpを使用している。
本エントリでは主にTweetSharpのビルド手順について記載する。
経緯
ある日、ListTweetsOnUserTimeline()メソッドて以下例外が発生するようになった。
型 'Newtonsoft.Json.JsonSerializationException' の初回例外が Newtonsoft.Json.dll で発生しました Cannot deserialize the current JSON array (e.g. [1,2,3]) into type 'TweetSharp.TwitterStatus' because the type requires a JSON object (e.g. {"name":"value"}) to deserialize correctly. To fix this error either change the JSON to a JSON object (e.g. {"name":"value"}) or change the deserialized type to an array or a type that implements a collection interface (e.g. ICollection, IList) like List<T> that can be deserialized from a JSON array. JsonArrayAttribute can also be added to the type to force it to deserialize from a JSON array. Path '', line 1, position 1.
stackover Tweetsharp issue while getting the UserProfile and TimeLineによると
Tweetsharp is using integers for the user_id in a few places which is throwing the exceptions. Go to github and downloaded the latest source. It has been updated to handle the new user id's. ( you will need to compile it yourself)
とのこと。
NuGetでインストールされるバージョンはまだTwitter UserID64bit対応がすんでいないようである。
仕方ないので自分でビルドすることにした。
なおNuGetに、「TweetSharp-Unofficial」なるパッケージがあり、
非公式ながらもこちらをインストールすることでエラーを回避できることに気づいたのは、
自分でビルドが済んだ後であった。。。
いちおうビルド手順をメモしておく。
TweetSharpプロジェクトのビルド
https://github.com/danielcrenna/tweetsharpより、tweetsharp-master.zipをダウンロードする。
zipファイルを解凍し以下ソリューションファイルを開く。
tweetsharp-master\tweetsharp-master\src\TweetSharp.sln
TweetSharp.Net20 がスタートアッププロジェクトになってるがこの作業ではTweetSharpプロジェクトしかいじらない。
とりあえずビルドする。以下エラーが出る。
エラー 6 型または名前空間名 'Hammock' が見つかりませんでした。using ディレクティブまたはアセンブリ参照が不足しています。
NuGetで’Hammock’をインストールしてビルドする。以下エラーが出る。
エラー 7 型または名前空間名 'Newtonsoft' が見つかりませんでした。using ディレクティブまたはアセンブリ参照が不足しています。
NugetでNewtonsoft.Jsonで検索してHITするJson.NETをインストールしてビルドする、ビルド完了。
後は、TweetSharpを利用したい側のアプリケーションで、
“TweetSharp.dll” “Hammock.ClientProfile.dll” “Newtonsoft.Json.dll”
の3つを参照に追加すれば利用可能である。