In .NET Framework 4.0, the GAC went through a few changes. The GAC was
split into two, one for each CLR.
The CLR version used for both .NET Framework 2.0 and .NET Framework
3.5 is CLR 2.0. There was no need in the previous two framework releases to split GAC. The problem of breaking older applications in
Net Framework 4.0.
To avoid issues between CLR 2.0 and CLR 4.0 , the GAC is now split
into private GAC’s for each runtime.The main change is that CLR v2.0
applications now cannot see CLR v4.0 assemblies in the GAC.
.NET 4.0 has a new GAC, why?
hope this answers it for you :)