public IAssemblyTransformation CreateTransformation(IAppDomainInfoBroker infoBroker)
        {
            if (_infoProviderName == null)
            throw new InvalidOperationException ("Please initialize options first! (NewTransformer) : Infoprovider must be specified");

              var provider = infoBroker.CreateInfoProviderWrapper<NewTransformerInfoProvider> (_infoProviderName, typeof (MemberID).Assembly.CodeBase);
              var wrapper = new NewTransformerInfoWrapper (provider);

              return new NewTransformer (wrapper, new ILCodeRewriter(), _factoryMakeProtected);
        }
        public IAssemblyTransformation CreateTransformation(IAppDomainInfoBroker infoBroker)
        {
            if (_infoProviderName == null)
            throw new InvalidOperationException ("Please initialize options first! (MethodVirtualizer) : Infoprovider must be specified");

              var provider = infoBroker.CreateInfoProviderWrapper<MethodVirtualizerInfoProvider> (_infoProviderName, typeof (MemberID).Assembly.CodeBase);
              var wrapper = new MethodVirtualizerInfoWrapper (provider);

              return new MethodVirtualizer (wrapper, new ILCodeGenerator());
        }
Ejemplo n.º 3
0
        public IAssemblyTransformation CreateTransformation(IAppDomainInfoBroker infoBroker)
        {
            if (_infoProviderName == null)
            {
                throw new InvalidOperationException("Please initialize options first! (NewTransformer) : Infoprovider must be specified");
            }

            var provider = infoBroker.CreateInfoProviderWrapper <NewTransformerInfoProvider> (_infoProviderName, typeof(MemberID).Assembly.CodeBase);
            var wrapper  = new NewTransformerInfoWrapper(provider);

            return(new NewTransformer(wrapper, new ILCodeRewriter(), _factoryMakeProtected));
        }
Ejemplo n.º 4
0
 public void SetUp()
 {
     _trackerMock                = MockRepository.GenerateStrictMock <IAssemblyTracker>();
     _trackerFactoryMock         = MockRepository.GenerateStrictMock <IAssemblyTrackerFactory>();
     _transformerMock            = MockRepository.GenerateStrictMock <IAssemblyTransformation>();
     _transformationFactoryMock  = MockRepository.GenerateStrictMock <IAssemblyTransformationFactory>();
     _transformerMock2           = MockRepository.GenerateStrictMock <IAssemblyTransformation> ();
     _transformationFactoryMock2 = MockRepository.GenerateStrictMock <IAssemblyTransformationFactory> ();
     _signerMock        = MockRepository.GenerateStrictMock <IAssemblySigner>();
     _signerFactoryMock = MockRepository.GenerateStrictMock <IAssemblySignerFactory>();
     _infoBroker        = MockRepository.GenerateStub <IAppDomainInfoBroker>();
 }
        public IAssemblyTransformation CreateTransformation(IAppDomainInfoBroker infoBroker)
        {
            if (_infoProviderName == null)
            {
                throw new InvalidOperationException("Please initialize options first! (MethodVirtualizer) : Infoprovider must be specified");
            }

            var provider = infoBroker.CreateInfoProviderWrapper <MethodVirtualizerInfoProvider> (_infoProviderName, typeof(MemberID).Assembly.CodeBase);
            var wrapper  = new MethodVirtualizerInfoWrapper(provider);

            return(new MethodVirtualizer(wrapper, new ILCodeGenerator()));
        }
