Microsoft Windows App SDK 1.0 안정 버전 출시, 다운로드 가능(릴리스 노트)

독서 시간 아이콘 12 분. 읽다


독자들은 MSpoweruser를 지원하는 데 도움을 줍니다. 당사의 링크를 통해 구매하시면 수수료를 받을 수 있습니다. 툴팁 아이콘

공개 페이지를 읽고 MSPoweruser가 편집팀을 유지하는 데 어떻게 도움을 줄 수 있는지 알아보세요. 자세히 보기

윈UI

여러 Preview 빌드 후 Microsoft는 데스크톱 앱 개발자가 최신 Windows UI, API 및 플랫폼 기능으로 앱을 빌드할 수 있도록 하는 툴킷인 Windows App SDK 1.0.0 Stable을 출시했습니다.

이 릴리스에서 Microsoft는 Windows App SDK 0.8의 여러 새로운 기능과 1.0 Preview 릴리스의 안정화된 문제를 추가했습니다.

[lwptoc 제목=”WindowsAppSDK 1.0 안정” 너비=”30%” float=”오른쪽”]

윈UI 3

WinUI 3은 Windows 앱 SDK용 기본 UX(사용자 경험) 프레임워크입니다.

새로운 기능 및 업데이트:

  • Microsoft는 새로운 컨트롤(PipsPager, Expander, BreadcrumbBar)을 추가하고 최신 Windows 스타일을 반영하도록 기존 컨트롤을 업데이트했습니다. 윈UI 2.6.
  • 단일 프로젝트 MSIX 패키징은 "Blank App, Packaged…" 템플릿을 사용하여 새 응용 프로그램을 생성하여 WinUI에서 지원됩니다.
  • Microsoft는 이제 Windows 버전 3 이상에서 MSIX 패키징 없이 WinUI 1809 앱 배포를 지원합니다. 봐주세요 WinUI 3 패키징되지 않은 데스크톱 앱 만들기 자세한 내용은.
  • WinUI 3 프로젝트는 이제 대상 버전을 Windows 10, 버전 1809로 설정할 수 있습니다. 이전에는 버전 1903까지만 낮게 설정할 수 있었습니다.
  • 앱 내 도구 모음, 핫 다시 로드 및 WinUI 패키지 앱용 라이브 비주얼 트리는 Visual Studio 2022 Preview 5 및 GA에서 지원됩니다.

중요한 제한 사항:

  • 알려진 문제 패키지 및 패키지되지 않은 WinUI 응용 프로그램 모두:
    • C++ Windows 런타임 구성 요소를 참조하는 C++ 앱의 런타임 오류: 이 문제를 해결하려면 Windows 런타임 구성 요소의 .vcxproj 끝에 아래 대상을 추가합니다.

      XML

      <Target Name="GetPriIndexName">
      <PropertyGroup>
          <!-- Winmd library targets use the default root namespace of the project for the App package name -->
          <PriIndexName Condition="'$(RootNamespace)' != ''">$(RootNamespace)</PriIndexName>
          <!-- If RootNamespace is empty fall back to TargetName -->
          <PriIndexName Condition="$(PriIndexName) == ''">$(TargetName)</PriIndexName>
      </PropertyGroup>
      </Target>
      
  • 알려진 문제 단일 프로젝트 MSIX가 있는 WinUI 애플리케이션 (빈 앱, 패키지 템플릿):
    • Visual Studio를 다시 시작할 때까지 누락된 패키지 및 게시 메뉴 항목: 빈 앱 패키지(데스크톱의 WinUI 2019) 프로젝트 템플릿을 사용하여 Visual Studio 2022 및 Visual Studio 3 모두에서 단일 프로젝트 MSIX로 새 앱을 만들 때 프로젝트를 게시하는 명령은 닫을 때까지 메뉴에 표시되지 않습니다. Visual Studio를 다시 엽니다.
    • 단일 프로젝트 MSIX가 있는 AC# 앱은 "C++(v14x) 유니버설 Windows 플랫폼 도구" 선택적 구성 요소가 설치되어 있지 않으면 컴파일되지 않습니다. 보다 개발자 도구 설치 자세한 내용은.
    • 참조된 Windows 런타임 구성 요소에 정의된 형식을 사용하는 단일 프로젝트 MSIX가 있는 앱의 잠재적 런타임 오류: 해결하려면 수동으로 추가 활성화 가능한 클래스 항목 appxmanifest.xml에.
      • C# 응용 프로그램에서 예상되는 오류는 "COMException: 클래스가 등록되지 않았습니다(0x80040154(REGDB_E_CLASSNOTREG)).
      • C++/WinRT 응용 프로그램에서 예상되는 오류는 "winrt::hresult_class_not_registered"입니다.
  • 알려진 문제 MSIX 패키징이 없는 WinUI 애플리케이션 (패키지되지 않은 앱):
  • 알려진 문제 WinUI 애플리케이션 패키징 및 배포:
    • XNUMXD덴탈의 Package 명령은 단일 프로젝트 MSIX(빈 앱, 패키지된 템플릿)가 있는 WinUI 앱에서 지원되지 않습니다. 대신 사용 Package & Publish 명령을 사용하여 MSIX 패키지를 만듭니다.
    • 다음을 사용하여 C# 클래스 라이브러리에서 NuGet 패키지를 만들려면 Pack 명령, 활성 확인 Configuration is Release.
    • XNUMXD덴탈의 Pack 명령은 C++ Windows 런타임 구성 요소에서 NuGet 패키지를 만드는 데 지원되지 않습니다.

