/// <summary> /// Display an error message to the end user. /// </summary> /// <param name="text">Humanly readable message describing the error</param> /// <param name="code">Unique error ID. Please see https://github.com/mono/linker/blob/master/doc/error-codes.md for the list of errors and possibly add a new one</param> /// <param name="subcategory">Optionally, further categorize this error</param> /// <param name="origin">Filename, line, and column where the error was found</param> /// <returns>New MessageContainer of 'Error' category</returns> public void LogError(string text, int code, string subcategory = MessageSubCategory.None, MessageOrigin?origin = null) { if (!LogMessages) { return; } var error = MessageContainer.CreateErrorMessage(text, code, subcategory, origin); LogMessage(error); }
/// <summary> /// Display an error message to the end user. /// </summary> /// <param name="text">Humanly readable message describing the error</param> /// <param name="code">Unique error ID. Please see https://github.com/mono/linker/blob/master/doc/error-codes.md for the list of errors and possibly add a new one</param> /// <param name="subcategory">Optionally, further categorize this error</param> /// <param name="origin">Filename, line, and column where the error was found</param> /// <returns>New MessageContainer of 'Error' category</returns> public void LogError(string text, int code, string subcategory = MessageSubCategory.None, MessageOrigin?origin = null, bool isWarnAsError = false, WarnVersion?version = null) { if (!LogMessages) { return; } var error = MessageContainer.CreateErrorMessage(text, code, subcategory, origin, isWarnAsError, version); LogMessage(error); }
public void ParseXml(string document) { _xmlDocumentLocation = document; _document = new XPathDocument(_xmlDocumentLocation); XPathNavigator nav = _document.CreateNavigator(); if (!nav.MoveToChild("linker", string.Empty)) { return; } try { ProcessAssemblies(_context, nav.SelectChildren("assembly", string.Empty)); } catch (Exception ex) when(!(ex is LinkerFatalErrorException)) { throw new LinkerFatalErrorException(MessageContainer.CreateErrorMessage($"Error processing '{_xmlDocumentLocation}'", 1013), ex); } }
public virtual ICollection <AssemblyDefinition> ResolveReferences(AssemblyDefinition assembly) { List <AssemblyDefinition> references = new List <AssemblyDefinition> (); if (assembly == null) { return(references); } foreach (AssemblyNameReference reference in assembly.MainModule.AssemblyReferences) { try { AssemblyDefinition definition = Resolve(reference); if (definition != null) { references.Add(definition); } } catch (Exception e) { throw new LinkerFatalErrorException(MessageContainer.CreateErrorMessage($"Assembly '{assembly.FullName}' reference '{reference.FullName}' could not be resolved", 1009), e); } } return(references); }
public bool Run(ILogger customLogger = null) { int setupStatus = SetupContext(customLogger); if (setupStatus > 0) { return(true); } if (setupStatus < 0) { return(false); } Pipeline p = context.Pipeline; PreProcessPipeline(p); try { p.Process(context); } catch (Exception ex) { if (ex is LinkerFatalErrorException lex) { context.LogMessage(lex.MessageContainer); Console.Error.WriteLine(ex.ToString()); } else { context.LogMessage(MessageContainer.CreateErrorMessage($"IL Linker has encountered an unexpected error. Please report the issue at https://github.com/mono/linker/issues \n{ex}", 1012)); } return(false); } finally { context.Tracer.Finish(); } return(true); }