2017-03-08 51 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

相关问题