酢ろぐ!

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

Xamarin StudioでPCLプロジェクトを生成して、Visual Studioでターゲットフレームワークを変更後にHttp ClientをNuGet経由で導入して、Xamarin Studioで開くとクラッシュする

タイトルの意味わかる?

あとでちゃんと調べますが、とりあえず再現手順と回避方法だけ書いておきます。

環境 バージョン
Windows Windows 8.1 Pro 日本語版
Visual Studio Visual Studio 2013 Ultimate 日本語版
Xamarin Studio Alpha channel (2014/2/2時点)

クラッシュの再現手順

1. Xamarin Studio

Xamarin StudioでPCLプロジェクトを作成します。

f:id:ch3cooh393:20140202235323p:plain

プロジェクトを作成したら保存して、Xamarin Studioを終了させます。

2. Visual Studio

Visual Studioで先ほど作成したプロジェクトを開きます。プロジェクトのプロパティから「ターゲットフレームワークの変更」ダイアログを表示します。

.NET Framework 4.5 以上に変更します。

f:id:ch3cooh393:20140202235338p:plain

次に「NuGetパッケージの管理」を選択する。

f:id:ch3cooh393:20140202235331p:plain

「Microsoft HTTP Client Libraries」をインストールする。

f:id:ch3cooh393:20140202235346p:plain

テンプレートから自動生成されるMyClassクラスにコードを足して、以下のようなメソッドを追加します。

using System;
using System.Net.Http;
using System.Threading.Tasks;

namespace sample
{
    public class MyClass
    {
        public MyClass ()
        {
        }

        public Task<string> GetStringAsync(string urlString)
        {
            var client = new HttpClient();
            return client.GetStringAsync(urlString);
        }
    }
}

ソースコードを保存して、Visual Studioを終了させます。

3. Xamarin Studio

同じソリューションファイルを使って、Xamarin Studioで開き、該当のソースコードを開くとXamarin Studioがクラッシュします。

f:id:ch3cooh393:20140202235356p:plain

対策方法

当面の対策方法としては、以下の順で対応をおこないます。

  • Xamarin Studio側でターゲットフレームワーク .NET 4.5へ変更する
  • Visual Studio側でNuGetを使ってインストールする

Visual Studio側でNuGetでパッケージを追加してもクラッシュすることはなくなる。