protected override void Process() { _assemblies = Context.GetAssemblies(); _mergedAssembly = CloneAssemblyDefinition(_assemblies[0],/* "merged_" +*/ _assemblies[0].Name.Name); _resolver = new ReferenceResolver(_mergedAssembly.MainModule, t => { return !_assemblies.Any(a => a.MainModule.GetAllTypes().Contains(t.Resolve())); }); _resolver.Action = t => { var resolved = t.Resolve(); if (t.IsNested) { TypeReference declaringType = _resolver.Action(resolved.DeclaringType); return declaringType.Resolve().InjectNestedType(resolved, _resolver); } else return _mergedAssembly.MainModule.InjectType(resolved, _resolver); }; }