public static AssemblyNameVersion[] GetAssemblyReferenceNameVersion(AssemblyMetadataHelper.IMetaDataAssemblyImport assemblyImport) { IntPtr intPtr; IntPtr intPtr1; int num; int num1; int num2; int num3; if (assemblyImport == null) { return(null); } IntPtr zero = IntPtr.Zero; int[] numArray = new int[AssemblyMetadataHelper.ENUM_TOKEN_BUF_SIZE]; int num4 = 0; ArrayList arrayLists = new ArrayList(); try { do { assemblyImport.EnumAssemblyRefs(ref zero, numArray, (int)numArray.Length, out num4); for (int i = 0; i < num4; i++) { AssemblyMetadataHelper.AssemblyMetadataInfo assemblyMetadataInfo = new AssemblyMetadataHelper.AssemblyMetadataInfo(); assemblyImport.GetAssemblyRefProps(numArray[i], out intPtr1, out num1, null, 0, out num2, ref assemblyMetadataInfo, out intPtr, out num, out num3); if (num2 > 1) { char[] chrArray = new char[num2 + 1]; assemblyImport.GetAssemblyRefProps(numArray[i], out intPtr1, out num1, chrArray, (int)chrArray.Length, out num2, ref assemblyMetadataInfo, out intPtr, out num, out num3); byte[] numArray1 = new byte[num1]; Marshal.Copy(intPtr1, numArray1, 0, num1); string str = new string(chrArray, 0, num2 - 1); Version version = new Version((int)assemblyMetadataInfo.usMajorVersion, (int)assemblyMetadataInfo.usMinorVersion, (int)assemblyMetadataInfo.usBuildNumber, (int)assemblyMetadataInfo.usRevisionNumber); arrayLists.Add(new AssemblyNameVersion(str, version, numArray1)); } } }while (num4 > 0); } finally { if (zero != IntPtr.Zero) { assemblyImport.CloseEnum(zero); } } return((AssemblyNameVersion[])arrayLists.ToArray(typeof(AssemblyNameVersion))); }
public static AssemblyNameVersion GetAssemblyNameVersion(AssemblyMetadataHelper.IMetaDataAssemblyImport assemblyImport) { IntPtr intPtr; uint num; uint num1; int num2; int num3; if (assemblyImport == null) { return(null); } int assemblyFromScope = assemblyImport.GetAssemblyFromScope(); AssemblyMetadataHelper.AssemblyMetadataInfo assemblyMetadataInfo = new AssemblyMetadataHelper.AssemblyMetadataInfo(); assemblyImport.GetAssemblyProps(assemblyFromScope, out intPtr, out num, out num1, null, 0, out num2, ref assemblyMetadataInfo, out num3); if (num2 <= 1) { return(null); } char[] chrArray = new char[num2 + 1]; assemblyImport.GetAssemblyProps(assemblyFromScope, out intPtr, out num, out num1, chrArray, (int)chrArray.Length, out num2, ref assemblyMetadataInfo, out num3); string str = new string(chrArray, 0, num2 - 1); Version version = new Version((int)assemblyMetadataInfo.usMajorVersion, (int)assemblyMetadataInfo.usMinorVersion, (int)assemblyMetadataInfo.usBuildNumber, (int)assemblyMetadataInfo.usRevisionNumber); byte[] numArray = new byte[num]; Marshal.Copy(intPtr, numArray, 0, (int)num); AssemblyName assemblyName = new AssemblyName() { HashAlgorithm = (AssemblyHashAlgorithm)num1 }; if ((num3 & 1) == 0) { assemblyName.SetPublicKeyToken(numArray); } else { assemblyName.SetPublicKey(numArray); } return(new AssemblyNameVersion(str, version, assemblyName.GetPublicKeyToken())); }