diff --git a/.gitignore b/.gitignore
index 542da962..c3c65245 100644
--- a/.gitignore
+++ b/.gitignore
@@ -8,3 +8,4 @@ obj/
*.received.*
nugets/
.claude/settings.local.json
+nul
diff --git a/src/DiffEngine.AotTests/DiffEngine.AotTests.csproj b/src/DiffEngine.AotTests/DiffEngine.AotTests.csproj
new file mode 100644
index 00000000..5f37fcf3
--- /dev/null
+++ b/src/DiffEngine.AotTests/DiffEngine.AotTests.csproj
@@ -0,0 +1,18 @@
+
+
+
+ Exe
+ net9.0
+ enable
+ true
+ true
+ true
+
+ win-x64
+
+
+
+
+
+
+
diff --git a/src/DiffEngine.AotTests/GlobalUsings.cs b/src/DiffEngine.AotTests/GlobalUsings.cs
new file mode 100644
index 00000000..c1d1f261
--- /dev/null
+++ b/src/DiffEngine.AotTests/GlobalUsings.cs
@@ -0,0 +1 @@
+global using DiffEngine;
diff --git a/src/DiffEngine.AotTests/Program.cs b/src/DiffEngine.AotTests/Program.cs
new file mode 100644
index 00000000..5df4a5ae
--- /dev/null
+++ b/src/DiffEngine.AotTests/Program.cs
@@ -0,0 +1,58 @@
+public static class Program
+{
+ public static int Main()
+ {
+ try
+ {
+ TestDiffToolsAccess();
+ TestDefinitionsAccess();
+ TestToolResolution();
+
+ Console.WriteLine("All DiffEngine AOT tests passed!");
+ return 0;
+ }
+ catch (Exception ex)
+ {
+ Console.Error.WriteLine($"Test failed: {ex}");
+ return 1;
+ }
+ }
+
+ static void TestDiffToolsAccess()
+ {
+ // Test that we can access DiffTools static properties without reflection issues
+ var isDetected = DiffTools.IsDetectedForExtension(DiffTool.VisualStudioCode, "txt");
+ Console.WriteLine($"DiffTools.IsDetectedForExtension(VSCode, 'txt'): {isDetected}");
+
+ var allTools = DiffTools.Resolved.ToList();
+ Console.WriteLine($"DiffTools.Resolved count: {allTools.Count}");
+ }
+
+ static void TestDefinitionsAccess()
+ {
+ // Test that tool definitions can be accessed
+ var definitions = Definitions.Tools.ToList();
+ Console.WriteLine($"Definitions.Tools count: {definitions.Count}");
+
+ foreach (var def in definitions.Take(3))
+ {
+ Console.WriteLine($" Tool: {def.Tool}, Url: {def.Url}");
+ }
+ }
+
+ static void TestToolResolution()
+ {
+ // Test tool resolution
+ var found = DiffTools.TryFindByExtension("txt", out var resolved);
+ Console.WriteLine($"TryFindByExtension('txt'): found={found}");
+
+ if (found && resolved != null)
+ {
+ Console.WriteLine($" Resolved tool: {resolved.Tool}");
+ }
+
+ // Test by name
+ var foundByName = DiffTools.TryFindByName(DiffTool.VisualStudioCode, out _);
+ Console.WriteLine($"TryFindByName(VisualStudioCode): found={foundByName}");
+ }
+}
diff --git a/src/DiffEngine.slnx b/src/DiffEngine.slnx
index daf64eff..2adaed3a 100644
--- a/src/DiffEngine.slnx
+++ b/src/DiffEngine.slnx
@@ -33,4 +33,7 @@
+
+
+
diff --git a/src/DiffEngine/DiffEngine.csproj b/src/DiffEngine/DiffEngine.csproj
index 3eab5cd0..7f6e692e 100644
--- a/src/DiffEngine/DiffEngine.csproj
+++ b/src/DiffEngine/DiffEngine.csproj
@@ -3,6 +3,7 @@
net462;net472;net48;net9.0;net10.0
$(TargetFrameworks);net6.0;net7.0;net8.0;net9.0;net10.0
true
+ true
diff --git a/src/DiffEngine/OrderReader.cs b/src/DiffEngine/OrderReader.cs
index 2f988845..90799217 100644
--- a/src/DiffEngine/OrderReader.cs
+++ b/src/DiffEngine/OrderReader.cs
@@ -2,9 +2,7 @@
{
public record Result(bool UsedToolOrderEnvVar, IEnumerable Order);
- static Result defaultResult = new(false, Enum
- .GetValues(typeof(DiffTool))
- .Cast());
+ static Result defaultResult = new(false, Enum.GetValues());
public static Result ReadToolOrder()
{