윈도우

Windows 앱 SDK는 앱창 이전의 사용하기 쉬운 Windows.UI.WindowManagement.AppWindow 미리 보기 클래스를 발전시키고 Win32, WPF 및 WinForms를 포함한 모든 Windows 앱에서 사용할 수 있도록 하는 클래스입니다.

새로운 기능

  • 앱창 Windows 사용자 경험 및 다른 앱과 잘 통합되는 사용하기 쉬운 창 설정 시나리오를 허용하는 고급 창 설정 API입니다. 앱 콘텐츠의 시스템 관리 컨테이너에 대한 상위 수준 추상화를 나타냅니다. 이것은 콘텐츠가 호스팅되는 컨테이너이며 사용자가 화면에서 앱의 크기를 조정하고 이동할 때 상호 작용하는 엔터티를 나타냅니다. Win32에 익숙한 개발자의 경우 AppWindow는 HWND의 상위 수준 추상화로 볼 수 있습니다.
  • 디스플레이 영역 HMONITOR의 상위 수준 추상화를 나타내며 AppWindow와 동일한 원칙을 따릅니다.
  • DisplayAreaWatcher 개발자는 디스플레이 토폴로지의 변경 사항을 관찰하고 시스템에 현재 정의된 DisplayArea를 열거할 수 있습니다.

입력

이들은 WinUI를 지원하고 개발자가 고급 입력 상호 작용을 달성할 수 있도록 낮은 수준의 API 표면을 제공하는 입력 API입니다.

새로운 기능

중요한 제한 사항

  • All 포인터 포인트 정적 팩토리 함수가 제거되었습니다. GetCurrentPointGetCurrentPoint변환됨GetIntermediatePoints및 GetIntermediatePoints변환됨.
  • Windows 앱 SDK는 검색을 지원하지 않습니다. 포인터 포인트 포인터 ID를 가진 객체 대신 다음을 사용할 수 있습니다. 포인터 포인트 멤버 함수 GetTransformedPoint 기존의 변환된 버전을 검색하려면 포인터 포인트 물체. 중간 포인트의 경우 다음을 사용할 수 있습니다. 포인터 이벤트 인수 멤버 함수 GetIntermediatePoints 및 GetTransformedIntermediatePoints.
  • 플랫폼 SDK API 직접 사용 Windows.UI.Core.CoreDragOperation WinUI 응용 프로그램에서는 작동하지 않습니다.
  • 포인터 포인트 속성 원시 위치 및 접촉RectRaw OS의 정상 값과 동일한 예측되지 않은 값을 참조했기 때문에 제거되었습니다. 사용 위치 및 연락처Rect 대신에. 포인터 예측은 이제 다음으로 처리됩니다. Microsoft.UI.Input.PointerPredictor API 개체.

