c# - 在 Debug模式下运行的相同 Android 应用程序在 Release模式下崩溃

标签 c# android xamarin signalr

我使用 Xamarin for Visual Studio 和 C# 语言编写了一个简单的应用程序。代码是:

    HubConnection hubConnection;
    IHubProxy chatHubProxy;
    async void btnConnect_Click(object sender, EventArgs e)
    {
        try
        {
            TextView log = FindViewById<TextView>(Resource.Id.txtLog);
            base.OnResume();

            hubConnection = new HubConnection("http://192.168.1.3:2010/signalr");

            chatHubProxy = hubConnection.CreateHubProxy("MyHub");

            chatHubProxy.On<string>("AddMessage", (message) =>
            {
                TextView text = FindViewById<TextView>(Resource.Id.txtLog);
                text.Text = message;
            });

            var localIP = "192.168.1.104"; //the android device has this IP

            await hubConnection.Start();

            var srvrMessage = chatHubProxy.Invoke<string>("LoginFromMobile", "mahdi", "p@SsW0Rd",
                hubConnection.ConnectionId, localIP);
            if (srvrMessage != null)
            {
                log.Text = srvrMessage.Result;
            }
            else
                log.Text = "can't connect to server";
        }
        catch (Exception ex)
        {
            TextView text = FindViewById<TextView>(Resource.Id.txtLog);
            text.Text = ex.StackTrace;
        }
    }

当我单击“连接”按钮时,我连接到网络中我电脑上的 SignalR Hub,并且在 DEBUG 模式下一切正常。但不幸的是,当我在 RELEASE 模式下编译同一个应用程序时,出现以下错误:

enter image description here

我不明白为什么...请告诉我我需要考虑什么才能使应用程序在 Release模式下也能正常工作。是否有权限问题?缺少某些配置或设置? 您的指南真的很有帮助和赞赏。

最佳答案

如果某些东西在 Debug模式下工作但在 Release模式下不工作,那么问题很可能是链接器在生成发布二进制文件时没有包含您的 dll。

如果您在解决方案资源管理器中双击您的 Android 项目,您可以在“构建”->“Android 构建”下更改设置。

您需要为您的配置选择发布,然后选择链接器选项卡。如果您选择“不链接”所有 dll,您的项目引用将包含在发布二进制文件中。这将导致更大的二进制大小,但将帮助您诊断这是否是问题所在。

您可以从 Xamarin 文档中阅读有关链接器的更多信息: https://developer.xamarin.com/guides/ios/advanced_topics/linker/

关于c# - 在 Debug模式下运行的相同 Android 应用程序在 Release模式下崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35521878/

相关文章:

c++ - 我可以用 Android 制作一个相当原生的 C++ 应用程序吗?

c# - 使按钮打开超链接

c# - 面板图形故障

android - 地理编码器不工作

c# - 在大文本模板中替换标记的最佳方法

android - 如果 - 扩展名为 "@xyz.com"的电子邮件帐户存在,请执行某些操作 [Xamarin]

Xamarin Forms ListView 未从 ObservableCollection 更新

android - 多行中的更多 TextView

c# - 为什么我的 RangeValidator 不工作?

c# - Entity Framework 模型到 Json 结果