public WeaverHelper(string projectPath) { this.projectPath = Path.GetFullPath(Path.Combine(TestContext.CurrentContext.TestDirectory, @"..\..\..\TestAssemblies", projectPath)); GetAssemblyPath(); AfterAssemblyPath = BeforeAssemblyPath.Replace(".dll", "2.dll"); File.Copy(BeforeAssemblyPath, AfterAssemblyPath, true); var assemblyResolver = new TestAssemblyResolver(BeforeAssemblyPath, this.projectPath); var readerParameters = new ReaderParameters { AssemblyResolver = assemblyResolver }; var moduleDefinition = ModuleDefinition.ReadModule(AfterAssemblyPath, readerParameters); var weavingTask = new ModuleWeaver { ModuleDefinition = moduleDefinition, AssemblyResolver = assemblyResolver }; weavingTask.Execute(); moduleDefinition.Write(AfterAssemblyPath); Assembly = Assembly.LoadFile(AfterAssemblyPath); }
public WeaverHelper(string projectPath) { this.projectPath = Path.GetFullPath(Path.Combine(Environment.CurrentDirectory, @"..\..\..\TestAssemblies", projectPath)); GetAssemblyPath(); var newAssembly = assemblyPath.Replace(".dll", "2.dll"); File.Copy(assemblyPath, newAssembly, true); var assemblyResolver = new TestAssemblyResolver(assemblyPath, this.projectPath); var moduleDefinition = ModuleDefinition.ReadModule(newAssembly, new ReaderParameters { AssemblyResolver = assemblyResolver }); var weavingTask = new ModuleWeaver { ModuleDefinition = moduleDefinition, AssemblyResolver = assemblyResolver }; weavingTask.Execute(); moduleDefinition.Write(newAssembly); Assembly = Assembly.LoadFile(newAssembly); }
public WeaverHelper(string projectPath) { this.projectPath = Path.GetFullPath(Path.Combine(Environment.CurrentDirectory, @"..\..\..\", projectPath)); GetAssemblyPath(); var newAssembly = assemblyPath.Replace(".dll", "2.dll"); var pdbFileName = Path.ChangeExtension(assemblyPath, "pdb"); var newPdbFileName = Path.ChangeExtension(newAssembly, "pdb"); File.Copy(assemblyPath, newAssembly, true); File.Copy(pdbFileName, newPdbFileName, true); var assemblyResolver = new TestAssemblyResolver(assemblyPath, this.projectPath); var moduleDefinition = ModuleDefinition.ReadModule(newAssembly, new ReaderParameters { AssemblyResolver = assemblyResolver }); var weavingTask = new ModuleWeaver { ModuleDefinition = moduleDefinition, AssemblyResolver = assemblyResolver }; weavingTask.Execute(); var writerParameters = new WriterParameters { WriteSymbols = true }; moduleDefinition.Write(newAssembly, writerParameters); Assembly = Assembly.LoadFile(newAssembly); }
public static void UpdateConfiguration(HttpConfiguration configuration) { var controllers = new[] { typeof(SingersController), typeof(AlbumsController), typeof(MetadataController) }; TestAssemblyResolver resolver = new TestAssemblyResolver(new TypesInjectionAssembly(controllers)); configuration.IncludeErrorDetailPolicy = IncludeErrorDetailPolicy.Always; configuration.Services.Replace(typeof(IAssembliesResolver), resolver); configuration.MapODataServiceRoute("clientTest", "clientTest", DollarIdEdmModel.GetModel()); configuration.EnsureInitialized(); }
public static ModuleDefinition GetModuleDefinition(string projectPath) { projectPath = Path.GetFullPath(Path.Combine(Environment.CurrentDirectory, @"..\..\..\", projectPath)); var assemblyPath = GetAssemblyPath(projectPath); var newAssembly = assemblyPath.Replace(".dll", "2.dll").Replace(".exe", "2.exe"); var pdbFileName = Path.ChangeExtension(assemblyPath, "pdb"); var newPdbFileName = Path.ChangeExtension(newAssembly, "pdb"); File.Copy(assemblyPath, newAssembly, true); File.Copy(pdbFileName, newPdbFileName, true); var assemblyResolver = new TestAssemblyResolver(assemblyPath, projectPath); var moduleDefinition = ModuleDefinition.ReadModule(newAssembly, new ReaderParameters { AssemblyResolver = assemblyResolver }); return moduleDefinition; }
public Assembly Weave() { GetAssemblyPath(); var newAssembly = this.assemblyPath.Replace(".dll", "2.dll"); var assemblyFileName = Path.GetFileName(newAssembly); var assembly = AppDomain.CurrentDomain.GetAssemblies() .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 }; weavingTask.Execute(); moduleDefinition.Write( newAssembly, new WriterParameters { WriteSymbols = true }); PEVerify(newAssembly); return Assembly.LoadFile(newAssembly); }
public WeaverHelper(string projectPath, Action<ModuleWeaver> configure = null ) { projectPath = Path.GetFullPath(Path.Combine(Environment.CurrentDirectory, @"..\..\..\", projectPath)); var assemblyPath = GetAssemblyPath(projectPath); var newAssembly = assemblyPath.Replace(".dll", "2.dll").Replace(".exe","2.exe"); var pdbFileName = Path.ChangeExtension(assemblyPath, "pdb"); var newPdbFileName = Path.ChangeExtension(newAssembly, "pdb"); File.Copy(assemblyPath, newAssembly, true); File.Copy(pdbFileName, newPdbFileName, true); var assemblyResolver = new TestAssemblyResolver(assemblyPath, projectPath); var moduleDefinition = ModuleDefinition.ReadModule(newAssembly, new ReaderParameters {AssemblyResolver = assemblyResolver}); var weavingTask = new ModuleWeaver { ModuleDefinition = moduleDefinition, AssemblyResolver = assemblyResolver, LogInfo = Console.WriteLine, LogError = Console.Error.WriteLine }; if (configure != null) { configure(weavingTask); } weavingTask.Execute(); var writerParameters = new WriterParameters { WriteSymbols = true }; moduleDefinition.Write(newAssembly,writerParameters); Assembly = Assembly.LoadFile(newAssembly); }
public static TestAssemblyResolver TestCreate(IArgumentProvider arguments) { TestAssemblyResolver resolver = new TestAssemblyResolver(); resolver.Initialize(arguments); return resolver; }