/// <summary> /// Indexes all DLLs we have located. /// Because this is a potentially time-consuming operation, it is put into a separate stage. /// </summary> void IndexReferences() { // Read all of the files foreach (var filename in dlls) { var info = AssemblyInfo.ReadFromFile(filename); if (info.Valid) { assemblyInfo[filename] = info; } else { failedDlls.Add(filename); } } // Index "assemblyInfo" by version string // The OrderBy is used to ensure that we by default select the highest version number. foreach (var info in assemblyInfo.Values.OrderBy(info => info.Id)) { foreach (var index in info.IndexStrings) { references[index] = info; } } }
private void IndexReference(string filename) { try { var info = AssemblyInfo.ReadFromFile(filename); assemblyInfoByFileName[filename] = info; } catch (AssemblyLoadException) { failedAssemblyInfoFileNames.Add(filename); } }
/// <summary> /// Retrieve the assembly info of a pre-cached assembly. /// </summary> /// <param name="filepath">The filename to query.</param> /// <returns>The assembly info.</returns> public AssemblyInfo GetAssemblyInfo(string filepath) { if (assemblyInfo.TryGetValue(filepath, out var info)) { return(info); } else { info = AssemblyInfo.ReadFromFile(filepath); assemblyInfo.Add(filepath, info); return(info); } }