Inheritance: IAssemblyResolver
Example #1
0
    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);
    }
Example #3
0
    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);
    }
Example #4
0
        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);
    }
Example #8
0
 public static TestAssemblyResolver TestCreate(IArgumentProvider arguments)
 {
     TestAssemblyResolver resolver = new TestAssemblyResolver();
     resolver.Initialize(arguments);
     return resolver;
 }