mirror of
				https://github.com/nsnail/spectre.console.git
				synced 2025-11-04 10:35:27 +08:00 
			
		
		
		
	Add Native AOT support documentation and update project files for AOT compatibility
This commit is contained in:
		
				
					committed by
					
						
						Patrik Svensson
					
				
			
			
				
	
			
			
			
						parent
						
							8f2a859087
						
					
				
				
					commit
					835143d95f
				
			@@ -96,6 +96,31 @@ Spectre.Console has an [analyzer](https://www.nuget.org/packages/Spectre.Console
 | 
			
		||||
common errors in writing console output from above such as using multiple live rendering widgets simultaneously,
 | 
			
		||||
or using the static `AnsiConsole` class when `IAnsiConsole` is available.
 | 
			
		||||
 | 
			
		||||
### Native AOT Support
 | 
			
		||||
 | 
			
		||||
Publishing your app as Native AOT with Spectre.Console produces an app that's self-contained and has been ahead-of-time (AOT) compiled to native code. Native AOT apps have faster startup time and smaller memory footprints. These apps can run on machines that don't have the .NET runtime installed.
 | 
			
		||||
 | 
			
		||||
To enable AOT support on your application, Add `<PublishAot>true</PublishAot>` to your project file.
 | 
			
		||||
 | 
			
		||||
```xml
 | 
			
		||||
<PropertyGroup>
 | 
			
		||||
    <PublishAot>true</PublishAot>
 | 
			
		||||
</PropertyGroup>
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
Current Spectre.Console support for AOT:
 | 
			
		||||
 | 
			
		||||
* ☑️ Spectre.Console
 | 
			
		||||
* ❌ Spectre.Console.Cli
 | 
			
		||||
* ☑️ Spectre.Console.Json
 | 
			
		||||
* ☑️ Spectre.Console.ImageSharp
 | 
			
		||||
 | 
			
		||||
Spectre.Console.Cli relies on reflection and discovering types at runtime, preventing it from currently supporting AOT.
 | 
			
		||||
 | 
			
		||||
Spectre.Console supports AOT, but with the following limitations
 | 
			
		||||
 | 
			
		||||
* `WriteException` will output a simple stacktrace and ignore any `ExceptionFormats` set.
 | 
			
		||||
 | 
			
		||||
### Configuring the Windows Terminal For Unicode and Emoji Support
 | 
			
		||||
 | 
			
		||||
Windows Terminal supports Unicode and Emoji. However, the shells such as Powershell and cmd.exe do not.
 | 
			
		||||
 
 | 
			
		||||
@@ -5,7 +5,10 @@
 | 
			
		||||
    <IsPackable>true</IsPackable>
 | 
			
		||||
    <Description>A library that extends Spectre.Console with ImageSharp superpowers.</Description>
 | 
			
		||||
  </PropertyGroup>
 | 
			
		||||
 | 
			
		||||
  <PropertyGroup>
 | 
			
		||||
    <IsAotCompatible Condition="'$(TargetFramework)' != 'netstandard2.0'" >true</IsAotCompatible>
 | 
			
		||||
    <PolySharpIncludeRuntimeSupportedAttributes>true</PolySharpIncludeRuntimeSupportedAttributes>
 | 
			
		||||
  </PropertyGroup>
 | 
			
		||||
  <ItemGroup>
 | 
			
		||||
    <PackageReference Include="SixLabors.ImageSharp" />
 | 
			
		||||
  </ItemGroup>
 | 
			
		||||
 
 | 
			
		||||
@@ -6,7 +6,10 @@
 | 
			
		||||
    <IsPackable>true</IsPackable>
 | 
			
		||||
    <Description>A library that extends Spectre.Console with JSON superpowers.</Description>
 | 
			
		||||
  </PropertyGroup>
 | 
			
		||||
 | 
			
		||||
  <PropertyGroup>
 | 
			
		||||
    <IsAotCompatible Condition="'$(TargetFramework)' != 'netstandard2.0'" >true</IsAotCompatible>
 | 
			
		||||
    <PolySharpIncludeRuntimeSupportedAttributes>true</PolySharpIncludeRuntimeSupportedAttributes>
 | 
			
		||||
  </PropertyGroup>
 | 
			
		||||
  <ItemGroup>
 | 
			
		||||
    <Compile Include="..\..\Spectre.Console\Internal\Extensions\CharExtensions.cs" Link="Internal\CharExtensions.cs" />
 | 
			
		||||
    <Compile Include="..\..\Spectre.Console\Internal\Extensions\EnumerableExtensions.cs" Link="Internal\EnumerableExtensions.cs" />
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user