これは私を夢中にしています。別のアセンブリからTypeDefinitionを追加する
AssemblyDefinition asm1 = AssemblyDefinition.ReadAssembly(example);
AssemblyDefinition asm2 = AssemblyDefinition.ReadAssembly(example2);
asm2.MainModule.Types.Add(asm1.MainModule.Types[0]);
私はこのエラー「タイプがすでにattached」の取得上記のコードを実行しようとするたびに 私はMonoCecilソースでこのエラーを探すことにしたと私はタイプのMainMoudleがASM2 MainModulesではないので、それは、このエラーがスローました。だから私はそのタイプを新しいものにコピーすることに決めました。
TypeDefinition type2 = new TypeDefinition("", "type2", Mono.Cecil.TypeAttributes.Class);
foreach (MethodDefinition md in asm2.Methods)
{
type2.Methods.Add(md);
}
通常この型をアセンブリに追加しますが、これは別のエラー「指定されたメソッドはサポートされていません。」をスローします。 このエラーが発生する理由は何ですか?
編集:ちょうど私が追加しようとしているタイプは、ポインタを使用するいくつかのメソッドが含まれています。これが問題だろうか?私が知っている限り、モノは、混合モードではなく、それをサポートします。
'asm1'で定義されているタイプの1つが' asm2'でも定義されているため、元のエラーは表示されませんでしたか? –
いいえ、私は、私が追加しようとしているタイプがasm2にないことを完全に確信しています。 – method