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