在 Xamarin 项目中,我将链接器行为设置为“链接所有引用”。这样做时,通过删除未使用的成员来优化程序集。一个问题,它实际上并没有意识到我们需要它们进行反射。我知道我们可以使用 Preserve 属性来告诉链接器将所有符号保留在类中,但是如果程序集是 DLL 或不是 iOS 项目(不引用单点触控程序集,并且不能)。有没有办法可以将库中的所有类设置为“保留”,忽略它,或者只设置要优化的某些类(反向 PreserveAttribute)?

最佳答案

@SharpMobileCode给出了很好的解释,但是还有两种其他方法可以解决此问题。

  • 使用XML文件,并在项目的选项中的其他mtouch参数下使用--xml=your.file。当您无法更改程序集的源代码时,或者-当您希望/需要使用工具生成要保留的成员列表时,这可能会很有用;
  • 使用新的Preserve(Type)构造函数。这样一来,您就可以在不同的程序集(例如您的主.exe)中添加保留指令,该程序集已经引用了Xamarin.iOS.dll(因此无需定义自己的类型)。例如。
  • [assembly: Preserve (typeof (MyType), AllMembers = true)]

    10-08 02:23