我创建了一个Xamarin.Forms PCL项目。我已启用链接器仅链接sdk程序集。负载更快,工作速度更快,尺寸更小,但在很少的区域崩溃。我无法找到错误,因为它在链接器被禁用时工作正常。根据某人的建议,我在文件LinkerPleaseInclude中包含了几行。
var x = new System.ComponentModel.ReferenceConverter(typeof(void));
包含此行后,应用不会在少数几个区域崩溃,但数据不会像列表视图的动态数据模板那样显示。我是否需要在文件LinkerPleaseInclude中包含其他内容? 如何在链接器启用时阻止链接器删除代码?
答案 0 :(得分:1)
您可以提示链接器不要链接由[Preserve]
属性修饰的类型。
此属性未公开,但由于它是按名称(而不是按类型)自愿查找的,因此您可以定义自己的属性。
namespace Your.Namespace.Here
{
[AttributeUsage(AttributeTargets.All)]
public class PreserveAttribute : Attribute
{
public bool AllMembers;
public bool Conditional;
public PreserveAttribute(bool allMembers, bool conditional)
{
AllMembers = allMembers;
Conditional = conditional;
}
public PreserveAttribute()
{
}
}
}
然后,您可以使用[Preserve]
属性修饰未由代码显式引用的类型或方法,例如仅从Xaml访问的类型,或通过反射。
答案 1 :(得分:0)
我已经解决了这个问题,我在listview中创建了DynamicDataTemplate来动态显示多种项目。我删除了它并创建了一个多模板选择器,现在它工作正常。 我不知道链接器将如何与DynamicDataTemplate一起使用,因为我尝试了Preserve属性,但它不起作用。但现在它的工作正常。