Do I ever really need to use the Global Assembly Cache (GAC)?

I've been building .NET web applications for many years now, and I never use the GAC?

What am I missing? Or am I better off staying away from it?


The GAC is only useful if you register libraries which you're going to reuse. It is in no way obligatory to use to run a WebApp without shared libraries .


The GAC is mainly for storing shared libraries, especially when your application requires a specific version. This way, I could install FooLib 1.0 and FooLib 2.0 on the same machine, and applications that require either one could find the ones they want. Web applications don't seem to use a whole lot of external libraries anyways.

In another example, SSIS requires that your custom tools are in the GAC. Major pain.


Like Vincent says, the GAC is important mostly for third-party library vendors who want to support servicing independent of client applications. In other words, if there's a bug in the library, you could upgrade the library and fix all applications that use the library, without having to know which applications they are, etc.

In practice, most .NET applications (so far) are web applications, so it turns out that it's mostly useful for Microsoft, as few other people have routine ability to push updates to end-user machines.


  • Excel not inserting leading zero
  • How to create virtual printer with iOS Simulator?
  • Is there a way to choose which files are displayed to the user via the standard OPENFILE dialogs?
  • Distributed JMS based logging .. falling flat?
  • What is this strange character in chrome's resource css viewer?
  • Application bar icon text length
  • MVC - @Html.CheckBoxFor
  • Regex for Specific Tag
  • python: forcing relative imports to search from script file
  • How can we prepend rows to a react native list-view?
  • OSX - always hide certain files
  • Compiling dlib on OS X
  • How to generate and display a QR Code in ionic 2
  • What's the purpose of QString?
  • Firefox Extension - Monitor refresh and change of tab
  • Jackson Parser: ignore deserializing for type mismatch
  • Ionic 2 storage is not cleaning up on uninstall - Only for signed APK
  • Make VS2015 use angular-cli ng at build time in a .NET project
  • Reading JSON from a file using C++ REST SDK (Casablanca)
  • Spring Data JPA custom method causing PropertyReferenceException
  • FB SDK and cURL: Unknown SSL protocol error in connection to graph.facebook.com:443
  • Is there any way to access browser form field suggestions from JavaScript?
  • C# - Serializing and deserializing static member
  • Sending data from AppleScript to FileMaker records
  • Deserializing XML into class C#
  • Is there a mandatory requirement to switch app.yaml?
  • Matrix multiplication with MKL
  • How to include full .NET prerequisite for Wix Burn installer
  • CSS Applying specific rule for a specific monitor resolution with only CSS is posible?
  • What are the advantages and disadvantages of reading an entire file into a single String as opposed
  • How can I remove ASP.NET Designer.cs files?
  • python draw pie shapes with colour filled
  • Is it possible to post an object from jquery to bottle.py?
  • Is there any way to bind data to data.frame by some index?
  • Does armcc optimizes non-volatile variables with -O0?
  • costura.fody for a dll that references another dll
  • How can i traverse a binary tree from right to left in java?
  • UserPrincipal.Current returns apppool on IIS
  • Converting MP3 duration time
  • jQuery Masonry / Isotope and fluid images: Momentary overlap on window resize