LoadAndDump (et, version);
}
}
+
+ static bool dump_asm, dump_ver;
static void Main (string[] args) {
+
+ if (args.Length > 1) {
+ dump_asm = args [1].Equals ("asm");
+ dump_ver = args [1].Equals ("ver");
+ } else {
+ dump_asm = true;
+ }
foreach (var f in Directory.GetFiles (args [0], "*.nupkg")) {
DumpNuget (f);
}
var data = StreamToArray (entry.Open ());
AppDomain ad = AppDomain.CreateDomain ("parse_" + ++domain_id);
DoParse p = (DoParse)ad.CreateInstanceAndUnwrap (typeof (DoParse).Assembly.FullName, typeof (DoParse).FullName);
- p.ParseAssembly (data, version, entry.Name, entry.FullName);
+ p.ParseAssembly (data, version, entry.Name, entry.FullName, dump_asm, dump_ver);
AppDomain.Unload (ad);
}
}
class DoParse : MarshalByRefObject {
+
static int Hash (string str) {
int h = 5381;
for (int i = 0; i < str.Length; ++i)
case "System.Net.Http.dll": return "SYS_NET_HTTP";
case "System.Text.Encoding.CodePages.dll": return "SYS_TEXT_ENC_CODEPAGES";
case "System.Reflection.DispatchProxy.dll": return "SYS_REF_DISP_PROXY";
+ case "System.ValueTuple.dll": return "SYS_VALUE_TUPLE";
default: throw new Exception ($"No idea what to do with {name}");
}
}
return parts[parts.Length - 2];
}
- public void ParseAssembly (byte[] data, string version, string name, string fullname) {
+ public void ParseAssembly (byte[] data, string version, string name, string fullname, bool dump_asm, bool dump_ver) {
var a = Assembly.ReflectionOnlyLoad (data);
var m = a.GetModules ()[0];
var id = m.ModuleVersionId.ToString ().ToUpper ();
var str = FileToEnum (name);
string ver_str = version + " " + FileToMoniker (fullname);
- Console.WriteLine ($"IGNORED_ASSEMBLY (0x{hash_code}, {str}, \"{id}\", \"{ver_str}\"),");
+
+ if (dump_asm)
+ Console.WriteLine ($"IGNORED_ASSEMBLY (0x{hash_code}, {str}, \"{id}\", \"{ver_str}\"),");
+
+ //IGNORED_ASM_VER (SYS_IO_COMPRESSION, 4, 1, 2, 0),
+ var ver = a.GetName ().Version;
+ if (dump_ver)
+ Console.WriteLine ($"IGNORED_ASM_VER ({str}, {ver.Major}, {ver.Minor}, {ver.Build}, {ver.Revision}),");
+
}
}
\ No newline at end of file