Top 2 things you should know about the Global Assembly Cache (GAC) in .NET 4.0


The Global Assembly Cache underwent a few changes in .NET 4.0. On your first few days with .NET 4.0 you'll most likely encounter a few scenarios which work differently than they did in the previous versions of .NET Framework.

1) You use gacutil.exe to install a .NET 4.0 assembly to the GAC but cannot find the assembly in the GAC when you look under 'c:\<windows folder>\assembly' using Windows Explorer

In .NET 4.0 the GAC Location has changed, The .NET 4.0 GAC is now located under 'c:\<windows folder>\Microsoft.NET\assembly'. Previous versions of .NET Framework will continue to use 'c:\<windows folder>\assembly'. If you install a .NET 4.0 assembly into the GAC using gacutil.exe it will go under the new location.


2) You copied gacutil.exe supplied with .NET 4.0 SDK to a different location but it doesn't work as expected. gacutil.exe doesn't seem to install your assembly in the GAC only when run from this custom location, you've even checked the new .NET 4.0 GAC location.

gacutil.exe starting .NET 4.0 has a dependency gacutlrc.dll which you can find in the subfolder 1033 where gacutil.exe is located. You need to copy this assembly as well to your gacutil.exe location.

Copying gacutil.exe to your installer location, etc is discouraged. Aaron's got a nice blog post describing why this is bad.

Comments (4)

  1. Thanks for the post! The second point helped me!

  2. james says:

    Windows explorer does not display the assemblies in the .net 4.0 folder the same way it did for .net 2.0

    How do we view a list of all assemblies without using gacutil for .net framework 4.0 ?

  3. Dan says:

    In regards to #2, in my experience, you also need the gacutil.exe.config to run gacutil on a machine without the SDK installed.

  4. Goran says:

    Thanks a lot. Second thing helped me too

Skip to main content