This is not how it works. When you use Project + Add Reference, you always add a reference assembly. This is never a build from the GAC. The GAC is detailed runtime information that is always used to deliver assemblies when your program is running, never when it is built.
It is very important that it works this way, the contents of the GAC on your computer will not match the contents of the GAC on your user machine. Many DLL Hell countermeasures exist to ensure that matching your control assembly with GAC user content will take care of good diagnostics when the user computer is not configured correctly to run your program.
This is also the reason that you cannot directly browse GAC folders when navigating to c: \ windows \ assembly from Explorer. The shell extension handler hides the details so that you don't make a mistake, for example, by adding the GAC-ed assembly as a reference assembly. The same extension handler is not installed for .NET 4 builds, you can look at the c: \ windows \ microsoft.net \ assembly and see the GAC structure. Do not assume that now you can add links from there, link assembly is even more important in .NET 4, they are completely different from assemblies.
Thus, viewing the referenced assembly stored in C: \ Windows \ Microsoft.NET \ Framework \ v3.5 is completely normal; this is the home directory for special .NET 3.5 collections, such as System.Core.dll. For .NET 4 projects, reference assemblies are stored in c: \ program files \ reference assemblys, they must not be C: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319. Check this answer to find out what unquenchable misfortune can be caused by not using the correct reference assemblies.
Hans passant
source share