How to programmatically check GAC for an assembly?
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.
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.
(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.
It is located in %windir%\assembly (for example, C:\WINDOWS\assembly) and it is a shared repository of libraries.
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.
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With