Exemplo n.º 1
0
        public void Link()
        {
            outputAssembly = AssemblyFactory.GetAssembly(Assemblies [0]);
            mainModule     = outputAssembly.MainModule;
            if (mainModule.Name != MainModuleName)
            {
                Console.Error.WriteLine("Main module is not named \"" + MainModuleName + "\" in assembly " + outputAssembly.Name.FullName);
                Environment.Exit(1);
            }
            mainType = mainModule.Types [MainTypeName];
            if (mainType == null)
            {
                Console.Error.WriteLine("Main module does not contain type \"" + MainTypeName + "\" in assembly " + outputAssembly.Name.FullName);
                Environment.Exit(1);
            }
            outputAssembly.Accept(new StructureMerger(this, outputAssembly, outputAssembly));

            for (int i = 1; i < Assemblies.Count; i++)
            {
                AssemblyDefinition asm = AssemblyFactory.GetAssembly(Assemblies [i]);
                asm.Accept(new StructureMerger(this, outputAssembly, asm));
            }

            FixReflectionAfterMerge fix = new FixReflectionAfterMerge(this, outputAssembly, outputAssembly);

            fix.Process();

            nativeLibraries.AddExternalMethods(this);

            if (OutputIsExecutable)
            {
                outputAssembly.Kind       = AssemblyKind.Console;
                outputAssembly.EntryPoint = InternalSymbols.EntryPoint;
            }
            else
            {
                outputAssembly.Kind = AssemblyKind.Dll;
            }
            AssemblyFactory.SaveAssembly(outputAssembly, OutputPath);
        }
Exemplo n.º 2
0
        static void Process(MergeContext context)
        {
            AssemblyDefinition primary = null;

            try {
                primary = AssemblyFactory.GetAssembly(context.Assemblies [0]);

                for (int i = 1; i < context.Assemblies.Count; i++)
                {
                    AssemblyDefinition asm = AssemblyFactory.GetAssembly(context.Assemblies [i]);
                    asm.Accept(new StructureMerger(context, primary, asm));
                }
            } catch (FileNotFoundException e) {
                Error(e.Message);
            }

            FixReflectionAfterMerge fix = new FixReflectionAfterMerge(context, primary, primary);

            fix.Process();

            AssemblyFactory.SaveAssembly(primary, context.OutputPath);

            ConfigMerger.Process(context.Assemblies, context.OutputPath);
        }
Exemplo n.º 3
0
		static void Process (MergeContext context)
		{
			AssemblyDefinition primary = null;
			try {
				primary = AssemblyFactory.GetAssembly (context.Assemblies [0]);
	
				for (int i = 1; i < context.Assemblies.Count; i++) {
					AssemblyDefinition asm = AssemblyFactory.GetAssembly (context.Assemblies [i]);
					asm.Accept (new StructureMerger (context, primary, asm));
				}
			} catch (FileNotFoundException e) {
				Error (e.Message);
			}

			FixReflectionAfterMerge fix = new FixReflectionAfterMerge (context, primary, primary);
			fix.Process ();

			AssemblyFactory.SaveAssembly (primary, context.OutputPath);
			
			ConfigMerger.Process (context.Assemblies, context.OutputPath);
		}
		public void Link ()
		{
			outputAssembly = AssemblyFactory.GetAssembly (Assemblies [0]);
			mainModule = outputAssembly.MainModule;
			if (mainModule.Name != MainModuleName) {
				Console.Error.WriteLine ("Main module is not named \"" + MainModuleName + "\" in assembly " + outputAssembly.Name.FullName);
				Environment.Exit (1);
			}
			mainType = mainModule.Types [MainTypeName];
			if (mainType == null) {
				Console.Error.WriteLine ("Main module does not contain type \"" + MainTypeName + "\" in assembly " + outputAssembly.Name.FullName);
				Environment.Exit (1);
			}
			outputAssembly.Accept (new StructureMerger (this, outputAssembly, outputAssembly));

			for (int i = 1; i < Assemblies.Count; i++) {
				AssemblyDefinition asm = AssemblyFactory.GetAssembly (Assemblies [i]);
				asm.Accept (new StructureMerger (this, outputAssembly, asm));
			}

			FixReflectionAfterMerge fix = new FixReflectionAfterMerge (this, outputAssembly, outputAssembly);
			fix.Process ();

			nativeLibraries.AddExternalMethods (this);

			if (OutputIsExecutable) {
				outputAssembly.Kind = AssemblyKind.Console;
				outputAssembly.EntryPoint = InternalSymbols.EntryPoint;
			} else {
				outputAssembly.Kind = AssemblyKind.Dll;
			}
			AssemblyFactory.SaveAssembly (outputAssembly, OutputPath);
		}