public static void ReleaseDispenser(AssemblyMetadataHelper.IMetaDataDispenserEx dispenser) { if (dispenser != null) { Marshal.ReleaseComObject(dispenser); } }
public static AssemblyMetadataHelper.IMetaDataAssemblyImport OpenScope(AssemblyMetadataHelper.IMetaDataDispenserEx dispenser, string path) { if (dispenser == null || path == null || !PathHelper.FileExists(path)) { return(null); } AssemblyMetadataHelper.IMetaDataImport metaDataImport = dispenser.OpenScope(path, 18, ref AssemblyMetadataHelper.IID_IMetaDataImport); AssemblyMetadataHelper.IMetaDataAssemblyImport metaDataAssemblyImport = metaDataImport as AssemblyMetadataHelper.IMetaDataAssemblyImport; if (metaDataImport != null && metaDataAssemblyImport == null) { Marshal.ReleaseComObject(metaDataImport); } return(metaDataAssemblyImport); }
public static bool IsSilverlightAssembly(string path) { bool flag; AssemblyMetadataHelper.IMetaDataDispenserEx dispenser = AssemblyMetadataHelper.GetDispenser(); AssemblyMetadataHelper.IMetaDataAssemblyImport metaDataAssemblyImport = AssemblyMetadataHelper.OpenScope(dispenser, path); if (metaDataAssemblyImport != null) { try { AssemblyNameVersion assemblyNameVersion = AssemblyMetadataHelper.GetAssemblyNameVersion(metaDataAssemblyImport); if (assemblyNameVersion == null || !assemblyNameVersion.Name.Equals("mscorlib", StringComparison.OrdinalIgnoreCase) || !ProjectAssemblyHelper.ComparePublicKeyTokens(SilverlightProjectHelper.SilverlightPublicKeyToken, assemblyNameVersion.PublicKeyToken)) { bool flag1 = false; AssemblyNameVersion[] assemblyReferenceNameVersion = AssemblyMetadataHelper.GetAssemblyReferenceNameVersion(metaDataAssemblyImport); if (assemblyReferenceNameVersion != null) { AssemblyNameVersion[] assemblyNameVersionArray = assemblyReferenceNameVersion; int num = 0; while (num < (int)assemblyNameVersionArray.Length) { AssemblyNameVersion assemblyNameVersion1 = assemblyNameVersionArray[num]; if (!assemblyNameVersion1.Name.Equals("mscorlib", StringComparison.OrdinalIgnoreCase)) { num++; } else { flag1 = true; if (!ProjectAssemblyHelper.ComparePublicKeyTokens(SilverlightProjectHelper.SilverlightPublicKeyToken, assemblyNameVersion1.PublicKeyToken)) { break; } flag = true; return(flag); } } if (!flag1) { flag = true; return(flag); } } return(false); } else { flag = true; } } finally { if (metaDataAssemblyImport != null) { AssemblyMetadataHelper.ReleaseAssemblyImport(metaDataAssemblyImport); } if (dispenser != null) { AssemblyMetadataHelper.ReleaseDispenser(dispenser); } } return(flag); } return(false); }