public static String GetDownloadPath() { uint bufferSize = 255; StringBuilder buffer = new StringBuilder((int)bufferSize); GAC.GetCachePath(ASM_CACHE_FLAGS.ASM_CACHE_DOWNLOAD, buffer, ref bufferSize); return(buffer.ToString()); }
public static IAssemblyName CreateAssemblyName(string name) { IAssemblyName an; GAC.CreateAssemblyNameObject(out an, name, 2, (IntPtr)0); return(an); }
public static IAssemblyEnum CreateGACEnum() { IAssemblyEnum ae; GAC.CreateAssemblyEnum(out ae, (IntPtr)0, null, ASM_CACHE_FLAGS.ASM_CACHE_GAC, (IntPtr)0); return(ae); }
/// <summary> /// Use this method as a start for the GAC API /// </summary> /// <returns>IAssemblyCache COM interface</returns> public static IAssemblyCache CreateAssemblyCache() { IAssemblyCache ac; GAC.CreateAssemblyCache(out ac, 0); return(ac); }
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); }