Attribute Provider Provider Attributes

The compiler has not just its own attribute provider for the (mostly) documented attributes that are built-in and are usable in source code without needing any preparation. The compiler also has an attribute provider provider, i.e., an attribute provider that provides attributes to help arbitrary attribute providers with the business of providing attributes. For who knows what reason, Microsoft seems not to document any of this.

The ProvProv attributes are enabled by the same technique that enables the attributes of any external attribute provider (such as ATLPROV). What is needed is the provider attribute and the GUID for ProvProv. When the compiler handles the provider attribute, it recognises the GUID for ProvProv and knows not to look externally. Thus,

[
    provider (name = ProvProv, uuid = "6462678A-83F5-11d2-B8DA-00C04F799BBB")
];

The following are all the ProvProv attributes.