0

我需要在 Unity3d 中使用 iOS 构建设置,该设置从字节码中去除未使用的类,但由于它使用静态分析来发现要删除的类,因此除非明确添加到排除列表中,否则通过反射解析的任何类都不会被排除在删除之外。我设法在我自己的代码中删除了所有反射的使用,但 Mono 本身似乎使用基于反射的配置来做很多事情,我已经在排除列表中添加了大约十几个类,但现在我要异常没有提供任何关于需要排除哪些类才能使其工作的线索。

我的问题是,是否可以通过应用程序使用的每个程序集的反射来获得所有类(带有源程序集和命名空间)的精确列表,您将如何处理?我有 Visual Studio 2012,虽然我知道它有强大的调试工具,但我不知道如何使用它们。

谢谢。

4

1 回答 1

1

短版

您不能,因为无法使用静态分析通过反射找到所有查找。

长版

想想下面的例子:我编写的代码根据用户输入选择一个类,例如在伪代码中:

string action = ... ; // get some user input here, e.g. "Fire"

string clazz = "Do" + action;

var obj = Activator.CreateInstance("MyActions", clazz);

如您所见,代码中的任何地方都没有出现实际的完整类名。因此,您需要以各种可能的方式执行代码,以找出clazz变量可以采用的值。因此,您无法找出该代码将通过反射访问哪些类。

进一步的问题

您使用的是 Mono 的哪些确切 API,您遇到了什么样的异常?也许有一些替代方案可以用于您的目的。

于 2013-06-11T08:41:05.047 回答