# .NET 7 기능 - Native AOT Deployment

> Clean Markdown view of GeekNews topic #8204. Use the original source for factual precision when an external source URL is present.

## Metadata

- GeekNews HTML: [https://news.hada.io/topic?id=8204](https://news.hada.io/topic?id=8204)
- GeekNews Markdown: [https://news.hada.io/topic/8204.md](https://news.hada.io/topic/8204.md)
- Type: news
- Author: [dimohy](https://news.hada.io/@dimohy)
- Published: 2023-01-08T21:12:51+09:00
- Updated: 2023-01-08T21:12:51+09:00
- Original source: [dotnetstuffs.com](https://www.dotnetstuffs.com/native-aot-deployment-net7/)
- Points: 4
- Comments: 5

## Topic Body

- .NET AOT란?  
- Native AOT 배포  
  
.NET 7은 이제 콘솔 애플리케이션으로 윈도우, 리눅스 및 macOS에서 .NET 런타임 없이 2M 수준의 작은 사이즈의 네이티브 코드를 생성할 수 있고 의존 없이 실행 가능합니다.

## Comments



### Comment 19837

- Author: dimohy
- Created: 2023-10-12T13:14:46+09:00
- Points: 1

.NET 7에서 지원하지 않았던 macOS를 .NET 8에서 공식 지원하게 됩니다.  
https://learn.microsoft.com/en-us/dotnet/core/deploying/native-aot/?tabs=net8plus%2Cwindows#platformarchitecture-restrictions

### Comment 14047

- Author: kunggom
- Created: 2023-01-08T22:57:06+09:00
- Points: 1

Microsoft 공식 문서를 보면, 이 기능은 미리 네이티브로 컴파일하는 데서 오는 근본적인 제약점 이외에도 개발 초기 단계이기 때문에 생기는 부가적인 제약점이 좀 있습니다. 아직 ASP.NET Core 앱에는 적용이 안 되고, 라이브러리 단계에서의 지원이 필요하며, 디버깅이나 프로파일링에도 아직 한계가 있습니다. 덧붙이자면 CPU 아키텍쳐는 x64와 ARM64만 지원하기 때문에 32비트 윈도우용 앱은 만들지 못합니다. 그리고 눈에 띄는 점이라면, 이 기능을 통해 비 .NET 앱에서 가져다 쓸 수 있는 정적 라이브러리를 만들 수 있다는 점이 있군요.  
  
MS에서 .NET 7을 발표하면서 [“클라우드 네이티브 앱을 위한” 플랫폼](https://devblogs.microsoft.com/dotnet/announcing-dotnet-7/#net-is-for-cloud-native-apps)이라고 말했습니다. 이를 위해 [앱을 Docker 컨테이너로 배포하는 기능](https://devblogs.microsoft.com/dotnet/announcing-builtin-container-support-for-the-dotnet-sdk/)도 추가했지요. AOT 지원 또한 이런 컨테이너화된 앱의 이미지 용량과 시작 시간을 최적화하기 위한 도구로 추가된 것이 아닌가 싶습니다. 하지만 정작 ASP.NET Core에 대한 지원이 아직 작업 중이니, 이 기능이 클라우드 네이티브 앱에서 실질적으로 빛을 발하는 것은 좀 더 훗날의 일이 되겠지요.  
  
참고:  
  
- [Microsoft Learn - Native AOT Deployment](https://learn.microsoft.com/en-us/dotnet/core/deploying/native-aot/)  
- [Building a Hello World console app with NativeAOT](https://github.com/dotnet/samples/tree/main/core/nativeaot/HelloWorld)  
- [Building Native Libraries with NativeAOT](https://github.com/dotnet/samples/tree/main/core/nativeaot/NativeLibrary)

### Comment 14048

- Author: dimohy
- Created: 2023-01-08T23:36:26+09:00
- Points: 1
- Parent comment: 14047
- Depth: 1

친절한 답변 감사합니다.  
  
콘솔 애플리케이션은 미리 보기 단계를 넘은 정식 릴리스 단계로 실제 애플리케이션을 개발할 수 있습니다.  
  
말씀하신 것 처럼 초기 단계라 ASP.NET Core라던가 WPF, Windows Form 또는 WinUI의 지원이 아직 없습니다.  
  
또한 도커 컨테이너로 배포하고자 하는 니즈에는 부합되지 않습니다. ASP.NET Core를 아직 지원하지 않거든요.  
  
마찬가지로 말씀하신 것 처럼 네이티브 코드로 컴파일 되므로 Reflector의 대부분의 기능을 사용할 수 없습니다. 이 부분은 초기단계에서 비롯되는 제약점이라기 보다는 IL코드와 네이티브 코드의 다른 특성 때문으로 보입니다.  
  
현재의 NativeAOT의 의미는 윈도우, 리눅스 및 macOS에서 의존성 없는 순수한 네이티브 코드를 콘솔 애플리케이션 수준에서는 훌륭하게 배포할 수 있다는 점 같습니다.

### Comment 14051

- Author: kunggom
- Created: 2023-01-09T09:49:22+09:00
- Points: 1
- Parent comment: 14048
- Depth: 2

macOS는 아닙니다. 제가 링크한 Microsoft Learn 문서를 보시면 아시겠지만, 현재 이 기능의 지원 플랫폼은 Windows와 Linux뿐입니다. macOS는 아마 나중에 추가되겠지요.  
시간이 해결해 주겠습니다만, 이 기능은 아직 현업에서 쓰기 힘든 경우가 더 많지 않을까 생각합니다.

### Comment 14061

- Author: dimohy
- Created: 2023-01-09T12:11:21+09:00
- Points: 1
- Parent comment: 14051
- Depth: 3

macOS는 아직 지원하지 않는 것이 맞습니다.
