98 lines
2.7 KiB
Markdown
98 lines
2.7 KiB
Markdown
# AOT Testing Guide
|
|
|
|
This directory contains scripts for building and testing the Htmx.ApiDemo application with Ahead-of-Time (AOT) compilation enabled. AOT compilation helps identify potential trimming issues that may occur at runtime.
|
|
|
|
## Directory Structure
|
|
|
|
```
|
|
Testing/
|
|
└── AOT/
|
|
├── build-aot.ps1 # Windows PowerShell script
|
|
├── build-aot.sh # Linux/POP_OS bash script
|
|
├── Publish/ # Output directory (created during build)
|
|
└── README.md # This file
|
|
```
|
|
|
|
## Prerequisites
|
|
|
|
- .NET SDK (version 10.0 or later)
|
|
- For Windows: PowerShell 5.1 or later
|
|
- For Linux/POP_OS: Bash shell
|
|
|
|
## Usage
|
|
|
|
### Windows (PowerShell)
|
|
|
|
**Build and Run:**
|
|
```powershell
|
|
.\build-aot.ps1
|
|
```
|
|
|
|
**Build Only:**
|
|
```powershell
|
|
.\build-aot.ps1 -BuildOnly
|
|
```
|
|
|
|
**Run Only (if already built):**
|
|
```powershell
|
|
.\build-aot.ps1 -RunOnly
|
|
```
|
|
|
|
### Linux/POP_OS (Bash)
|
|
|
|
Make the script executable first:
|
|
```bash
|
|
chmod +x build-aot.sh
|
|
```
|
|
|
|
**Build and Run:**
|
|
```bash
|
|
./build-aot.sh
|
|
```
|
|
|
|
**Build Only:**
|
|
```bash
|
|
./build-aot.sh --build-only
|
|
```
|
|
|
|
**Run Only (if already built):**
|
|
```bash
|
|
./build-aot.sh --run-only
|
|
```
|
|
|
|
## What These Scripts Do
|
|
|
|
1. **Clean**: Removes any previous publish directory
|
|
2. **Build**: Publishes the application with the following AOT settings:
|
|
- `PublishAot=true` - Enables AOT compilation
|
|
- `TrimMode=link` - Uses link-time trimming
|
|
- `PublishTrimmed=true` - Enables trimming
|
|
- `SelfContained=true` - Creates a self-contained executable
|
|
- Debug symbols are disabled for optimized output
|
|
|
|
3. **Run**: Launches the compiled application to test for any trimming-related issues
|
|
|
|
## Output
|
|
|
|
The compiled application and all dependencies are published to the `Testing/AOT/Publish` directory.
|
|
|
|
## Troubleshooting
|
|
|
|
### Build Failures
|
|
|
|
If the AOT build fails, check the error messages for:
|
|
- **Trimming issues**: Indicates code that cannot be safely trimmed
|
|
- **Reflection warnings**: APIs that use reflection may not work properly
|
|
- **Missing dependencies**: Required libraries that aren't properly configured
|
|
|
|
### Common Issues
|
|
|
|
1. **"Executable not found"**: The build may have failed silently. Check the build output for errors.
|
|
2. **Runtime crashes**: Trimming may have removed necessary code. Consider adding trimming configuration in your project file or using `[DynamicallyAccessedMembers]` attributes.
|
|
|
|
## Related Documentation
|
|
|
|
- [AOT Deployment](https://learn.microsoft.com/en-us/dotnet/core/deploying/native-aot/)
|
|
- [Trimming .NET Applications](https://learn.microsoft.com/en-us/dotnet/core/deploying/trimming/trim-self-contained)
|
|
- [Reflections and Trimming](https://learn.microsoft.com/en-us/dotnet/core/deploying/trimming/trim-self-contained#reflections)
|