【发布时间】:2012-02-15 03:10:42
【问题描述】:
这个快把我逼疯了。
AssemblyDefinition asm1 = AssemblyDefinition.ReadAssembly(example);
AssemblyDefinition asm2 = AssemblyDefinition.ReadAssembly(example2);
asm2.MainModule.Types.Add(asm1.MainModule.Types[0]);
每当我尝试执行上述代码时,我都会收到此错误“类型已附加” 我决定在 MonoCecil 源代码中查看这个错误,我发现它引发了这个错误,因为 Type 的 MainMoudle 不是 asm2 MainModules。所以我决定将该类型复制到一个新的。
TypeDefinition type2 = new TypeDefinition("", "type2", Mono.Cecil.TypeAttributes.Class);
foreach (MethodDefinition md in asm2.Methods )
{
type2.Methods.Add(md);
}
然后正常将此类型添加到我的程序集中,但这会引发另一个错误,“不支持指定的方法。”。 有什么想法为什么我会收到此错误?
编辑:只是添加,我试图添加的类型包含一些使用指针的方法。这可能是问题吗?据我所知,单声道支持但不支持混合模式。
【问题讨论】:
-
您确定没有收到原始错误,因为
asm1中定义的类型之一也在asm2中定义? -
不,我完全确定我要添加的类型不在 asm2 中。
标签: c# mono.cecil