Boo.Lang.Compiler.CompilerParameters.AddAssembly C# (CSharp) Метод

AddAssembly() публичный Метод

public AddAssembly ( Assembly asm ) : void
asm System.Reflection.Assembly
Результат void
        public void AddAssembly(Assembly asm)
        {
            if (null == asm) throw new ArgumentNullException();
            _compilerReferences.Add(asm);
        }

Usage Example

Пример #1
0
        public CompilerErrorCollection Run(params string[] args){
            var referencedAssemblies = ExtractAssemblies();
            var pipeline = ExtractPipeline() ?? new CompileToFile();

            var parameters = new CompilerParameters(true);

            //parameters.Ducky = true;

            parameters.LibPaths.Add(Environment.CurrentDirectory);
            parameters.LibPaths.Add(Path.Combine(Environment.CurrentDirectory, "bin"));
            parameters.OutputAssembly = "script.dll";

            foreach (var assembly in referencedAssemblies){
                parameters.AddAssembly(assembly);
                parameters.References.Add(assembly);
            }
            parameters.Pipeline = pipeline;
            var compiler = new BooCompiler(parameters);
            parameters.Input.Add(new ReaderInput("script", new StringReader(BooScript)));
            var result = compiler.Run();

            if (result.Errors.yes()) return result.Errors;

            var resultAssembly = result.GeneratedAssembly;


            var global__ = resultAssembly.getTypesWithAttribute<GlobalsHandlingClassAttribute>();
            var global = global__.no() ? null : global__.FirstOrDefault();


            if (global.yes() && Globals.Count != 0){
                foreach (var pair in Globals){
                    var pi = global.GetProperty(pair.Key, BindingFlags.Static | BindingFlags.Public | BindingFlags.SetProperty);
                    if (null == pi) throw new Exception("Нет статического свойства с именем " + pair.Key);
                    pi.SetValue(null, pair.Key, null);
                }
            }

            resultAssembly.EntryPoint.Invoke(null, new[]{args});

            return null;
        }