前のトピックは プロジェクトの移植についてでした。
この移植ガイドの最後まで読むことは強くお勧めしますが、プロジェクトのビルドと実行のステージに進みたいと思っているのも理解しています。 そのためには、重要でないコードをコメントアウトまたはスタブ化することで一時的に進捗を得て、後でその負債を返済するために戻ることができます。 このトピックにあるトラブルシューティングの症状と解決策の表は、この段階で役立つ場合がありますが、次に進むいくつかのトピックを読むことの代わりにはなりません。 後のトピックを進める際は、いつでもテーブルを参照できます。
問題を追跡する
XAML 解析例外は、特に、例外内に意味のあるエラー メッセージがない場合に診断が困難な場合があります。 デバッガーが初回例外をキャッチするように構成されていることを確認します (早い段階で解析例外をキャッチします)。 デバッガーで例外変数を調べて、HRESULT またはメッセージに有用な情報があるかどうかを判断できる場合があります。 また、XAML パーサーによるエラー メッセージの出力については、Visual Studio の出力ウィンドウを確認してください。
アプリが終了し、XAML マークアップの解析中にハンドルされない例外がスローされたことがわかっている場合、それは不足しているリソースへの参照が原因である可能性があります (つまり、Windows Phone Silverlight アプリには存在するが、Windows 10 アプリには存在しないキーを持つ一部のシステム TextBlock スタイル キーなど)。 UserControl、カスタム コントロール、またはカスタム レイアウト パネル内で発生する例外である可能性も考えられます。
最後の手段はバイナリ分割です。 ページからマークアップの約半分を削除し、アプリを再実行します。 その後、エラーが削除した半分の内側にあるか (いずれの場合も復元する必要があります)、または削除しなかった半分 かどうかがわかります。 エラーを含む部分を半分に分割してプロセスを繰り返し、問題が特定できるまで続けます。
ターゲットプラットフォームバージョン
このセクションは、Visual Studio で Windows 10 プロジェクトを開いた際に「Visual Studio の更新が必要です」というメッセージが表示された場合の対処方法を説明します。 1 つ以上のプロジェクトには、インストールされていないか、Visual Studio の今後の更新プログラムの一部として含まれている、プラットフォーム SDK <バージョンの> が必要です。
- まず、インストールした Windows 10 用 SDK のバージョン番号を確認します。 C:\Program Files (x86)\Windows Kits\10\Include\<versionfoldername> に移動し、<versionfoldername>を書き留めます。これはクワッド表記の "Major.Minor.Build.Revision" になります。
- プロジェクト ファイルを開いて編集し、
TargetPlatformVersion
要素とTargetPlatformMinVersion
要素を見つけます。 次のように編集し、versionfoldername <> をディスク上で見つかったクワッド表記バージョン番号に置き換えます。
<TargetPlatformVersion><versionfoldername></TargetPlatformVersion>
<TargetPlatformMinVersion><versionfoldername></TargetPlatformMinVersion>
トラブルシューティング:症状と改善策
表の救済情報は、自分自身のブロックを解除するのに十分な情報を提供することを目的としています。 これらの各問題の詳細については、後のトピックを参照してください。
症状 | 対策 |
---|---|
XAML パーサーまたはコンパイラはエラーを返します:「名前 ‘<typename>’ は名前空間 […] に存在しません。」 |
<typename>がカスタム型の場合は、XAML マークアップの名前空間プレフィックス宣言で "clr-namespace" を "using" に変更し、アセンブリ トークンを削除します。 プラットフォーム型の場合、これは、型がユニバーサル Windows プラットフォーム (UWP) に適用されないため、同等の型を見つけてマークアップを更新することを意味します。 すぐに発生する可能性がある例は、 phone:PhoneApplicationPage と shell:SystemTray.IsVisible です。 |
XAML パーサーまたはコンパイラは、エラー "メンバー "<メンバー名>" が認識されないか、アクセスできません。" または "プロパティ "<プロパティ名>" が [...] 型で見つかりませんでした。". | ルート ページなどの型名を移植すると、これらのエラーが表示され始めます。 メンバーまたはプロパティは UWP には適用されないため、同等のメンバーを見つけてマークアップを更新します。 すぐに発生する可能性がある例は、 SupportedOrientations と Orientation です。 |
XAML パーサーまたはコンパイラは、添付可能なプロパティ [...]エラーを示します。が見つかりませんでした [...]。" または "不明なアタッチ可能なメンバー [...] です。". | これは、添付プロパティではなく型によって発生する可能性があります。その場合、型に関するエラーが既に発生し、修正するとこのエラーは解消されます。 すぐに発生する可能性がある例は、 phone:PhoneApplicationPage.Resources と phone:PhoneApplicationPage.DataContext です。 |
XAML パーサーまたはコンパイラ、またはランタイム例外により、エラー "リソース"<resourcekey>" を解決できませんでした。". | リソース キーは、ユニバーサル Windows プラットフォーム (UWP) アプリには適用されません。 適切な同等のリソースを見つけて、マークアップを更新します。 すぐに目にする可能性がある例としては、システム TextBlock スタイルキー(PhoneTextNormalStyle など)があります。 |
C# コンパイラは、エラー "型または名前空間名 '<名>' が見つかりませんでした [...]" または "型または名前空間名 '<名>' が名前空間 [...] に存在しません。" または "型または名前空間名 '<名>' は、現在のコンテキストに存在しません。 | これは、コンパイラが型の正しい UWP 名前空間をまだ認識していないことを意味する可能性があります。 これを修正するには、Visual Studio の [解決 ] コマンドを使用します。 API がユニバーサル デバイス ファミリと呼ばれる API のセットに含まれていない場合 (つまり、API は拡張機能 SDK に実装されます)、 拡張機能 SDK を使用します。 ポートがそれほど単純でない場合もあります。 すぐに発生する可能性がある例は、 DesignerProperties と BitmapImage です。 |
デバイスで実行すると、アプリが終了するか、Visual Studio から起動すると、"Windows ランタイム 8.x アプリ [...] をアクティブ化できません" というエラーが表示されます。 アクティブ化要求が失敗し、"Windows はターゲット アプリケーションと通信できませんでした。 これは通常、ターゲット アプリケーションのプロセスが中止されたことを示します。 [...] | 問題は、初期化中に、独自のページまたはバインドされたプロパティ(またはその他の型)で実行されている命令型のコードである可能性があります。 または、アプリが終了したときに表示されようとしている XAML ファイルの解析中に発生する可能性があります (Visual Studio から起動すると、スタートアップ ページになります)。 無効なリソース キーを探すか、このトピックの「問題の 追跡 」セクションのガイダンスを試してください。 |
XamlCompiler エラー WMC0055: テキスト値 '<your stream geometry>' を 'RectangleGeometry' 型のプロパティ 'Clip' に割り当てることはできません | UWP では、Microsoft DirectX と XAML C++ UWP アプリのタイプ。 |
XamlCompiler エラー WMC0001: XML 名前空間 [...] における未知の型 'RadialGradientBrush' | UWP には RadialGradientBrush 型がありません。 マークアップから RadialGradientBrush を削除し、他の種類の Microsoft DirectX および XAML C++ UWP アプリを使用します。 |
XamlCompiler エラー WMC0011: 要素 '<UIElement 型>' における未知のメンバー 'OpacityMask' | UWP Microsoft DirectX および XAML C++ UWP アプリ。 |
SYSTEM.NI.DLL で 'System.Runtime.InteropServices.COMException' 型の最初の例外が発生しました。 追加情報: アプリケーションは、別のスレッド用にマーシャリングされたインターフェイスを呼び出しました。 (HRESULT からの例外: 0x8001010E (RPC_E_WRONG_THREAD))。 | 実行している作業は、UI スレッドで行う必要があります。 CoreWindow.GetForCurrentThread) を呼び出します。 |
アニメーションは実行中ですが、ターゲット プロパティには影響しません。 | アニメーションを独立させるか、アニメーションに EnableDependentAnimation="True" を設定します。
アニメーションを参照してください。 |
Visual Studio で Windows 10 プロジェクトを開くと、"Visual Studio の更新が必要です。 1 つ以上のプロジェクトには、インストールされていないか、Visual Studio の今後の更新プログラムの一部として含まれている、プラットフォーム SDK <バージョンの> が必要です。 | このトピックの「TargetPlatformVersion」セクションを参照してください。 |
Xaml.cs ファイルで InitializeComponent が呼び出されると、System.InvalidCastException がスローされます。 | これは、同じxaml.cs ファイルを共有する複数の xaml ファイル (少なくとも 1 つは MRT 修飾) があり、要素に 2 つの xaml ファイル間で矛盾する x:Name 属性がある場合に発生する可能性があります。 両方の xaml ファイル内の同じ要素に同じ名前を追加するか、名前を完全に省略してみてください。 |
次のトピックは XAML と UIの移植です。