private static void WriteException(ICompilationException compilationException, StringBuilder builder, ref bool wasSourceCodeWrittenOntoPage) { var totalErrorsShown = 0; var inlineSourceDiv = new StringBuilder(); var firstStackFrame = true; foreach (var failure in compilationException.CompilationFailures) { if (firstStackFrame) { firstStackFrame = false; } else { inlineSourceDiv.AppendLine("<br/>"); } BuildCodeSnippetDiv(failure, inlineSourceDiv, ref totalErrorsShown); } wasSourceCodeWrittenOntoPage = totalErrorsShown > 0; builder.AppendFormat(CultureInfo.InvariantCulture, _compilationExceptionFormatString, inlineSourceDiv); }
private Task DisplayCompilationException( HttpContext context, ICompilationException compilationException) { var model = new CompilationErrorPageModel { Options = _options, }; foreach (var compilationFailure in compilationException.CompilationFailures) { var stackFrames = new List <StackFrameSourceCodeInfo>(); var exceptionDetails = new ExceptionDetails { StackFrames = stackFrames, ErrorMessage = compilationFailure.FailureSummary, }; var fileContent = compilationFailure .SourceFileContent .Split(new[] { Environment.NewLine }, StringSplitOptions.None); foreach (var item in compilationFailure.Messages) { var frame = new StackFrameSourceCodeInfo { File = compilationFailure.SourceFilePath, Line = item.StartLine, Function = string.Empty }; _exceptionDetailsProvider.ReadFrameContent(frame, fileContent, item.StartLine, item.EndLine); frame.ErrorDetails = item.Message; stackFrames.Add(frame); } model.ErrorDetails.Add(exceptionDetails); model.CompiledContent.Add(compilationFailure.CompiledContent); } var errorPage = new CompilationErrorPage { Model = model }; return(errorPage.ExecuteAsync(context)); }
private Task DisplayCompilationException(HttpContext context, Exception ex, ICompilationException compilationException) { var model = new CompilationErrorPageModel() { Options = _options, }; foreach (var compilationFailure in compilationException.CompilationFailures) { var stackFrames = new List<StackFrame>(); var errorDetails = new ErrorDetails { StackFrames = stackFrames }; var fileContent = compilationFailure.SourceFileContent .Split(new[] { Environment.NewLine }, StringSplitOptions.None); foreach (var item in compilationFailure.Messages) { var frame = new StackFrame { File = compilationFailure.SourceFilePath, Line = item.StartLine, Function = string.Empty }; if (_options.ShowSourceCode) { ReadFrameContent(frame, fileContent, item.StartLine, item.EndLine); frame.ErrorDetails = item.Message; } stackFrames.Add(frame); } model.ErrorDetails.Add(errorDetails); } var errorPage = new CompilationErrorPage { Model = model }; return errorPage.ExecuteAsync(context); }
private Task DisplayCompilationException( HttpContext context, ICompilationException compilationException) { var model = new CompilationErrorPageModel(_options); var errorPage = new CompilationErrorPage(model); if (compilationException.CompilationFailures == null) { return(errorPage.ExecuteAsync(context)); } foreach (var compilationFailure in compilationException.CompilationFailures) { if (compilationFailure == null) { continue; } var stackFrames = new List <StackFrameSourceCodeInfo>(); var exceptionDetails = new ExceptionDetails(compilationFailure.FailureSummary !, stackFrames); model.ErrorDetails.Add(exceptionDetails); model.CompiledContent.Add(compilationFailure.CompiledContent); if (compilationFailure.Messages == null) { continue; } var sourceLines = compilationFailure .SourceFileContent? .Split(new[] { Environment.NewLine }, StringSplitOptions.None); foreach (var item in compilationFailure.Messages) { if (item == null) { continue; } var frame = new StackFrameSourceCodeInfo { File = compilationFailure.SourceFilePath, Line = item.StartLine, Function = string.Empty }; if (sourceLines != null) { _exceptionDetailsProvider.ReadFrameContent(frame, sourceLines, item.StartLine, item.EndLine); } frame.ErrorDetails = item.Message; stackFrames.Add(frame); } } return(errorPage.ExecuteAsync(context)); }