diff --git a/src/Spectre.Console/AnsiConsole.Exceptions.cs b/src/Spectre.Console/AnsiConsole.Exceptions.cs index 12d4420..de3a473 100644 --- a/src/Spectre.Console/AnsiConsole.Exceptions.cs +++ b/src/Spectre.Console/AnsiConsole.Exceptions.cs @@ -10,6 +10,7 @@ public static partial class AnsiConsole /// /// The exception to write to the console. /// The exception format options. + [RequiresDynamicCode(ExceptionFormatter.AotWarning)] public static void WriteException(Exception exception, ExceptionFormats format = ExceptionFormats.Default) { Console.WriteException(exception, format); @@ -20,6 +21,7 @@ public static partial class AnsiConsole /// /// The exception to write to the console. /// The exception settings. + [RequiresDynamicCode(ExceptionFormatter.AotWarning)] public static void WriteException(Exception exception, ExceptionSettings settings) { Console.WriteException(exception, settings); diff --git a/src/Spectre.Console/Extensions/AnsiConsoleExtensions.Exceptions.cs b/src/Spectre.Console/Extensions/AnsiConsoleExtensions.Exceptions.cs index a31ad3c..6b91559 100644 --- a/src/Spectre.Console/Extensions/AnsiConsoleExtensions.Exceptions.cs +++ b/src/Spectre.Console/Extensions/AnsiConsoleExtensions.Exceptions.cs @@ -11,6 +11,7 @@ public static partial class AnsiConsoleExtensions /// The console. /// The exception to write to the console. /// The exception format options. + [RequiresDynamicCode(ExceptionFormatter.AotWarning)] public static void WriteException(this IAnsiConsole console, Exception exception, ExceptionFormats format = ExceptionFormats.Default) { console.Write(exception.GetRenderable(format)); @@ -22,6 +23,7 @@ public static partial class AnsiConsoleExtensions /// The console. /// The exception to write to the console. /// The exception settings. + [RequiresDynamicCode(ExceptionFormatter.AotWarning)] public static void WriteException(this IAnsiConsole console, Exception exception, ExceptionSettings settings) { console.Write(exception.GetRenderable(settings)); diff --git a/src/Spectre.Console/Extensions/ExceptionExtensions.cs b/src/Spectre.Console/Extensions/ExceptionExtensions.cs index 29e1f07..913162c 100644 --- a/src/Spectre.Console/Extensions/ExceptionExtensions.cs +++ b/src/Spectre.Console/Extensions/ExceptionExtensions.cs @@ -11,6 +11,7 @@ public static class ExceptionExtensions /// The exception to format. /// The exception format options. /// A representing the exception. + [RequiresDynamicCode(ExceptionFormatter.AotWarning)] public static IRenderable GetRenderable(this Exception exception, ExceptionFormats format = ExceptionFormats.Default) { if (exception is null) @@ -30,6 +31,7 @@ public static class ExceptionExtensions /// The exception to format. /// The exception settings. /// A representing the exception. + [RequiresDynamicCode(ExceptionFormatter.AotWarning)] public static IRenderable GetRenderable(this Exception exception, ExceptionSettings settings) { if (exception is null) diff --git a/src/Spectre.Console/Widgets/Exceptions/ExceptionFormatter.cs b/src/Spectre.Console/Widgets/Exceptions/ExceptionFormatter.cs index 0313910..a7e530c 100644 --- a/src/Spectre.Console/Widgets/Exceptions/ExceptionFormatter.cs +++ b/src/Spectre.Console/Widgets/Exceptions/ExceptionFormatter.cs @@ -1,7 +1,12 @@ namespace Spectre.Console; +#pragma warning disable IL2026,IL2070,IL2075,IL3050 + internal static class ExceptionFormatter { + public const string AotWarning = "ExceptionFormatter is currently not supported for AOT."; + + [RequiresDynamicCode(ExceptionFormatter.AotWarning)] public static IRenderable Format(Exception exception, ExceptionSettings settings) { if (exception is null) @@ -398,6 +403,7 @@ internal static class ExceptionFormatter return builder.ToString(); } + [RequiresDynamicCode(ExceptionFormatter.AotWarning)] private static bool TryResolveStateMachineMethod(ref MethodBase method, out Type declaringType) { // https://github.com/dotnet/runtime/blob/v6.0.0/src/libraries/System.Private.CoreLib/src/System/Diagnostics/StackTrace.cs#L400-L455