Ich habe ein Problem mit PostSharp, die kurz gesagt werden kann als "einige Aspekte nicht feuern und nicht im PostSharp Explorer angezeigt werden".PostSharp Aspekt nicht kompilieren und feuern
Wie auf einem Screenshot zwei Aspekte von Authorization Namensraum zu sehen war, die von MethodInterceptorAspect vererbt wird in Postsharp Explorer und zwei neuen Aspekten von Exceptionhandling Namensraum dargestellt werden, die von OnExceptionAspect abgeleitet ist, ist es nicht.
Unten ist ein Code von einem von ihnen: ein "Standard" Aspekt von Handbuch gemacht, fast das gleiche wie das Arbeiten von Aspets, außer es stammt von einer anderen Basisklasse. Ich habe versucht, das Problem zu identifizieren, verschiedene Code-Teile zu kommentieren, aber es hat nicht geholfen.
[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
}
}
Außerdem habe ich nur einen einfachen Aspekt rechts von der sample und es auch nicht in Postsharp Explorer angezeigt.
Frage
Die Frage ist also: warum Aspekte kompilieren und Feuer nicht?
Der PostSharp-Explorer zeigt keine Aspekte an, die nicht auf ein Ziel angewendet werden (z. B. eine Methode). Was bedeutet es, dass "Aspekte nicht kompilieren und feuern"? Gibt es Build-Warnungen oder Fehler? Bedeutet es, dass Sie eine Methode mit HandleExceptionAttribute eingerichtet haben und wenn die Methode eine Ausnahme auslöst, wird ein Haltepunkt innerhalb der OnException-Methode nicht getroffen? –
@JakubLinhart Ja, du hast Recht.Aspekte werden auf Methoden und Klassen angewendet, aber nicht im Postsharp Explorer angezeigt, und Breakpoints in Schlüsselmethoden unterbrechen das Debugging nicht. Ich wusste nicht, dass ohne Verwendung von Aspekten nicht im Explorer angezeigt (außerdem in meinem Fall wurden sie angewendet), so dass ich dachte, dass sie nicht in IL-Code gewebt wurden. Das habe ich unter "nicht kompilieren" erwähnt. –