Beispiel #1
0
        static void Main(string[] args)
        {
            if (args == null || args.Length != 2)
            {
                Console.WriteLine("usage: asmmeta <input> <output>");
                return;
            }
            HostEnvironment host   = new HostEnvironment();
            IModule /*?*/   module = host.LoadUnitFrom(args[0]) as IModule;

            if (module == null || module == Dummy.Module || module == Dummy.Assembly)
            {
                Console.WriteLine(args[0] + " is not a PE file containing a CLR module or assembly.");
                return;
            }

            string outputFile    = args[1];
            string outputPDBFile = Path.ChangeExtension(args[1], "pdb");

            PdbReader /*?*/ pdbReader = null;
            PdbWriter /*?*/ pdbWriter = null;
            string          pdbFile   = Path.ChangeExtension(module.Location, "pdb");

            if (File.Exists(pdbFile))
            {
                Stream pdbStream = File.OpenRead(pdbFile);
                pdbReader = new PdbReader(pdbStream, host);
                pdbWriter = new PdbWriter(Path.GetFullPath(outputPDBFile), pdbReader);
            }

            MetadataMutator mutator  = new MetadataMutator(host);
            IAssembly /*?*/ assembly = module as IAssembly;

            if (assembly != null)
            {
                var mutable = mutator.GetMutableCopy(assembly);
                mutable.Name = host.NameTable.GetNameFor(Path.GetFileNameWithoutExtension(args[1]));
                module       = mutator.Visit(mutable);
            }
            else
            {
                var mutable = mutator.GetMutableCopy(module);
                mutable.Name = host.NameTable.GetNameFor(Path.GetFileNameWithoutExtension(args[1]));
                module       = mutator.Visit(mutable);
            }
            PeWriter.WritePeToStream(module, host, File.Create(Path.GetFullPath(outputFile)), pdbReader, pdbReader, pdbWriter);
        }
Beispiel #2
0
    static void Main(string[] args) {
      if (args == null || args.Length != 2) {
        Console.WriteLine("usage: asmmeta <input> <output>");
        return;
      }
      HostEnvironment host = new HostEnvironment();
      IModule/*?*/ module = host.LoadUnitFrom(args[0]) as IModule;
      if (module == null || module == Dummy.Module || module == Dummy.Assembly) {
        Console.WriteLine(args[0]+" is not a PE file containing a CLR module or assembly.");
        return;
      }

      string outputFile = args[1];
      string outputPDBFile = Path.ChangeExtension(args[1], "pdb");

      PdbReader/*?*/ pdbReader = null;
      PdbWriter/*?*/ pdbWriter = null;
      string pdbFile = Path.ChangeExtension(module.Location, "pdb");
      if (File.Exists(pdbFile)) {
        Stream pdbStream = File.OpenRead(pdbFile);
        pdbReader = new PdbReader(pdbStream, host);
        pdbWriter = new PdbWriter(Path.GetFullPath(outputPDBFile), pdbReader);
      }

      MetadataMutator mutator = new MetadataMutator(host);
      IAssembly/*?*/ assembly = module as IAssembly;
      if (assembly != null)
      {
        var mutable = mutator.GetMutableCopy(assembly);
        mutable.Name = host.NameTable.GetNameFor(Path.GetFileNameWithoutExtension(args[1]));
        module = mutator.Visit(mutable);
      }
      else
      {
        var mutable = mutator.GetMutableCopy(module);
        mutable.Name = host.NameTable.GetNameFor(Path.GetFileNameWithoutExtension(args[1]));
        module = mutator.Visit(mutable);
      }
      PeWriter.WritePeToStream(module, host, File.Create(Path.GetFullPath(outputFile)), pdbReader, pdbReader, pdbWriter);
    }