2

Windows Phone 8 アプリケーションで非常に奇妙な問題が発生しています。

デバッグを開始すると、エミュレーターが表示され、アプリケーションがデプロイされて実行が開始されます。

app.xaml を使用してデバッグすると、デバッガーは "Mainpage.xaml" のコンストラクターにもヒットします。

コンストラクターから F5 キーを押した後、エミュレーターは "読み込み中" 画面を表示し続け、実際には mainpage.xaml UI を表示しません。

ここに画像の説明を入力

これは「デバッグ」からの出力です

'TaskHost.exe' (CLR C:\windows\system32\coreclr.dll: DefaultDomain): Loaded
'C:\windows\system32\mscorlib.ni.dll'. Skipped loading symbols. Module is optimized and the 
debugger option 'Just My Code' is enabled.
'TaskHost.exe' (CLR C:\windows\system32\coreclr.dll: Silverlight AppDomain): Loaded 
'C:\windows\system32\System.Windows.RuntimeHost.ni.dll'. Skipped loading symbols. Module is   
optimized and the debugger option 'Just My Code' is enabled.
'TaskHost.exe' (CLR C:\windows\system32\coreclr.dll: Silverlight AppDomain): Loaded 
'C:\windows\system32\System.Windows.ni.dll'. Skipped loading symbols. Module is optimized and the 
debugger option 'Just My Code' is enabled.
'TaskHost.exe' (CLR C:\windows\system32\coreclr.dll: Silverlight AppDomain): Loaded 
'C:\windows\system32\System.Net.ni.dll'. Skipped loading symbols. Module is optimized and the 
debugger option 'Just My Code' is enabled.
'TaskHost.exe' (CLR C:\windows\system32\coreclr.dll: Silverlight AppDomain): Loaded 
'C:\windows\system32\System.ni.dll'. Skipped loading symbols. Module is optimized and the 
debugger option 'Just My Code' is enabled.
'TaskHost.exe' (CLR C:\windows\system32\coreclr.dll: Silverlight AppDomain): Loaded  
'C:\windows\system32\System.Xml.ni.dll'. Skipped loading symbols. Module is optimized and the 
debugger option 'Just My Code' is enabled.
'TaskHost.exe' (CLR C:\windows\system32\coreclr.dll: Silverlight AppDomain): Loaded 
'C:\Data\Programs\{CBED48CE-DB64-44F3-9F60-7BCFF4093AAB}\Install\Tee.DLL'. Symbols loaded.
'TaskHost.exe' (CLR C:\windows\system32\coreclr.dll: Silverlight AppDomain): Loaded  
'C:\windows\system32\System.Data.Linq.ni.dll'. Skipped loading symbols. Module is optimized and 
the debugger option 'Just My Code' is enabled.
'TaskHost.exe' (CLR C:\windows\system32\coreclr.dll: Silverlight AppDomain): Loaded 
'C:\windows\system32\Microsoft.Phone.ni.dll'. Skipped loading symbols. Module is optimized and 
the debugger option 'Just My Code' is enabled.
'TaskHost.exe' (CLR C:\windows\system32\coreclr.dll: Silverlight AppDomain): Loaded 
'C:\windows\system32\Microsoft.Phone.Interop.ni.dll'. Skipped loading symbols. Module is 
optimized and the debugger option 'Just My Code' is enabled.
'TaskHost.exe' (CLR C:\windows\system32\coreclr.dll: Silverlight AppDomain): Loaded 
'C:\windows\system32\Microsoft.Phone.Data.Internal.ni.dll'. Skipped loading symbols. Module is 
optimized and the debugger option 'Just My Code' is enabled.
'TaskHost.exe' (CLR C:\windows\system32\coreclr.dll: Silverlight AppDomain): Loaded 
'C:\windows\system32\System.Core.ni.dll'. Skipped loading symbols. Module is optimized and the 
debugger option 'Just My Code' is enabled.
'TaskHost.exe' (CLR C:\windows\system32\coreclr.dll: Silverlight AppDomain): Loaded   
'C:\windows\system32\System.Xml.Serialization.ni.dll'. Skipped loading symbols. Module is 
optimized 
and the debugger option 'Just My Code' is enabled.
The thread 0x8f4 has exited with code 259 (0x103).
The thread 0x8fc has exited with code 259 (0x103).
The thread 0x988 has exited with code 259 (0x103).
The thread 0x998 has exited with code 259 (0x103).
The thread 0x9a0 has exited with code 259 (0x103).

スタートアップ オブジェクトは正しく "app" に設定され、マニフェストではナビゲーション ページが "mainpage.xaml" に設定されているため、デバッガーは "Mainpage.xaml" のコンストラクターをヒットします。

何が問題になる可能性がありますか?

4

1 に答える 1

2

ああ....終了後にアプリケーションコードでVS 2012コード分析を実行したことがわかり、「CompleteInitializePhoneApplication」メソッドにnullチェックが追加されたため、このエラーが発生しました。

App.xaml では、

        // Do not add any additional code to this method
    private void CompleteInitializePhoneApplication(object sender, NavigationEventArgs e)
    {
        // Set the root visual to allow the application to render
        if (RootVisual != RootFrame)
            RootVisual = RootFrame;

        // Remove this handler since it is no longer needed
        RootFrame.Navigated -= CompleteInitializePhoneApplication;
    } 

しかし、Resharper またはコード分析のいずれかによって、この愚かな null チェックが追加され、次のようになりました。

        // Do not add any additional code to this method
    private void CompleteInitializePhoneApplication(object sender, NavigationEventArgs e)
    {
        // Set the root visual to allow the application to render
        if (RootVisual != null && RootVisual != RootFrame)
            RootVisual = RootFrame;

        // Remove this handler since it is no longer needed
        RootFrame.Navigated -= CompleteInitializePhoneApplication;
    }

したがって、基本的に私の RootVisual は最初から設定されていませんでした。

@ErnodeWeerd さん、ゼロから始めるという提案に感謝します。

于 2013-06-15T06:55:49.763 に答える