Xamarin 应用程序的发布模式下的 NullReferenceException

本文关键字:模式 NullReferenceException 应用程序 布模式 Xamarin | 更新日期: 2023-09-27 18:32:47

在对我的REST API的简单POST请求中,我正在将对象序列化为JSON,如下所示:

var userDto = new { user = new { login = Username, password = Password } };
var jsonPayload = JsonConvert.SerializeObject(userDto, Formatting.Indented);

在调试模式下一切正常,但在发布模式下jsonPayload变量为 null,在我的尝试/捕获中我得到NullReferenceException.为什么这个变量的值在调试/发布中不同,如何解决这个问题?

这是安卓应用程序,我已经启用了互联网权限。

Xamarin 应用程序的发布模式下的 NullReferenceException

您的问题很可能是由于 Xamarin 链接器从您的代码中删除了"未使用的程序集"。发布和调试版本的默认链接设置不同,这可能就是您看到这种差异的原因。

尝试将"链接"选项(您可以在Android选项下的Android项目的项目设置下找到它)设置为仅SDK程序集,看看是否有效。

我不得不使用匿名对象辞职,因为我不知道为什么JSON.NET Release模式下会导致此错误。按以下步骤重新实现后,一切正常。有人知道为什么吗?;)

UserSignInModel uDTO = new UserSignInModel()
            {
                user = new UserSignInDTO()
                {
                    login = Username,
                    password = Password,
                }
            };
var jsonPayload = JsonConvert.SerializeObject(uDTO, Formatting.Indented);

我遇到了同样的错误,但我没有找到真正的解决方案。在缩小此问题开始出现范围后,我发现它是在更新 json.net 包后发生的。

这是区别,之前:

<package id="Newtonsoft.Json" version="6.0.3" targetFramework="MonoAndroid403" />

后:

<package id="Newtonsoft.Json" version="6.0.6" targetFramework="MonoAndroid50" />

我现在只是将软件包作为临时解决方案反转。很想听到这个问题的一些见解和解决方案!