Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Check GAC for an assembly

Tags:

.net

gac

How to programmatically check GAC for an assembly?

like image 752
Jessy Avatar asked Dec 19 '09 19:12

Jessy


People also ask

How do you check if an assembly is in the GAC?

To get information on the the assembly attributes (Version, Culture, PublicKeyToken), run the gacutil /l command which will return a list of all the assemblies in the GAC. You can also see the information associated with a particular assembly using the -l parameter.

How do I get a list of assemblies in GAC?

You can actually navigate to the GAC via explorer or the command line and view the contents of the folder. It's location is C:\Windows\assembly. When viewing via explorer the actual files are hidden and abstracted away, if you need to copy or extract specific versions of the dlls the command line is the way to go.

How do I check if a dll is in the GAC?

(You can verify the dll is missing from the GAC by opening the GAC c:\windows\assembly and seeing if it is listed.) The link is dead.

Where is my GAC located?

It is located in %windir%\assembly (for example, C:\WINDOWS\assembly) and it is a shared repository of libraries.


2 Answers

Without even trying to get complicated, you could just shell out to gacutil and capture the output. For example, gacutil /l Microsoft.Practices.Unity gives me:

Microsoft (R) .NET Global Assembly Cache Utility.  Version 3.5.30729.1 Copyright (c) Microsoft Corporation.  All rights reserved.  The Global Assembly Cache contains the following assemblies:   Microsoft.Practices.Unity, Version=1.2.0.0, Culture=neutral, PublicKeyToken=31 bf3856ad364e35, processorArchitecture=MSIL  Number of items = 1 

versus gacutil /l Some.Nonexistant.Assembly:

Microsoft (R) .NET Global Assembly Cache Utility.  Version 3.5.30729.1 Copyright (c) Microsoft Corporation.  All rights reserved.  The Global Assembly Cache contains the following assemblies:  Number of items = 0 

This is easy to implement and parse and isn't dependent on any third-party implementations.

like image 193
jason Avatar answered Oct 19 '22 15:10

jason


It's better to use ReflectionOnlyLoad Method. this method loads an assembly into the reflection-only context, where it can be examined but not executed.

like image 22
BALKANGraph Avatar answered Oct 19 '22 15:10

BALKANGraph