Ejemplo n.º 1
0
        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);
            };
        }