示例#1
0
        /// <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);
     }
 }
示例#3
0
 /// <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);
     }
 }