Where are assemblies in .NET physically located?

Petras picture Petras · Feb 8, 2010 · Viewed 23.5k times · Source

I am a little confused about where .NET assemblies are physically located. Take good old LINQ. In my web.config file it says:

<add assembly="System.Data.Linq, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>

This is the reference to LINQ. But where exactly is the DLL this refers to located? There isn't any path in the above and it's not in my bin folder.

I also have what I think is a third-party assembly reference:

<add assembly="MapInfo.CoreTypes, Version=4.0.0.483, Culture=neutral, PublicKeyToken=F548BCBA69D4B8DA" />

How can I tell where this is located on my machine if it's not in the bin folder?

Also, if a DLL file is in the bin directory, can I assume that it doesn't need to be referenced in web.config?

Answer

John Boker picture John Boker · Feb 8, 2010

I think they are located in the GAC, which is located in %WINDIR%\Assembly. More information is in Demystifying the .NET Global Assembly Cache (at The Code Project).