c# - Xamarin.iOS 链接器删除反射所需的类中的成员

标签 c# ios xamarin linker xamarin.ios

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

最佳答案

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

  1. 使用 XML 文件并在项目的选项中使用 --xml=your.file,在 Additional mtouch arguments 下。当您无法更改程序集的源代码时 - 或者 - 当您想要/需要使用工具来生成要保留的成员列表时,这可能很有用;

  2. 使用新的 Preserve(Type) 构造函数。这允许您在已经引用了 Xamarin.iOS.dll不同程序集(例如您的主 .exe)中添加保留指令(因此无需定义您的自己的类型)。例如

[程序集:保留(typeof(MyType),AllMembers = true)]

关于c# - Xamarin.iOS 链接器删除反射所需的类中的成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30810180/

相关文章:

ios - 在一次请求中上传多张图片

ios - 一次在 TextField 中键入时更改 Text 的值,而无需单击任何位置 - SwiftUI

ios - 如何在组合中安排异步调用的同步序列?

c# - Xamarin.Android 重新部署应用程序不会更新程序集

c# - xamarin UI 测试 - 无法加载我指向的 native APK 路径

c# - 如何在 Windows 8.1 中获取 MessageBox 图标

c# - 仅显示来自实体对象的 DataGrid 中的某些列

c# - 在 c# 中作为 Windows 服务运行时,TCP/IP 套接字不从机器读取数据

c# - FindViewById 从另一个 Activity 返回 null

multithreading - Xamarin.IOS应用程序不断启动和完成许多线程