しっぽを追いかけて

ぐるぐるしながら考えています

Unity と猫の話題が中心   掲載内容は個人の私見であり、所属組織の見解ではありません

Xamarin の Shared プロジェクトの弊害

Xamarin.Forms の Shared プロジェクトで Page に カスタム View を配置するため、下記のような XAML を記述したらエラー!

<ContentPage x:Class="XamarinSample.Views.TopPage"
             xmlns="http://xamarin.com/schemas/2014/forms"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             xmlns:view="clr-namespace:XamarinSample.Views;assembly=XamarinSample">
    <view:ArcStepper />
</ContentPage>

f:id:matatabi_ux:20140914184731p:plain

アセンブリが見つからない・・・

f:id:matatabi_ux:20140914184955p:plain

アセンブリ名が「FormsTemplateiOS」になってるー!

案の定先ほどの XAML を下記のように書き換えたら動きました・・・が、これじゃあ共通化できない!

<ContentPage x:Class="XamarinSample.Views.TopPage"
             xmlns="http://xamarin.com/schemas/2014/forms"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             xmlns:view="clr-namespace:XamarinSample.Views;assembly=FormsTemplateiOS">
    <view:ArcStepper />
</ContentPage>

今度は XAML をもとに戻してから試しに iOSアセンブリ名を「XamarinSample」に合わせて実行すると・・・これも動きました

でもこれだと dll をすべてのプラットフォームで同じしないといけないので微妙ですね;

Shared より共通部分を別アセンブリ化する PCL プロジェクトの方がいいのかもしれない;

ユニバーサル Windows アプリでは Xamarin と異なり xmlns の指定にアセンブリ名がいらないので問題ないんですけどね・・・・