Chapter 12 should have made it clear that Visual Basic .NET is a significantly advanced version of its predecessor. There are analogies for many of the fundamental idioms between VB6 and Visual Basic .NET. Even attributes have analogies in VB6. If you ever opened a .frm or .cls file in VB6 in a text editor, you might have seen text like the following: Attribute VB_PredeclaredId = True. If you change this attribute manually to True in a .cls file, you end up with an autocreated class. Clearly this suggests that VB6 had precursors to .NET attributes. The difference is that Visual Basic .NET makes them intentionally accessible.
In addition to being accessible, attributes are greatly enhanced in .NET. Attributes provide users with a way to add metadata that is included with the emitted IL code and ships with the assembly. The attribute idiom enables individual developers to incorporate additional information and capabilities into the .NET framework.