
これは、Windows Phone 8.0アプリからバージョン8.1への一連の更新の3番目の記事です。 今回は、最も難しいシナリオ-Windows Phone 8.0(Silverlight)アプリケーションをWindows Phone 8.1(XAML)に更新することについて説明します。 このプロセスは、アセンブリとそれらへのリンクを変更するための特別なアクションがVisual Studio(Reterget)に
あるSilverlightまたはWindowsストアの
場合ほど透明で理解しやすいもの
ではありません。 この場合、新しいバージョン用にアプリケーションを手動で再構築する必要があります。 これが私たちがやることです。
作業の結果に
応じて、アプリケーションを新しいプラットフォーム8.1に
アップグレードし、 WinRTの使用に切り替えて
その機能を使用できるようにするだけでなく、共通コードを
使用して電話およびWindows用の
ユニバーサルアプリケーションのドラフトを取得します。
作業計画は次のとおりです。
- 新しいWindows Phone 8.1プロジェクトの作成
- コードの移植
- インターフェイスの移行
- Windowsストアプロジェクトの作成
Windows Phone 8.0用に開発された簡単なアプリケーションがあります。これをWindows Phone 8.1にアップグレードします。
このアプリケーションは、Windows Phoneアプリケーションプロジェクトと、あらゆる種類の必要なクラスを含むポータブルクラスライブラリの2つのプロジェクトで構成されています。 サードパーティライブラリのうち、このアプリケーションは
MVVMLightのみを
使用します。

新しいWindows Phone 8.1プロジェクトの作成
アプリケーションがWindows Phone 8.1だけでなく、以前のバージョンのWindows Phoneでも機能するには、新しいプロジェクトとともにWindows Phone 8.0プロジェクトを引き続きサポートする必要があります。
最善の解決策は、同じソリューションの隣に
Windows Phone 8.1プロジェクトを作成し、両方のプロジェクト
のコードを可能な限り
再利用することです。
2番目のオプションは
、Windows Phone 8.1に再ターゲットアクション
を使用して、既存のプロジェクトのライブラリリンクを自動的に
修正することです。 ただし、XAMLではなく、Silverlight 8.1アプリケーションを取得すると、下位互換性が失われます。

この方法ではなく、Windows Phone 8.1用の別のアプリケーションを近くに作成します。
Visual Studioで、[
追加 ]-[
新しいプロジェクト ]
をクリックします。 プロジェクトテンプレートとして、
Blank Appを選択します。

コードの移植
プロジェクトがMVVMを使用し、コードがインターフェイスから確実に分離され、補助クラスとオブジェクトが既に存在する
ポータブルクラスライブラリがあることは非常に幸運です。 これがない場合は、PCLでモデル、コントローラー、ロジックを取り出します。 下の画像の構造に近いものが得られます。

完成したPCLをWindows Phone 8.1のプロジェクトに接続し、使用されている残りのライブラリを追加します。

ここで、Windows Phone 8.0プロジェクトからファイルを慎重にコピーし、破損するすべてのものを排除する必要があります。 それは見かけほど速くはなく、むしろ日常的です。
コピーされたファイルでは、名前空間を変更して、ソリューションの競合を回避することをお勧めします。 これは、検索と置換機能を使用してすばやく実行できます。

Windows Phone 8.0アプリケーションが複数の言語をサポートしており、リソースファイルをローカライズに使用した場合、8.1では
リソースフォルダーにそれらを残すことは不可能であることを知っておくことが重要です。
新しいリソースファイルを
作成し 、そこにデータを転送する必要があります。

インターフェイスの移行
アプリケーションをコンパイルして実行しようとすると、失敗します。 XAMLファイルのインターフェイス全体が誓います。 2ページのアプリケーションに44個のエラーがあります。
幸いなことに、これらはすべて汎用であり
、名前空間、コントロール、またはそれらのプロパティに関連しています 。 新しいWindows Phone 8.1はWinRT
を使用しており、Silverlight Toolkitで使用したコントロールとプロパティが
ない場合があります 。

例:
- ページの開始タグは<phone:PhoneApplicationPage ...>ではなく、単に<Page ...>です。
- <phone:PhoneApplicationPage.Resources>の代わりに、 <Page.Resources>を使用します。
- 多くの標準スタイルは見つかりません。手動で再作成する必要があります。
- コントロールの一部のプロパティが変更されたか、まったく存在しません。
このプロセスの結果、私は2つのほぼ同一のアプリケーションを入手しました。 左側にWindows Phone 8.0、右側にWindows Phone 8.1。

Windowsストアプロジェクトの作成
Windows Phone 8.1アプリケーションが機能したら、さらに進んで
Windowsストアアプリケーションに
展開し、Windowsストアに
公開 できます 。
このプロセスは、前のプロセスほど面倒ではありません。 プロジェクトのコンテキストメニューで[
Windows 8.1の追加 ]を選択する必要があります

2つの新しいプロジェクトが作成されます。Windowsストアアプリケーション用のプロジェクトと、Windows 8.1とPhone 8.1アプリケーション間の共通コード用の
共有プロジェクトです。

ほとんどのコードを
共有プロジェクトに転送し、xamlの一部をユーザーコントロールに変換して再利用できます。

Windowsアプリケーションを実行する場合、それは電話アプリケーションにも非常に似ているため、より便利な設計を別途行う必要があります。

おわりに
Windows Phone 8.0、Windows Phone 8.1、およびWindows Store 8.1の3つのアプリケーションがありました。
すべてのコードおよびその他の再利用ファイルは、Windows Phone 8.1およびWindowsストアプロジェクトから、共有コードまたはポータブルクラスライブラリ用の共有プロジェクトに移動されました。
Windows Phone 8.0のプロジェクトでは、コードの一部もPCLに送信されましたが、古いAPIを必要とするインターフェイスとすべての機能はこのプロジェクトに残りました。
完成したサンプルはこちらからダウンロードできます:
Universal.zip
便利なリンク
新しいWindows Phone 8.1。 アプリケーション開発者は何をすべきですか?Windows Phone Silverlight 8.0アプリをWindows Phone Silverlight 8.1にアップグレードするWindowsストアアプリをユニバーサルに変える無料のオンラインテクノロジーコース無料または試用版のVisual Studio 2013をダウンロードするWindows Phoneアプリケーション開発者になるWindows Phone 8.1の基本機能を備えたコード例(c#、c ++、javascript)