Ejemplo n.º 6
0
        public void Run(IAssemblyTrackerFactory trackerFactory,
                        IEnumerable <IAssemblyTransformationFactory> transformationFactories,
                        IAssemblySignerFactory signerFactory,
                        IAppDomainInfoBroker infoBroker)
        {
            ArgumentUtility.CheckNotNull("trackerFactory", trackerFactory);
            ArgumentUtility.CheckNotNull("transformationFactories", transformationFactories);
            ArgumentUtility.CheckNotNull("signerFactory", signerFactory);

#if PERFORMANCE_TEST
            Stopwatch s     = new Stopwatch();
            Stopwatch total = new Stopwatch();
            s.Start();
            total.Start();
#endif

            var tracker = trackerFactory.CreateTracker();

#if PERFORMANCE_TEST
            total.Stop();
            Process procObj = Process.GetCurrentProcess();
            Console.WriteLine(Environment.NewLine + "  Private Memory Size : {0:N0}" + Environment.NewLine +
                              "  Virtual Memory Size : {1:N0}" + Environment.NewLine +
                              "  Working Set Size: {2:N0}", procObj.PrivateMemorySize64, procObj.VirtualMemorySize64, procObj.WorkingSet64);
            Console.WriteLine(Environment.NewLine + "  Initialization:   " + s.Elapsed);
            Console.WriteLine(Environment.NewLine + "  press key to continue with transformations");
            total.Start();
            s.Restart();
#endif

            foreach (var factory in transformationFactories)
            {
                Console.WriteLine("Transforming assemblies according to " + factory.GetType().Name);
                factory.CreateTransformation(infoBroker).Transform(tracker);
            }
            infoBroker.Unload();

#if PERFORMANCE_TEST
            total.Stop();
            procObj = Process.GetCurrentProcess();
            Console.WriteLine(Environment.NewLine + "  Private Memory Size : {0:N0}" + Environment.NewLine +
                              "  Virtual Memory Size : {1:N0}" + Environment.NewLine +
                              "  Working Set Size: {2:N0}", procObj.PrivateMemorySize64, procObj.VirtualMemorySize64, procObj.WorkingSet64);
            Console.WriteLine(Environment.NewLine + "  Transformation:   " + s.Elapsed);
            Console.WriteLine(Environment.NewLine + "  press key to continue with sign and save");
            total.Start();
            s.Restart();
#endif

            var signer = signerFactory.CreateSigner();
            Console.WriteLine("Signing and writing the transformed assemblies ... ");
            signer.SignAndSave(tracker);

#if PERFORMANCE_TEST
            s.Stop();
            total.Stop();
            procObj = Process.GetCurrentProcess();
            Console.WriteLine(Environment.NewLine + "  Private Memory Size : {0:N0}" + Environment.NewLine +
                              "  Virtual Memory Size : {1:N0}" + Environment.NewLine +
                              "  Working Set Size: {2:N0}", procObj.PrivateMemorySize64, procObj.VirtualMemorySize64, procObj.WorkingSet64);
            Console.WriteLine(Environment.NewLine + "  Signing & Saving: " + s.Elapsed);
            Console.WriteLine(Environment.NewLine + "Total: " + total.Elapsed + Environment.NewLine);
#endif
        }
Ejemplo n.º 7
0
        private static void InitializeTransformer(IEnumerable<string> args)
        {
            var showHelp = false;
              var globalOptions = new OptionSet { { "h|?", "Show this help message and exit.", v => showHelp = v != null } };
              globalOptions.Add ("d|targetDir=", "The (root) directory containing the targeted assemblies.", dir => _workingDirectory = dir);

              var fileSystem = new FileSystem.FileSystem();
              Dictionary<string, OptionSet> options = new Dictionary<string, OptionSet>();
              globalOptions.Parse (args);

              // -- create AppDomainInfoBroker
              _workingDirectory = _workingDirectory.Replace ("\"", "");
              _workingDirectory = _workingDirectory.TrimEnd (new[] { '\\' });
              _infoBroker = new AppDomainInfoBroker (_workingDirectory);

              ((DefaultAssemblyResolver) GlobalAssemblyResolver.Instance).RemoveSearchDirectory (".");
              ((DefaultAssemblyResolver) GlobalAssemblyResolver.Instance).RemoveSearchDirectory ("bin");
              ((DefaultAssemblyResolver) GlobalAssemblyResolver.Instance).AddSearchDirectory (_workingDirectory);

              // -- create all the transformations
              var transformationFactoryFactory = new DLLBasedTransformationFactoryFactory (fileSystem, _workingDirectory);
              transformationFactoryFactory.TransformationsDirectory = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
              transformationFactoryFactory.AddOptions (globalOptions);

              // -- add the assembly tracker
              var trackerFactory = new DirectoryBasedAssemblyTrackerFactory (fileSystem, _workingDirectory);
              trackerFactory.AddOptions (globalOptions);

              // -- add the assembly signer
              _signerFactory = new AssemblySignerFactory (fileSystem);
              _signerFactory.AddOptions (globalOptions);

              // load the given transformations
              globalOptions.Parse (args);

              _transformationFactories = transformationFactoryFactory.CreateTrackerFactories ();
              // -- add options of the transformations
              foreach (var factory in _transformationFactories)
              {
            var tempOptions = new OptionSet();
            factory.AddOptions (tempOptions);
            options[factory.GetType().Name] = tempOptions;
              }

              try
              {
            var allOptions = new OptionSet();
            foreach (var option in globalOptions)
              allOptions.Add (option);
            foreach (var set in options.Values)
              foreach (var option in set)
            allOptions.Add (option);

            var leftOver = allOptions.Parse (args);
            trackerFactory.IncludeFiles = leftOver.Where (s => (!s.StartsWith ("-") || !s.StartsWith ("\\"))).ToList();
            _targetFiles = trackerFactory.IncludeFiles;
            leftOver.RemoveAll (s => (!s.StartsWith ("-") || !s.StartsWith ("\\")));

            if (showHelp || leftOver.Count != 0)
              ShowHelp (globalOptions, options, leftOver);
              }
              catch (OptionException e)
              {
            Console.WriteLine (e.Message);
            ShowHelp (globalOptions, options, new string[0]);
              }
              _trackerFactory = trackerFactory;
        }
