2011-08-02 9 views
1

私は、dll全体(他のチームによって提供されている)で例外を処理し、データベース呼び出しを管理するpostsharp属性を持っています。 だから、アイデアはpostsharpのでpostsharp in assembly

で例外を処理され、これはそれが作品作り、私が持っているSPDATAと呼ばれるそのプロジェクトのassemblyInfo.cs内のすべてのメソッドを傍受する属性

[Serializable] 
    public class MethodConnectionTracking: OnExceptionAspect 
    { 
     bool canceled = false; 
     public override void OnException(MethodExecutionArgs args) 
     { 
      Exception ex = args.Exception; 
      if (ex != null) 
      { 
       --- do things 
      } 

     } 


    } 

です:

[assembly: MethodConnectionTracking(AttributeTargetElements = MulticastTargets.Method)] 

それは素晴らしいです。しかし、私は他のプロジェクトでその行を指定したい。

したがって、メインプロジェクトはSPDataを参照します。

[assembly: MethodConnectionTracking(AttributeTargetAssemblies = "SPData", AttributeTargetElements = MulticastTargets.Method)] 

をしかし、それは動作しません:だから、メインプロジェクトのAssemblyInfo.csファイルに私が書きます。

私がしたいことをする可能性はありますか?パラメータがありませんか?

ありがとうございます。それがnullになることはありませんので、あなたが元!= nullの場合はチェックする必要はありませんOnExceptionAspect基底クラスに

  • を使用した場合、それがすでに提供されてあなたはAttributeTargetElements = MulticastTargets.Methodを必要としない

  • 答えて

    1
    1. OnExceptionは、例外がないかぎり呼び出されないためです。 http://programmersunlimited.wordpress.com/2011/08/01/postsharp-why-are-my-arguments-null/

    正確なアセンブリ名をお持ちですか?名前空間を使用していますか?実際のアセンブリ名(.dllなし)を使用する必要があります。ワイルドカード "SPData *"を試してみてください。

    ILSpyを使用してコードをステップ実行したか、コンパイルしたアセンブリを見ましたか?あなたが間違った名前を提供していない限り、それは動作するはずです。プロジェクトまたはコンパイルされたアセンブリへの参照ですか?アセンブリは署名されているのか、難読化されていますか?

    関連する問題