public static bool RebuildGACAssemblyCache(bool forceRebuild)
{
if (_gacNameCache.Length != 0 && !forceRebuild)
{
return(true);
}
IAssemblyEnum iterator = null;
try { iterator = GAC.CreateGACEnum(); }
catch (Exception e)
{
TraceWriter.WriteTrace("Could not obtain GAC assembly enumerator, " + e.Message);
iterator = null;
}
if (iterator == null)
{
return(false);
}
IAssemblyName currentName = null;
List <GACAssemblyName> gacNames = new List <GACAssemblyName>();
while (GAC.GetNextAssembly(iterator, out currentName) == 0)
{
if (currentName == null)
{
continue;
}
string displayName = GAC.GetDisplayName(currentName, ASM_DISPLAY_FLAGS.PUBLIC_KEY_TOKEN | ASM_DISPLAY_FLAGS.VERSION | ASM_DISPLAY_FLAGS.CULTURE);
gacNames.Add(new GACAssemblyName(displayName));
}
_gacNameCache = gacNames.ToArray();
return(true);
}