Ejemplo n.º 1
0
        public override string[] GetManifestResourceNames()
        {
            int  num;
            int  num1;
            int  num2;
            int  num3;
            uint num4;
            CorManifestResourceFlags corManifestResourceFlag;
            HCORENUM                hCORENUM      = new HCORENUM();
            StringBuilder           stringBuilder = new StringBuilder();
            List <string>           strs          = new List <string>();
            IMetadataAssemblyImport rawImport     = (IMetadataAssemblyImport)this.m_manifestModule.RawImport;

            try
            {
                while (true)
                {
                    rawImport.EnumManifestResources(ref hCORENUM, out num, 1, out num1);
                    if (num1 == 0)
                    {
                        break;
                    }
                    rawImport.GetManifestResourceProps(num, null, 0, out num2, out num3, out num4, out corManifestResourceFlag);
                    if (num2 > stringBuilder.Capacity)
                    {
                        stringBuilder.Capacity = num2;
                    }
                    rawImport.GetManifestResourceProps(num, stringBuilder, num2, out num2, out num3, out num4, out corManifestResourceFlag);
                    strs.Add(stringBuilder.ToString());
                }
            }
            finally
            {
                hCORENUM.Close(rawImport);
            }
            return(strs.ToArray());
        }
Ejemplo n.º 2
0
        public override Stream GetManifestResourceStream(string name)
        {
            int  num;
            int  num1;
            int  num2;
            uint num3;
            CorManifestResourceFlags corManifestResourceFlag;
            int                     num4;
            UnusedIntPtr            unusedIntPtr;
            uint                    num5;
            CorFileFlags            corFileFlag;
            IMetadataAssemblyImport rawImport = (IMetadataAssemblyImport)this.m_manifestModule.RawImport;

            rawImport.FindManifestResourceByName(name, out num);
            if ((new Token(num)).IsNil)
            {
                return(null);
            }
            StringBuilder stringBuilder = new StringBuilder(name.Length + 1);

            rawImport.GetManifestResourceProps(num, stringBuilder, stringBuilder.Capacity, out num1, out num2, out num3, out corManifestResourceFlag);
            Token token = new Token(num2);

            if (token.TokenType != System.Reflection.Adds.TokenType.File)
            {
                if (token.TokenType != System.Reflection.Adds.TokenType.AssemblyRef)
                {
                    throw new ArgumentException(MetadataStringTable.InvalidMetadata);
                }
                throw new NotImplementedException();
            }
            if (token.IsNil)
            {
                byte[] numArray = this.m_manifestModule.RawMetadata.ReadResource((long)num3);
                return(new MemoryStream(numArray));
            }
            rawImport.GetFileProps(token.Value, null, 0, out num4, out unusedIntPtr, out num5, out corFileFlag);
            StringBuilder stringBuilder1 = new StringBuilder(num4);

            rawImport.GetFileProps(token.Value, stringBuilder1, num4, out num4, out unusedIntPtr, out num5, out corFileFlag);
            string directoryName = Path.GetDirectoryName(this.Location);
            string str           = Path.Combine(directoryName, stringBuilder1.ToString());

            return(new FileStream(str, FileMode.Open));
        }