How Does PostSharp Work
On a conceptual level, you can think of PostSharp as an extension to the C# or VB compiler. Practically, Microsoft's compilers themselves are not extensible, but the build process can be easily extended. That's exactly what PostSharp is doing: it inserts itself in the build process and post-processes the output of the compiler.
This topic contains the following sections:
PostSharp integrates itself in the build process thanks to PostSharp.targets, which is imported into each project using PostSharp by the NuGet installation script install.ps1. PostSharp.targets adds a few steps to the build process. The principal step is the post-processing of the compiler's output by PostSharp itself.
See Configuring Projects Using MSBuild for details.
PostSharp post-processes the compiler output by reading and disassembling the intermediate assembly, execute the required transformations and validations, and rewriting the final assembly to disk.
Although this might sound magic or dangerous, PostSharp's MSIL technology is stable and mature, and has been used by tens of thousands of projects since 2004. Other .NET products relying on MSIL transformation or analysis include Microsoft Code Contracts, Microsoft Code Analysis, and Microsoft Code Coverage.