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 链接器从您的代码中删除了"未使用的程序集"。发布和调试版本的默认链接设置不同,这可能就是您看到这种差异的原因。
尝试将"链接"选项(您可以在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" />
我现在只是将软件包作为临时解决方案反转。很想听到这个问题的一些见解和解决方案!