public Assembly Weave() { this.GetAssemblyPath(); var newAssembly = this.assemblyPath.Replace(".dll", "2.dll"); var assemblyFileName = Path.GetFileName(newAssembly); Assembly assembly = AppDomain.CurrentDomain .GetAssemblies() .Where(x => !x.IsDynamic) .FirstOrDefault(a => Path.GetFileName(a.CodeBase) == assemblyFileName); if (assembly != null) { return(assembly); } File.Copy(this.assemblyPath, newAssembly, true); File.Copy(this.assemblyPath.Replace(".dll", ".pdb"), newAssembly.Replace(".dll", ".pdb"), true); var assemblyResolver = new TestAssemblyResolver(this.assemblyPath, this.projectPath); var moduleDefinition = ModuleDefinition.ReadModule(newAssembly, new ReaderParameters { AssemblyResolver = assemblyResolver, ReadSymbols = true }); var weavingTask = new ModuleWeaver { ModuleDefinition = moduleDefinition, AssemblyResolver = assemblyResolver, LogInfo = Console.WriteLine, LogWarning = Console.WriteLine, }; weavingTask.Execute(); moduleDefinition.Write(newAssembly, new WriterParameters { WriteSymbols = true }); this.PEVerify(newAssembly); return(Assembly.LoadFile(newAssembly)); }
public Assembly Weave() { this.GetAssemblyPath(); var newAssembly = this.assemblyPath.Replace(".dll", "2.dll"); var assemblyFileName = Path.GetFileName(newAssembly); Assembly assembly = AppDomain.CurrentDomain .GetAssemblies() .Where(x => !x.IsDynamic) .FirstOrDefault(a => Path.GetFileName(a.CodeBase) == assemblyFileName); if (assembly != null) return assembly; File.Copy(this.assemblyPath, newAssembly, true); File.Copy(this.assemblyPath.Replace(".dll", ".pdb"), newAssembly.Replace(".dll", ".pdb"), true); var assemblyResolver = new TestAssemblyResolver(this.assemblyPath, this.projectPath); var moduleDefinition = ModuleDefinition.ReadModule(newAssembly, new ReaderParameters { AssemblyResolver = assemblyResolver, ReadSymbols = true }); var weavingTask = new ModuleWeaver { ModuleDefinition = moduleDefinition, AssemblyResolver = assemblyResolver, LogInfo = Console.WriteLine, LogWarning = Console.WriteLine, }; weavingTask.Execute(); moduleDefinition.Write(newAssembly, new WriterParameters { WriteSymbols = true }); this.PEVerify(newAssembly); return Assembly.LoadFile(newAssembly); }