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

时间:2014-12-02 18:25:37

标签: c# android xamarin

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

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

在调试模式下一切正常,但在发布模式jsonPayload变量为null,在我的try / catch中我得到NullReferenceException。为什么这个变量的值在Debug / Release中有所不同以及如何解决这个问题?

这是Android应用程序,我启用了Internet权限。

3 个答案:

答案 0 :(得分:3)

您的问题很可能是因为Xamarin Linker从您的代码中剥离了“未使用的程序集”。发布和调试版本的默认链接设置不同,这可能就是您看到这种差异的原因。

尝试设置“链接”选项(您可以在Android选项下的Android项目的项目设置下找到它)到 SDK Assemblies Only None 并查看是否这样可行。

答案 1 :(得分:1)

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

UserSignInModel uDTO = new UserSignInModel()
            {
                user = new UserSignInDTO()
                {
                    login = Username,
                    password = Password,
                }
            };

var jsonPayload = JsonConvert.SerializeObject(uDTO, Formatting.Indented);

答案 2 :(得分:1)

我得到了同样的错误,但我没有找到真正的解决方案。在此问题开始出现后缩小范围时,我发现更新json.net软件包后发生了这种情况。

这是区别,之前:

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

后:

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

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

相关问题