private GetBuildProviderForPhysicalFilePath ( string path ) : System.Web.Compilation.BuildProvider | ||
path | string | |
return | System.Web.Compilation.BuildProvider |
static void RemoveFailedAssemblies (string requestedVirtualPath, CompilationException ex, AssemblyBuilder abuilder, BuildProviderGroup group, CompilerResults results, bool debug) { StringBuilder sb; string newline; if (debug) { newline = Environment.NewLine; sb = new StringBuilder ("Compilation of certain files in a batch failed. Another attempt to compile the batch will be made." + newline); sb.Append ("Since you're running in debug mode, here's some more information about the error:" + newline); } else { newline = null; sb = null; } var failedBuildProviders = new List <BuildProvider> (); BuildProvider bp; HttpContext ctx = HttpContext.Current; HttpRequest req = ctx != null ? ctx.Request : null; bool rethrow = false; foreach (CompilerError error in results.Errors) { if (error.IsWarning) continue; bp = abuilder.GetBuildProviderForPhysicalFilePath (error.FileName); if (bp == null) { bp = FindBuildProviderForPhysicalPath (error.FileName, group, req); if (bp == null) continue; } if (String.Compare (bp.VirtualPath, requestedVirtualPath, StringComparison.Ordinal) == 0) rethrow = true; if (!failedBuildProviders.Contains (bp)) { failedBuildProviders.Add (bp); if (sb != null) sb.AppendFormat ("\t{0}{1}", bp.VirtualPath, newline); } if (sb != null) sb.AppendFormat ("\t\t{0}{1}", error, newline); } foreach (BuildProvider fbp in failedBuildProviders) group.Remove (fbp); if (sb != null) { sb.AppendFormat ("{0}The following exception has been thrown for the file(s) listed above:{0}{1}", newline, ex.ToString ()); ShowDebugModeMessage (sb.ToString ()); sb = null; } if (rethrow) throw new HttpException ("Compilation failed.", ex); }