示例#1
0
文件: GAC.cs 项目: kapiya/Warewolf
        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());
        }
示例#2
0
文件: GAC.cs 项目: kapiya/Warewolf
        public static IAssemblyName CreateAssemblyName(string name)
        {
            IAssemblyName an;

            GAC.CreateAssemblyNameObject(out an, name, 2, (IntPtr)0);

            return(an);
        }
示例#3
0
文件: GAC.cs 项目: kapiya/Warewolf
        public static IAssemblyEnum CreateGACEnum()
        {
            IAssemblyEnum ae;

            GAC.CreateAssemblyEnum(out ae, (IntPtr)0, null, ASM_CACHE_FLAGS.ASM_CACHE_GAC, (IntPtr)0);

            return(ae);
        }
示例#4
0
文件: GAC.cs 项目: kapiya/Warewolf
        /// <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);
        }
示例#5
0
文件: GAC.cs 项目: kapiya/Warewolf
        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);
        }