Ejemplo n.º 8
0
        public void Run(IAssemblyTrackerFactory trackerFactory,
                      IEnumerable<IAssemblyTransformationFactory> transformationFactories, 
                      IAssemblySignerFactory signerFactory,
                      IAppDomainInfoBroker infoBroker)
        {
            ArgumentUtility.CheckNotNull ("trackerFactory", trackerFactory);
              ArgumentUtility.CheckNotNull ("transformationFactories", transformationFactories);
              ArgumentUtility.CheckNotNull ("signerFactory", signerFactory);

            #if PERFORMANCE_TEST
              Stopwatch s = new Stopwatch ();
              Stopwatch total = new Stopwatch ();
              s.Start ();
              total.Start();
            #endif

              var tracker = trackerFactory.CreateTracker();

            #if PERFORMANCE_TEST
              total.Stop();
              Process procObj = Process.GetCurrentProcess ();
              Console.WriteLine (Environment.NewLine + "  Private Memory Size : {0:N0}" + Environment.NewLine +
              "  Virtual Memory Size : {1:N0}" + Environment.NewLine +
              "  Working Set Size: {2:N0}", procObj.PrivateMemorySize64, procObj.VirtualMemorySize64, procObj.WorkingSet64);
              Console.WriteLine (Environment.NewLine + "  Initialization:   " + s.Elapsed);
              Console.WriteLine (Environment.NewLine + "  press key to continue with transformations");
              total.Start ();
              s.Restart ();
            #endif

              foreach (var factory in transformationFactories)
              {
            Console.WriteLine ("Transforming assemblies according to " + factory.GetType().Name);
            factory.CreateTransformation(infoBroker).Transform (tracker);
              }
              infoBroker.Unload();

            #if PERFORMANCE_TEST
              total.Stop ();
              procObj = Process.GetCurrentProcess ();
              Console.WriteLine (Environment.NewLine + "  Private Memory Size : {0:N0}" + Environment.NewLine +
              "  Virtual Memory Size : {1:N0}" + Environment.NewLine +
              "  Working Set Size: {2:N0}", procObj.PrivateMemorySize64, procObj.VirtualMemorySize64, procObj.WorkingSet64);
              Console.WriteLine (Environment.NewLine + "  Transformation:   " + s.Elapsed);
              Console.WriteLine (Environment.NewLine + "  press key to continue with sign and save");
              total.Start ();
              s.Restart ();
            #endif

              var signer = signerFactory.CreateSigner();
              Console.WriteLine ("Signing and writing the transformed assemblies ... ");
              signer.SignAndSave (tracker);

            #if PERFORMANCE_TEST
              s.Stop();
              total.Stop ();
              procObj = Process.GetCurrentProcess ();
              Console.WriteLine (Environment.NewLine + "  Private Memory Size : {0:N0}" + Environment.NewLine +
              "  Virtual Memory Size : {1:N0}" + Environment.NewLine +
              "  Working Set Size: {2:N0}", procObj.PrivateMemorySize64, procObj.VirtualMemorySize64, procObj.WorkingSet64);
              Console.WriteLine (Environment.NewLine + "  Signing & Saving: " + s.Elapsed);
              Console.WriteLine (Environment.NewLine + "Total: " + total.Elapsed + Environment.NewLine);
            #endif
        }
