PostSharp方面不会编译和触发

时间:2016-05-19 09:17:07

标签: postsharp

我对PostSharp有一个问题,简而言之可以描述为"某些方面不会触发,并且不会在PostSharp Explorer"中显示。

enter image description here

从屏幕截图中可以看出,从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中显示。

问题

所以问题是:为什么方面不能编译和解雇?

1 个答案:

答案 0 :(得分:0)

无法解决我自己的问题/问题已更新

这似乎是PostSharp的一个错误,也可能是PostSharp,ReSharper和Visual Studio之间的冲突。

在抽象方法上应用一个新方面之后(之前的方面是类级别的appliet)我有一个关于'incompatibilty'的构建错误。然后我成功地创建了虚拟抽象方法和项目编译。 Resharper Explorer显示两个新方面及其所有影响。为了说清楚我做了“撤消更改”并希望重复我的操作,但这次所有方面都从PostSharp Explorer中消失了,就像它们根本没有被应用一样(当它们仍然应用了大约300次时)并且ReSharper突出了所有方面的用法作为未知类型。

暂停ReSharper,清除解决方案,重新启动VisualStudio并重建解决方案后,PostSharp资源管理器中出现了三个方面,并且在PostSharp再次应用于项目之后出现了第四个方面,其中使用了此方面。

因此,如果您的方面没有触发 - 请检查使用aspets的项目中的PostSharp设置。

相关问答:

感谢@Jakub指导评论!