public GacEnumerator(string assemblyName) { NativeMethods.IAssemblyName ppAssemblyNameObj = (NativeMethods.IAssemblyName)null; if (assemblyName == null) { return; } NativeMethods.CreateAssemblyNameObject(out ppAssemblyNameObj, assemblyName, NativeMethods.CreateAssemblyNameObjectFlags.CANOF_PARSE_DISPLAY_NAME, IntPtr.Zero); NativeMethods.CreateAssemblyEnum(out this.assemblyEnum, IntPtr.Zero, ppAssemblyNameObj, NativeMethods.AssemblyCacheFlags.GAC, IntPtr.Zero); }
public string GetNextAssembly() { NativeMethods.IAssemblyName ppName = (NativeMethods.IAssemblyName)null; if (this.done) { return((string)null); } this.assemblyEnum.GetNextAssembly((IntPtr)0, out ppName, 0); if (ppName != null) { int pccDisplayName = 1024; StringBuilder pDisplayName = new StringBuilder(pccDisplayName); ppName.GetDisplayName(pDisplayName, ref pccDisplayName, 167); return(((object)pDisplayName).ToString()); } else { this.done = true; return((string)null); } }
internal static extern void CreateAssemblyEnum(out NativeMethods.IAssemblyEnum ppEnum, NativeMethods.IApplicationContext pAppCtx, NativeMethods.IAssemblyName pName, uint dwFlags, IntPtr pvReserved);
internal static extern void CreateAssemblyNameObject(out NativeMethods.IAssemblyName ppEnum, string szAssemblyName, uint dwFlags, IntPtr pvReserved);
internal static extern int CreateAssemblyEnum(out NativeMethods.IAssemblyEnum ppEnum, IntPtr pUnkReserved, NativeMethods.IAssemblyName pName, NativeMethods.AssemblyCacheFlags flags, IntPtr pvReserved);
internal static extern int CreateAssemblyNameObject(out NativeMethods.IAssemblyName ppAssemblyNameObj, [MarshalAs(UnmanagedType.LPWStr)] string szAssemblyName, NativeMethods.CreateAssemblyNameObjectFlags flags, IntPtr pvReserved);