使用PostSharp [Log]方面进行汇编时,反编译代码出现时没有添加新代码。 PostSharp是否在预编译期间添加与方面对应的代码?
答案 0 :(得分:0)
PostSharp通过读取和反汇编中间程序集来处理编译器输出,执行所需的转换和验证,并将最终的程序集重写到磁盘。
PostSharp通过PostSharp.targets在构建过程中集成自身。安装PostSharp nuget包时,NuGet会将PostSharp.targets导入添加到项目中。
让我们考虑一下这个方法:
[Log]
public void Method() { }
如果一切正常,那么此方法的反编译C#代码就像这样开始(PostSharp 5.0):
public void Method()
{
bool flag = <>z__Program.DefaultCategory.IsEnabled(LogLevel.Debug);
LogMemberInfo logMemberInfo;
如果您没有看到此代码,则可能表示PostSharp未正确安装到您的项目中,或者未正确配置。
Adding Detailed Logging to your Solution文章介绍了如何正确配置PostSharp并将其添加到项目中。