我对PostSharp有一个问题,简而言之可以描述为"某些方面不会触发,并且不会在PostSharp Explorer"中显示。
从屏幕截图中可以看出,从PostSharp资源管理器中提供了继承自MethodInterceptorAspect的Authorization名称空间的两个方面,而ExceptionHandling名称空间中派生自OnExceptionAspect的两个新方面则不是。
以下是其中一个代码:a'标准'手工制作的方面,几乎与工作方式相同,除了它来自另一个基类。我试图找出评论代码不同部分的问题,但它没有帮助。
[Serializable]
[AttributeUsage(AttributeTargets.All)]
public class HandleExceptionAttribute : OnExceptionAspect
{
/// <summary>
/// Method executed <b>after</b> the body of methods to which this aspect is applied,
/// in case that the method resulted with an exception (i.e., in a <c>catch</c> block).
/// </summary>
/// <param name="args">Advice arguments.</param>
public override void OnException(MethodExecutionArgs args)
{
// some exception handling code
}
}
此外,我刚从sample添加了一个简单的方面,它也没有在PostSharp Explorer中显示。
问题
所以问题是:为什么方面不能编译和解雇?
答案 0 :(得分:0)
无法解决我自己的问题/问题已更新
这似乎是PostSharp的一个错误,也可能是PostSharp,ReSharper和Visual Studio之间的冲突。
在抽象方法上应用一个新方面之后(之前的方面是类级别的appliet)我有一个关于'incompatibilty'的构建错误。然后我成功地创建了虚拟抽象方法和项目编译。 Resharper Explorer显示两个新方面及其所有影响。为了说清楚我做了“撤消更改”并希望重复我的操作,但这次所有方面都从PostSharp Explorer中消失了,就像它们根本没有被应用一样(当它们仍然应用了大约300次时)并且ReSharper突出了所有方面的用法作为未知类型。
暂停ReSharper,清除解决方案,重新启动VisualStudio并重建解决方案后,PostSharp资源管理器中出现了三个方面,并且在PostSharp再次应用于项目之后出现了第四个方面,其中使用了此方面。
因此,如果您的方面没有触发 - 请检查使用aspets的项目中的PostSharp设置。
相关问答:
感谢@Jakub指导评论!