PostSharpに問題があります。「PostSharpエクスプローラには表示されないいくつかのアスペクトはありません」と省略できます。 MethodInterceptorAspectから継承されている認可の名前空間からの二つの側面がありませんOnExceptionAspectから導出された名前空間をExceptionHandlingからPostSharpエクスプローラと二つの新しい側面に提示されているスクリーンショットで見ることができるのでPostSharpアスペクトがコンパイルされて起動しない
。
以下は、マニュアルで作成された「標準」アスペクトで、別の基本クラスから派生したものを除き、動作するアスペクトとほぼ同じです。私はコードのさまざまな部分にコメントする問題を特定しようとしましたが、それは助けにはなりませんでした。
[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エクスプローラには示されていません。
質問
そこで質問です:側面をコンパイルして起動しませんなぜですか?
PostSharpエクスプローラは、どのターゲットにも適用されていない側面(たとえばメソッド)を表示しません。 「側面はコンパイルされていません」とは何を意味していますか?ビルドの警告やエラーはありますか? HandleExceptionAttributeで装飾されたメソッドがあり、メソッドが例外をスローすると、OnExceptionメソッド内のブレークポイントがヒットしていないことを意味しますか? –
@JakubLinhartはい、そうです。アスペクトはメソッドとクラスに適用されますが、ポストシャープエクスプローラーには表示されず、キーメソッドのブレークポイントはデバッグを中断しません。 エクスプローラに表示されていない使用方法がなく(私の場合は適用されていない)、ILコードに織り込まれていないと考えました。それは私が「コンパイルせずに」執筆したものです。 –