装配时的后期
本文关键字: | 更新日期: 2023-09-27 18:04:09
我有一个postsharp属性,用于处理整个dll中的异常(该dll由其他团队提供)并管理数据库调用。所以我们的想法是用后置
处理异常这是属性
[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中的所有方法,我有:
[assembly: MethodConnectionTracking(AttributeTargetElements = MulticastTargets.Method)]
效果很好。但是我想在其他项目中指定这一行。
所以,主项目引用SPData。所以,在主项目AssemblyInfo.cs文件中,我写:
[assembly: MethodConnectionTracking(AttributeTargetAssemblies = "SPData", AttributeTargetElements = MulticastTargets.Method)]
但它不工作。
是可能做我想要的,我错过了一些参数吗?
-
不需要AttributeTargetElements = MulticastTargets。方法,因为在使用OnExceptionAspect基类时已经提供了
-
你不需要检查如果ex != null,因为它永远不会是空的OnException不会被调用,除非有一个异常。见http://programmersunlimited.wordpress.com/2011/08/01/postsharp-why-are-my-arguments-null/
您确定您有正确的程序集名称吗?您正在使用名称空间吗?您需要使用实际的程序集名称(不包含.dll)。试试通配符"SPData*",看看是否有帮助。
您是否使用ILSpy逐步执行代码或查看编译后的程序集?除非您提供了错误的名称,否则它应该可以工作。是对项目还是已编译程序集的引用?程序集是否已签名或已混淆?