You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Visual Studio 2017 Xamarin Forms ListView发布配置数据显示异常求助

解决Release模式下ListView第二列无数据的问题

嘿,这个问题我之前也踩过坑!大概率是Release模式的链接器优化搞的鬼,下面给你分析原因和解决办法:

问题原因

Debug模式下链接器默认是关闭的,所有代码都会被完整保留;但Release模式为了减小安装包体积,默认会启用链接器——它会自动移除它认为“未被使用”的代码。而Xamarin.Forms的数据绑定逻辑在编译时不会被链接器正确识别,导致TrayRow类的AssignedTo属性被误判为无用代码,最终被删掉了,所以第二列就没数据显示。

解决方案

方案一:给TrayRow类添加[Preserve]特性

这是最稳妥的方法,直接告诉链接器要保留这个类的所有成员:
首先需要引用Xamarin.Forms的命名空间,然后修改你的类定义:

using System;
using Xamarin.Forms; // 新增这个命名空间

namespace Testing
{
    [Preserve(AllMembers = true)] // 关键特性,强制保留所有成员
    class TrayRow
    {
        public string Trolly { get; set; }
        public string AssignedTo { get; set; }
    }
}

方案二:调整链接器全局设置

如果不想修改代码,可以在项目属性里调整链接器的行为:

  • 右键你的Xamarin.Forms项目 → 打开「属性」面板
  • 根据目标平台选择对应设置:
    • Android:进入「Android Options」→「Linker」选项卡,将链接器设置改为Link SDK assemblies only
    • iOS:进入「iOS Bundle Signing」→ 找到「Linker Behavior」,选择Link SDK assemblies only
  • 这个设置只会优化系统SDK的代码,不会动你的自定义类成员,缺点是安装包体积会稍微大一点。

验证

修改完成后,重新编译Release版本,你的ListView两列应该都能正常显示数据了!

内容的提问来源于stack exchange,提问作者Paddy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.08 16:47:44