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

Xamarin 日本語情報

Xamarin(ザマリン) の代理店だったエクセルソフト田淵のブログです。主に Xamarin に関するエントリーをアップしていきます。(なるべく正しい有益な情報を掲載していきたいと考えていますが、このブログのエントリーは所属組織の公式見解ではありませんのでご注意ください)

Visual Studio で Xamarin.Android プロジェクトに画像を追加すると固まる問題の回避方法

Xamarin Visual Studio Xamarin.Android

こんにちは。エクセルソフトの田淵です。

時々、Xamarin.Android プロジェクトの Resources/drawable に画像を追加すると、 Visual Studio が死ぬことがあります。

2015/10/13 最近は固まらないですね。直ってるのかな?
2015/9/3 現在の Visual Studio 2013/2015 と Xamarin 3.11.837.0 で発生しています。将来は直っているといいなぁ…

以下は ImageItem.png を追加したい…という所ですw

f:id:ytabuchi:20150903161150p:plain:w300

固まってしまったものは仕方ありません。タスクマネージャーから Visual Studio を落とします。やっかいなのが、一度この問題が発生すると、Visual Studio だけではなかなか復旧できないことです。同じことをやっても同じように落ちます。。

復旧方法

csproj を手動で編集する

Visual Studio を落とした後で冷静に該当の Xamarin.Android プロジェクトのフォルダに移動しましょう。

@atsushieno さんに教えていただきましたが、csproj を直接編集してしまえば良いのです。

csproj をテキストエディタで開きます。

<AndroidResource Include=" と書いてある行を探し、<ItemGroup></ItemGroup> の最後に <AndroidResource Include="Resources\drawable\<ファイル名>.png" /> と追加してあげましょう。

その後、Visual Studio で該当ソリューションを開くと、Resource.Designer.cs にもリソースが自動的に追加されるので今まで通り作業を続けることが可能です。お疲れ様でした!

なお、Resource.Designer.cs ですが、FindViewById など、「リソースを参照する際に紐づけをしている」ファイルなので、手動でどうのこうの出来ません。

Xamarin Studio を使用する

csproj を編集するのが怖いなぁという方は Xamarin Studio を起動ましょう。

Resources/drawable に移動して、右クリックから 追加>ファイルを追加 で追加したいファイルを指定して取り込みます。これで csprojResource.Designer.cs の両方が適切に修正されます。

f:id:ytabuchi:20150903164434p:plain:w300

Xamarin Studio を閉じて、再度 Visual Studio でソリューションを開いて開発を続けましょう。

原因の考察と以降の対応

Resource.Designer.cs にはリソース情報が追加されていて、csproj には AndroidResource が追加されていないことがありました。恐らくですが、Visual Studio の Xamarin.Android プロジェクトで csproj に上手く書き込めなくなることがあるように思えます。

一度 csproj を手動で編集して Resource.Designer.cs が自動生成されれば大丈夫な事が多いようですが、この問題の対処をした後は、

  • 一度 Android プロジェクトを「アンロードして」、Windows エクスプローラーで画像をコピーし、手動で csproj を修正して プロジェクトを再読み込み する
    f:id:ytabuchi:20150903170943p:plain:w300
  • 画像を追加する時は Xamarin Studio を使う

のどちらかで対処していただければと思います。面倒ですね… Xamarin にも報告しておきます。

Xamarin 気になった方は

是非 ダウンロード(直接) / ダウンロード(弊社経由) して触ってみてください。 学習用リソースJXUG リンクページ に参考資料を纏めてますので併せてどうぞ。

Xamarin の情報が欲しい方はこのブログも購読いただいたりすると嬉しいです。

以上です。