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)); }
private static List <string> GetFileNamesFromFilesTable(MetadataOnlyModule manifestModule, bool getResources) { int num; int num1; int num2; UnusedIntPtr unusedIntPtr; uint num3; CorFileFlags corFileFlag; HCORENUM hCORENUM = new HCORENUM(); StringBuilder stringBuilder = new StringBuilder(); List <string> strs = new List <string>(); IMetadataAssemblyImport rawImport = (IMetadataAssemblyImport)manifestModule.RawImport; try { while (true) { rawImport.EnumFiles(ref hCORENUM, out num, 1, out num1); if (num1 == 0) { break; } rawImport.GetFileProps(num, null, 0, out num2, out unusedIntPtr, out num3, out corFileFlag); if (getResources || corFileFlag != CorFileFlags.ContainsNoMetaData) { if (num2 > stringBuilder.Capacity) { stringBuilder.Capacity = num2; } rawImport.GetFileProps(num, stringBuilder, num2, out num2, out unusedIntPtr, out num3, out corFileFlag); strs.Add(stringBuilder.ToString()); } } } finally { hCORENUM.Close(rawImport); } return(strs); }