Windows 개발자 FAQ

이 문서는 Windows 개발 환경 및 제품 방향에 대한 일반적인 이해를 돕기 위해 작성되었습니다.

시작

Windows 앱을 빌드하려면 무엇을 사용해야 하나요?

Windows 데스크톱 애플리케이션 개발의 경우 WinUI 3 및 Windows 앱 SDK를 사용하는 것을 권장합니다. WinUI에는 최신 Windows 11 기능을 활용하고 Windows 10 버전 1809까지 다운 레벨에서 작동하는 Windows 앱을 빌드하기 위한 최신 컨트롤과 스타일이 포함되어 있습니다.

다른 옵션은 빌드하는 항목과 빌드 방법에 따라 더 적합할 수 있습니다.

  • 만일 Windows 앱 SDK / WinUI 3이 요구 사항을 충족하지 못하는 경우 WPF 가 충족 할 수도 있습니다.
  • 플랫폼 간 앱을 대상으로 하는 경우: React Native.NET MAUI를 사용하여 플랫폼 간 앱을 빌드할 수 있습니다. .NET MAUI는 C# 개발자에게 적합합니다. React Native는 JavaScript/TypeScript 개발자에게 익숙할 것입니다.
  • 웹 개발자인 경우: WebView2를 애플리케이션 호스트로 사용할 수 있습니다. 이를 통해 웹 기술을 사용하여 Windows SDK 및 Windows 앱 SDK API에 액세스할 수 있는 데스크톱 앱을 빌드할 수 있습니다. Windows용 React Native를 사용할 수도 있습니다.
  • C++ 개발자인 경우: 데스크톱 앱의 경우 Windows 앱 SDK/WinUI 3을 선택하는 것이 좋습니다. 게임을 빌드하는 경우, DirectX를 사용하는 것을 고려해보세요.
  • Rust 개발자인 경우: Windows용 Rust를 확인하세요.

요구 사항 및 기술 선호도에 따라 더 적합할 수 있는 다른 개발 기술이 있습니다. 프레임워크 옵션 개요를 참조하세요.

Windows 개발 기술을 간단하게 비교하는 정보는 어디서 찾을 수 있나요?

앱 개발 옵션 개요를 참조하세요.

Windows 앱 SDK/WinUI 3

Windows 앱 SDK란?

Windows 앱 SDK는 이전 버전(Windows 10 1809까지)과 호환되는 아름다운 최신 데스크톱 앱을 만들 수 있는 Windows 애플리케이션 개발 플랫폼입니다. WinUI 3은 Windows 앱 SDK와 함께 제공되는 UI 프레임워크입니다.

Windows 앱 SDK와 Windows SDK의 차이점은 무엇인가요?

둘 다 Windows 앱을 빌드할 수 있는 SDK(소프트웨어 개발 키트)입니다.

Windows 앱 SDK는 Windows 버전(Windows 10 1809까지)에 설치할 수 있는 최신 데스크톱 앱을 빌드할 수 있는 새로운 개발 플랫폼입니다. Windows 앱 SDK를 사용하여 앱을 빌드하면 최신 Windows 개발 플랫폼 기능에 액세스할 수 있습니다. Windows 앱 SDK에는 WinUI 3이 포함됩니다.

Windows SDK는 UWP 앱 및 Win32/데스크톱 앱을 빌드할 수 있는 개발 플랫폼입니다. 특정 버전의 OS에 결합된 Windows API를 중심으로 설계되었습니다.

Windows 앱 SDK는 Windows SDK를 대체하지 않습니다. 대신 Windows 앱 SDK는 Windows SDK를 보완합니다. Windows SDK를 사용하여 이미 액세스할 수 있는 Windows OS API의 풍부한 카탈로그를 중심으로 편리하고 OS 분리된 추상화를 제공합니다. Windows 앱 SDK를 사용하여 앱을 빌드할 때 필요한 기능에 따라 결국 Windows SDK API를 사용하게 될 수 있습니다. 시간이 지나면 점점 더 많은 Windows SDK 기능이 Windows 앱 SDK에 리프트될 것입니다.

기존 Windows 앱에서 Windows 앱 SDK/WinUI 3을 사용할 수 있나요?

WinUI 3(UI 프레임워크)은 Windows 앱 SDK(Windows 플랫폼 개발 프레임워크)와 함께 제공됩니다.

일반적으로 UI 프레임워크 전체를 마이그레이션할 준비가 되지 않으면 WinUI 3을 사용할 수 없습니다. 저희는 현재 다른 UI 프레임워크(WPF, Win32)에 WinUI 3 콘텐츠를 호스트 할 수 있는 XAML Islands라는 기능을 개발하는 중입니다.

