Share via


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

  • Anonymous
    June 06, 2010
    Thanks for the post! The second point helped me!

  • Anonymous
    July 29, 2010
    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 ?

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

  • Anonymous
    October 30, 2014
    Thanks a lot. Second thing helped me too