Brad Abrams just did a post on the Number of Types in the .NET Framework.

Here are the results I obtained with NDepend (slightly higher):

#assemblies: 119

#namespaces: 933 (here there are some duplication across assemblies, i.e the namespace System for example will be counted as 21 because it is defined in 21 assemblies)

#types: 39 509

#methods: 384 300

#fields: 240 070

#IL instructions: 8 562 828 (equivalent to around 1.7M lines of C# or VB.NET code, it took 6mn to analyze on a quad 64 bits 4GB machine)

SELECT METHODS

WHERE NbILInstructions > 0: 341 842

SELECT TYPES

WHERE IsPublic: 16 463

SELECT TYPES WHERE IsClass: 29 345

SELECT TYPES WHERE IsClass AND IsPublic: 12 324

SELECT TYPES WHERE IsStructure: 2 794

SELECT TYPES WHERE IsStructure AND IsPublic: 511

SELECT TYPES WHERE IsEnumeration: 4 506

SELECT TYPES WHERE IsEnumeration AND IsPublic: 1 838

SELECT TYPES WHERE IsDelegate: 1 312

SELECT TYPES WHERE IsDelegate AND IsPublic: 690

SELECT TYPES WHERE IsInterface: 2 864

SELECT TYPES WHERE IsInterface AND IsPublic: 1 790

SELECT TYPES WHERE IsClass AND IsAbstract: 1 813

SELECT TYPES WHERE IsClass AND IsAbstract AND IsPublic: 1 008

SELECT TYPES WHERE DeriveFrom “System.Exception”: 633 (DeriveFrom means derives directly and indirectly)

SELECT TYPES WHERE DeriveFrom “System.Attribute”: 728

SELECT METHODS

WHERE IsPublic: 212 234

SELECT METHODS WHERE IsPublic AND IsStatic: 29 664

SELECT FIELDS WHERE !IsStatic: 103 349

SELECT FIELDS WHERE IsStatic AND !IsEnumValue AND !IsLiteral AND !IsGeneratedByCompiler: 22 783

Here is a treemap view of the entire .NET framework, the size of the rectangle being proportional to the number of ILinstruction:

Here is a dependency matrix between the 119 assemblies of the .NET framework (click on it to get a bigger view). A blue cell means a dependency from the assembly in x-coordinate/absissa to the assembly in y-coordinate/ordinate.A red square means that there are some cycling dependencies between assemblies. The last row being full blue represent the fact that mscorlib is used by all other assemblies. In the same spirit, low-level assemblies are down in the matrix and are represented with a lots of blue cells (because they are heavily used). High level assemblies are upper in the matrix.

On the big matrix, the green square are symmetrical to blue square, in other words a IsUsing relation has a symmetrical IsUsedBy relation.

The weight printed on the blue cells is the number of members of the assembly used that are used by the assembly user.

The weight printed on the green cells is the number of members of the assembly user that are using something of the assembly used.