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

Compile() public static method

public static Compile ( BaseCompiler compiler ) : CompilerResults
compiler BaseCompiler
return System.CodeDom.Compiler.CompilerResults
		public static CompilerResults Compile (BaseCompiler compiler)
		{
			Cache cache = HttpRuntime.InternalCache;
			string key = cachePrefix + compiler.Parser.InputFile;
			CompilerResults results = (CompilerResults) cache [key];

			if (!compiler.IsRebuildingPartial)
				if (results != null)
					return results;

			object ticket;
			bool acquired = AcquireCompilationTicket (key, out ticket);

			try {
				Monitor.Enter (ticket);
				results = (CompilerResults) cache [key];
				if (!compiler.IsRebuildingPartial)
					if (results != null)
						return results;

				CodeDomProvider comp = compiler.Provider;
				CompilerParameters options = compiler.CompilerParameters;
				GetExtraAssemblies (options);
				results = comp.CompileAssemblyFromDom (options, compiler.CompileUnit);
				ArrayList dependencies = compiler.Parser.Dependencies;
				if (dependencies != null && dependencies.Count > 0) {
					string [] deps = (string []) dependencies.ToArray (typeof (string));
					HttpContext ctx = HttpContext.Current;
					HttpRequest req = ctx != null ? ctx.Request : null;

					if (req == null)
						throw new HttpException ("No current context, cannot compile.");
				
					for (int i = 0; i < deps.Length; i++)
						deps [i] = req.MapPath (deps [i]);
				
					cache.Insert (key, results, new CacheDependency (deps));
				}
			} finally {
				Monitor.Exit (ticket);
				if (acquired)
					ReleaseCompilationTicket (key);
			}

			return results;
		}

Same methods

CachingCompiler::Compile ( System.Web.Compilation.WebServiceCompiler compiler ) : CompilerResults
CachingCompiler::Compile ( string language, string key, string file, ArrayList assemblies ) : CompilerResults
CachingCompiler::Compile ( string language, string key, string file, ArrayList assemblies, bool debug ) : CompilerResults

Usage Example

        public static Type CompileAndGetType(string typename, string language, string key,
                                             string file, ArrayList assemblies)
        {
            CompilerResults result = CachingCompiler.Compile(language, key, file, assemblies);

            if (result.NativeCompilerReturnValue != 0)
            {
                using (StreamReader reader = new StreamReader(file))
                {
                    throw new CompilationException(file, result.Errors, reader.ReadToEnd());
                }
            }

            Assembly assembly = result.CompiledAssembly;

            if (assembly == null)
            {
                using (StreamReader reader = new StreamReader(file))
                {
                    throw new CompilationException(file, result.Errors, reader.ReadToEnd());
                }
            }

            Type type = assembly.GetType(typename, true);

            InsertType(type, file);
            return(type);
        }
All Usage Examples Of System.Web.Compilation.CachingCompiler::Compile