1

我正在使用 Mono.Cecil 在 Unity 中修改程序集后编译(我正在使用Mono.Cecil 的实现)。出于某种原因,如果我将字段添加到程序集中的类型,并且该字段的类型是我定义的委托类型,则程序集中的脚本在第一次成功修改/编织后似乎不会更新。

每次重新编译时,以下代码都会正确运行,但如果我尝试将 PropertyChangedEventHandler 替换为自定义委托类型,则程序集只会正确编译和编织一次,然后拒绝使用较新的脚本更改进行编译/更新。只有当我重新启动 Unity 时它才能再次工作。我没有收到任何错误消息:

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);

任何帮助将不胜感激。

4

1 回答 1

0

我刚刚解决了我的问题——进行编织的脚本引用了它正在编织的程序集。这相当于一条蛇吃掉它的尾巴并被它窒息的程序。使用 Mono.Cecil 的脚本不再引用其目标程序集。

于 2021-03-22T23:50:53.137 回答