기존 앱이 빌드된 방식에 따라 Win32/데스크톱 앱에서 Windows 앱 SDK 요소를 사용할 수 있어야 합니다. UWP 앱은 Windows 앱 SDK/WinUI 3에서 지원되지 않습니다.

즉, , WPF/MFC/WinForms 앱은 WinUI 3과 관련이 없는 Windows 앱 SDK API를 사용할 수 있습니다. 이러한 API의 예로는 앱 수명 주기, 창 및 알림 메시지가 있습니다.

WinUI 3 앱을 빌드하려면 Visual Studio를 사용해야 하나요?

Visual Studio 2022 버전 17.1 이상을 사용하여 Windows 앱 SDK/WinUI 3 앱을 개발하는 것이 좋습니다. 최신 버전의 Visual Studio를 사용하면 핫 다시 로드와 같은 풍부한 개발 기능을 사용할 수 있습니다.

다른 IDE 및 개발 워크플로를 사용해도 되지만, Visual Studio는 현재 Windows 앱 SDK / WinUI 3를 공식적으로 지원하는 유일한 IDE입니다. XAML 또는 Windows 앱 SDK/WinUI 3을 사용하는 프로젝트를 컴파일하려면 MSBuild가 필요합니다.

Windows 앱 SDK/WinUI 3을 사용하여 앱을 빌드하면 "WinUI 3 앱"을 빌드하는 것인가요?

예 - "WinUI 3 앱"이라는 용어를 사용하는 것이 좋습니다.

WinUI 2 구성 요소를 WinUI 3 구성 요소로 점진적으로 교체하여 WinUI 2 앱을 WinUI 3으로 점진적으로 업데이트할 수 있나요?

아니요 Windows 앱 SDK는 UWP 앱에서 사용할 수 없고, WinUI 2는 WinUI 3과 혼합할 수 없습니다. UWP에서 Windows 앱 SDK로 마이그레이션을 참조하세요.

UWP 앱을 Windows 앱 SDK/WinUI 3으로 마이그레이션하는 것은 얼마나 어려운가요?

