BuildProvider GetBuildProviderFor (string file, BuildProviderCollection buildProviders) { if (file == null || file.Length == 0 || buildProviders == null || buildProviders.Count == 0) return null; BuildProvider ret = buildProviders.GetProviderInstanceForExtension (Path.GetExtension (file)); if (ret != null && IsCorrectBuilderType (ret)) { ret.SetVirtualPath (PhysicalToVirtual (file)); return ret; } return null; }
public static BuildProvider GetBuildProvider (VirtualPath virtualPath, BuildProviderCollection coll) { if (virtualPath == null || String.IsNullOrEmpty (virtualPath.Original) || coll == null) return null; string extension = virtualPath.Extension; BuildProvider bp = coll.GetProviderForExtension (extension); if (bp == null) { if (String.Compare (extension, ".asax", StringComparison.OrdinalIgnoreCase) == 0) bp = new ApplicationFileBuildProvider (); else if (StrUtils.StartsWith (virtualPath.AppRelative, "~/App_Themes/")) bp = new ThemeDirectoryBuildProvider (); if (bp != null) bp.SetVirtualPath (virtualPath); return bp; } object[] attrs = bp.GetType ().GetCustomAttributes (typeof (BuildProviderAppliesToAttribute), true); if (attrs == null || attrs.Length == 0) return bp; BuildProviderAppliesTo appliesTo = ((BuildProviderAppliesToAttribute)attrs [0]).AppliesTo; if ((appliesTo & BuildProviderAppliesTo.Web) == 0) return null; bp.SetVirtualPath (virtualPath); return bp; }
void AddVirtualFile (VirtualFile file, BuildProviderCollection bpcoll) { if (file == null || BuildManager.IgnoreVirtualPath (file.VirtualPath)) return; BuildProvider bp = GetBuildProvider (file.VirtualPath, bpcoll); if (bp == null) return; AddBuildProvider (bp); }
public static BuildProvider GetBuildProvider (string virtualPath, BuildProviderCollection coll) { return GetBuildProvider (new VirtualPath (virtualPath), coll); }
void AddVirtualDir (VirtualDirectory vdir, BuildProviderCollection bpcoll, Dictionary <string, bool> cache) { if (vdir == null) return; BuildProvider bp; IDictionary <string, bool> deps; var dirs = new List <string> (); string fileVirtualPath; foreach (VirtualFile file in vdir.Files) { fileVirtualPath = file.VirtualPath; if (BuildManager.IgnoreVirtualPath (fileVirtualPath)) continue; bp = GetBuildProvider (fileVirtualPath, bpcoll); if (bp == null) continue; if (!AddBuildProvider (bp)) continue; deps = bp.ExtractDependencies (); if (deps == null) continue; string depDir, s; dirs.Clear (); foreach (var dep in deps) { s = dep.Key; depDir = VirtualPathUtility.GetDirectory (s); // dependencies are assumed to contain absolute paths if (cache.ContainsKey (depDir)) continue; cache.Add (depDir, true); AddVirtualDir (GetVirtualDirectory (s), bpcoll, cache); } } }