static void StoreInCache (BuildProvider bp, Assembly compiledAssembly, CompilerResults results) { string virtualPath = bp.VirtualPath; var item = new BuildManagerCacheItem (compiledAssembly, bp, results); if (buildCache.ContainsKey (virtualPath)) buildCache [virtualPath] = item; else buildCache.Add (virtualPath, item); HttpContext ctx = HttpContext.Current; HttpRequest req = ctx != null ? ctx.Request : null; CacheDependency dep; if (req != null) { IDictionary <string, bool> deps = bp.ExtractDependencies (); var files = new List <string> (); string physicalPath; physicalPath = req.MapPath (virtualPath); if (File.Exists (physicalPath)) files.Add (physicalPath); if (deps != null && deps.Count > 0) { foreach (var d in deps) { physicalPath = req.MapPath (d.Key); if (!File.Exists (physicalPath)) continue; if (!files.Contains (physicalPath)) files.Add (physicalPath); } } dep = new CacheDependency (files.ToArray ()); } else dep = null; HttpRuntime.InternalCache.Add (BUILD_MANAGER_VIRTUAL_PATH_CACHE_PREFIX + virtualPath, true, dep, Cache.NoAbsoluteExpiration, Cache.NoSlidingExpiration, CacheItemPriority.High, new CacheItemRemovedCallback (OnVirtualPathChanged)); }
static void ReferenceAssemblyInCompilation (BuildManagerCacheItem bmci) { if (recursionDepth == 0 || referencedAssemblies.Contains (bmci.BuiltAssembly)) return; referencedAssemblies.Add (bmci.BuiltAssembly); }