void AnalyzeIvtMap(IEnumerable<AssemblyDefinition> asms)
{
ivtMap = new Dictionary<AssemblyDefinition, List<string>>();
foreach (AssemblyDefinition asm in asms)
{
if (!ivtMap.ContainsKey(asm)) ivtMap.Add(asm, new List<string>());
Dictionary<string, CustomAttribute> internalVis = new Dictionary<string, CustomAttribute>();
foreach (CustomAttribute attr in asm.CustomAttributes)
if (attr.AttributeType.FullName == "System.Runtime.CompilerServices.InternalsVisibleToAttribute")
internalVis.Add(NormalizeIva((string)attr.ConstructorArguments[0].Value), attr);
if (internalVis.Count != 0)
{
Logger._Log("> InternalsVisibleToAttribute found in " + asm.FullName + "!");
List<AssemblyDefinition> refAsms = new List<AssemblyDefinition>();
foreach (AssemblyDefinition asmm in asms)
{
CustomAttribute attr;
if (internalVis.TryGetValue(asmm.Name.Name, out attr))
{
refAsms.Add(asmm);
attr.ConstructorArguments[0] = new CustomAttributeArgument(
asm.MainModule.TypeSystem.String,
GetIva(asmm.Name));
}
}
if (refAsms.Count == 0)
Logger._Log("> Internal assemblies NOT found!");
else
Logger._Log("> Internal assemblies found!");
foreach (AssemblyDefinition i in refAsms)
{
if (!ivtMap.ContainsKey(i)) ivtMap.Add(i, new List<string>());
ivtMap[i].Add(asm.GetVersionName());
}
}
}
}
void AnalyzeIvt(AssemblyDefinition asm)