public static Compile ( |
||
compiler | ||
return |
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;
}
CachingCompiler::Compile ( System.Web.Compilation.WebServiceCompiler compiler ) : |
|
CachingCompiler::Compile ( string language, string key, string file, |
|
CachingCompiler::Compile ( string language, string key, string file, |
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); }