読者です 読者をやめる 読者になる 読者になる

酢ろぐ!

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

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でパッケージを追加してもクラッシュすることはなくなる。