コード例 #1
0
ファイル: WeaverHelper.cs プロジェクト: mfkl/StaticProxy.Fody
        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));
        }
コード例 #2
0
        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);
        }