kazuakix の日記

Windows Phone とか好きです

ユニバーサル アプリで外部ライブラリを共有する

ユニバーサル アプリでは Shared プロジェクトという仕組みを使って Windows と Windows Phone のコードを共有することができます。
でも、ちょっと真面目に両対応アプリを作ろうとすると 困ったことがあります。
 
例えば NuGet で Json.NET のような便利なライブラリを持ってこようとしたとき...

f:id:kazuakix:20140929221834j:plain,w500

あれ? 「NuGet パッケージの管理」が出てくるのは Windows / Windows Phone プロジェクトだけですね。外部ライブラリを共有するにはどうすれば...? *1

PCL の追加

とりあえず新たに クラスライブラリ (ユニバーサル アプリ用ポータブル クラス ライブラリ) を追加すると NuGet が使えるようです。

f:id:kazuakix:20140929221839j:plain,w500
f:id:kazuakix:20140929221844j:plain,w500

厳密には Shared プロジェクトで作るクラスと PCL は違うんでしょうけど、 ここで作った PCL は Windows 8.1 と Windows Phone 8.1 用になっているので ぼほ同等の機能が使える...はずですよね?

f:id:kazuakix:20140929231625j:plain,w320

あとはこのクラスライブラリを Windows / Windows Phone プロジェクトの両方で参照に追加すれば完了。

f:id:kazuakix:20140929221849j:plain,w500

でも、この方法で進めていくと Shared プロジェクトの中身が App.xaml だけになりそうです。(と言うか なっています) みなさんはどんな分割をしていますか?

追記

この記事の投稿後 3 分で こんな方法を教えてもらいました。ソリューション名 右クリックで 「ソリューションの NuGet パッケージの管理」を選ぶことで、それぞれのプロジェクトに適した外部ライブラリが追加されるようです。

外部ライブラリの共有という目的では PCL あまり意味なかったですね...。

*1:両方のプロジェクトで外部ライブラリを個別に追加...というのもアリだとは思いますが