ぴーさんログ

だいたいXamarin.Formsのブログ

Xamarin.Forms for UWP Preview を試す

こんな会話をしていたら、公式フォーラムでXamarin.FormsのUWP(Universal Windows Platform)サポート版プレビューが公開されたので写経してみます。

Xamarin.Forms for UWP Preview Now Available - Xamarin Forums

NuGet周りの準備

※ 2015/11/17にリリースされたXamarin.Forms 2.0以降ではnuget.orgからダウンロードできるようになりました。よってzipファイルのダウンロードやローカルパッケージリソースの参照は不要です。(2015/11/18 修正)

Preview版NuGetパッケージの入手

まずはプレビュー版のNuGetパッケージをダウンロードして、zipファイルの中身をローカルフォルダーに展開しましょう。

zipファイルはフォーラムのここからダウンロードできます。

f:id:ticktack623:20151024212926j:plain

パッケージマネージャーの設定 (Visual Studio)

ツール > NuGetパッケージマネージャー > パッケージマネージャーの設定 を開きます。

右上の「+」ボタンでパッケージソースを追加します。

f:id:ticktack623:20151024215723j:plain

追加されたパッケージソースの「ソース」を先ほどzipファイルを展開したフォルダに変更して「更新」ボタンを押します。

f:id:ticktack623:20151024215956j:plain

これでプレビュー版のNuGetパッケージを使う準備が整いました。

サンプルプロジェクトを作ってみよう!

今回の例ではVisual Studio 2015で作業します。

プロジェクトの作成

まずはXamarin.Formsの新規ソリューションを作成します。

f:id:ticktack623:20151024222151j:plain

ソリューションに空のUWPプロジェクトを追加します。

f:id:ticktack623:20151024222812j:plain

構成マネージャーで追加したプロジェクトの「ビルド」と「配置」をONにします。

f:id:ticktack623:20151024225000j:plain

  • UWPプロジェクトにXamarin.FormsのNuGetパッケージを追加します。 この際、「パッケージソース」リストボックスで先ほど追加したローカルフォルダーを指定し、「プレスリリースを含める」をチェックすると候補に出てくるようになります。 ※ 2015/11/17にリリースされたXamarin.Forms 2.0以降ではnuget.orgからダウンロードできるようになりました。(2015/11/18 修正)

f:id:ticktack623:20151025032409j:plain

他のプロジェクトのXamarin.Formsを通常の最新に更新します。(今回の例ではShared構成、かつ他のプラットフォームは動かさないので何もしませんが)

UWPプロジェクトにShared/PCLプロジェクトへの参照を追加します。

ソースコードの修正

UWPプロジェクトのソースコードをXamarin.Formsに対応させます。

App.xaml.cs

OnLaunched の次のコードの下に

rootFrame.NavigationFailed += OnNavigationFailed;

このコードを追加します。

Xamarin.Forms.Forms.Init (e);

MainPage.xaml

xmlnsを追加します。

xmlns:forms="using:Xamarin.Forms.Platform.UWP"

xmlns:forms="using:Xamarin.Forms.Platform.WinRT" ※ Xamarin.Forms 2.0から名前空間が変更されました。(2015/11/18 修正)

ルートのPageクラスをforms:WindowsPageクラスに修正します。

<forms:WindowsPage
  ...>
</forms:WindowsPage>

MainPage.xaml.cs

次のように修正します。YOUR_NAMESPACE.Appは今回の例ではXFUWPSample.Appとなります。 (MainPageの継承元を消しておくのがポイント?)

public sealed partial class MainPage
{
    public MainPage()
    {
        this.InitializeComponent();
        LoadApplication (new YOUR_NAMESPACE.App());
    }
}

動かしてみる

すべて終わってからで実行してみると...

f:id:ticktack623:20151025023029j:plain

UWPでXamarin.Formsが動きました。すごい!

補足1

「型 "HogeHoge" は参照されていないアセンブリで定義されています。~」的なエラーが大量に出る人は、ここで配布されている .NET Framework 4.5.2 Developer Pack をインストールしてみてください。

補足2

XamarinのIndieライセンスを契約している場合、「Xamarin.Android/iOS for Visual Studio はIndieじゃあ使えないよ」と言われてビルドさせてもらえませんが、AndroidiOSのプロジェクトをアンロードすれば回避できます。(なぜかiOSの方はアンロードしなくてもダイアログを閉じればビルド&実行可能)

最後に

機能的安定とパフォーマンス向上のためバグ報告を待ってます、とのこと。

バグレポートの書き方

Xamarin.FormsのBugzilla

参考

Xamarin.Forms for UWP Preview Now Available - Xamarin Forums