先日行われたMicrosoft Technical Days で、幾つかストアアプリを見ていて
少し作ってみたくなったので、Virtual Box のWindows 8.1 環境にVS2013 Preview を入れてみた
これまでのストアアプリ作成用テンプレートに、ハブアプリが加えられている。
イメージしているアプリの形はハブアプリなので、迷わずこれを選択。
ちなみに私のC#知識量は0と言っても過言ではないが気にしない!!!!
とりあえず、何も考えずにビルドして実行してみる。
以前、同じように2012の Preview を触った時はテンプレートに
サンプルのデータがふくまれていてそれっぽく見えていたので、
まずはそちらを確認しようと思ったからだ。
ところがどっこい、いきなりエラーでつまづく。
まだ特に何もいじってないにもかかわらず、このいきなりのエラーっぷりが
いかにもβ版という雰囲気を醸し出し、知識量0の私を多いに幻滅させる。
正直、エラーメッセージが何を言ってんだか分からん。
とりあえず、何となくXAML上の記述がおかしくてParseがこけたんだろうと思い、
XAMLを開いてみるとあからさまに「XAMLが無効です」と書かれている場所が。
はっきり言って、何が問題なのかは読んでもよくわからないので、探索的手法をとる。
エラーとなっている箇所を絞り込むために、あれこれやっているとどうやら”x:Uid”に関する
記述が問題なように見える。
x:Uid ディレクティブ(WPF)
http://msdn.microsoft.com/ja-jp/library/vstudio/bb613571.aspx
自動生成された “x:Uid” ディレクティブが、重複しているモノがあるのが原因かと思い、
重複を排除してみたが結果は変わらず。
実は、”x:Uid” は関係ないのではないだろうか?と思い、今度は HubSection を削ったりしてみたら、最終的にはやはり “x:Uid” に原因がある事が分かった。
とりあえず、すべての x:Uid ディレクティブを削除してしまう事でハブアプリを動かす事が出来た。
よくよく x:Uid ディレクティブを見てみると、参照したWPFのXAMLの説明と次に示すストアアプリの説明とでは異なっていた
http://msdn.microsoft.com/ja-jp/library/windows/apps/hh758297.aspx
Windows ランタイム XAML での x:Uid の一意性の規則は、以前使われていた XAML を利用したテクノロジと比べると、いくらか異なります。Windows ランタイム XAML では、複数の XAML 要素上で同一の x:Uid ID 値がディレクティブとして存在することは正当とされています。
となっていて、重複そのものは問題が無くなっているように見える。
まぁ、そもそも重複と言うよりは、一つでもあるとうまく動かなかったわけなので、どちら下というと x:Uid ディレクティブの機能がそもそも有効になっていないという風に考えるのが正しい気がする。
気になって、グリッドアプリケーションのテンプレートを見てみたが、こちらにはそもそも x:Uid ディレクティブがついていない。
このディレクティブが、ローカライズを目的とした記述であるならばアプリケーションのスタイルによって要・不要が変わるものでもないように思えるのだが。
比較的新しい概念なんだろうか?
うーん、先は長そうだ