C# PostSharp多播在Outlook插件代码中不起作用

C# PostSharp多播在Outlook插件代码中不起作用,c#,logging,postsharp,C#,Logging,Postsharp,我正在Outlook插件应用程序中使用PostSharp。如果我将以下属性添加到项目中的类,它将正确记录: namespace Foo.Bar { [Log(AttributeTargetMemberAttributes = MulticastAttributes.Public)] public class FooBar {...} } 我真正想做的是将所有内容记录在Foo.*名称空间中。我尝试在VS中使用加载项,它创建了一个globalaspects.cs并更新了我的project.pssl

我正在Outlook插件应用程序中使用PostSharp。如果我将以下属性添加到项目中的类,它将正确记录:

namespace Foo.Bar
{
[Log(AttributeTargetMemberAttributes = MulticastAttributes.Public)]
public class FooBar {...}
}
我真正想做的是将所有内容记录在Foo.*名称空间中。我尝试在VS中使用加载项,它创建了一个globalaspects.cs并更新了我的project.pssln文件。此时,它不会生成以下错误消息:

.dll使用非授权功能(PostSharp Professional)。请输入有效的许可证密钥

我认为它本身是递归的,所以我在为我生成的装配线中添加了AttributeExclude=true。现在看起来是这样的(在globalaspects.cs中):

[程序集:日志(AttributeExclude=true,AttributeTargetTypes=“Foo.*,AttributeTargetTypeAttributes=MulticastAttributes.Public,AttributeTargetMemberAttributes=MulticastAttributes.Public)]

不走运,它不会以这种方式记录任何东西。你知道为什么吗

其他信息: 我正在登录log4net,并且我有其他正在运行的日志代码(它也可以在类和方法级别与PostSharp一起工作)。

根据PostSharp的免费许可证,当前对应用
[Log]
属性的方法的数量有限制。在我看来,通过在整个名称空间中应用方面,您已经超过了这个数字

AttributeExclude
表示该属性不会应用于满足该属性中设置的条件的声明。基本上是设置包含/排除操作。例如,您可以包括
Namespace1
,排除
Namespace1.Namespace2
,然后再次包括
Namespace1.Namespace2.Namespace3

因此,以下是正确的:

[assembly: Log(AttributeTargetTypes = "Foo.*",
               AttributeTargetTypeAttributes = MulticastAttributes.Public, 
               AttributeTargetMemberAttributes = MulticastAttributes.Public)]
有关属性多播的更多信息,可以查看

评论员注意:我是PostSharp的开发人员之一。我知道这个答案涉及到许可证问题,这是在红线之后,我已经尽了最大的努力,不要过多