/// <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, }); }
/// <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, }); }