// Returns the list of buildProvider types associated to the specified appliesTo internal static List <Type> GetFolderLevelBuildProviderTypes(CompilationSection config, FolderLevelBuildProviderAppliesTo appliesTo) { FolderLevelBuildProviderCollection buildProviders = config.FolderLevelBuildProviders; return(buildProviders.GetBuildProviderTypes(appliesTo)); }
internal static long GetRecompilationHash(CompilationSection ps) { HashCodeCombiner combiner = new HashCodeCombiner(); combiner.AddObject(ps.Debug); combiner.AddObject(ps.TargetFramework); combiner.AddObject(ps.Strict); combiner.AddObject(ps.Explicit); combiner.AddObject(ps.Batch); combiner.AddObject(ps.OptimizeCompilations); combiner.AddObject(ps.BatchTimeout); combiner.AddObject(ps.MaxBatchGeneratedFileSize); combiner.AddObject(ps.MaxBatchSize); combiner.AddObject(ps.NumRecompilesBeforeAppRestart); combiner.AddObject(ps.DefaultLanguage); combiner.AddObject(ps.UrlLinePragmas); if (ps.AssemblyPostProcessorTypeInternal != null) { combiner.AddObject(ps.AssemblyPostProcessorTypeInternal.FullName); } foreach (Compiler compiler in ps.Compilers) { combiner.AddObject(compiler.Language); combiner.AddObject(compiler.Extension); combiner.AddObject(compiler.Type); combiner.AddObject(compiler.WarningLevel); combiner.AddObject(compiler.CompilerOptions); } foreach (System.Web.Configuration.ExpressionBuilder builder in ps.ExpressionBuilders) { combiner.AddObject(builder.ExpressionPrefix); combiner.AddObject(builder.Type); } AssemblyCollection assemblies = ps.Assemblies; if (assemblies.Count == 0) { combiner.AddObject("__clearassemblies"); } else { foreach (AssemblyInfo info in assemblies) { combiner.AddObject(info.Assembly); } } BuildProviderCollection buildProviders = ps.BuildProviders; if (buildProviders.Count == 0) { combiner.AddObject("__clearbuildproviders"); } else { foreach (System.Web.Configuration.BuildProvider provider in buildProviders) { combiner.AddObject(provider.Type); combiner.AddObject(provider.Extension); } } FolderLevelBuildProviderCollection folderLevelBuildProviders = ps.FolderLevelBuildProviders; if (folderLevelBuildProviders.Count == 0) { combiner.AddObject("__clearfolderlevelbuildproviders"); } else { foreach (FolderLevelBuildProvider provider2 in folderLevelBuildProviders) { combiner.AddObject(provider2.Type); combiner.AddObject(provider2.Name); } } CodeSubDirectoriesCollection codeSubDirectories = ps.CodeSubDirectories; if (codeSubDirectories.Count == 0) { combiner.AddObject("__clearcodesubdirs"); } else { foreach (CodeSubDirectory directory in codeSubDirectories) { combiner.AddObject(directory.DirectoryName); } } CompilerInfo[] allCompilerInfo = CodeDomProvider.GetAllCompilerInfo(); if (allCompilerInfo != null) { foreach (CompilerInfo info2 in allCompilerInfo) { if (info2.IsCodeDomProviderTypeValid) { string compilerOptions = info2.CreateDefaultCompilerParameters().CompilerOptions; if (!string.IsNullOrEmpty(compilerOptions)) { Type codeDomProviderType = info2.CodeDomProviderType; if (codeDomProviderType != null) { combiner.AddObject(codeDomProviderType.FullName); } combiner.AddObject(compilerOptions); } if (info2.CodeDomProviderType != null) { IDictionary <string, string> providerOptions = GetProviderOptions(info2); if ((providerOptions != null) && (providerOptions.Count > 0)) { string fullName = info2.CodeDomProviderType.FullName; foreach (string str3 in providerOptions.Keys) { string str4 = providerOptions[str3]; combiner.AddObject(fullName + ":" + str3 + "=" + str4); } } } } } } return(combiner.CombinedHash); }