diff --git a/ILRepack/Steps/ModuleInitializersRepackStep.cs b/ILRepack/Steps/ModuleInitializersRepackStep.cs index 385443e9..b8c4ae60 100644 --- a/ILRepack/Steps/ModuleInitializersRepackStep.cs +++ b/ILRepack/Steps/ModuleInitializersRepackStep.cs @@ -135,9 +135,26 @@ private void DemoteModuleInitializerMethodToNormalMethod(MethodDefinition initia initializer.IsRuntimeSpecialName = false; } + private Dictionary ToDictionarySkipDuplicates(IEnumerable assemblies) + { + var dict = new Dictionary(); + foreach (var assembly in assemblies) + { + if (!dict.ContainsKey(assembly.Name.Name)) + { + dict[assembly.Name.Name] = assembly; + } + else + { + _logger.Verbose($"- Duplicate key found: {assembly.Name.Name} - skipping"); + } + } + return dict; + } + private List TopologicalSort(HashSet assemblies) { - var loadedAssemblies = assemblies.ToDictionary(a => a.Name.Name); // Ensure quick lookup + var loadedAssemblies = ToDictionarySkipDuplicates(assemblies); // Ensure quick lookup var visited = new HashSet(); var deepFirstAssemblies = new List(assemblies.Count);