.netinstallationgacglobal-assembly-cache

Methods to programmatically install a .NET assembly into the GAC


I need to create a small app or script to install a .NET assembly into the GAC. I've read there are a couple ways to do this including:

However, what would happen if I just created the appropriate directories on the machine and copied the assembly into that directory? The structure of the GAC directory is the following: C:\Windows\assembly\GAC_MSIL\Foo\<version#>__<public token>\Foo.dll

Do the above two methods do anything special besides creating the folder structure and placing the assembly into it?


Solution

  • I strongly recommend using existing methods (like the ones you mentioned) because they are both supported and maintained by Microsoft and will continue to work with future releases.

    A quick look at gacutil.exe with Process Monitor reveals that there is a little bit more to it than just copying files:

    The wrapper in System.EnterpriseServices is very similar to this old blog post and should work just fine.