public void FromConfuserProject(ConfuserProject prj) { output = prj.OutputPath; snKey = prj.SNKeyPath; seed = prj.Seed; dbg = prj.Debug; foreach (var i in prj.Plugins) { LoadAssembly(Assembly.LoadFrom(i), false); } if (prj.Packer != null) { this.packer = new PrjConfig <Packer>(Packers.Single(_ => _.ID == prj.Packer.Id), this); foreach (var j in prj.Packer.AllKeys) { this.packer.Add(new PrjArgument(this) { Name = j, Value = prj.Packer[j] }); } } foreach (var i in prj) { PrjAssembly asm = new PrjAssembly(this); asm.FromCrAssembly(this, i); Assemblies.Add(asm); } foreach (var i in prj.Rules) { PrjRule rule = new PrjRule(this); rule.FromCrRule(this, i); Rules.Add(rule); } }
void DropFile(object sender, DragEventArgs e) { if (e.Data.GetDataPresent(DataFormats.FileDrop)) { string[] file = e.Data.GetData(DataFormats.FileDrop, true) as string[]; if (file.Length == 1 && Path.GetExtension(file[0]) == ".crproj") { host.LoadPrj(file[0]); return; } foreach (var i in file) { if (host.Project.Assemblies.Any(_ => _.Path == i)) { continue; } using (var str = File.OpenRead(i)) { try { var img = ImageReader.ReadImageFrom(str); str.Position = 0; var asm = new PrjAssembly(host.Project) { Path = i, IsExecutable = img.EntryPointToken != 0, Assembly = AssemblyDefinition.ReadAssembly(str) }; if (asm.IsExecutable) { if (!HasMain()) { asm.IsMain = true; } } if (string.IsNullOrEmpty(host.Project.OutputPath)) { host.Project.OutputPath = Path.Combine(Path.GetDirectoryName(asm.Path), "Confused"); } host.Project.Assemblies.Add(asm); } catch (Exception ex) { MessageBox.Show(string.Format( @"""{0}"" is not a valid assembly! Message : {1} Stack Trace : {2}", i, ex.Message, ex.StackTrace), "Confuser", MessageBoxButton.OK, MessageBoxImage.Error); } } } } }