Esempio n. 1
0
        private void ReadInputAssemblies()
        {
            MergedAssemblyFiles = Options.ResolveFiles();
            OtherAssemblies     = new List <AssemblyDefinition>();
            // TODO: this could be parallelized to gain speed
            var primary          = MergedAssemblyFiles.FirstOrDefault();
            var debugSymbolsRead = false;

            foreach (string assembly in MergedAssemblyFiles)
            {
                var result = ReadInputAssembly(assembly, primary == assembly);
                if (result.IsPrimary)
                {
                    PrimaryAssemblyDefinition = result.Definition;
                    PrimaryAssemblyFile       = result.Assembly;
                }
                else
                {
                    OtherAssemblies.Add(result.Definition);
                }

                debugSymbolsRead |= result.SymbolsRead;
            }
            // prevent writing PDB if we haven't read any
            Options.DebugInfo = debugSymbolsRead;

            MergedAssemblies = new List <AssemblyDefinition>(OtherAssemblies);
            MergedAssemblies.Insert(0, PrimaryAssemblyDefinition);
        }
Esempio n. 2
0
 private static void ReloadAndCheckReferences(RepackOptions repackOptions)
 {
     var outputFile = AssemblyDefinition.ReadAssembly(repackOptions.OutputFile, new ReaderParameters(ReadingMode.Immediate));
     var mergedFiles = repackOptions.ResolveFiles().Select(f => AssemblyDefinition.ReadAssembly(f, new ReaderParameters(ReadingMode.Deferred)));
     foreach (var a in outputFile.MainModule.AssemblyReferences.Where(x => mergedFiles.Any(y => repackOptions.KeepOtherVersionReferences ? x.FullName == y.FullName : x.Name == y.Name.Name)))
     {
         Assert.Fail($"Merged assembly retains a reference to one (or more) of the merged files: ${a.FullName}");
     }
 }