Ejemplo n.º 1
0
        public void Convert_EvoPalAppsCommon()
        {
            // 1) Create a conversion container
            var container = EvoAssembly.CreateContainer();

            // 2) Create a conversion container
            //var collectibleAssembly = container.Convert(typeof(AssemblyTests).Assembly, AssemblyBuilderAccess.RunAndSave);

            var collectibleAssembly = container.Convert(typeof(AssemblyTests).Assembly, AssemblyBuilderAccess.RunAndCollect);

            // c prefix for converted.


            var modules = collectibleAssembly.GetModules();

            var module = modules[0];

            var collectibleAssemblyBuilder = (AssemblyBuilder)collectibleAssembly;

            //collectibleAssemblyBuilder.Save(module.ScopeName);

            var cEvoAssembly = XCommonAppPal.Api.Runtimic.Execution.Metadata.Assemblies.GetTypeInAssembly(collectibleAssembly, typeof(EvoAssembly));

            var createContainerMethod = cEvoAssembly.GetMethod("CreateContainer", BindingFlags.Public | BindingFlags.Static, null, new [] { typeof(bool) }, null);

            var cContainer = createContainerMethod.Invoke(null, new object[] { true });

            var cRuntimicContainer = XCommonAppPal.Api.Runtimic.Execution.Metadata.Assemblies.GetTypeInAssembly(collectibleAssembly, typeof(RuntimicContainer));

            var cRuntimicContainerExts = XCommonAppPal.Api.Runtimic.Execution.Metadata.Assemblies.GetTypeInAssembly(collectibleAssembly, typeof(RuntimicContainerExts));

            var convertMethod = cRuntimicContainerExts.GetMethod("Convert", BindingFlags.Public | BindingFlags.Static, null
                                                                 , new Type[] { cRuntimicContainer, typeof(System.Reflection.Assembly), typeof(AssemblyBuilderAccess) }, null);

            var result = convertMethod.Invoke(null, new [] { cContainer, typeof(AssemblyTests).Assembly, AssemblyBuilderAccess.RunAndCollect });



            //try
            //{
            //	var types = collectibleAssembly.GetTypes();
            //}
            //catch (System.Reflection.ReflectionTypeLoadException e)
            //{
            //	//for (int j = 0; j < e.LoaderExceptions.Length; j++)
            //	//{
            //	//	Console.WriteLine(e.LoaderExceptions[j].Message);
            //	//}

            //	throw e.LoaderExceptions[0];
            //}
        }
Ejemplo n.º 2
0
        public void Perform()
        {
            // Example1: Convert a type
            var convertedType = EvoAssembly.QuickConvert(typeof(Example1));

            // Example2: Convert an assembly
            var convertedAssembly = EvoAssembly.QuickConvert(typeof(Example1).Assembly);

            // Example3: Convert an array of types
            var convertedTypes = EvoAssembly.QuickConvert(new Type[] { typeof(Example1) });

            // Example4: Convert an array of assemblies
            var convertedAssemblies = EvoAssembly.QuickConvert(new [] { typeof(Example1).Assembly });
        }
Ejemplo n.º 3
0
        public System.Type ConvertSingleType(System.Type type, ILConversionOptions options, out Assembly collectibleAssembly)
        {
            // Use the default static api to create a container to do the conversion.
            var container = EvoAssembly.CreateContainer();

            // do the conversion
            var conversionResult = container.Convert(type, options);

            Assert.IsNotNull(conversionResult);

            var output = (ILConversionTypesOutput)conversionResult.Output;

            var collectibleType = output.Types[0];

            collectibleAssembly = collectibleType.Assembly;

            Assert.IsTrue(collectibleAssembly.IsDynamic);

            Assert.IsNotNull(collectibleType);

            if (options.BuilderAccess == AssemblyBuilderAccess.RunAndSave)
            {
                var saveAssembly = conversionResult.Output.Assemblies[0];

                if (saveAssembly is AssemblyBuilder builder)
                {
                    var modules = collectibleAssembly.GetModules();

                    var module = modules[0];

                    var fileName = module.ScopeName;


                    builder.Save(fileName);
                }
            }

            return(collectibleType);
        }