WinRT(Windows 런타임)는 Windows API 및 구성 요소를 빌드하기 위한 언어 중립적 애플리케이션 아키텍처입니다. 언어 프로젝션은 특정 프로그래밍 언어의 규칙에 따라 WinRT API를 노출하므로 C# 또는 C++ 코드는 해당 언어의 다른 API처럼 호출할 수 있습니다.
프로젝션이 작동하는 방식을 이해하면 앱에서 WinRT API를 사용할지 아니면 재사용 가능한 자체 WinRT 구성 요소를 작성할지 결정하는 데 도움이 됩니다. 이 문서에서는 언어 프로젝션이 WinRT 메타데이터를 C# 및 C++에 매핑하는 방법, Microsoft 지원하는 프로젝션 및 프로젝션 설명서가 필요한 경우를 설명합니다.
언어 프로젝션의 작동 방식
Windows 메타데이터(.winmd) 파일은 WinRT API를 정의합니다. 언어 프로젝션은 해당 메타데이터를 읽고 특정 프로그래밍 언어의 규칙에 따라 API를 노출합니다. 표준 Windows 앱 SDK 또는 WinUI 템플릿에서 프로젝트를 만들 때 템플릿은 이미 언어 프로젝션을 구성하고 C# 또는 C++ 코드는 기본 메타데이터 또는 ABI(애플리케이션 이진 인터페이스)를 사용하지 않고 WinRT API를 직접 호출할 수 있습니다.
지원되는 언어 프로젝션
Microsoft Windows 앱 SDK 및 WinUI 앱에 대한 C# 및 C++ 언어 프로젝션을 지원합니다. 커뮤니티 프로젝트는 Rust와 같은 다른 언어에 대한 프로젝션을 제공하지만 Microsoft 공식적으로 지원하지는 않습니다.
| Projection | Language | 제공하는 내용 |
|---|---|---|
| C++/WinRT | C++17 이상 | WinRT API 및 구성 요소를 사용하고 작성하기 위한 표준 C++ 언어 프로젝션입니다. |
| C#/WinRT | C#(.NET) | WinRT API를 사용하고 WinRT 구성 요소를 작성하기 위한 .NET 언어 프로젝션입니다. |
언어 프로젝션 설명서를 사용하는 경우
대부분의 앱 개발에서는 선택한 언어의 다른 API와 같이 프로젝션된 WinRT API를 사용할 수 있습니다. 다음과 같은 경우 프로젝션 설명서를 사용합니다.
- 다른 앱 또는 언어에서 사용하는 Windows 런타임 구성 요소를 작성합니다.
- 라이브러리를 WinRT API를 래핑하는 NuGet 패키지로 배포합니다.
- C++ 코드의 하위 수준 COM 또는 ABI 인터페이스를 사용합니다.
- 생성된 interop 코드 또는
.winmd파일과 관련된 빌드 오류를 해결합니다.
관련 콘텐츠
Windows developer