アプリ プロジェクトを Windows Phone 8 にアップグレードする方法

2013/12/05

対象: Windows Phone 8 | Windows Phone OS 7.1

Windows Phone OS 7.1 を対象としている既存の Windows Phone アプリケーション プロジェクトを Windows Phone 8 を対象とするプロジェクトにアップグレードするのは簡単です。

このトピックは、次のセクションで構成されています。

プロジェクトのアップグレード前、とりわけアプリケーションを Windows Phone 8 と Windows Phone OS 7.1 の両方を対象にしたい場合は、プロジェクトのバックアップ コピーを作成してください。アップグレード プロセスではプロジェクトのコピーは作成されません。プロジェクトはそのままアップグレードされます。プロジェクトのアップグレード後は、Windows Phone OS 7.1 に戻すことはできません。

プロジェクト ファイルとアプリ マニフェスト ファイル (WMAppManifest.xml) が読み取り専用としてマークされていないことを確認してください。アップグレード プロセスには、これらのファイルへの書き込みアクセスが必要です。

Visual Studio で既存の Windows Phone プロジェクトをアップグレードするには、次のいずれかの方法を使用します。

  • ソリューション エクスプローラーのプロジェクトのコンテキスト メニューで、[Windows Phone 8.0 へのアップグレード] コマンドを使用します。

  • プロジェクト デザイナーで、[対象の Windows Phone OS のバージョン] プロパティの値を [Windows Phone OS 8.0] に変更します。

しかし、XNA Game Studio 4.0 のプロジェクトを Windows Phone 8 にアップグレードすることはできません。詳細については、「XNA Framework および Windows Phone 8 の開発」を参照してください。

ソリューション エクスプローラーで [Windows Phone 8.0 へのアップグレード] コマンドを使って Windows Phone OS 7.1 プロジェクトをアップグレードするには

  1. Visual Studio で、アップグレードの対象である Windows Phone OS 7.1 アプリケーション プロジェクトを開きます。

  2. [ソリューション エクスプローラー] で、プロジェクトを右クリックし、コンテキスト メニューで [Windows Phone 8.0 へのアップグレード] を選択します。プロジェクトの対象は Windows Phone 8 にアップグレードされます。

    次の図は、ソリューション エクスプローラーでプロジェクトのコンテキスト メニューの [Windows Phone 8.0 へのアップグレード] コマンドを示しています。

    The Upgrade command on the context menu

プロジェクト デザイナーの対象バージョンを変更することにより Windows Phone OS 7.1 のプロジェクトをアップグレードするには

  1. Visual Studio の [プロジェクト] メニューで、[プロパティ] をクリックしてプロジェクト デザイナーを開きます。

  2. プロジェクト デザイナーの [Application] ページの [対象の Windows Phone OS のバージョン] ボックスで、[Windows Phone OS 7.1] を選択します。

  3. 変更内容を保存します。プロジェクトの対象は Windows Phone 8 にアップグレードされます。

    次の図は、プロジェクト デザイナーの [Application] ページの対象バージョンのドロップダウン リストを示しています。

    Target Windows Phone Version

Windows Phone OS 7.1 を対象とするその他のプロジェクトによって参照されているプロジェクトにアップグレードする場合は、その他のプロジェクトもアップグレードする必要があります。そうしないと、Windows Phone 8 プロジェクトを参照する Windows Phone OS 7.1 プロジェクトが生じることになります。この操作はサポートされていません。

アップグレードした後のプロジェクトに Windows Phone 8 でのみ利用できる機能を追加した場合には、以下の変更も行う必要があります。

  • Windows Phone 8 で初めて導入された API を使用するには、それらの新しい API を含んでいるアセンブリのためにプロジェクトへの参照を追加し、名前空間をコード ファイルにインポートする必要があります。

  • 新しい Windows Phone 8 機能をアプリに追加する場合、アプリ マニフェスト ファイルで機能とハードウェアの要件を編集する必要があります。

    ただし、アップグレード プロセスは、使用されていない ID_CAP_MEDIALIB 機能を自動的に削除し、適宜、新しい ID_CAP_MEDIALIB_AUDIO、ID_CAP_MEDIALIB_PLAYBACK、ID_CAP_MEDIALIB_VIDEO、または ID_CAP_MEDIALIB_PHOTO 機能と置き換えます。

Windows Phone OS 7.1 を対象とするアプリと、Windows Phone 8 を対象とするアプリの間での互換性の詳細については、「Windows Phone のアプリ プラットフォームの互換性」を参照してください。これらの機能に問題があると、アップグレード後にアプリの動作に影響が及ぶ可能性があります。

