gpt4 book ai didi

xamarin - 命令未在发布版本中触发

转载 作者:行者123 更新时间:2023-12-05 03:03:50 26 4
gpt4 key购买 nike

我的 MainPage 上有一个导航到下一个 View 的按钮。这在我的 Windows PC (Visual Studio 2017) 上的模拟 Android 设备(Android 8.1 加速 x86)上的调试构建中非常有效。

按钮从我的 View 中绑定(bind)到我的 View 模型:

<Button Text="Report error" Command="{Binding NewErrorCommand}" />

View 模型代码:

public Command NewErrorCommand
{
get
{
return _newErrorCommand ?? (_newErrorCommand = new Command(ExecuteNewErrorCommand, CanNewErrorCommand));
}
}

private bool CanNewErrorCommand(object arg)
{
return true;
}

private async void ExecuteNewErrorCommand(object obj)
{
try
{
// I'll get here in simulation/debug build but not in release build on device
await Application.Current.MainPage.DisplayAlert("Go", "Go", "Ok");

await _navigation.PushAsync(new TestView(), false);
}
catch (Exception exc)
{
await Application.Current.MainPage.DisplayAlert("Error", exc.Message, "Cancel");
}
}

我的整个应用程序在模拟器上运行得很好。如果我按下真实物理设备上的按钮,我会看到视觉反馈(按钮改变颜色),但什么也没有发生。

到目前为止我尝试了什么:

  • 使用 DisplayAlert 进行一些 printf 调试(未命中,查看源代码)
  • 将蓝牙鼠标连接到我的 android 设备 (android 6.0) 以防鼠标点击和手指点击之间存在差异(仍然没有工作按钮)

你能帮助 Xamarin.Forms 初学者吗?


更新

我通过 USB 连接我的 android 手机进行调试。该按钮在 Debug模式下工作(正在设置断点、打开新页面)但在发布版本中仍然不起作用。

根据请求设置链接器:

enter image description here enter image description here

最佳答案

如果您在 Android 项目属性的 Build 部分中将链接选项设置为“仅 SDK 程序集”,则发布版本将起作用。

linker启用并设置为“SDK and User assemblies”后,删除了很多代码(假定不使用)。在您的情况下, NewErrorCommand 属性被删除,因为该工具假定您没有使用它。

如果您将其设置为“仅 SDK 程序集”,它会起作用,因为在该配置下,链接器不会触及您自己的任何程序集。

关于xamarin - 命令未在发布版本中触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53484526/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com