Fusion Global Assembly Cache API

Fusion Global Assembly Cache API is not documented in MSDN, but it is documented in KB article 317540 http://support.microsoft.com/default.aspx?scid=kb;en-us;317540.

I have received many questions about how to use fusion APIs.

In the coming weeks I’ll write a mini-series about how to use those fusion APIs.

1. How to install an assembly.
2. How to uninstall an assembly.
3. How to enumerate GAC.

Since those are essentially what gacutil does, the mini-series will be called “How to write your own gacutil.“.

In whidbey some change is required. I’ll post an update to the series when whidbey beta1 is released.

Please notice all the code in the blogs are with the standard no warranties, no rights disclaimer.

If you have more suggestions, please post it here.

Comments (11)

  1. Will there be FCL API for reading the GAC’s contents?

  2. Anonymous says:

    What a mess 🙁

  3. Anonymous says:

    Omer: What will an API now help? Its missing in 1.0 so they will have to be compatible with 1.0 forever. This is so screwed up its not even funny. I just decided I wont use the GAC.

  4. Omer,

    I don’t want to comment on un published stuff. When whidbey beta1 ships, I’ll comment on it.


    Add APIs to BCL is not breaking change and is perfectly reasonable. I am not sure what is screwed up, can you elaborate?

    If you are writting small apps, you don’t need to thinking about GAC. But for large scale applications, GAC is almost unavoidable.

  5. Tester says:

    I can’t believe .NET doesn’t allow for download progress updates during AppDomain.Load/CreateInstance* from http server. Is there something that i’m missing? We have over 11 megs of assemblies to be downloaded initially and whole app obviously freezes during that process. This seems like a common thing with "no-touch" deployment.

  6. This is something we did considered. But the feedback is majority of people don’t want to see UI. In Whidbey we have ClickOnce, and it is the preferred way for web deployment. It will have download UI support.

  7. Tester says:

    .NET didn’t have to provide UI, just some interface(s) for hooking the transfer progress. ClickOnce is .net 2.0, which is year+ way and another year+ until deployed by customers. What should poor souls of .net 1.1 do in the meantime? 🙂 One way i guess is to by pass automatic download and handle the download manually.

  8. Yes, the interface is kind of there, but it is not implemented due to lack of interest(and other higher priorities).

    .Net 2.0 is supposed to be out next year. Yes, I heard you. Unfortunately we can’t change a shipping product in such a major way:(. Hopefully this gives you a good reason to use ClickOnce when it is out.

  9. Rob Morgan says:

    We are wanting a way to keep our GAC’s insync over multiple servers and enviroments such as dev, qa, and prod because we have our own shared framework assemblies to manage. We are condiering a pull type service with each server having a config to keep track of the needed assemblies. So a "How to write your own gacutil". would benefit us greatly.


  10. Rob Morgan says:

    BTW.. I made a working prototype using this article http://www.codeproject.com/dotnet/undocumentedfusion.asp but it doesn’t seem to work on 2003 server.

  11. Rob, we are in the process of documenting Fusion GAC APIs, so I cancelled the plan of a sample gacutil.exe. You can always look in Rotor’s source code for examples.