Estoy usando Mono.Cecil para modificar la compilación posterior de ensamblajes dentro de Unity (estoy usando esta implementación de Mono.Cecil). Por alguna razón, si agrego un campo a un tipo en un ensamblado, y el tipo del campo es un tipo de delegado que he definido, los scripts en el ensamblado no parecen actualizarse después de la primera modificación/tejido exitoso.
El siguiente código se ejecuta correctamente cada vez que vuelvo a compilar, pero si intento reemplazar PropertyChangedEventHandler con un tipo de delegado personalizado, el ensamblaje se compila y entrelaza correctamente solo una vez, luego se niega a compilar/actualizar con cambios de secuencia de comandos más nuevos. Solo funciona de nuevo si reinicio Unity. No estoy recibiendo ningún mensaje de error:
var handlerReference = typeDefinition.Module.ImportReference(typeof(System.ComponentModel.PropertyChangedEventHandler)); var fieldDef = new FieldDefinition(nameof(INotifyMethodCalled.MethodCalled), FieldAttributes.Private | FieldAttributes.NotSerialized, handlerReference); typeDefinition.Fields.Add(fieldDef);Cualquier ayuda sería muy apreciada.
Acabo de resolver mi problema: el script que tejía hacía referencia al ensamblaje que estaba tejiendo. Este fue el equivalente programático de una serpiente que se muerde la cola y se ahoga con ella. El script que usa Mono.Cecil ya no hace referencia a su ensamblado de destino.