When you compile your library, you can choose to target either "Any processor" or a specific processor architecture.
Any processor libraries only require one entry in the GAC, and the entire assembly is compiled in MSIL.
Other assemblies need a separate library for each architecture. These libraries are built for each type of CPU, and there are several copies in the GAC. The most common reason is to include unmanaged code or load your own DLL, which is architecture specific.
In your example, System.Core is probably fully managed code, while System.Data is probably built on top of many of its own Windows libraries.
Applications running in 32-bit mode download the 32-bit version of the library, while applications running in 64-bit mode download the 64-bit version.
Jared kells
source share