19.6. Determining the Versions of an Assembly That Are Registered in the Global Assembly Cache (GAC)
Problem
You need to determine all of the versions of an assembly that are currently installed in the GAC.
Solution
Use the PrintGacRegisteredVersions
method (implemented here) to display all of the versions (both native and managed) of an assembly in the GAC. In order to be complete, the code looks for .dll, .exe, and the native versions of .dll and // .exe files in the Global Assembly Cache:
public static void PrintGacRegisteredVersions(string assemblyFileName) { Console.WriteLine("Searching for GAC Entries for {0}\r\n", assemblyFileName); // Get the filename without the extension as that is the subdirectory // name in the GAC where it would be registered. string assemblyFileNameNoExt = Path. GetFileNameWithoutExtension(assemblyFileName); // Need to look for both the native images as well as "regular".dlls
and .exes
. string searchDLL = assemblyFileNameNoExt + ".dll"; string searchEXE = assemblyFileNameNoExt + ".exe"; string searchNIDLL = assemblyFileNameNoExt + ".ni.dll"; string searchNIEXE = assemblyFileNameNoExt + ".ni.exe";
The Directory.GetFiles
method is used in a LINQ query to determine if any of those versions are present in the GAC, which is located in the [Windows]\ASSEMBLY folder.
Tip
The ASSEMBLY folder is not visible through Windows Explorer, as the GAC shell extension gets in the way. But if you run a Command Prompt window, you can maneuver to the [Windows]\ASSEMBLY folder ...
Get C# 3.0 Cookbook, 3rd Edition now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.