public override AssemblyName[] GetReferencedAssemblies() { Token token; int num; IMetadataAssemblyImport rawImport = (IMetadataAssemblyImport)this.m_manifestModule.RawImport; List <AssemblyName> assemblyNames = new List <AssemblyName>(); HCORENUM hCORENUM = new HCORENUM(); try { while (true) { int num1 = rawImport.EnumAssemblyRefs(ref hCORENUM, out token, 1, out num); Marshal.ThrowExceptionForHR(num1); if (num == 0) { break; } assemblyNames.Add(AssemblyNameHelper.GetAssemblyNameFromRef(token, this.m_manifestModule, rawImport)); } } finally { hCORENUM.Close(rawImport); } return(assemblyNames.ToArray()); }
public void Close(IMetadataAssemblyImport import) { if (this.hEnum != IntPtr.Zero) { import.CloseEnum(this.hEnum); this.hEnum = IntPtr.Zero; } }
public static AssemblyName GetAssemblyName(MetadataOnlyModule module) { PortableExecutableKinds portableExecutableKind; ImageFileMachine imageFileMachine; Token assemblyToken = MetadataOnlyAssembly.GetAssemblyToken(module); IMetadataAssemblyImport rawImport = (IMetadataAssemblyImport)module.RawImport; AssemblyNameHelper.AssemblyNameFromDefitionBuilder assemblyNameFromDefitionBuilder = new AssemblyNameHelper.AssemblyNameFromDefitionBuilder(assemblyToken, module.RawMetadata, rawImport); AssemblyName codeBaseFromManifestModule = assemblyNameFromDefitionBuilder.CalculateName(); codeBaseFromManifestModule.CodeBase = MetadataOnlyAssembly.GetCodeBaseFromManifestModule(module); module.GetPEKind(out portableExecutableKind, out imageFileMachine); codeBaseFromManifestModule.ProcessorArchitecture = AssemblyNameHelper.CalculateProcArchIndex(portableExecutableKind, imageFileMachine); return(codeBaseFromManifestModule); }
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); }
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()); }
internal static IEnumerable <UnresolvedTypeName> GetRawTypeForwardedToAttributes(MetadataOnlyModule manifestModule) { int num; uint num1; int num2; int num3; int num4; CorTypeAttr corTypeAttr; HCORENUM hCORENUM = new HCORENUM(); IMetadataAssemblyImport rawImport = (IMetadataAssemblyImport)manifestModule.RawImport; try { while (true) { rawImport.EnumExportedTypes(ref hCORENUM, out num, 1, out num1); if (num1 == 0) { break; } rawImport.GetExportedTypeProps(num, null, 0, out num2, out num3, out num4, out corTypeAttr); Token token = new Token(num3); if (token.TokenType == System.Reflection.Adds.TokenType.AssemblyRef) { StringBuilder stringBuilder = new StringBuilder(num2); rawImport.GetExportedTypeProps(num, stringBuilder, stringBuilder.Capacity, out num2, out num3, out num4, out corTypeAttr); AssemblyName assemblyNameFromRef = AssemblyNameHelper.GetAssemblyNameFromRef(token, manifestModule, rawImport); yield return(new UnresolvedTypeName(stringBuilder.ToString(), assemblyNameFromRef)); } } } finally { hCORENUM.Close(rawImport); } }
protected AssemblyNameBuilder(MetadataFile storage, IMetadataAssemblyImport assemblyImport) { this.m_storage = storage; this.m_assemblyImport = assemblyImport; }
public static AssemblyName GetAssemblyNameFromRef(Token assemblyRefToken, MetadataOnlyModule module, IMetadataAssemblyImport assemblyImport) { return((new AssemblyNameHelper.AssemblyNameFromRefBuilder(assemblyRefToken, module.RawMetadata, assemblyImport)).CalculateName()); }
public AssemblyNameFromRefBuilder(Token assemblyRefToken, MetadataFile storage, IMetadataAssemblyImport assemblyImport) : base(storage, assemblyImport) { if (assemblyRefToken.TokenType != System.Reflection.Adds.TokenType.AssemblyRef) { throw new ArgumentException(MetadataStringTable.AssemblyRefTokenExpected); } this.assemblyRefToken = assemblyRefToken; }
public AssemblyNameFromDefitionBuilder(Token assemblyToken, MetadataFile storage, IMetadataAssemblyImport assemblyImport) : base(storage, assemblyImport) { this.assemblyToken = assemblyToken; }