앱 수명 주기

대부분의 앱 수명 주기 기능은 이미 UWP 플랫폼에 존재하며 데스크톱 앱 유형, 특히 패키징되지 않은 콘솔 앱, Win32 앱, Windows Forms 앱 및 WPF 앱에서 사용하기 위해 Windows 앱 SDK로 가져왔습니다. UWP 플랫폼 자체에 동등한 기능이 있으므로 이러한 기능의 Windows 앱 SDK 구현은 UWP 앱에서 사용할 수 없습니다.

 중대한

UWP 앱에서 작업하는 경우 다음을 참조하세요. UWP 마이그레이션 지침 앱을 Windows 앱 SDK로 마이그레이션하는 방법에 대해 자세히 알아보세요.

UWP가 아닌 앱은 MSIX 패키지로 패키징할 수도 있습니다. 이러한 앱은 Windows 앱 SDK 앱 수명 주기 기능 중 일부를 사용할 수 있지만 사용 가능한 경우 매니페스트 접근 방식을 사용해야 합니다. 예를 들어 Windows 앱 SDK를 사용할 수 없습니다. XXX활성화 등록 API를 사용하고 대신 매니페스트를 통해 풍부한 활성화를 등록해야 합니다.

패키징된 앱에 대한 모든 제약 조건은 패키징된 WinUI 앱에도 적용되며 아래에 설명된 추가 고려 사항이 있습니다.

