2017-03-08 187 views
1

我想調試一個使用Xamarin格式構建的應用程序,並且現在在C#上運行在Windows上,但是由於調試器無法訪問方法中的局部變量,因此即使是簡單的事情也會遇到問題。我甚至在下面創建了一個簡單的測試,如果我在輸出行上放置斷點,將會輸出「hello」,但在監視窗口中它表示測試沒有在上下文中定義。這是一個簡單的例子,但其他方法中也存在同樣的情況。我想知道它是否與async方法有關?有需要啓用的選項嗎?爲什麼我不能在調試器中看到局部變量,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更新爲最新版本。右鍵單擊solution - >管理NuGet包的解決方案 - >點擊NuGet包管理器選項卡上的更新按鈕 - >查看所有客戶項目更新,以LASET版本,就像下面的屏幕截圖 enter image description here

對於異步方法您可以使用方法中的await關鍵字。

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

如果您尚未使用await關鍵字,則會同步調用該方法。該聲明也將在該方法中執行。

+0

所以2件事,我已經在使用Xamarin Forms的2.3.3.193。另外,我將Onstart作爲異步的例子的原因是因爲在完整版本中,我使用await調用異步方法。注意,當我查看調用堆棧時,看起來事情看起來很正常,直到我進入異步OnStart方法。 – CptanPanic

相關問題