예제 #1
0
            /// <summary>
            /// Generates the assembly from the specified importing options.
            /// </summary>
            /// <param name="options">The importing options.</param>
            internal ImportUserTypeAssembly GenerateAssembly(ImportUserTypeOptions options)
            {
                // Generate CodeGen configuration
                string    assemblyPath  = Path.Combine(Path.GetTempPath(), "CsDebugScript.CodeGen.Assemblies", Guid.NewGuid().ToString() + ".dll");
                XmlConfig codeGenConfig = ConvertOptionsToCodeGenConfig(options);

                codeGenConfig.GeneratedAssemblyName = assemblyPath;

                // Execute code generation
                IModuleProvider moduleProvider = new EngineSymbolProviderModuleProvider(Process.Current);
                Generator       generator      = new Generator(moduleProvider);

                byte[] assemblyBytes = generator.GenerateAssembly(codeGenConfig);

                Directory.CreateDirectory(Path.GetDirectoryName(assemblyPath));
                File.WriteAllBytes(assemblyPath, assemblyBytes);

                // Add generated file to be loaded after execution
                return(new ImportUserTypeAssembly()
                {
                    AssemblyBytes = assemblyBytes,
                    AssemblyPath = assemblyPath,
                    Options = options,
                });
            }
예제 #2
0
            /// <summary>
            /// Generates the code from the specified importing options.
            /// </summary>
            /// <param name="options">The importing options.</param>
            internal ImportUserTypeCode GenerateCode(ImportUserTypeOptions options)
            {
                XmlConfig codeGenConfig = ConvertOptionsToCodeGenConfig(options);

                codeGenConfig.GenerateNamespaceAsStaticClass = true;

                // Execute code generation
                IModuleProvider moduleProvider = new EngineSymbolProviderModuleProvider(Process.Current);
                Generator       generator      = new Generator(moduleProvider);
                string          code           = generator.GenerateScriptCode(codeGenConfig);

                // Add generated code to be loaded after execution
                return(new ImportUserTypeCode()
                {
                    Code = code,
                    Options = options,
                });
            }