Windows Phone 8 と Windows Phone OS 7.1 の両方を対象とするアプリを維持しながらコードを再利用する方法については、「Windows Phone でアプリの複数のバージョンをターゲットにする方法」を参照してください。

Windows Phone OS 7.1 を対象とする既存のプロジェクトを Windows Phone 8 を対象とするようにアップグレードすると、アップグレード プロセスでアプリ マニフェスト ファイルに以下の変更が行われます。

Windows Phone 8 アプリ マニフェスト ファイルの詳細については、「Windows Phone 用のアプリ マニフェスト ファイル」を参照してください。

メモメモ:

次の XML サンプルでは、読みやすくするために改行を追加しています。アプリ マニフェスト ファイルを手動で変更する場合、改行や空白を追加しないでください。

機能

OS バージョン

変更

名前空間

7.1

http://schemas.microsoft.com/windowsphone/2009/deployment

8.0

http://schemas.microsoft.com/windowsphone/2012/deployment

バージョン番号

7.1

AppPlatformVersion=7.1

8.0

AppPlatformVersion=8.0

既定の言語

7.1

None

8.0

<DefaultLanguage xmlns="" code="en-US"/>

PublisherID

7.1

なし

8.0

<App … PublisherID="{new random GUID}" … >

機能

7.1

ID_HW_FRONTCAMERA

8.0

ID_REQ_FRONTCAMERA ハードウェア要件と置換

機能

7.1

ID_MEDIALIB

8.0

以下のいずれかと置換:

  • ID_CAP_MEDIALIB_AUDIO

  • ID_CAP_MEDIALIB_PLAYBACK

  • ID_CAP_MEDIALIB_VIDEO

  • ID_CAP_MEDIALIB_PHOTO

タイル サポート

7.1

<Tokens>
  <PrimaryToken
      TokenID="EmptyNewWP71ProjectToken"
      TaskName="_default">
    <TemplateType5>
      <BackgroundImageURI IsRelative="true" IsResource="false">
        Background.png
      </BackgroundImageURI>
      <Count>0</Count>
      <Title>EmptyNewWP71Project</Title>
    </TemplateType5>
  </PrimaryToken>
</Tokens>

8.0

<Tokens>
  <PrimaryToken
      TokenID="EmptyNewWP80ProjectToken"
      TaskName="_default">
    <TemplateFlip>
      <SmallImageURI IsRelative="true" IsResource="false">
        Assets\Tiles\FlipCycleTileSmall.png
      </SmallImageURI>
      <Count>0</Count>
      <BackgroundImageURI IsRelative="true" IsResource="false">
        Assets\Tiles\FlipCycleTileMedium.png
      </BackgroundImageURI>
      <Title>EmptyNewWP80Project</Title>
      <BackContent></BackContent>
      <BackBackgroundImageURI></BackBackgroundImageURI>
      <BackTitle></BackTitle>
      <DeviceLockImageURI></DeviceLockImageURI>
      <HasLarge></HasLarge>
    </TemplateFlip>
  </PrimaryToken>
</Tokens>

画面解像度

7.1

なし

8.0

<ScreenResolutions>
  <ScreenResolution Name="ID_RESOLUTION_WVGA"/>
  <ScreenResolution Name="ID_RESOLUTION_WXGA"/>
  <ScreenResolution Name="ID_RESOLUTION_HD720P"/>
</ScreenResolutions>

Windows Phone SDK 8.0 ツールで Windows Phone OS 7.0 を対象とするプロジェクトを開くと、Windows Phone OS 7.1 を対象にプロジェクトをアップグレードするよう指示するプロンプトが Visual Studio によって表示されます。Windows Phone OS 7.1 を対象にするようにプロジェクトをアップグレードした後は、Windows Phone 8 を対象にするようにプロジェクトをアップグレードできます。

Windows Phone OS 7.0 からプロジェクトをアップグレードするには

  1. Visual Studio で、Windows Phone OS 7.0 を対象とするプロジェクトを開きます。次のダイアログ ボックスでは、プロジェクトのアップグレードが要求されます。

    Upgrade warning for Windows Phone 7.0 projects
  2. [OK] をクリックします。プロジェクトの対象は Windows Phone OS 7.1 にアップグレードされます。オプションで、プロジェクトの対象を Windows Phone 8 にアップグレードできるようになりました。

ここでは、アップグレードが失敗する可能性のあるいくつかのシナリオについて説明し、エラーの原因を理解して解決できるようにします。

アップグレード後に、未解決の参照に関するエラーでアプリ プロジェクトのビルドが失敗する

