mono touch无法解析引用:System.Reflection.Emit.AssemblyBuilder

时间:2011-05-08 07:34:39

标签: deployment xamarin.ios

Monotouch部署错误:

如果我使用System.Reflection(我认为这就是原因)

尝试部署时出现以下错误

无法链接程序集:Mono.Linker.ResolutionException:无法解析引用:System.Reflection.Emit.AssemblyBuilder   在Mono.Linker.Steps.MarkStep.ResolveTypeDefinition(Mono.Cecil.TypeReference类型)[0x00000] in:0   在Mono.Linker.Steps.MarkStep.MarkType(Mono.Cecil.TypeReference reference)[0x00000] in:0   在Mono.Linker.Steps.MarkStep.MarkMethodBody(Mono.Cecil.Cil.MethodBody body)[0x00000] in:0   在Mono.Linker.Steps.MarkStep.ProcessMethod(Mono.Cecil.MethodDefinition方法)[0x00000] in:0   在Mono.Linker.Steps.MarkStep.ProcessQueue()[0x00000] in:0   在Mono.Linker.Steps.MarkStep.Process()[0x00000]中:0   在Mono.Linker.Steps.MarkStep.Process(Mono.Linker.LinkContext context)[0x00000] in:0   在Mono.Linker.Pipeline.Process(Mono.Linker.LinkContext context)[0x00000] in:0   在MonoTouch.Tuner.Linker.Run(Mono.Linker.Pipeline管道,Mono.Linker.LinkContext上下文)[0x00000] in:0

在Simulator中一切正常。如果我不使用该库,我可以毫无问题地部署该应用程序。

1 个答案:

答案 0 :(得分:1)

Monotouch不支持System.Reflection.Emit。这是因为所有代码必须存在于二进制文件中,并且在由提前编译器创建之后实际上由链接器链接。如果你将从C#发出代码,那么它就无法在运行时编译为二进制代码,因为iPhone上没有完整的.NET运行时。

无论如何,即使有一种方法如何在运行时编译为二进制并链接它(非常复杂的问题BTW),这将违反Apple的批准指南,其中说应用程序无法下载任何类型的代码并改变其行为在飞行中。

总而言之,避免反思。