This is by design.

 The reason is that assemblies installed in YOUR development machine is not necessary the same as what your application requires. Let VS to reference assemblies installed in your development machine is clearly not the right thing.

An analogy to unmanaged developement. VS search %INCLUDE % for header files, and %LIB% for lib files. It does not search %PATH% for those things.

Same applies to managed development. For managed assemblies, there are no header or lib files. Everything is contained in the assembly itself. Adding a reference to your VS really means looking for those metadatas.

Use the unmanaged development analogy, VS won't look at GAC for it.

Yes, maybe we do need headers for managed assemblies.