我有一个项目Company.Business,我正在尝试使用PostSharp来包装我的业务层。在项目Company.AOP中,我有一个方法边界方面来使用EL记录应用程序块:
[Serializable]
public class MethodExcecutionAttribute : OnMethodBoundaryAspect
{
public override void OnEntry(MethodExecutionEventArgs eventArgs)
{
base.OnEntry(eventArgs);
//Log message
}
public override void OnException(MethodExecutionEventArgs eventArgs)
{
base.OnException(eventArgs);
//Log message
}
public override void OnExit(MethodExecutionEventArgs eventArgs)
{
base.OnExit(eventArgs);
//Log message
}
}
足够简单;它只是记录时间点。我尝试通过以下方式定位整个业务层:
[assembly: MethodExcecution(AttributeTargetTypes = "*",
AttributeTargetAssemblies = "Company.Business",
AttributeTargetTypeAttributes = MulticastAttributes.Public,
AttributeTargetMemberAttributes = MulticastAttributes.Public)]
但是在编译之后,我检查了DLL,并没有像在网站上的示例中那样包装代码。这种方法有什么问题?
我安装了它,我确认它正在运行;它在编译期间生成输出,没有错误。
感谢。
答案 0 :(得分:2)
当前版本中存在一个错误:如果指定AttributeTargetAssemblies,它将仅查看程序集引用,而不是当前项目。
因此,如果要向当前项目添加方面,请删除AttributeTargetAssemblies。