2011-08-02 2 views
1

전체 dll (다른 팀에서 제공 한 ddl)에서 예외를 처리하고 데이터베이스 호출을 관리하기위한 postsharp 특성이 있습니다.포스트 샤프 어셈블리에서

: 그래서 아이디어는

그래서,이

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

     } 


    } 

작동하는지 확인하고 내가 가진 SPData라고 그 프로젝트의 AssemblyInfo.cs에있는 모든 방법을 차단하는 속성이 postsharp로 예외를 처리하다

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

위대한 작품입니다. 하지만 다른 프로젝트에서 그 라인을 지정하고 싶습니다.

그래서 주 프로젝트는 SPData를 참조합니다. 그래서, 주 프로젝트 AssemblyInfo.cs 파일에 내가 씁니다 :

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

하지만 작동하지 않습니다.

내가 원하는 것을 수행 할 가능성이 있습니까? 일부 매개 변수가 누락 되었습니까?

미리 감사드립니다.

답변

1
  1. 이미 제공대로 널 수 없을 것이기 때문에 당신은 = 경우 예! 확인 널 필요가 없습니다 OnExceptionAspect 기본 클래스

  2. 를 사용할 때 AttributeTargetElements = MulticastTargets.Method 필요하지 않습니다 예외가 없으면 OnException은 호출되지 않습니다. http://programmersunlimited.wordpress.com/2011/08/01/postsharp-why-are-my-arguments-null/

올바른 어셈블리 이름을 사용하고 있습니까? 네임 스페이스를 사용하고 있습니까? .dll없이 실제 어셈블리 이름을 사용해야합니다. 와일드 카드 "SPData *"를 시도하여 도움이되는지 확인하십시오.

ILSpy를 사용하여 코드를 살펴 보았습니까? 아니면 컴파일 된 어셈블리를 보았습니까? 잘못된 이름을 제공하지 않는 한 제대로 작동합니다. 프로젝트 또는 컴파일 된 어셈블리에 대한 참조입니까? 어셈블리가 서명되었거나 난독 화 되었습니까?