Ejemplo n.º 9
0
        private static void InitializeTransformer(IEnumerable <string> args)
        {
            var showHelp      = false;
            var globalOptions = new OptionSet {
                { "h|?", "Show this help message and exit.", v => showHelp = v != null }
            };

            globalOptions.Add("d|targetDir=", "The (root) directory containing the targeted assemblies.", dir => _workingDirectory = dir);

            var fileSystem = new FileSystem.FileSystem();
            Dictionary <string, OptionSet> options = new Dictionary <string, OptionSet>();

            globalOptions.Parse(args);

            // -- create AppDomainInfoBroker
            _workingDirectory = _workingDirectory.Replace("\"", "");
            _workingDirectory = _workingDirectory.TrimEnd(new[] { '\\' });
            _infoBroker       = new AppDomainInfoBroker(_workingDirectory);

            ((DefaultAssemblyResolver)GlobalAssemblyResolver.Instance).RemoveSearchDirectory(".");
            ((DefaultAssemblyResolver)GlobalAssemblyResolver.Instance).RemoveSearchDirectory("bin");
            ((DefaultAssemblyResolver)GlobalAssemblyResolver.Instance).AddSearchDirectory(_workingDirectory);

            // -- create all the transformations
            var transformationFactoryFactory = new DLLBasedTransformationFactoryFactory(fileSystem, _workingDirectory);

            transformationFactoryFactory.TransformationsDirectory = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
            transformationFactoryFactory.AddOptions(globalOptions);

            // -- add the assembly tracker
            var trackerFactory = new DirectoryBasedAssemblyTrackerFactory(fileSystem, _workingDirectory);

            trackerFactory.AddOptions(globalOptions);

            // -- add the assembly signer
            _signerFactory = new AssemblySignerFactory(fileSystem);
            _signerFactory.AddOptions(globalOptions);

            // load the given transformations
            globalOptions.Parse(args);

            _transformationFactories = transformationFactoryFactory.CreateTrackerFactories();
            // -- add options of the transformations
            foreach (var factory in _transformationFactories)
            {
                var tempOptions = new OptionSet();
                factory.AddOptions(tempOptions);
                options[factory.GetType().Name] = tempOptions;
            }

            try
            {
                var allOptions = new OptionSet();
                foreach (var option in globalOptions)
                {
                    allOptions.Add(option);
                }
                foreach (var set in options.Values)
                {
                    foreach (var option in set)
                    {
                        allOptions.Add(option);
                    }
                }

                var leftOver = allOptions.Parse(args);
                trackerFactory.IncludeFiles = leftOver.Where(s => (!s.StartsWith("-") || !s.StartsWith("\\"))).ToList();
                _targetFiles = trackerFactory.IncludeFiles;
                leftOver.RemoveAll(s => (!s.StartsWith("-") || !s.StartsWith("\\")));

                if (showHelp || leftOver.Count != 0)
                {
                    ShowHelp(globalOptions, options, leftOver);
                }
            }
            catch (OptionException e)
            {
                Console.WriteLine(e.Message);
                ShowHelp(globalOptions, options, new string[0]);
            }
            _trackerFactory = trackerFactory;
        }
Ejemplo n.º 10
0
 public void SetUp()
 {
     _trackerMock = MockRepository.GenerateStrictMock<IAssemblyTracker>();
       _trackerFactoryMock = MockRepository.GenerateStrictMock<IAssemblyTrackerFactory>();
       _transformerMock = MockRepository.GenerateStrictMock<IAssemblyTransformation>();
       _transformationFactoryMock = MockRepository.GenerateStrictMock<IAssemblyTransformationFactory>();
       _transformerMock2 = MockRepository.GenerateStrictMock<IAssemblyTransformation> ();
       _transformationFactoryMock2 = MockRepository.GenerateStrictMock<IAssemblyTransformationFactory> ();
       _signerMock = MockRepository.GenerateStrictMock<IAssemblySigner>();
       _signerFactoryMock = MockRepository.GenerateStrictMock<IAssemblySignerFactory>();
       _infoBroker = MockRepository.GenerateStub<IAppDomainInfoBroker>();
 }