CompileAssemblyFromSourceBatch() public method

public CompileAssemblyFromSourceBatch ( CompilerParameters options, string sources ) : CompilerResults
options System.CodeDom.Compiler.CompilerParameters
sources string
return System.CodeDom.Compiler.CompilerResults
示例#1
0
            public SourceCodeBundle(ScriptBundleLoader manager, IEnumerable <string> sourceCodes)
            {
                //this.manager = manager;

                var domain = System.AppDomain.CurrentDomain;

                this.assemblyReferences = domain
                                          .GetAssemblies()
                                          .Where(a => !(a is System.Reflection.Emit.AssemblyBuilder) && !string.IsNullOrEmpty(a.Location))
                                          .Select(a => a.Location)
                                          .ToArray();

                var options = new CompilerParameters();

                options.GenerateExecutable = false;
                options.GenerateInMemory   = true;
                options.ReferencedAssemblies.AddRange(assemblyReferences);

                var compiler = new CodeCompiler();

                var result = compiler.CompileAssemblyFromSourceBatch(options, sourceCodes.ToArray());

                foreach (var err in result.Errors)
                {
                    manager.actLog(err.ToString());
                }

                this._assembly = result.CompiledAssembly;
            }
            void CompileFiles()
            {
                var options = new CompilerParameters();

                options.GenerateExecutable = false;
                options.GenerateInMemory   = false;
                options.ReferencedAssemblies.AddRange(assemblyReferences);
                options.CompilerOptions = "/target:library /optimize";
                options.OutputAssembly  = DLLName + ".dll";

                //options.
                var compiler = new CodeCompiler();
                var result   = compiler.CompileAssemblyFromSourceBatch(options, sources.ToArray());

                foreach (var err in result.Errors)
                {
                    manager.logWriter.WriteLine(err);
                }

                this.assembly = result.CompiledAssembly;
                var name = this.assembly.GetName();
            }