System.Web.Compilation.CachingCompiler.GetOptions C# (CSharp) Method

GetOptions() static private method

static private GetOptions ( ICollection assemblies ) : CompilerParameters
assemblies ICollection
return System.CodeDom.Compiler.CompilerParameters
		internal static CompilerParameters GetOptions (ICollection assemblies)
		{
			CompilerParameters options = new CompilerParameters ();
			if (assemblies != null) {
				StringCollection coll = options.ReferencedAssemblies;
				foreach (string str in assemblies)
					coll.Add (str);
			}
			GetExtraAssemblies (options);
			return options;
		}

Usage Example

Example #1
0
        public override Type GetCompiledType()
        {
            Type type = CachingCompiler.GetTypeFromCache(parser.PhysicalPath);

            if (type != null)
            {
                return(type);
            }

            if (parser.Program.Trim() == "")
            {
                type = Type.GetType(parser.ClassName, false);
                if (type == null)
                {
                    type = parser.GetTypeFromBin(parser.ClassName);
                }
                CachingCompiler.InsertTypeFileDep(type, parser.PhysicalPath);
                return(type);
            }

            string lang = parser.Language;
            string compilerOptions;
            string tempdir;
            int    warningLevel;

            CodeDomProvider provider;

            Provider = provider = CreateProvider(parser.Context, lang, out compilerOptions, out warningLevel, out tempdir);
            if (Provider == null)
            {
                throw new HttpException("Configuration error. Language not supported: " +
                                        lang, 500);
            }

            CompilerParameters compilerParameters;

            CompilerParameters = compilerParameters = CachingCompiler.GetOptions(parser.Assemblies);
            compilerParameters.IncludeDebugInformation = parser.Debug;
            compilerParameters.CompilerOptions         = compilerOptions;
            compilerParameters.WarningLevel            = warningLevel;

            bool keepFiles = (Environment.GetEnvironmentVariable("MONO_ASPNET_NODELETE") != null);

            TempFileCollection tempcoll;

            tempcoll = new TempFileCollection(tempdir, keepFiles);
            compilerParameters.TempFiles = tempcoll;

            inputFile = tempcoll.AddExtension(provider.FileExtension);
            Stream       st = File.OpenWrite(inputFile);
            StreamWriter sw = new StreamWriter(st);

            sw.WriteLine(parser.Program);
            sw.Close();

            string dllfilename = Path.GetFileName(tempcoll.AddExtension("dll", true));

            compilerParameters.OutputAssembly = Path.Combine(DynamicDir(), dllfilename);

            CompilerResults results = CachingCompiler.Compile(this);

            CheckCompilerErrors(results);
            Assembly assembly = results.CompiledAssembly;

            if (assembly == null)
            {
                if (!File.Exists(compilerParameters.OutputAssembly))
                {
                    throw new CompilationException(inputFile, results.Errors,
                                                   "No assembly returned after compilation!?");
                }
                assembly = Assembly.LoadFrom(compilerParameters.OutputAssembly);
            }

            results.TempFiles.Delete();
            type = assembly.GetType(parser.ClassName, true);
            CachingCompiler.InsertTypeFileDep(type, parser.PhysicalPath);
            return(type);
        }