懸案事項。既存のプロジェクトは、SDK アセンブリを参照します。Windows Phone SDK 7.1 をアンインストールして、Windows Phone SDK 8.0 をインストールします。Windows Phone SDK 8.0 では、同じパスに同じ SDK アセンブリの新しいバージョンがインストールされます。プロジェクトによる古いアセンブリ参照は、コンピューター上に存在しなくなります。その結果、プロジェクトのアップグレードの前後のいずれかにおいて、Windows Phone SDK 8.0 でプロジェクトのビルドが正常に行われなくなります。

例: Windows Phone SDK 7.1 では、Microsoft Advertising SDK アセンブリのバージョン 5.2 がインストールされます。Windows Phone SDK 8.0 では、Windows Phone OS 7.1 を対象とするアプリの同じパスに、同じアセンブリのバージョン 6.1 がインストールされます。Windows Phone SDK 7.1 を削除すると、プロジェクトによる古いアセンブリ参照は、コンピューター上に存在しなくなります。

症状。次のいずれかに類似した警告またはエラーが表示される場合があります。

The type or namespace name 'Advertising' does not exist in the namespace 'Microsoft' (are you missing an assembly reference?)

Could not resolve this reference. Could not locate the assembly "Microsoft.Advertising.Mobile, Version=5.2.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL". Check to make sure the assembly exists on disk. If this reference is required by your code, you may get compilation errors.

The referenced component 'Microsoft.Advertising.Mobile' could not be found.

解決策。古いバージョンへの参照を手動で削除し、SDK アセンブリの新しいバージョンへの参照を追加します。

アップグレード後に、重複する型またはあいまいな型に関するエラーでアプリ プロジェクトのビルドが失敗する

懸案事項。既存のプロジェクトで、Windows Phone Toolkit などの Microsoft SDK のアセンブリからの API が使用されています。Windows Phone 8 では、API は Windows Phone 8 参照アセンブリの異なる名前空間に移動されています。その結果、コンパイラで SDK アセンブリの定義と参照アセンブリの定義との間の選択ができません。

例: System.Tuple 型が Windows Phone OS 7.1 用の Windows Phone Toolkit で定義されていました。Windows Phone OS 8.0 では、System.Tuple クラスは mscorlib.dll に移動されています。アップグレードされたプロジェクトに mscorlib.dll への既定の参照と共に Windows Phone OS 7.1 用の Windows Phone Toolkit への参照がまだある場合、重複する型またはあいまいな型に関するエラーが表示される場合があります。

症状。次のような警告が表示される場合があります。

The predefined type 'System.Tuple' is defined in multiple assemblies in the global alias; using definition from 'c:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\WindowsPhone\v8.0\mscorlib.dll'

解決策。コードが Windows Phone 8 参照アセンブリの型に対して正しい名前空間を指すように、コードを手動で更新します。または、型定義が同じ SDK アセンブリの新しいバージョンに移動されている場合は、古いバージョンへの参照を手動で削除し、SDK アセンブリの新しいバージョンへの参照を追加します。

プロジェクトのインポートに関するエラーでアップグレードが失敗する

症状。[Windows Phone 8.0 へのアップグレード] をクリックすると、プロジェクトのインポートが見つからないことを示すエラーで失敗します。

解決策。プロジェクト ファイルで既存のインポート宣言を変更してカスタムの条件付きインポートを作成していないことを確認します。カスタマイズを削除してから、アップグレードを再試行します。

詳細情報。正常にアップグレードするには、プロジェクト ファイルで作成されたインポート宣言をそのまま残しておく必要があります。既定のインポート宣言を削除または編集すると、Windows Phone 8 へのプロジェクトの正常なアップグレードが妨げられる場合があります。インポート宣言をカスタマイズした場合は、アップグレード前に実行したカスタマイズを元に戻さなければならない場合があります。

アップグレードは、System.Core.dll または mscorlib.dll への参照が見つからないことが原因で失敗しています。

症状。[Windows Phone 8.0 へのアップグレード] をクリックすると次のエラーで失敗します。

Upgrade error when reference is missing

解決策。既定の参照の一部がプロジェクトから欠落していないかを確認します。特に、System.Core.dll と mscorlib.dll が参照されていることを確認してください。これらの参照が欠落している場合は、次のパスからこれらのアセンブリの Windows Phone OS 7.1 バージョンへの参照を復元してください。

Program Files (x86)\Reference Assemblies\Microsoft\Framework\Silverlight\v4.0\Profile\WindowsPhone71\

欠落している参照を復元してから、アップグレードを再試行します。

詳細情報。Windows Phone OS 7.1 を対象とするプロジェクトには、System.Core.dll と mscorlib.dll への明示的な参照が必要です。これらの参照は、プロジェクトを Windows Phone 8 にアップグレードする前に存在している必要があります。

表示:
© 2014 Microsoft