UI 구성 요소 마이그레이션은 일반적으로 간단합니다(C# 및 C++/WinRT의 경우). 그렇지 않으면 UWP에서 Windows 앱 SDK/WinUI 3으로 마이그레이션하는 비용은 주로 다음 요소에 따라 달라집니다.

  1. 프로젝트 파일 및 MSBuild 사용자 지정: 프로젝트를 마이그레이션하려면 고급 MSBuild 기능을 사용했는지 여부에 따라 상당한 수고가 필요할 수 있습니다.
  2. .NET API 마이그레이션: UWP 앱이 .NET을 사용하는 경우 .NET 6나 그 이후 버전으로 업그레이드해야 합니다. 대부분의 경우 .NET 6 채택은 간단합니다.
  3. UI 구성 요소 라이브러리: UI 구성 요소 라이브러리를 사용하는 경우 WinUI 3을 대상으로 하는 새 버전이 필요합니다.
  4. UWP 소스 코드가 현재 대체된 C++/CX로 작성된 경우 일부 소스 코드 포팅이 관련됩니다. C++/CX에서 C++/WinRT로 이동을 참조하세요.

UWP 마이그레이션에 대한 자세한 내용은 UWP에서 Windows 앱 SDK로 마이그레이션을 참조하세요.

Microsoft Store에 기존 UWP 앱이 있는 경우 동일한 식별자를 사용하여 새 패키지 WinUI 3 앱을 게시할 수 있나요?

예, 업그레이드된 앱은 애플리케이션의 ID를 업데이트하지 않고 게시할 수 있습니다. 이전 버전을 사용하는 사용자는 새 버전으로 업데이트됩니다. 이 지침은 데스크톱 앱에만 적용됩니다. Xbox, HoloLens 및 Surface Hub 앱은 WinUI 3으로 마이그레이션 할 수 없습니다.

WinUI 3 앱을 패키지/배포하려면 어떻게 해야 하나요?

배포 개요를 참조하세요.

Windows 앱 SDK 마이그레이션 지침은 어디서 찾을 수 있나요?

WinUI 3을 사용하려면 XAML 태그를 사용해야 하나요?

아니요 코드에서 UI 컨트롤을 만들 수 있습니다. 하지만 향상된 개발자 환경과 같이 선언적 XAML 태그 형식으로 WinUI 3 UI를 나타내면 많은 이점이 있습니다.

UWP에서 WinUI 3으로 마이그레이션하는 경우 많은 XAML 태그 및 UI 관련 코드를 재사용할 수 있습니다(하지만 일부 구문을 업데이트해야 함). WPF에서 WinUI 3으로 마이그레이션하는 경우 많은 개념을 재사용할 수 있지만, 컨트롤 집합과 API는 다릅니다.

Visual Studio에 WinUI 3용 디자인 화면/GUI 디자이너가 있나요?

아니요 이것이 WinUI 3 개발자 환경의 격차라는 것을 저희도 알고 있습니다. XAML 핫 다시 로드와 같은 도구는 여러 시나리오에서 도움이 될 수 있습니다.

Windows 앱 SDK에 WinUI 3이 포함되나요?

있음. WinUI 3은 Windows 앱 SDK의 일부로 제공됩니다.

Windows 앱 SDK에 WinUI 2가 포함되나요?

아니요 WinUI 2는 UWP 플랫폼의 일부입니다.

WinUI 2와 WinUI 3은 동일한 기술을 기반으로 하나요?

그렇지 않습니다. WinUI 3은 WinUI 2 코드베이스에서 시작되었지만, 둘은 뚜렷이 구별되는 기술입니다. WinUI 2와 WinUI 3은 둘 다 .NET 및 C++에서 작동하는 XAML 기반 UI 프레임워크입니다. WinUI 2와 WinUI 3은 서로 호환되지 않습니다.

Windows 앱 SDK를 사용하지 않고 WinUI 3을 사용할 수 있나요?

아니요 WinUI 3은 Windows 앱 SDK의 일부로 제공됩니다.

패키지되지 않은 앱에서 WinUI 3를 사용할 수 있나요?

있음. Windows 앱 SDK의 모든 기술은 WinUI 3을 포함한 비 패키지 앱에서 작동합니다.

XAML Islands와 WinUI 3의 차이점은 무엇인가요?

XAML Islands를 사용하면 WinForms 및 WPF와 같은 다른 프레임워크의 기존 Win32 UI와 함께 최신 WinUI 컨트롤을 호스트할 수 있습니다. 현재 XAML Islands는 대부분의 시스템 XAML 및 WinUI 2 컨트롤에서 지원됩니다. 자세한 정보는 데스크톱 앱에서 WinRT XAML 컨트롤 호스트(XAML Islands)를 참조하세요. WinUI 3 컨트롤에 대한 XAML Islands 지원은 Windows 앱 SDK 1.4부터 사용할 수 있습니다.

WinUI 3을 사용하는 경우 앱이 Windows 11 및 Windows 10에서 최신 앱으로 보이나요?

예, 앱의 UI는 패키지 및 비 패키지 시나리오에서 지원되는 모든 Windows 11 및 Windows 10 버전(1809까지)의 최신 Fluent UI 디자인 원칙을 상속합니다.

Windows 앱 SDK로 빌드 된 앱에서 Mica 또는 아크릴 배경을 사용할 수 있나요?

WinUI 3 샘플은 어디서 찾을 수 있나요?

샘플 및 리소스를 참조하십시오. 주목할 만한 리포지토리:

  • WindowsAppSDK 샘플: 특정 Windows 앱 SDK API 세트를 사용하는 방법을 보여줍니다.
  • WinUI 3 데모: Microsoft의 WinUI 3 프레젠테이션 중에 사용되는 데모를 포함합니다.
  • WinUI 갤러리: WinUI 3 및 Windows 앱 SDK를 소개합니다. Microsoft Store에서 WinUI 갤러리를 가져올 수도 있습니다.

UWP 및 WinUI 2

UWP 앱을 Microsoft Store 외부에서 배포할 수 있나요?

있음. MSIX 패키지가 서명된 경우, 서명 인증서는 대상 디바이스에서 유효하고 신뢰할 수 있어야 합니다.

UWP XAML UI 컨트롤을 Win32, WPF 또는 WinForms UI 컨트롤과 혼합할 수 있나요?

예 - XAML Islands를 사용하면 가능합니다. XAML Islands에 대해 자세히 알아보세요.

플랫폼 간 개발

WinUI 3 및 앱 SDK로 시작하고 나중에 플랫폼 간 시나리오를 대상으로 삼고 싶을 때 .NET MAUI를 통합해도 되나요?

현재는 불가능합니다. .NET MAUI 앱은 Windows에서 실행될 때 Windows 앱 SDK/WinUI 3을 사용하지만, 여러 플랫폼을 대상으로 해야 할 것으로 예상되는 경우 .NET MAUI 또는 Windows용 React Native로 시작하는 것이 좋습니다.

Windows 및 Xbox에서 작동하는 앱을 빌드하려면 무엇을 사용해야 하나요?

앱에서 Xbox, HoloLens 또는 IoT를 지원해야 하는 경우 UWP를 사용하는 것이 좋습니다. Windows 앱 SDK는 이러한 플랫폼을 지원하지 않습니다. 게임 개발의 경우 Microsoft 게임 개발 키트를 사용하는 것이 좋습니다.

Windows 및 Surface Hub에서 작동하는 앱을 빌드하려면 무엇을 사용해야 하나요?

Windows 및 Surface Hub를 모두 대상으로 하는 경우 UWP를 사용하는 것이 좋습니다.

Windows에서 네이티브 느낌의 PWA(프로그레시브 웹앱)를 빌드하려면 어떻게 해야 하나요?

패키징, 배포 및 업데이트

패키지된 앱, 패키지되지 않은 앱 및 외부 위치로 패키지되는 앱의 차이점은 무엇인가요?

패키지된 앱, 패키지되지 않은 앱 및 외부 위치로 패키지되는 앱의 정의는 배포 개요를 참조하세요. 이 항목에서는 각 옵션의 장점과 단점도 설명합니다.

WinUI 3 앱이 최종 사용자와 관련하여 자동으로 업데이트될까요?

Windows 앱 SDK/WinUI 3 앱은 Microsoft Store, .appinstaller 파일 또는 기존 MSI나 setup.exe 패키지를 통해 배달할 수 있습니다. Microsoft Store 및 AppInstaller는 자동 업데이트를 사용하도록 설정한 최종 사용자를 위한 자동 업데이트를 지원하지만, MSI/setup.exe 앱에는 자체 업데이트 관리자가 있어야 합니다.

MSBuild를 사용하지 않고 Windows 앱 SDK를 사용할 수 있나요?

일반적으로는 그렇지 않습니다. WinUI 3와 Windows 앱 SDK에는 MSBuild가 필요하므로, Visual Studio는 Windows 앱 SDK/WinUI 3 애플리케이션 개발의 필수 구성 요소입니다. 기술적으로는 다른 도구 체인을 사용하여 WinUI 3을 사용하지 않고 Windows 앱 SDK 앱을 빌드 할 수도 있지만, 이는 지원 받을 수 없습니다.

성능 및 최적화

Windows 앱이 최종 사용자에게 좋은 느낌을 주려면 어떻게 해야 하나요?

호환성

Windows 앱 SDK/WinUI 3 앱을 사용하도록 Windows를 업데이트해야 하나요?

Windows 10 버전 1809 이상을 사용하는 사용자는 OS를 업데이트하지 않고 WinUI 3/Windows 앱 SDK 앱을 설치할 수 있습니다.

WinUI 3 앱에서 Arm64를 대상으로 지정할 수 있나요?

있음.

사용 중단 및 마이그레이션

UWP/WinUI 2는 더 이상 사용되지 않나요?

아니요 UWP 및 WinUI 2는 여전히 지원되며 버그, 안정성 및 보안 수정 픽스를 받게 됩니다. 그러나 최신 .NET 런타임 지원을 포함하여 대부분의 새로운 특징과 기능은 Windows 앱 SDK/WinUI 3에만 추가됩니다.

어떤 경우에 UWP/WinUI 2 앱을 WinUI 3으로 마이그레이션해야 하나요?

UWP 및 기능 세트에 만족하는 UWP 개발자는 앱을 Windows 앱 SDK로 마이그레이션하지 않아도 됩니다. 일부 앱은 마이그레이션하지 않는 것이 가장 적합한 선택일 수 있습니다. 최신 Windows 플랫폼과 Microsoft의 .NET 투자를 활용하려는 앱은 Windows 앱 SDK로 전환하는 것이 좋습니다. UWP에서 Windows 앱 SDK로 마이그레이션을 참조하세요.

어떤 경우에 UWP + WinUI 2 앱을 WinUI 3으로 마이그레이션하면 *안* 되나요?

Xbox, Surface Hub 또는 HoloLens 앱을 빌드하는 경우 UWP를 계속 사용하는 것이 좋습니다.

WPF는 더 이상 사용되지 않나요?

아니요 WPF는 여전히 지원되며 일부 기능 업데이트도 받습니다.

WinForms는 더 이상 사용되지 않나요?

아니요 WinForms는 여전히 지원되며 일부 기능 업데이트도 받습니다.

WinRT(Windows 런타임)는 더 이상 사용되지 않나요?

아니요 WinRT는 여러 언어 간에 상호 운용할 수 있게 해주는 ABI(애플리케이션 이진 파일 인터페이스)를 나타냅니다. WinRT는 COM이 발전된 것입니다. Windows 앱 SDK는 WinRT API를 통해 대부분의 기능을 제공합니다.

릴리스 정보

Windows 앱 SDK의 릴리스 정보는 어디서 찾을 수 있나요?