ความสามารถนี้ถูกปล่อยออกมาตั้งแต่ .NET 7
ทำให้สามารถ deploy ระบบที่พัฒนาโดยไม่ต้องมี .NET Runtime ใด ๆ
โดยทำการ compile ไปเป็น native codeให้เลย
หรือเรียกว่า Self-contained app
ผลที่ตามมาคือ

  • Startup time เร็วขึ้น
  • ใช้ memory น้อยลง

ดังนั้นเหมาะมากต่อระบบที่ต้องการรับ load เยอะ ๆ
เพื่อให้ scale ได้ง่าย ด้วย resource ที่ใช้น้อยลงอีก
รวมทั้ง environment ที่มี resource จำกัดหรือน้อย เช่นพวก Serverless เป็นต้น
แต่ก็ยังมีข้อจำกัดในเรื่องของ library/dependency ที่ใช้งานได้อยู่

ใน .NET 8 preview 1 ที่เพิ่มปล่อยออกมาให้ทดลองใช้งานนั้น
ก็ได้ทำการปรับปรุงการ build
ทำให้ขนาดของไฟล์ที่ได้นั้น มีขนาดเล็กลงไปอีก

ข้อจำกัดของ native AOT มีคร่าว ๆ ดังนี้

  • ตอนนี้ใช้ได้กับ console app เท่านั้น ดังนั้นพวก web, api ยังไม่ได้นะ รอไปก่อน
  • ไม่ support เรื่องต่าง ๆ เช่น dynamic loading, c++, runtime code generation

ดังนั้นมาลองใช้กันหน่อย

ขั้นตอนที่ 1 ทำการสร้าง console project ขึ้นมา

ขั้นตอนที่ 2 ทำการเพิ่ม config ใน profile file เพื่อทำการ publish แบบ AOT

ขั้นตอนที่ 3 ทำการ build และ publish ได้เลย ขนาดของไฟล์ที่ได้จากตัวอย่างนี้ คือ 8.3 MB

เพียงเท่านี้ก็ทำการ publish .NET project แบบ AOT ได้แล้ว

Reference Websites