AOP Postsharp - 方面属性不起作用

AOP Postsharp - Aspect attributes not working

我正在尝试对 MVC 项目使用简单的 AOP 方法。安装 postharp 快速版和数据包。我有 2 个项目,第一个是 aspect 模块,第二个是 casual mvc 项目。

所以我使用 postsharp 提供的方面创建了一个自定义日志属性

[Serializable]
 public class LogAttribute : OnMethodBoundaryAspect
    {
        public LogAttribute()
        {
        }
        public override void OnEntry(MethodExecutionArgs args)
        {                
            Log.Instance.Info(args.Arguments[0]);

            base.OnEntry(args);
        }

        public override void OnExit(MethodExecutionArgs args)
        {
            Log.Instance.Info(args.Arguments[0]);
            base.OnExit(args);
        }

        public override void OnException(MethodExecutionArgs args)
        {
            Log.Instance.Error(args.Exception,args.Method.Name);
            base.OnException(args);
        }
    }

这是我的家庭控制器

[Log]
    public class HomeController : Controller
    {

        public HomeController()
        {
        }

        public ActionResult Index( )
        {
            Debug.WriteLine("start");            
            return View();
        }
}

Postsharp 文档非常清楚,但我的属性从未命中任何方法。我尝试了各种属性用法和其他方法,但仍然没有任何反应。 我还尝试检查带有和不带 Log 属性的控制器的 IL 代码。实际上,似乎没有来自带有 postsharp 的属性的附加代码。 P.S。 : 是的,我试过清理和重建(大约数百万次)。

经过努力我想通了。当我们要在我们的项目中使用 Postsharp 时,我们必须添加 Postsharp VS 扩展。安装 postsharp 扩展后,我们必须登录并检查我们的 postsharp 策略以使用 postsharp 属性(或自定义派生的 postsharp 属性)来定位我们的 classes。 Postsharp 为速成版提供了 10 个目标 class。编译后检查 postsharp 过程的输出,如果成功,postsharp 将 IL 代码注入我们用方面属性标记的方法。 如果我们做的一切都正确,我们可以获得会话、用户等一切都可以记录下来,没有任何变通方法也提供了非常简单的缓存机制。

全部关于 postsharp VS 扩展和策略设置。