중요한 고려 사항:

  • 풍부한 활성화: GetActivatedEventArgs
  • 풍부한 활성화를 위한 등록/등록 취소
    • 패키징되지 않은 앱: 완전히 사용 가능합니다.
    • 패키지 앱: 사용할 수 없음 대신 앱의 MSIX 매니페스트를 사용합니다.
    • 자세한 내용은 풍부한 활성화.
  • 단일/다중 인스턴스
    • 패키징되지 않은 앱: 완전히 사용 가능합니다.
    • 패키지 앱: 완전히 사용 가능합니다.
    • WinUI 앱: 앱이 다른 인스턴스를 감지하고 활성화를 리디렉션하려는 경우 가능한 한 빨리, 모든 창을 초기화하기 전에 수행해야 합니다. 이를 활성화하려면 앱에서 DISABLE_XAML_GENERATED_MAIN을 정의하고 사용자 정의 Main(C#) 또는 감지 및 리디렉션을 수행할 수 있는 WinMain(C++)입니다.
    • RedirectActivationToAsync 는 비동기 호출이며 앱이 STA에서 실행 중인 경우 비동기 호출을 기다리면 안 됩니다. Windows Forms 및 C# WinUI 앱의 경우 필요한 경우 Main을 비동기식으로 선언할 수 있습니다. C++ WinUI 및 C# WPF 앱의 경우 Main을 비동기식으로 선언할 수 없으므로 대신 STA를 차단하지 않도록 리디렉션 호출을 다른 스레드로 이동해야 합니다.
    • 자세한 내용은 앱 인스턴싱.
  • 전원/상태 알림
    • 패키징되지 않은 앱: 완전히 사용 가능합니다.
    • 패키지 앱: 완전히 사용 가능합니다.
    • 자세한 내용은 전원 관리.

알려진 문제:

  • Verb 처리기의 명령줄 템플릿을 설정할 때 파일 형식 연결이 %1을(를) %251로 잘못 인코딩하여 패키지되지 않은 Win32 앱이 충돌합니다. 대신 부분적 해결 방법으로 레지스트리 값을 %1로 수동으로 편집할 수 있습니다. 대상 파일 경로에 공백이 있으면 여전히 실패하고 해당 시나리오에 대한 해결 방법이 없습니다.
  • 이러한 단일/다중 인스턴스 버그는 다음 서비스 패치에서 수정됩니다.
    • x86용으로 컴파일할 때 AppInstance 리디렉션이 작동하지 않음
    • 키를 등록하고, 등록을 취소하고, 다시 등록하면 앱이 충돌합니다.

DWriteCore

DWriteCore는 Windows 앱 SDK 구현입니다. 직접 쓰기, 고품질 텍스트 렌더링, 해상도 독립적인 외곽선 글꼴, 전체 유니코드 텍스트 및 레이아웃 지원을 위한 DirectX API입니다. DWriteCore는 Windows 10, 버전 1809(10.0, 빌드 17763)까지의 Windows 버전에서 실행되는 DirectWrite의 한 형태이며 플랫폼 간 사용할 수 있는 기회를 제공합니다.

특징 DWriteCore에는 몇 가지 예외를 제외하고 DirectWrite의 모든 기능이 포함되어 있습니다.

중요한 제한 사항

  • DWriteCore에는 다음 DirectWrite 기능이 포함되어 있지 않습니다.
    • 세션별 ​​글꼴
    • EUDC(최종 사용자 정의 문자) 글꼴
    • 글꼴 스트리밍 API
  • 저수준 렌더링 API 지원은 부분적입니다.
  • DWriteCore는 Direct2D와 상호 운용되지 않지만 다음을 사용할 수 있습니다. IDWriteGlyphRun분석 및 IDWriteBitmapRenderTarget.

MRT 코어

MRT Core는 최신 Windows의 간소화된 버전입니다. 자원 관리 시스템 Windows 앱 SDK의 일부로 배포됩니다.

중요한 제한 사항

  • .NET 프로젝트에서 앱이 이미 빌드된 경우 프로젝트 폴더에 복사하여 붙여넣은 리소스 파일은 F5에서 인덱싱되지 않습니다. 해결 방법으로 앱을 다시 빌드합니다. 보다 1503 발행 자세한 정보입니다.
  • .NET 프로젝트에서 Visual Studio UI를 사용하여 프로젝트에 리소스 파일을 추가하면 기본적으로 파일이 인덱싱되지 않을 수 있습니다. 보다 1786 발행 더 많은 정보를 위해서. 이 문제를 해결하려면 CSPROJ 파일에서 아래 항목을 제거하십시오.

    XML

    <ItemGroup>
        <Content Remove="<image file name>" />
    </ItemGroup>
    <ItemGroup>
        <PRIResource Remove="<resw file name>" />
    </ItemGroup>
    
  • 패키징되지 않은 C++ WinUI 앱의 경우 리소스 URI가 올바르게 빌드되지 않습니다. 이 문제를 해결하려면 vcxproj에 다음을 추가하세요.

    XML

    <!-- Add the following after <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> -->
    
    <PropertyGroup>
        <AppxPriInitialPath></AppxPriInitialPath>   
    </PropertyGroup>
    

전개

새로운 기능 및 업데이트

  • 다음을 통해 Windows 앱 SDK를 자동 초기화할 수 있습니다. WindowsPackageType project 속성을 사용하여 Windows 앱 SDK 런타임을 로드하고 Windows 앱 SDK API를 호출합니다. 보다 WinUI 3 앱 만들기 지시 사항은
  • 패키지되지 않은 앱은 독립 실행형 Windows 앱 SDK에 통합하여 Windows 앱 SDK를 배포할 수 있습니다. .exe 설치 프로그램을 기존 MSI 또는 설치 프로그램에 추가합니다. 자세한 내용은 다음을 참조하십시오. 패키징되지 않은 앱용 Windows 앱 SDK 배포 가이드.
  • 패키지되지 않은 .NET 앱은 .NET 래퍼를 사용할 수도 있습니다. 부트스트래퍼 API 런타임에 Windows 앱 SDK 프레임워크 패키지에 대한 종속성을 동적으로 사용합니다. .NET 래퍼에 대한 자세한 내용은 다음을 참조하세요. .NET 래퍼 라이브러리.
  • 패키지된 앱은 배포 API를 사용하여 모든 필수 패키지가 머신에 설치되어 있는지 확인하고 확인할 수 있습니다. 배포 API 작동 방식에 대한 자세한 내용은 다음을 참조하세요. 패키지 앱 배포 가이드.

중요한 제한 사항

  • 부트스트래퍼 API용 .NET 래퍼는 Windows 앱 SDK에 대한 액세스를 단순화하기 위해 패키징되지 않은 .NET 애플리케이션에서만 사용하기 위한 것입니다.
  • 완전 신뢰하거나 패키지 관리 제한된 기능에는 배포 API를 사용하여 기본 및 싱글톤 패키지 종속성을 설치할 수 있는 권한이 있습니다. 부분 신뢰 패키지 앱에 대한 지원은 이후 릴리스에서 제공될 예정입니다.
  • F5를 사용하여 x86 앱을 테스트할 때 DeploymentManager.초기화 x64 시스템에서 메소드를 실행하여 x64 프레임워크가 먼저 설치되었는지 확인하십시오. WindowsAppRuntimeInstall.exe. 그렇지 않으면 NOT_FOUND Visual Studio가 x64 프레임워크를 배포하지 않기 때문에 발생하는 오류이며 일반적으로 스토어 배포 또는 테스트용 로드를 통해 발생합니다.

기타 제한 사항 및 알려진 문제

  • 모든 CPU 빌드 구성에 대한 지원 없음: 언제 Windows 앱 SDK 추가 지원하는 기존 .NET 응용 프로그램 또는 구성 요소에 모든 CPU, 원하는 아키텍처를 지정해야 합니다. x86x64 or arm64.
  • .NET 5에서 .NET 6으로 업그레이드: Visual Studio UI에서 업그레이드할 때 빌드 오류가 발생할 수 있습니다. 이 문제를 해결하려면 프로젝트 파일의 TargetFrameworkPackage를 아래와 같이 수동으로 업데이트하세요.

    XML

        <TargetFramework>net6.0-windows10.0.19041.0</TargetFramework> 
    
  • C# UWP 도구가 설치되어 있지 않으면 C# 단일 프로젝트 MSIX 앱이 컴파일되지 않습니다. C# 단일 프로젝트 MSIX 프로젝트가 있는 경우 다음을 설치해야 합니다. C++(v14x) 유니버설 Windows 플랫폼 도구 선택적 구성 요소.
  • 여러 버전의 Visual Studio 2019가 설치된 경우 후속 언어 VSIX가 Visual Studio 2019에 설치되지 않습니다. 여러 버전의 Visual Studio 2019(예: 릴리스 및 미리 보기)를 설치한 다음 두 C++용 Windows 앱 SDK VSIX를 설치하는 경우  C#, 두 번째 설치가 실패합니다. 이 문제를 해결하려면 첫 번째 언어 VSIX 이후에 Visual Studio 2019용 단일 프로젝트 MSIX 패키징 도구를 제거하십시오. 보다 이 피드백 이 문제에 대한 추가 정보는
  • 당신이 원하는 경우 co_await 를 시청하여 이에 대해 더 많은 정보를 얻을 수 있습니다. DispatcherQueue.TryEnqueue 방법을 사용한 다음 이력서_전경 도우미 기능 WIL(Windows 구현 라이브러리):
    1. 다음에 대한 참조 추가 Microsoft.Windows.ImplementationLibrary NuGet 패키지.
    2. 추가 #include <wil/cppwinrt_helpers.h> 명령문을 코드 파일에 추가합니다.
    3.  wil::resume_foreground(your_dispatcher); 에 co_await 결과.

Microsoft에서 자세한 내용을 읽고 다운로드 링크를 찾으십시오. 여기에서 지금 확인해 보세요..

주제에 대한 추가 정보: 윈도우 앱 SDK 1.0.0, 위누이 3