2017-03-08 5 views
1

私はXamarinフォームを使用してビルドされたアプリケーションをデバッグしようとしていますが、WindowsのC#で実行していますが、メソッドのローカル変数にデバッガからアクセスできないため、私は以下の簡単なテストを作成し、出力行にブレークポイントを置くと "hello"が出力されますが、ウォッチウィンドウではtestがコンテキストで定義されていないと言います。これは簡単な例ですが、他のメソッドにも同じことがあります。メソッドが非同期でなければならないのだろうか?有効にする必要があるオプションはありますか?デバッガ、C#UWP VS2017でローカル変数を見ることができないのはなぜですか?

protected override async void OnStart() 
{ 
    string test = "hello"; 
    System.Diagnostics.Debug.WriteLine(test); // If I put breakpoint here, I can't see 'test'. 
} 
+0

2017には関係ありませんが、アプリケーションプロパティの[ビルド]タブで[コンパイル時の.Netネイティブツールチェーン]をオンにしてデバッグ設定で実行しているときに問題が発生しました。 –

+0

@ MarkW私はコンパイルを見つけることができません.Netネイティブツールチェーン内のビルドタブ..? – Kyle

+0

@MarkWは私の​​ビルドの設定を見ています。私はすでに ".Netネイティブツールチェインでコンパイルする"をチェックしていません。 – CptanPanic

答えて

1

Xamarin.Formsバージョン2.2.0.45で問題を再現しました。 Xamarin.Formsを最新バージョンに更新しようとする可能性があります。ソリューションのために>マネージャーNuGetパッケージ - - 右solutionをクリック> [NuGetパッケージマネージャ]タブの[更新]ボタンをクリックしてください - >次の画面は、非同期の方法として enter image description here

を撃っただけのようlasetバージョンにすべてのクライアントのプロジェクトの更新をチェックしますこの方法ではawaitキーワードを使用できます。

await Task.Factory.StartNew(() => 
{ 
    string test = "hello"; 
    System.Diagnostics.Debug.WriteLine(test); 
}); 

awaitキーワードを使用していない場合は、メソッドが同期的に呼び出されます。ステートメントはこのメソッドでも実行されます。

+0

2つのことから、私はすでに2.3.3.193のXamarinフォームを使用しています。また、非同期としてのOnstartの例を示す理由は、完全版では、awaitを使用して非同期メソッドを呼び出すためです。私がコールスタックを調べると、非同期OnStartメソッドに入るまでは正常に見えるように思えます。 – CptanPanic

関連する問題