酢ろぐ!

カレーが嫌いなスマートフォンアプリプログラマのブログ。

Windows Phone 8.0でGoogle AdMob SDKを参照しようとするとエラーが発生して参照できない問題に対応する

Google AdMobでの収益っていつの間にかGoogle AdSenseに統合されていたんですね。気付きませんでした。Google AdSenseの商品別集計欄にGoogle AdMobの情報が載っていて驚きました。

さて、Google AdMobの広告をアプリ内に掲載するためには「Google Mobile Ads SDK」を使用します。iOS、Android(Gogole Play)、Windows Phone 8向けにそれぞれSDKが用意されています。

Windows Phone 8で広告を掲載するには、上記のURLから「googlemobileadssdkwindowsphone8.zip」をダウンロードして、zipを解凍してGoogleAds.dllを参照するだけなのですが、表題の通り僕の環境では何故かエラーが発生してしまっていました。

プロジェクトに追加できないエラーを発生させる

参照マネージャーで「GoogleAds.dll」を参照して、OKボタンを押します。

f:id:ch3cooh393:20140404174254p:plain

どーん。下図のようにエラーが発生します。

f:id:ch3cooh393:20140404174139p:plain

ダイアログには以下のように表示されていました*1

Microsoft Visual Studio

より新しいバージョンのアセンブリまたは互換性のないアセンブリへの参照は、プロジェクトに追加できません。

英語の場合は、下図のように表示されます。

f:id:ch3cooh393:20140404174144p:plain

ダイアログには以下のように表示されています。

Microsoft Visual Studio

A reference to a higher version or incompatible assembly cannot be added to the project.

これのダイアログを見て、「GoogleはVisual Studio 2012でビルドしたdllを作っているので、Visual Studio 2013では使えないんだな」と勝手に判断して、数ヶ月この問題を放置することとなりました……

疑問編

Twitterでたまたまアプリ内広告について話をしている時に、前述したエラー内容の旨をツイートすると、「Visual Studio 2013でGoogle AdMobの広告の表示問題なくできているよ」とリプライを頂きました。

再度、「Visual Studio 2013 Update」と「Google Mobile Ads SDK for Windows Phone 8 v6.5.11」 の組み合わせで試してみるとやはりエラーが発生しました。

エラーダイアログの内容を改めて吟味すると、一昨日リリースされたばかりのVisual Studio 2013 Updateを使っているのに、それよりも新しいバージョンのアセンブリへの参照は、プロジェクトに追加できません。とエラーが発生するのはおかしいのではないかと疑問が湧いてきました。

解決編

原因は、セキュリティブロックが有効になっているのが原因でした。ブロックを解除することでVisual StudioからGoogleAds.dllを参照することができるようになります。

ネイティブのエクスプローラで、GoogleAds.dllを右クリックしてコンテキストメニューを表示させて、プロパティを単託します。

f:id:ch3cooh393:20140404174518p:plain

プロパティダイアログの一番下にセキュリティの項目があります。「ブロックを解除」をクリックすれば、GoogleAds.dll を参照することができるようになります。

f:id:ch3cooh393:20140404174526p:plain

おわり。

*1:あまり見かけないエラーダイアログのせいなのか和訳がちょっとおかしい気がする