Windows 7에서 .NET 10 NativeAOT 어플리케이션 실행하기

조금전 MewUI 리포에 Windows 7 환경에서 실행이 안된다는 이슈가 올라왔습니다.

처음에는 “Windows 10 이상이라고 명시해 놨는데도 이걸 시도하는 사람이 있나?” 정도의 생각이 들었습니다. 스택만 보면 NativeAOT 문제처럼 보일 수도 있는데, 실제로는 MewUI의 Windows DPI 관련 API 호출에서 발생한 문제였습니다. 즉 런타임 검사를 통과하고 어플리케이션 코드가 실행되고 있는것이었죠.

해당 부분에 Windows 7 호환 코드를 추가한 뒤 옛날 옛적에 만들어둔 Windows 7 VM에서 .NET 10 Native AOT로 빌드한 MewUI를 실행해보니 다음과 같은 오류가 발생했습니다.

역시나 Native AOT 출력물에 사용된 VC런타임 에러.
Windows 10 이후 버전에는 Universal C Runtime(UCRT) 이 기본적으로 포함되어 있지만, Windows 7에는 포함되어 있지 않습니다. NativeAOT 실행 파일은 이 런타임에 의존하기 때문에 기본 Windows 7 환경에서는 실행이 실패합니다.

하지만 아래 업데이트를 설치하면 의존성이 해결됩니다.

이 업데이트가 설치된 Windows 7 환경에서는 .NET 10 NativeAOT로 빌드된 실행 파일이 별도의 .NET 런타임 없이 정상적으로 실행됩니다.

런타임 의존성을 제거하기 위한 NativeAOT이지만, 레거시 환경에서 사용해야 하는 경우 참고할 수 있는 정보라 올려봅니다.

이상입니다.:grin:

8개의 좋아요