inversionhourglass / Rougamo

Compile-time AOP component. Works with any method, whether it is async or sync, instance or static. Uses an aspectj-like pattern to match methods.
MIT License
393 stars 47 forks source link

使用1.1.0-alpha版本在async/await Task 模式下编译不通过 #7

Closed 2876 closed 2 years ago

2876 commented 2 years ago

1.0.3编译正常,但无法处理异常,所以选择1.1.0,但该版本在异步方法中无法编译通过。代码如下 `public class Program { static void Main(string[] args) { }

    [Log]
    private async Task Sleep()
    {
        await Task.Delay(500);
    }

}
[AttributeUsage(AttributeTargets.Method)]
public class LogAttribute : Rougamo.MoAttribute
{
    public override void OnEntry(MethodContext context)
    {

    }
    public override void OnException(MethodContext context)
    {

    }
    public override void OnExit(MethodContext context)
    {

    }
    public override void OnSuccess(MethodContext context)
    {

    }
}`

异常如下:

严重性 代码 说明 项目 文件 行 禁止显示状态 错误 Fody: An unhandled exception occurred: Exception: Failed to execute weaver F:\Rougamo\src\packages\Rougamo.Fody.1.1.0-alpha\build..\weaver\Rougamo.Fody.dll Type: System.Exception StackTrace: 在 InnerWeaver.ExecuteWeavers() 位置 C:\projects\fody\FodyIsolated\InnerWeaver.cs:行号 219 在 InnerWeaver.Execute() 位置 C:\projects\fody\FodyIsolated\InnerWeaver.cs:行号 111 Source: FodyIsolated TargetSite: Void ExecuteWeavers() [ConsoleApp1.Program/d__1] SetException instruction not found Type: System.InvalidOperationException StackTrace: 在 Rougamo.Fody.ModuleWeaver.FindMoveNextSetExceptionFirstInstruction(MethodDefinition moveNextMethodDef, ExceptionHandler exceptionHandler, Instruction& setExceptionFirst, Instruction& setExceptionLast) 在 Rougamo.Fody.ModuleWeaver.AsyncOnExceptionWithExit(RouMethod rouMethod, MethodDefinition moveNextMethodDef, FieldReference mosFieldRef, FieldReference contextFieldRef, FieldReference builderFieldRef, TypeReference returnTypeRef, Instruction setResultIns) 在 Rougamo.Fody.ModuleWeaver.AsyncTaskMethodWeave(RouMethod rouMethod) 在 Rougamo.Fody.ModuleWeaver.WeaveMos() 在 InnerWeaver.ExecuteWeavers() 位置 C:\projects\fody\FodyIsolated\InnerWeaver.cs:行号 196 Source: Rougamo.Fody TargetSite: Void FindMoveNextSetExceptionFirstInstruction(Mono.Cecil.MethodDefinition, Mono.Cecil.Cil.ExceptionHandler, Mono.Cecil.Cil.Instruction ByRef, Mono.Cecil.Cil.Instruction ByRef) ConsoleApp1

麻烦了~~

inversionhourglass commented 2 years ago

你项目的framework是什么版本的,我本地试试

2876 commented 2 years ago

你项目的framework是什么版本的,我本地试试

4.6.1、4.7.1以及4.8都试过

inversionhourglass commented 2 years ago

我发布了 1.1.0-alpha1 版本,你可以更新了再试试

2876 commented 2 years ago

谢谢。经测试当前的问题已修复! 但有新问题,我重新提一个issue~