Windows 앱 SDK에 대한 미리 보기 채널 릴리스 정보

Important

미리 보기 채널은 프로덕션 환경에서 사용할 수 없으며 미리 보기 릴리스를 사용하는 앱은 Microsoft 스토어에 게시할 수 없습니다.

미리 보기 채널은 예정된 다음 안정적인 릴리스에 대한 미리 보기를 제공합니다. 지정된 미리 보기 채널 릴리스와 안정적인 다음 릴리스 간에 주요 API 변경 내용이 있을 수 있습니다. 미리 보기 채널 릴리스에는 실험적 API가 포함되지 않습니다.

중요 링크:

버전 1.5 미리 보기1(1.5.0-preview1)

버전 1.5에 대한 미리 보기 채널의 최신 릴리스입니다.

기존 Windows App SDK 1.4(안정 채널에서) 앱에서 Nuget 패키지를 1.5.0-preview1로 업데이트할 수 있습니다( 패키지 업데이트 섹션 참조). NuGet 패키지 매니저를 사용하여 Visual Studio에 패키지 설치 및 관리.)

업데이트된 런타임 및 MSIX는 Windows 앱 SDK 대한 다운로드를 참조하세요.

XAML Islands 런타임 및 종료 업데이트

  • 스레드의 마지막 Xaml 창이 닫힌 경우 Xaml Islands 기반 앱의 경우 WinAppSDK 1.4와 WinAppSDK 1.5 간에 동작 차이가 있습니다.
    • WinAppSDK 1.4에서 Xaml 런타임은 스레드의 마지막 Xaml 창이 닫혀 있을 때 항상 스레드의 이벤트 루프를 종료합니다.
    • WinAppSDK 1.5에서:
      • 앱이 WinUI Desktop 앱인 경우 기본 동작은 WinAppSDK 1.4와 동일합니다.
      • DesktopWindowXamlSource("Xaml Islands") API에 Xaml을 사용하는 경우 이제 기본 동작은 Xaml이 스레드의 이벤트 루프를 자동으로 종료하지 않는 것입니다.
      • 두 모드 모두에서 Application.DispatcherShutdownMode 속성을 설정하여 이 동작을 변경할 수 있습니다.
    • 자세한 내용은 사용 가능한 경우 속성에 Application.DispatcherShutdownMode 대한 설명서를 참조하세요.
  • Xaml 런타임의 수명 동안 Xaml Islands 기반 앱의 경우 WinAppSDK 1.4와 WinAppSDK 1.5 간에 동작 차이가 있습니다.
    • WinAppSDK 1.4에서 지정된 스레드의 모든 WindowsXamlManager 개체와 DesktopWindowXamlSource 개체를 닫거나 종료하거나 DispatcherQueue 해당 스레드에서 실행이 종료되면 Xaml 런타임이 스레드에서 종료됩니다(단계 중에 DispatcherQueue.FrameworkShutdownStarting Xaml 런타임이 종료됨).
    • WinAppSDK 1.5에서 Xaml 런타임은 해당 스레드에서 실행되는 DispatcherQueue가 종료될 때만 스레드에서 종료됩니다(단계 중에 DispatcherQueue.FrameworkShutdownStarting Xaml 런타임이 종료됨).
    • 자세한 내용은 WindowsXamlManager 클래스에 대한 설명서(사용 가능한 경우)를 참조하십시오.

WinUI 지도 컨트롤

이제 WinUI Maps 컨트롤의 초기 릴리스를 사용할 수 있습니다. 이 컨트롤은 WebView2 및 Azure 지도 의해 구동되며 다음과 같은 기능을 제공합니다.

  • 지도 단추 또는 터치를 사용하여 이동 및 확대/축소
  • 지도의 스타일을 위성, 지형 또는 거리 보기로 변경합니다.
  • 개발자가 사용자 지정할 수 있는 아이콘이 있는 상호 작용 가능한 핀을 맵에 프로그래밍 방식으로 추가합니다.
  • 맵이 초기 로드의 중심이 되는 위치에 대한 개발자 사용자 지정
  • 이동, 확대/축소 및 지도 스타일에 대한 단추 숨기기 또는 표시를 통해 개발자를 제어합니다.

참고 항목

컨트롤을 Maps 사용하려면 Azure 지도 키가 필요합니다. 키를 만들려면 웹앱을 만들기 위한 Azure 지도 설명서 페이지를 참조하세요.

이 컨트롤은 Maps 완전히 새로운 기능이며 향후 방향을 평가해주시기 위해 여러분의 의견을 환영합니다!

WinAppSDK의 다른 새로운 기능

  • PublishSingleFile 배포 모델에 대한 지원이 추가되었습니다. PublishSingleFile에 대한 자세한 내용은 단일 파일 배포 설명서를 참조하세요 .

버그 수정

  • 프로젝션 DLL이 생성되지 않은 1.5-experimental2 릴리스의 문제를 해결했습니다. 자세한 내용은 GitHub문제 #4152을 참조하세요.
  • 텍스트 서식 팝업의 RichEditBox 줄임표 단추가 작업 목록을 제대로 표시하지 않는 문제를 해결했습니다. 자세한 내용은 GitHub문제 #9140을 참조하세요.
  • 키보드 가속기를 제대로 처리하지 못하는 문제를 해결 ListView 했습니다. 자세한 내용은 GitHub문제 #8063을 참조하세요.
  • 창을 닫는 데 사용할 AccessKey 때의 액세스 위반 문제를 해결했습니다. 자세한 내용은 GitHub문제 #8648을 참조하세요.
  • 내의 텍스트 맞춤에 MenuFlyoutItem 영향을 주는 문제를 해결했습니다 MenuBar. 자세한 내용은 GitHub문제 #8755을 참조하세요.
  • 강조 표시된 텍스트가 다시 표시되지 않는 문제를 해결했습니다기본 마우스 오른쪽 단추를 클릭할 때 강조 표시됨. 자세한 내용은 GitHub문제 #1801을 참조하세요.
  • 비활성 창이 닫혔을 때 앱이 충돌하는 문제를 해결했습니다. 자세한 내용은 GitHub문제 #8913을 참조하세요.
  • 마우스 가운데 단추를 사용하여 스크롤하고 그 직후 왼쪽 단추를 클릭할 때 애플리케이션을 중단시킬 수 있는 문제를 해결했습니다. 자세한 내용은 GitHub문제 #9233을 참조하세요.

1.5.0-preview1의 새 API

버전 1.5-preview1에는 안정적인 1.4 릴리스와 비교하여 다음과 같은 새로운 API가 포함되어 있습니다.

Microsoft.Graphics.DirectX
 
    DirectXPixelFormat
        A4B4G4R4
Microsoft.UI.Input
 
    FocusNavigationReason
    FocusNavigationRequest
    FocusNavigationRequestEventArgs
    FocusNavigationResult
    InputFocusController
        DepartFocus
        NavigateFocusRequested
 
    InputFocusNavigationHost
Microsoft.UI.Xaml
 
    Application
        DispatcherShutdownMode

    DebugSettings
        LayoutCycleDebugBreakLevel
        LayoutCycleTracingLevel

    DispatcherShutdownMode
    LayoutCycleDebugBreakLevel
    LayoutCycleTracingLevel
Microsoft.UI.Xaml.Controls
 
    MapControl
    MapControlMapServiceErrorOccurredEventArgs
    MapElement
    MapElementClickEventArgs
    MapElementsLayer
    MapIcon
    MapLayer
    SelectorBar
    SelectorBarItem
    SelectorBarSelectionChangedEventArgs
    WebView2
        EnsureCoreWebView2Async
        EnsureCoreWebView2Async
Microsoft.UI.Xaml.Hosting
 
    WindowsXamlManager
        GetForCurrentThread
        XamlShutdownCompletedOnThread
 
    XamlShutdownCompletedOnThreadEventArgs
Microsoft.Web.WebView2.Core
 
    CoreWebView2
        FrameId

    CoreWebView2AcceleratorKeyPressedEventArgs
        IsBrowserAcceleratorKeyEnabled

    CoreWebView2BrowserExtension
    CoreWebView2BrowsingDataKinds
        ServiceWorkers

    CoreWebView2CustomSchemeRegistration
        CoreWebView2CustomSchemeRegistration (String)
        AllowedOrigins
        SchemeName

    CoreWebView2Environment
        GetProcessExtendedInfosAsync

    CoreWebView2EnvironmentOptions
        AreBrowserExtensionsEnabled
        CustomSchemeRegistrations

    CoreWebView2Frame
        FrameId

    CoreWebView2FrameInfo
        FrameId
        FrameKind
        ParentFrameInfo

    CoreWebView2FrameKind
    CoreWebView2MouseEventKind
        NonClientRightButtonDown
        NonClientRightButtonUp

    CoreWebView2NavigationKind
    CoreWebView2NavigationStartingEventArgs
        NavigationKind

    CoreWebView2NewWindowRequestedEventArgs
        OriginalSourceFrameInfo

    CoreWebView2ProcessExtendedInfo
    CoreWebView2Profile
        AddBrowserExtensionAsync
        Delete
        Deleted
Microsoft.Windows.Management.Deployment
 
    AddPackageOptions
    EnsureReadyOptions
    PackageDeploymentContract
    PackageDeploymentManager
    PackageDeploymentProgress
    PackageDeploymentProgressStatus
    PackageDeploymentResult
    PackageDeploymentStatus
    PackageRuntimeManager
    PackageSet
    PackageSetItem
    PackageSetItemRuntimeDisposition
    PackageSetRuntimeDisposition
    PackageVolume
    ProvisionPackageOptions
    RegisterPackageOptions
    RemovePackageOptions
    StagePackageOptions
    StubPackageOption
Microsoft.Windows.Widgets.Feeds.Providers
 
    CustomQueryParametersRequestedArgs
    CustomQueryParametersUpdateOptions
    FeedDisabledArgs
    FeedEnabledArgs
    FeedManager
    FeedProviderDisabledArgs
    FeedProviderEnabledArgs
    FeedProviderInfo
    IFeedManager
    IFeedProvider

버전 1.4 미리 보기 2(1.4.0-preview2)

버전 1.4용 미리보기 채널의 최신 릴리스입니다.

기존 Windows App SDK 1.3(안정 채널에서) 앱에서 Nuget 패키지를 1.4.0-preview2로 업데이트할 수 있습니다( 패키지 업데이트 섹션 참조). NuGet 패키지 매니저를 사용하여 Visual Studio에 패키지 설치 및 관리.)

업데이트된 런타임 및 MSIX는 Windows 앱 SDK 대한 다운로드를 참조하세요.

XAML Islands는 더 이상 실험적이 아닙니다.

XAML Islands 및 기본 ContentIslands 플랫폼은 더 이상 실험적이 아닙니다.

  • 현재 XAML Islands는 C++ 앱에서만 사용하도록 테스트됩니다. 이 릴리스에는 WPF 또는 WinForms에서 사용하기 위한 편리한 래퍼 요소가 포함되지 않습니다.
  • DesktopWindowXamlSource 및 관련 형식이 XAML Islands용 Microsoft.UI.Xaml.Hosting 네임스페이스에 추가되었습니다. XamlRoot.ContentIslandEnvironment 요소에 대한 기본 Island 정보에 액세스하는 데 도움이 되도록 가 추가되었습니다.
  • Microsoft.UI.Content 네임스페이스 및 Microsoft.UI.Input 네임스페이스에 XAML Islands에 대한 기본 지원 또는 XAML 없이 이 ContentIslands 기능을 사용하기 위한 많은 새로운 형식이 도입되었습니다.
  • Island 시나리오에 대한 Microsoft.UI.Input.DragDrop 네임스페이스에 새로운 DragDropManager (관련 형식 포함)이 추가되었습니다.

ItemsView 업데이트

버전 1.4-preview1에서 도입된 새 ItemsView 클래스는 새 속성 및 새 지원 클래스로 실질적으로 업데이트되었습니다.

  • ItemsView 컨트롤에 데이터 컬렉션이 표시됩니다. ItemsViewListViewGridView 컨트롤과 유사하지만 ItemsRepeater, ScrollView, ItemContainerItemCollectionTransitionProvider 구성 요소를 사용하여 구축됩니다. 사용자 지정 Layout 또는 ItemCollectionTransitionProvider 구현을 연결하는 고유한 기능을 제공합니다. 또 다른 주요 이점은 항목 선택을 유지하면서 즉석에서 레이아웃을 전환하는 기능입니다. 내부 ScrollView 컨트롤은 프로그래밍 스크롤 중 애니메이션을 제어하는 기능과 같은 ListView/GridViewScrollViewer 컨트롤에서 사용할 수 없는 기능도 제공합니다.
    • ItemsRepeater 의 새 ItemTransitionProvider 속성(및 새 ItemsView 컨트롤)을 사용하면 해당 컨트롤의 전환 애니메이션을 제어할 ItemCollectionTransitionProvider 개체를 지정할 수 있습니다. CreateDefaultItemTransitionProvider 또한 컨트롤에 Layout명시적으로 제공하지 않는 경우 레이아웃 개체가 대체 전환을 제공할 수 있도록 하는 메서드가 ItemsView 추가되었습니다.
    • 항목의 레이아웃 방향(있는 경우)이 원본 컬렉션의 인덱스 기반이 되는 위치에 대한 새 IndexBasedLayoutOrientation 속성 Layout 입니다. 기본값은 IndexBasedLayoutOrientation.None입니다. 사용자 지정 레이아웃은 새(보호된) SetIndexBasedLayoutOrientation 메서드를 호출하여 이 속성을 설정합니다.
    • VisibleRect 속성은 VirtualizingLayoutContext 연결된 뷰포트 내의 표시되는 뷰포트 사각형을 FrameworkElementLayout가져옵니다. 보호된 가상 VirtualizingLayoutContext.VisibleRectCore 메서드를 재정의하여 속성에서 VisibleRect 반환되는 값을 제공할 수 있습니다.
  • LinedFlowLayout 클래스는 일반적으로 컬렉션 컨트롤의 항목을 배치하는 ItemsView 데 사용됩니다. 그림 컬렉션을 표시하는 데 특히 유용합니다. 이렇게 하려면 왼쪽에서 오른쪽으로, 위쪽에서 아래쪽으로 높이가 같은 줄로 배치합니다. 그림이 가로 선을 채운 다음 다음 줄로 줄 바꿈합니다. 그림이 왼쪽 가장자리와 오른쪽 가장자리에서 잘려서 선에 맞을 수 있습니다. 또한 스트레칭 모드를 사용할 때 가로로 확장하고 위쪽 및 아래쪽 가장자리에서 잘라 선을 채울 수 있습니다.

WinAppSDK의 새로운 기능 및 업데이트

  • Popup/FlyoutBase.IsConstrainedToRootBounds = false 는 이제 지원되므로 팝업/플라이아웃이 부모 창의 범위를 벗어나 확장할 수 있습니다. SystemBackdrop 이러한 제한되지 않은 팝업에 아크릴이 있는 것을 지원하기 위해 이러한 형식에 속성이 추가되었습니다. 기본적으로 메뉴에는 아크릴이 있는 데 사용합니다.
  • ClosedDesktopAcrylicController, MicaControllerFrameworkClosed, IsClosed 을 추가하여 객체/thread 정지 시 취급성을 개선하였습니다.
  • DesktopAcrylicController.Kind 이제 일부 표준 아크릴 모양 중에서 선택하도록 설정할 수 있습니다.
  • DispatcherQueue 에는 더 잘 구성된 종료를 용이하게 하고 아일랜드를 사용하는 앱이 표준 지원 이벤트 루프를 쉽게 실행할 수 있도록 몇 가지 새로운 이벤트 및 도우미가 있습니다.
  • InputNonClientPointerSource Microsoft.UI.Input 네임스페이스에서 사용자 지정 제목 표시줄 시나리오를 사용하여 비 클라이언트 영역 영역을 정의할 수 있습니다. 코드는 해당 지역에 대한 가리키기 및 클릭 이벤트와 같은 해당 이벤트에 등록할 수 있습니다.
  • AppWindow 에는 새 도우미를 가져와서 연결할 수 있는 도우미가 있습니다 DispatcherQueue.
  • TreeView.SelectionChanged 이벤트를 사용하면 사용자 또는 코드 숨김이 컨트롤에서 선택한 노드 집합을 변경할 때 개발자가 응답할 수 있습니다 TreeView .
  • ScrollView 컨트롤은 .에 대한 새로운 대안을 ScrollViewer제공합니다. 이 새 컨트롤은 동작 및 API에서 기존 ScrollViewer 컨트롤과 고도로 정렬되지만 애니메이션 기반 보기 변경과 같은 새로운 기능을 기반으로 InteractionTracker하며 전체 기능을 ItemsRepeater보장하도록 설계되었습니다. 더 유연한 ScrollViewer를 참조하세요 . 문제 #108 · 자세한 내용은 microsoft/microsoft-ui-xaml(github.com) 을 참조하세요. 을 비롯한 ScrollPresenter다양한 새 형식이 전체 ScrollView 모델의 일부입니다.
  • AnnotatedScrollBar 컨트롤은 항목의 큰 컬렉션을 탐색하는 쉬운 방법을 제공하여 일반 스크롤 막대의 기능을 확장합니다. 이는 표식 역할을 하는 레이블이 있는 클릭 가능한 레일을 통해 수행됩니다. 또한 클릭 가능한 레일을 마우스로 가리킬 때 도구 설명을 표시하여 스크롤 가능한 콘텐츠를 보다 세밀하게 이해할 수 있습니다.

New APIs in 1.4.0-preview2

버전 1.4-preview2에는 이전 1.4-preview1 릴리스와 비교하여 다음과 같은 새로운 API가 포함되어 있습니다:

Microsoft.UI
 
    ClosableNotifierHandler
    IClosableNotifier
Microsoft.UI.Composition.SystemBackdrops
 
    DesktopAcrylicController
        Closed
        FrameworkClosed
        IsClosed
        Kind
 
    DesktopAcrylicKind
    MicaController
        Closed
        FrameworkClosed
        IsClosed
Microsoft.UI.Content
 
    ContentCoordinateConverter
    ContentCoordinateRoundingMode
    ContentDeferral
    ContentEnvironmentSettingChangedEventArgs
    ContentEnvironmentStateChangedEventArgs
    ContentIsland
    ContentIslandAutomationProviderRequestedEventArgs
    ContentIslandEnvironment
    ContentIslandStateChangedEventArgs
    ContentLayoutDirection
    ContentSite
    ContentSiteEnvironment
    ContentSiteEnvironmentView
    ContentSiteRequestedStateChangedEventArgs
    ContentSiteView
    ContentSizePolicy
    DesktopChildSiteBridge
    DesktopSiteBridge
    IContentSiteBridge
Microsoft.UI.Dispatching
 
    DispatcherExitDeferral
    DispatcherQueue
        EnqueueEventLoopExit
        EnsureSystemDispatcherQueue
        FrameworkShutdownCompleted
        FrameworkShutdownStarting
        RunEventLoop
        RunEventLoop
 
    DispatcherQueueController
        ShutdownQueue
 
    DispatcherRunOptions
Microsoft.UI.Input
 
    CharacterReceivedEventArgs
    ContextMenuKeyEventArgs
    FocusChangedEventArgs
    InputActivationListener
        GetForIsland
 
    InputFocusChangedEventArgs
    InputFocusController
    InputKeyboardSource
        CharacterReceived
        ContextMenuKey
        GetCurrentKeyState
        GetForIsland
        GetKeyState
        KeyDown
        KeyUp
        SystemKeyDown
        SystemKeyUp
 
    InputNonClientPointerSource
    InputPointerSource
        GetForIsland
 
    InputPreTranslateKeyboardSource
    KeyEventArgs
    NonClientCaptionTappedEventArgs
    NonClientPointerEventArgs
    NonClientRegionKind
    NonClientRegionsChangedEventArgs
    PhysicalKeyStatus
    VirtualKeyStates
Microsoft.UI.Input.DragDrop
 
    DragDropManager
    DragDropModifiers
    DragInfo
    DragOperation
    DragUIContentMode
    DragUIOverride
    DropOperationTargetRequestedEventArgs
    IDropOperationTarget
Microsoft.UI.Windowing
 
    AppWindow
        AssociateWithDispatcherQueue
        Create
        DispatcherQueue
Microsoft.UI.Xaml
 
    XamlRoot
        ContentIslandEnvironment
Microsoft.UI.Xaml.Automation.Peers
 
    ItemsViewAutomationPeer
Microsoft.UI.Xaml.Controls
 
    AnnotatedScrollBar
    AnnotatedScrollBarDetailLabelRequestedEventArgs
    AnnotatedScrollBarLabel
    AnnotatedScrollBarScrollingEventArgs
    AnnotatedScrollBarScrollingEventKind
    IndexBasedLayoutOrientation
    ItemCollectionTransition
    ItemCollectionTransitionCompletedEventArgs
    ItemCollectionTransitionOperation
    ItemCollectionTransitionProgress
    ItemCollectionTransitionProvider
    ItemCollectionTransitionTriggers
    ItemsRepeater
        ItemTransitionProvider
        ItemTransitionProviderProperty
 
    ItemsView
    ItemsViewItemInvokedEventArgs
    ItemsViewSelectionChangedEventArgs
    ItemsViewSelectionMode
    Layout
        CreateDefaultItemTransitionProvider
        IndexBasedLayoutOrientation
        SetIndexBasedLayoutOrientation
 
    LinedFlowLayout
    LinedFlowLayoutItemCollectionTransitionProvider
    LinedFlowLayoutItemsInfoRequestedEventArgs
    LinedFlowLayoutItemsJustification
    LinedFlowLayoutItemsStretch
    ScrollingAnchorRequestedEventArgs
    ScrollingAnimationMode
    ScrollingBringingIntoViewEventArgs
    ScrollingChainMode
    ScrollingContentOrientation
    ScrollingInputKinds
    ScrollingInteractionState
    ScrollingRailMode
    ScrollingScrollAnimationStartingEventArgs
    ScrollingScrollBarVisibility
    ScrollingScrollCompletedEventArgs
    ScrollingScrollMode
    ScrollingScrollOptions
    ScrollingSnapPointsMode
    ScrollingZoomAnimationStartingEventArgs
    ScrollingZoomCompletedEventArgs
    ScrollingZoomMode
    ScrollingZoomOptions
    ScrollView
    TreeView
        SelectionChanged
 
    TreeViewSelectionChangedEventArgs
    VirtualizingLayoutContext
        VisibleRect
        VisibleRectCore
Microsoft.UI.Xaml.Controls.Primitives
 
    FlyoutBase
        SystemBackdrop
        SystemBackdropProperty
 
    IScrollController
    IScrollControllerPanningInfo
    Popup
        SystemBackdrop
        SystemBackdropProperty
 
    RepeatedScrollSnapPoint
    RepeatedZoomSnapPoint
    ScrollControllerAddScrollVelocityRequestedEventArgs
    ScrollControllerPanRequestedEventArgs
    ScrollControllerScrollByRequestedEventArgs
    ScrollControllerScrollToRequestedEventArgs
    ScrollPresenter
    ScrollSnapPoint
    ScrollSnapPointBase
    ScrollSnapPointsAlignment
    SnapPointBase
    ZoomSnapPoint
    ZoomSnapPointBase
Microsoft.UI.Xaml.Hosting
 
    DesktopWindowXamlSource
    DesktopWindowXamlSourceGotFocusEventArgs
    DesktopWindowXamlSourceTakeFocusRequestedEventArgs
    WindowsXamlManager
    XamlSourceFocusNavigationReason
    XamlSourceFocusNavigationRequest
    XamlSourceFocusNavigationResult

버전 1.4 미리 보기 1 (1.4.0-preview1)

버전 1.4용 미리보기 채널의 최신 릴리스입니다.

기존 Windows App SDK 1.3(안정 채널에서) 앱에서 Nuget 패키지를 1.4.0-preview1로 업데이트할 수 있습니다( 패키지 업데이트 섹션 참조). NuGet 패키지 매니저를 사용하여 Visual Studio에 패키지 설치 및 관리.)

업데이트된 런타임 및 MSIX는 Windows 앱 SDK 대한 다운로드를 참조하세요.

위젯들 업데이트

위젯 공급자가 구현하기 위해 IWidgetProvider2, IWidgetProviderAnalyticsIWidgetProviderErrors의 세 가지 새로운 인터페이스가 추가되었습니다. IWidgetProvider2 제공자는 사용자가 호출한 사용자 지정 작업에 응답할 수 있으며, 이는 제1자 위젯에서 사용할 수 있는 것과 동일합니다. 이 IWidgetProviderAnalyticsIWidgetProviderErrors 인터페이스는 제공자가 위젯에 대한 원격 측정을 수집하는 데 사용되며, 위젯에 대한 분석 및 실패 이벤트는 해당 위젯 제공자에게 전달됩니다. 이 WidgetCustomizationRequestedArgs, WidgetAnalyticsInfoReportedArgs, WidgetErrorInfoReportedArgs 클래스는 새로운 기능을 지원하기 위해 관련 정보를 전달하는 데 사용됩니다.

WinAppSDK의 새로운 기능

  • Win32 WinRT 앱이 UWP의 Accessibility Settings 클래스와 유사하게 시스템의 High Contrast 설정이 변경된 시점을 감지할 수 있는 새로운 ThemeSettings 클래스입니다. 자세한 내용은 GitHub의 ThemeSettings API spec를 참조하십시오.
  • Popup/FlyoutBase.ShouldConstrainToRootBounds 는 이제 도구 설명, 메뉴 및 기타 팝업이 기본 창의 범위를 벗어나 확장할 수 있도록 지원됩니다. 미리 보기 1은 아직 팝업/플라이아웃에서 아크릴 또는 다른 SystemBackdrops를 완전히 지원하지 않습니다. 이에 대한 추가 API 및 구현은 다음 1.4 릴리스에 포함됩니다.
  • AccessKeyManager.EnterDisplayMode 는 제공된 루트의 현재 포커스가 있는 요소에 대한 액세스 키를 표시하는 새로운 메서드입니다. 액세스 키는 그림판 Alt 키를 눌러 컨트롤에 해당하는 키를 표시하는 등 명령을 호출하는 키 팁을 표시할 때 "표시 모드"에 있습니다. 이 메서드를 사용하면 프로그래밍 방식으로 표시 모드를 입력할 수 있습니다.
  • Application.ResourceManagerRequested 에서는 기본값 IResourceManager 이 작동하지 않는 경우 시나리오에 대한 리소스 URI를 확인하는 다른 ResourceManager 메커니즘을 제공합니다. 자세한 내용은 GitHub의 Application.ResourceManagerRequested API 사양 을 참조하세요.
  • 이 클래스와 해당 구체적인 ItemsView 클래스라는 새 목록 컨트롤이 ItemContainer 도입되었습니다. ItemContainer 는 원하는 콘텐츠를 쉽게 래핑하고 컬렉션 제어 시나리오에 사용할 ItemsView 수 있는 기본 제공 선택 상태 및 시각적 개체가 있는 경량 컨테이너입니다. ItemsView 는 아직 미리 보기 1에서 실험적으로 표시되어 있지만 다음 1.4 릴리스에 포함됩니다.
  • WebView2 SDK 버전은 1661.34에서 1823.32로 업데이트되었습니다.

1.4.0-preview1의 새 API

버전 1.4-preview1에는 안정적인 1.3 릴리스와 비교하여 다음과 같은 새로운 API가 포함되어 있습니다.

Microsoft.UI.System
 
    ThemeSettings
Microsoft.UI.Xaml
 
    Application
        ResourceManagerRequested
 
    ResourceManagerRequestedEventArgs
Microsoft.UI.Xaml.Automation.Peers
 
    ItemContainerAutomationPeer
Microsoft.UI.Xaml.Controls
 
    ItemContainer
Microsoft.UI.Xaml.Controls.Primitives
 
    CommandBarFlyoutCommandBar
        SystemBackdrop
        SystemBackdropProperty
Microsoft.UI.Xaml.Input
 
    AccessKeyManager
        EnterDisplayMode
Microsoft.Web.WebView2.Core
 
    CoreWebView2
        LaunchingExternalUriScheme
        MemoryUsageTargetLevel
 
    CoreWebView2File
    CoreWebView2LaunchingExternalUriSchemeEventArgs
    CoreWebView2MemoryUsageTargetLevel
    CoreWebView2PermissionKind
        WindowManagement
 
    CoreWebView2Profile
        CookieManager
        IsGeneralAutofillEnabled
        IsPasswordAutosaveEnabled
 
    CoreWebView2Settings
        IsReputationCheckingRequired
 
    CoreWebView2WebMessageReceivedEventArgs
        AdditionalObjects
Microsoft.Windows.Widgets.Providers
 
    IWidgetProvider2
    IWidgetProviderAnalytics
    IWidgetProviderErrors
    WidgetAnalyticsInfoReportedArgs
    WidgetCustomizationRequestedArgs
    WidgetErrorInfoReportedArgs

버전 1.3 미리 보기 1 (1.3.0-preview1)

버전 1.3을 위한 미리보기 채널의 최신 릴리스입니다. 이 릴리스에는 WinAppSDK의 새로운 기능과 몇 가지 성능, 보안, 접근성 및 안정성 버그 수정에 대한 미리 보기가 포함되어 있습니다.

기존 Windows App SDK 1.2(안정 채널에서) 앱에서 Nuget 패키지를 1.3.0-preview1로 업데이트할 수 있습니다( 패키지 업데이트 섹션 참조). NuGet 패키지 매니저를 사용하여 Visual Studio에 패키지 설치 및 관리.)

업데이트된 런타임 및 MSIX는 Windows 앱 SDK 대한 다운로드를 참조하세요.

XAML 배경 API

XAML 창에 기본 제공된 속성을 사용하면 이제 WinUI 3 앱에서 Mica & Background Acrylic 배경을 더 쉽게 사용할 수 있습니다. 이 Windows.SystemBackdrop 속성에 대한 자세한 내용은 GitHub의 Xaml Backdrop API 사양를 참조하십시오.

public MainWindow()
{
    this.InitializeComponent();

    this.SystemBackdrop = new MicaBackdrop();
}

Window.AppWindow

보일러 플레이트 코드의 여러 줄을 교체하면 이제 윈도우에서Window.AppWindow까지 앱윈도우 API를 직접 사용할 수 있습니다. 추가 배경 및 사용 정보는 GitHub의 Window.AppWindow API 사양 을 참조하세요.

WinAppSDK 전체의 새로운 기능

  • ApplicationModel.DynamicDependency: PackageDependency.PackageGraphRevisionId 사용되지 않는 MddGetGenerationId를 대체합니다.
  • 환경 관리자: EnvironmentManager.AreChangesTracked 애플리케이션에서 환경 관리자의 변경 내용을 추적할 수 있는지 여부를 알려 줍니다. 자세한 내용은 GitHub의 Environment Manager API 사양 참조하십시오.
  • MRT Core: 새 이벤트로, Application.ResourceManagerInitializing 앱에서 자체 인터페이스 구현 IResourceManager 을 제공할 수 있으며, WinUI에서 리소스 URI를 확인하는 데 사용하는 ResourceManager에 액세스할 수 있습니다. 자세한 내용은 GitHub의 IROSManager API spec를 참조하십시오.
  • 최신 실험적 VSIX를 사용하면 이제 프로젝트 파일 대신 Visual Studio 메뉴를 통해 패키지되지 않은 상태로 앱을 변환할 수 있습니다.
  • 이제 참조된 Static/ThemeResource 조회를 확인할 수 없는 경우 새 이벤트가 발생 DebugSettings.XamlResourceReferenceFailed 합니다. 이 이벤트는 정적 & ThemeResource 조회 실패를 디버깅할 수 있도록 프레임워크에서 해당 키를 검색한 위치를 자세히 설명하는 추적에 액세스할 수 있도록 합니다. 자세한 내용은 GitHub에서 API 사양 및 문제 4972, 23506073 을 참조하세요.
  • 배포: Windows 앱 런타임 DeploymentRepairOptions 을 관리하고 복구하기 위해 이제 의 DeploymentManager일부로 사용할 수 있습니다. 자세한 내용은 GitHub의 배포 API 사양 의 복구 섹션을 참조하세요.

알려진 문제

  • 피벗 컨트롤은 XAML 구문 분석 오류로 인해 런타임 충돌이 발생합니다. 자세한 내용은 GitHub의 #8160호를 참조하십시오.
  • DatePicker 또는 TimePicker 플라이아웃이 열리면 앱이 충돌합니다.
  • 1.3 릴리스에서 도입된 WindowsAppRuntime.ReleaseInfoWindowsAppRuntime.RuntimeInfo API는 중요한 버그가 포함되어 있으므로 아직 지원되지 않습니다.

버전 1.2 미리 보기 2(1.2.0-preview2)

버전 1.2용 미리보기 채널의 최신 릴리스입니다.

기존 Windows App SDK 1.1(안정 채널에서) 앱에서 Nuget 패키지를 1.2.0-preview2로 업데이트할 수 있습니다( 패키지 업데이트 섹션 참조). NuGet 패키지 매니저를 사용하여 Visual Studio에 패키지 설치 및 관리.)

업데이트된 런타임 및 MSIX는 Windows 앱 SDK 대한 다운로드를 참조하세요.

Important

Visual Studio 2019 및 .NET 5는 더 이상 C# 앱 구축에 지원되지 않습니다( Windows App SDK 1.2에서 C# WinRT 2.0로이동 참조). Visual Studio 2022 및 .NET SDK 버전 6.0.401 이상, 6.0.304, 6.0.109 중 하나가 필요합니다.

.NET SDK 버전을 업데이트하려면 최신 버전의 Visual Studio 2022를 설치하거나 .NET 다운로드를 방문 하세요. 필수 .NET SDK 버전 없이 NuGet 패키지를 업데이트할 때 "이 버전의 WindowsAppSDK에는 .NET 6+ 및 WinRT.Runtime.dll 버전 2.0 이상이 필요합니다."와 같은 오류가 표시됩니다. 프로젝트를 .NET 5.0에서 .NET 6.0으로 업데이트하려면 프로젝트 파일을 열고 "TargetFramework"를 net6.0 적절한 값(예: )으로 net6.0-windows10.0.19041.0변경하고 "대상 OS 버전"을 변경합니다.

Windows의 타사 위젯

위젯 보드는 Windows 11에서 처음 도입되었으며 자사 위젯을 표시하는 것으로 제한되었습니다. 위젯은 위젯 보드에 텍스트와 그래픽을 표시하는 작은 UI 컨테이너이며 장치에 설치된 앱과 연결됩니다. Windows 앱 SDK 타사 개발자는 이제 패키지된 Win32 앱에 대한 위젯을 만들고 Windows 11 위젯 보드에서 로컬로 테스트할 수 있습니다.

위젯에 대한 자세한 내용은 위젯 개요를 확인하십시오.

앱용 위젯 개발을 시작하려면 위젯 서비스 공급자 개발 문서 및 위젯 설계 기본사항 에서 전제조건, 지침 및 모범사례를 확인하십시오.

이 릴리스의 필수 구성 요소는 다음과 같습니다.

  • 개발 머신에서 사용하도록 설정된 개발자 모드입니다.
  • 개발 컴퓨터는 위젯 보드 버전 521.20060.1205.0 이상을 사용하는 WIP(Windows 참가자 프로그램) 개발 채널에서 Windows 버전을 실행하고 있습니다.

위젯을 개발할 때 알려진 제한 사항

  • 타사 위젯은 이 미리 보기 릴리스에 대해 WIP에 등록된 디바이스에서만 로컬로 테스트할 수 있습니다. Windows 앱 SDK 1.2.0에서 Windows의 소매 버전 사용자는 Microsoft Store에서 제공된 앱 버전을 통해 3P 위젯을 획득하기 시작할 수 있습니다.
  • 위젯은 패키지된 Win32 앱에 대해서만 만들 수 있습니다. PWA(Progressive Web Apps) 위젯은 Microsoft Edge 108의 일부로 지원될 계획입니다.

.NET을 사용하여 개발된 앱에 대한 트리밍

.NET 개발자는 이제 잘려진 WinAppSDK 앱을 게시할 수 있습니다. CsWinRT 2.0을 사용하면 WinAppSDK에 분산된 C#/WinRT 프로젝션을 이제 트리밍할 수 있습니다. 잘려진 앱을 게시하면 트리밍 가능한 이진 파일에서 사용되지 않는 코드를 제거하여 앱의 디스크 공간을 줄일 수 있습니다. 앱에서 시작 성능이 향상될 수도 있습니다. 기본 헬로 월드 앱을 통해 게시된 트리밍 시 디스크 공간이 최대 80% 향상되고 시작 성능이 7% 향상되었습니다. WinUI 갤러리를 사용하면 디스크 공간이 최대 45% 향상되었습니다.

트리밍, 트리밍 제한 사항(예: 트리밍 가능한 형식에 대한 리플렉션) 및 트리밍 경고를 사용하도록 설정하는 방법에 대한 자세한 내용은 자체 포함 배포 및 실행 파일 트리밍을 참조 하세요. 개발자는 트리밍 후 앱을 철저히 테스트하여 모든 것이 예상대로 작동하는지 확인해야 합니다. 자세한 내용은 GitHub에서 발행되는 2478를 확인하십시오.

DisplayInformation

이제 Win32 앱은 WinAppSDK의 DisplayInformation 클래스를 통해 HDR(High Dynamic Range)을 지원할 수 있습니다. DisplayInformation 클래스를 사용하면 애플리케이션 보기에 대한 표시 관련 정보를 모니터링할 수 있습니다. 여기에는 클라이언트가 보기가 상주하는 디스플레이에 영향을 주는 애플리케이션 보기의 변경 내용과 애플리케이션 보기에 영향을 줄 수 있는 디스플레이의 변경 내용을 모니터링할 수 있는 이벤트가 포함됩니다.

WinUI 3의 문제 해결

  • DesktopAcrylicController를 통한 아크릴 배경 자료는 이제 Windows 10 앱에서 지원됩니다. 자세한 내용은 GitHub에서 발행되는 7112를 확인하십시오.
  • App.UnhandledException이 애플리케이션으로 라우팅되지 않는 문제를 해결했습니다. 자세한 내용은 GitHub에서 발행되는 5221를 확인하십시오.
  • ListView 스타일이 회귀하고 WinAppSDK 1.1에서 변경되는 문제를 해결했습니다. 자세한 내용은 GitHub에서 발행되는 7666를 확인하십시오.

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

Important

프로젝트에서 WinAppSDK 1.2를 참조하는 경우 다음과 유사한 오류가 표시될 수 있습니다. "검색된 패키지 다운그레이드: Microsoft.Windows.SDK.BuildTools를 10.0.22621.1에서 10.0.22000.194로", 앱 프로젝트 및 WinAppSDK 패키지의 패키지에 대한 호환되지 않는 참조로 인해 발생합니다. 이 문제를 해결하려면 프로젝트의 참조를 Microsoft.Windows.SDK.BuildTools의 최신 호환 버전으로 업데이트하거나 프로젝트에서 참조를 제거하면 됩니다. 프로젝트에서 제거하면 WinAppSDK 패키지에서 호환되는 버전을 암시적으로 참조합니다.

  • Arm64 Visual Studio 를 사용한 빌드는 현재 지원되지 않습니다.
  • 부트스트래퍼 및 실행 취소된 RegFree WinRT 자동 이니셜라이저 기본값은 실행 파일을 생성하는 프로젝트에 대해서만 설정됩니다(OutputType=Exe 또는 WinExe). 이렇게 하면 기본적으로 클래스 라이브러리 DLL 및 기타 실행 파일이 아닌 파일에 자동 이니셜라이저를 추가할 수 없습니다.
    • 실행 불가능 파일에 자동 이니셜라이저가 필요한 경우(예: 부트스트래퍼를 초기화하지 않는 제네릭 실행 파일에 의해 로드된 테스트 DLL) 또는 통해 <WindowsAppSdkBootstrapInitialize>true</WindowsAppSdkBootstrapInitialize><WindowsAppSdkUndockedRegFreeWinRTInitialize>true</WindowsAppSdkUndockedRegFreeWinRTInitialize>프로젝트에서 자동 이니셜라이저를 명시적으로 사용하도록 설정할 수 있습니다.
  • 버전 정보 API(ReleaseInfo 및 RuntimeInfo)를 호출할 수 있지만 버전 0(실제 버전 정보가 아님)을 반환합니다.

버전 1.2 미리 보기 1 (1.2.0-preview1)

기존 Windows App SDK 1.1(안정 채널에서) 앱에서 Nuget 패키지를 1.2.0-preview1로 업데이트할 수 있습니다( 패키지 업데이트 섹션 참조). NuGet 패키지 매니저를 사용하여 Visual Studio에 패키지 설치 및 관리.)

업데이트된 런타임 및 MSIX는 Windows 앱 SDK 대한 다운로드를 참조하세요.

WinUI 3

WinUI 3 앱은 MediaPlayerElementMediaTransportControls Media Playback 컨트롤로 오디오 및 비디오를 재생할 수 있습니다. 미디어 컨트롤을 사용하는 방법과 시기에 대한 자세한 내용은 미디어 플레이어를 참조 하세요.

WinUI 3은 WinUI 2.8의 최신 컨트롤, 스타일 및 동작으로 업데이트되었습니다. 이러한 업데이트에는 InfoBadge 컨트롤 추가, 접근성 및 고대비 모드 개선 사항, 컨트롤 전체의 버그 수정이 포함됩니다. 자세한 내용은 WinUI 2.7WinUI 2.8에 대한 릴리스 정보를 참조하세요.

알려진 문제

ListView 스타일이 회귀되고 WinAppSDK 1.1에서 변경되었습니다.

알림

AppNotificationBuilder 는 앱 알림을 만들고 정의하기 위한 XML 페이로드의 대안으로 도입되었습니다.

사용량 정보는 GitHub의 AppNotificationBuilder 사양 을 참조하세요.

또한 로컬 앱 알림을 주고 받는 데스크톱 Windows 응용 프로그램을 만드는 방법에 대한 예는 Windows App SDK의Quickstart: App 알림을 참조하십시오.

주요 변경 내용

푸시 알림의 경우 채널 요청을 호출할 때 앱은 Azure 앱 ID 대신 Azure 개체 ID를 사용해야 합니다. Azure Object ID 찾기에 대한 자세한 내용은 Quickstart: Windows App SDK에서 Push 알림을 참조하십시오.

해결된 문제

PushNotificationManager.IsSupported는 상승 모드에 대한 검사 수행합니다. 앱이 상승하면 반환 false 됩니다.

알려진 제한 사항(알림)

Windowing

이제 Windows 10, 1809 버전 이상에서 AppWindowTitleBar 클래스를 통해 전체 제목 표시줄 사용자 지정을 사용할 수 있습니다. AppWindowTitleBar.ExtendsContentIntoTitleBar를true 로 설정하여 컨텐츠를 제목 표시줄 영역으로 확장하고, SetDragRectangles를 설정하여 드래그 영역을 정의할 수 있습니다(다른 사용자 지정 옵션 외에도).

AppWindowTitleBar.Is CustomizationSupported 속성을 사용하여 AppWindowTitleBar API를 호출할 수 있는지 확인했다면 이제 지원되는 Windows App SDK Windows 10 버전(1809 이상)에서 true 를 반환합니다.

알려진 제한 사항(기간 이동)

Windows 10에서는 간단한 제목 표시줄 사용자 지정이 지원되지 않습니다. 여기에는 배경색, 비활성 배경색, 전경색, 비활성 전경색아이콘쇼 옵션이 포함됩니다. 이러한 속성을 호출하면 자동으로 무시됩니다. 다른 모든 AppWindowTitleBar API는 Windows 10 버전 1809 이상에서 작동합니다. 캡션 버튼 색상 API(기타 중에서도) 및 높이의 경우 Extends Content IntoTitleBar을true로 설정해야 합니다. 그렇지 않으면 자동으로 무시됩니다.

Access Control

패키지화된 프로세스와 일반 Win32 API 간의 명명된 객체 공유를 용이하게 하고 능률화하기 위해 GetSecurityDescriptorForAppContainerNames 기능과 함께 security.accesscontrol.h를 도입하였습니다. 이 메서드는 PFN(패키지 패밀리 이름) 및 액세스 마스크 목록을 사용하고 보안 설명자를 반환합니다. 자세한 내용은 GitHub의 GetSecurityDescriptorForAppContainerNames 사양 을 참조하세요.

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

  • .NET PublishSingleFile은 지원되지 않습니다.

버전 1.1 미리 보기 3(1.1.0-preview3)

버전 1.1용 미리보기 채널의 최신 릴리스입니다. 모든 미리보기 채널 기능을 지원합니다( 출시 채널별로 사용 가능한 기능참조).

Windows App SDK 1.0을 사용하는 기존 앱에서는 Nuget 패키지를 1.1.0-preview3으로 업데이트할 수 있습니다( 패키지 업데이트 섹션 참조). Nuget 패키지 매니저를 사용하여 Visual Studio에 패키지를 설치하고 관리합니다). 또한 업데이트된 런타임 및 MSIX에 대한 Windows 앱 SDK 대한 다운로드를 참조하세요.

참고 항목

C# 개발자의 경우 다음 .NET SDK 버전(이상) 중 하나가 필요합니다. 6.0.202, 6.0.104, 5.0.407, 5.0.213. .NET SDK 버전을 업데이트하려면 .NET 다운로드를 방문하거나 최신 버전의 Visual Studio로 업데이트합니다. 필수 .NET SDK 버전이 없으면 NuGet 패키지를 업데이트할 때 "이 버전의 WindowsAppSDK에는 WinRT.Runtime.dll 버전 1.6 이상이 필요합니다."와 같은 오류가 표시됩니다.

모든 미리 보기 2 기능 외에도 다음 섹션에서는 이 릴리스의 새로운 기능 및 업데이트된 기능, 제한 사항 및 알려진 문제에 대해 설명합니다.

WinUI 3

이제 WinUI 3 애플리케이션에서 Mica 및 Background Acrylic을 사용할 수 있습니다.

이러한 자료에 대한 자세한 내용은 Windows 11에서 자료를 검사. WinUI Controls Gallery의 일부로 WinUI 3 XAML과 GitHub의C# 응용 프로그램 에서 Mica를 C++ 응용 프로그램에 적용하기 위한 샘플 코드를 확인하십시오.

알림

수정된 문제:

  • 1.1.0-preview1 및 1.1.0-preview2에서 일부 패키지되지 않은 앱은 AppData\LocalMicrosoftWindowsAppSDK에 잘못 복사된 앱 아이콘을 볼 수 있습니다. 이 릴리스에서는 대신 AppData\Local\Microsoft\WindowsAppSDK에 복사됩니다. 아이콘이 누출되지 않도록 하려면 1.1.0-preview3으로 업데이트한 후 잘못된 경로에서 앱 아이콘을 수동으로 삭제해야 합니다.
  • 이제 바로 가기를 통해 앱 알림에 대한 앱 아이콘 및 앱 표시 이름 검색이 지원됩니다. 이 앱 아이콘은 리소스 파일에 지정된 아이콘보다 우선 순위가 지정됩니다.
  • 패키지되지 않은 앱에 대한 푸시 알림 지원이 복원되었습니다(명시된 예외에 대한 제한 사항 참조). 앱이 푸시 알림을 지원하는 경우 검사 위해 PushNotificationManager::IsSupported API를 도입했습니다.

제한 사항:

  • 개봉된 개봉 해제된 앱에 대한 알림은 지원되지 않습니다. PushNotificationManager::IsSupported는 상승 모드에 대한 검사를 수행하지 않습니다. 그러나 향후 릴리스에서는 이를 지원하기 위해 노력하고 있습니다.

MSIX 패키징

확장 범주를 통해 새로운 기능을 추가하고 기존 기능을 확장하는 MSIX가 향상되었습니다.

  • Windows.appExecutionAlias
  • windows.customDesktopEventLog
  • windows.dataShortcuts
  • windows.fileTypeAssociation
  • windows.fileTypeAssociation.iconHandler
  • Windows 폴더
  • Windows 바로 가기

이를 위해서는 Windows 앱 SDK 프레임워크 패키지를 설치해야 합니다. 런타임을 설치하려면 Windows 앱 SDK 다운로드를 참조하세요 .

환경관리자

개발자가 레지스트리 API를 직접 사용하지 않고도 환경 변수를 추가, 제거 및 수정할 수 있는 API 집합입니다.

1.1 미리 보기 1의 설명: 환경 관리자를 사용한 앱이 제거되면 환경 변수를 자동으로 제거하면 패키지된 앱에서만 사용할 수 있습니다. 또한 환경 변수 변경을 되돌리려면 Windows App SDK 프레임워크 패키지를 설치해야 합니다. 런타임은 Windows App SDK 다운로드를 참조하십시오.

알려진 다른 제한 사항

1.1 미리 보기 2의 회귀:

  • MRT Core API를 사용하는 .NET 앱과 가 단일 프로젝트 MSIX와 함께 배포하지 않는 WinUI 앱의 경우:
    • 프로젝트에 기존 항목으로 추가되고 이전에 PRIResource 및 Content ItemGroups에 자동으로 포함된 RESW 및 이미지 파일은 해당 ItemGroups에 포함되지 않습니다. 따라서 이러한 리소스는 PRI 생성 중에 인덱싱되지 않으므로 런타임 중에는 사용할 수 없습니다.
      • 해결 방법: 수동으로 프로젝트 파일에 리소스를 포함하고 None ItemGroup에서 제거합니다.
      • 대체 해결 방법: 사용 가능한 경우 앱의 .NET SDK를 6.0.300으로 업그레이드합니다. 자세한 내용은 NET SDK의 버전 요구 사항을 참조하십시오.
  • 단일 프로젝트 MSIX를 사용하여 배포하지 않는 .NET 앱의 경우:
    • 파일이 Content ItemGroup에 두 번 이상 추가되면 빌드 오류가 발생합니다.
      • 해결 방법: 중복 포함/s를 삭제하거나 프로젝트 파일에서 EnableDefaultContentItems를 false로 설정합니다.

두 회귀는 다음 안정적인 릴리스에서 복원됩니다.

버전 1.1 미리 보기 2(1.1.0-preview2)

버전 1.1을 위한 미리보기 채널의 두 번째 릴리스입니다. 모든 미리보기 채널 기능을 지원합니다( 출시 채널별로 사용 가능한 기능참조).

Windows App SDK 1.0을 사용하는 기존 앱에서는 Nuget 패키지를 1.1.0-preview2으로 업데이트할 수 있습니다( 패키지 업데이트 섹션 참조). Nuget 패키지 매니저를 사용하여 Visual Studio에 패키지를 설치하고 관리합니다). 또한 업데이트된 런타임 및 MSIX에 대한 Windows 앱 SDK 대한 다운로드를 참조하세요.

참고 항목

C# 개발자의 경우 다음 .NET SDK 버전(이상) 중 하나가 필요합니다. 6.0.202, 6.0.104, 5.0.407, 5.0.213. .NET SDK 버전을 업데이트하려면 .NET 다운로드를 방문하거나 최신 버전의 Visual Studio로 업데이트합니다. 필수 .NET SDK 버전이 없으면 NuGet 패키지를 업데이트할 때 "이 버전의 WindowsAppSDK에는 WinRT.Runtime.dll 버전 1.6 이상이 필요합니다."와 같은 오류가 표시됩니다.

모든 미리 보기 1 기능 외에도 다음 섹션에서는 이 릴리스의 새로운 기능 및 업데이트된 기능, 제한 사항 및 알려진 문제에 대해 설명합니다.

알림

수정된 문제:

  • 이제 알림을 보내는 패키지 ID가 없는 앱은 아이콘이 앱 리소스의 일부인 경우 알림에 앱 아이콘을 표시합니다. 앱 리소스에 아이콘이 없으면 Windows 기본 앱 아이콘이 사용됩니다.
  • 실행되지 않는 WinUI 3 앱은 이제 알림을 통해 백그라운드로 활성화될 수 있습니다.

1.1 미리 보기 1의 회귀: 패키지되지 않은 앱에 대한 푸시 알림 지원. 다음 릴리스에서 복원될 예정입니다.

알려진 제한 사항:

  • 자체 포함 앱이 푸시 알림을 지원하는 경우 검사 위해 PushNotificationManager::IsSupported API를 도입했습니다. 그러나 이 API는 아직 의도한 대로 작동하지 않으므로 IsSupported API를 완전히 지원하기 위해 다음 미리 보기 릴리스에서 주의해야 합니다.
  • 일부 패키지되지 않은 앱은 앱 아이콘이 AppData\LocalMicrosoftWindowsAppSDK에 잘못 복사된 것을 볼 수 있습니다. 다음 릴리스의 경우 AppData\Local\Microsoft\WindowsAppSDK로 복사됩니다. 아이콘이 누출되지 않도록 하려면 개발자는 다음 릴리스로 업그레이드한 후 잘못된 경로에서 앱 아이콘을 수동으로 삭제해야 합니다.
  • 단축키를 통한 알림에 대한 앱 아이콘 및 앱 표시 이름 검색은 지원되지 않습니다. 하지만 향후 릴리스에서는 이를 지원하기 위해 노력하고 있습니다.

배포

새 기능:

알려진 제한 사항:

  • 자체 포함 배포는 Windows 10, 1903 이상에서만 지원됩니다.

Windowing

USER32.dll ( Windows 및 메시지참조)에서 구현된 기능에 대한 더 쉬운 프로그래밍 액세스를 위해, 이 릴리스는 AppWindows 자체에서 해당 기능을 더 많이 제공합니다.

새 기능:

  • 기존 창이 있는 앱은 AppWindow.ShowOnceWithRequestedStartState를 호출하여 창 표시 방법을 보다 제어할 수 있습니다. 이는 ShowWindow(SW_SHOWDEFAULT)에 해당합니다.
  • 앱은 창을 표시, 최소화 또는 복원하고 호출할 때 창을 활성화할지 여부를 지정할 수 있습니다.
  • 이제 앱은 Win32 좌표에서 창의 클라이언트 영역 크기를 설정할 수 있습니다.
  • Windows의 z-order 관리를 지원하기 위해 API를 추가했습니다.
  • AppWindowTitleBar.ExtendsContentIntitleBar로 사용자 지정 제목 표시줄을 그리는 앱은 PreferredTitleBarHeight 옵션을 설정할 수 있습니다. 표준 높이 제목 표시줄 또는 대화형 콘텐츠를 위한 더 많은 공간을 제공하는 높이 제목 표시줄을 선택할 수 있습니다. 키가 큰 타이틀바를 사용하는 시기에 대한 조언은 유창한 디자인 가이드라인의 타이틀바를 참조하십시오.

알려진 제한 사항:

  • 긴 제목 표시줄 지원은 Windows 11에서만 사용할 수 있습니다. 다른 사용자 지정 제목 표시줄 API와 함께 이 수준을 낮추기 위해 노력하고 있습니다.

WinUI 3

수정된 문제:

  • WebView2 SDK를 1020.46에서 1185.39로 업그레이드하여 C/C++ 런타임(CRT)이 설치되지 않은 경우 WebView2가 있는 C# 앱이 시작 시 충돌하는 문제를 해결했습니다.
  • 일부 둥근 모서리가 단색이어야 할 때 그라데이션을 표시하는 문제를 해결했습니다. 자세한 내용은 GitHub의 문제 6076 , 문제 6194 & 를 참조하세요 .
  • generic.xaml에서 업데이트된 스타일이 누락된 문제를 해결했습니다.
  • ListView의 끝으로 스크롤할 때 앱이 충돌하는 레이아웃 주기 문제가 해결되었습니다. 자세한 내용은 Github의 문제 6218을 참조하세요.

성능

C# 애플리케이션에는 몇 가지 성능이 향상되었습니다. 자세한 내용은 C#/WinRT 1.6.1 릴리스 정보를 참조 하세요.

버전 1.1 미리 보기 1 (1.1.0-preview1)

버전 1.1을 위한 미리보기 채널의 첫 번째 릴리스입니다. 모든 미리보기 채널 기능을 지원합니다( 출시 채널별로 사용 가능한 기능참조).

Windows App SDK 1.0을 사용하는 기존 앱에서는 Nuget 패키지를 1.1.0-preview1으로 업데이트할 수 있습니다( 패키지 업데이트 섹션 참조). Nuget 패키지 매니저를 사용하여 Visual Studio에 패키지를 설치하고 관리합니다). 또한 업데이트된 런타임 및 MSIX에 대한 Windows 앱 SDK 대한 다운로드를 참조하세요.

다음 섹션에서는 이 릴리스의 새로운 기능과 업데이트된 기능, 제한 사항 및 알려진 문제에 대해 설명합니다.

WinUI 3

알려진 문제: 끌어서 놓기를 사용하는 경우 사용자가 요소를 삭제할 수 없습니다.

관리자 권한(관리자) 지원

Windows 앱 SDK 1.1 미리 보기 1을 사용하면 앱(WinUI 3 포함)을 관리자 권한으로 실행할 수 있습니다.

중요한 제한 사항

  • 현재 Windows 11에서만 사용할 수 있습니다. 하지만 이후 릴리스에서는 이 지원을 하향 조정하는 방안을 평가하고 있습니다.

알려진 문제

  • 끌어서 놓기 상호 작용 중에 요소를 끌 때 WinUI 3 앱이 충돌합니다.

자체 포함 배포

Windows 앱 SDK 1.1은 자체 포함 배포에 대한 지원을 도입합니다. 배포 개요에서는 프레임워크 종속 배포와 자체 포함 배포 간의 차이점과 시작하는 방법을 자세히 설명합니다.

알려진 문제:

  • 패키지된 C++ 앱은 VCLibs에 대한 프레임워크 참조를 제거하는 자체 포함 .targets 파일의 버그를 해결하기 위해 아래를 프로젝트 파일의 맨 아래에 추가해야 합니다.

    <PropertyGroup>
        <IncludeGetResolvedSDKReferences>true</IncludeGetResolvedSDKReferences>
    </PropertyGroup>
    
    <Target Name="_RemoveFrameworkReferences"
        BeforeTargets="_ConvertItems;_CalculateInputsForGenerateCurrentProjectAppxManifest">
        <ItemGroup>
            <FrameworkSdkReference Remove="@(FrameworkSdkReference)" Condition="'%(FrameworkSdkReference.SDKName)' == 'Microsoft.WindowsAppRuntime.1.1-preview1'" />
        </ItemGroup>
    </Target>
    
  • Windows 10, 1903 이상에서만 지원됩니다.

알림

패키지된(외부 위치로 패키지된 앱 포함) 및 패키지되지 않은 앱의 개발자는 이제 Windows 알림을 보낼 수 있습니다.

새 기능:

  • 패키지된 앱 및 패키지되지 않은 앱에 대한 앱 알림 지원 GitHub에 대한 전체 세부 정보
    • 개발자는 로컬 또는 자체 클라우드 서비스에서 알림 메시지라고도 하는 앱 알림을 보낼 수 있습니다.
  • 패키지 및 포장 해제된 앱에 대한 푸시 알림을 지원합니다. GitHub에 대한 전체 세부 정보
    • 개발자는 자체 클라우드 서비스에서 원시 알림 또는 앱 알림을 보낼 수 있습니다.

제한 사항:

  • 자체 포함으로 게시된 앱에는 푸시 알림 지원이 없을 수 있습니다. 푸시 알림 지원을 위해 검사 IsSupported API에 대한 다음 미리 보기 릴리스에서 주의해야 합니다.
  • 패키지되지 않은 앱 보내기 앱 알림은 콘솔 애플리케이션이 아닌 한 앱 알림에 앱 아이콘이 표시되지 않습니다. 패키지되지 않은 콘솔 앱은 ToastNotificationsDemoApp 샘플에 표시된 패턴을 따라야 합니다.
  • 푸시 알림을 지원하려면 Windows 앱 SDK 런타임을 설치해야 합니다. 설치 관리자의 Windows 앱 SDK 대한 다운로드입니다.
  • 실행되지 않는 WinUI 3 앱은 알림을 통해 백그라운드로 활성화할 수 없습니다. 하지만 향후 릴리스에서는 이를 지원하기 위해 노력하고 있습니다.

환경관리자

개발자가 레지스트리 API를 직접 사용하지 않고도 환경 변수를 추가, 제거 및 수정할 수 있는 API 집합입니다.

새로운 기능

  • 환경 관리자를 사용한 앱을 제거할 때 변경되는 환경 변수를 자동으로 제거합니다.

제한 사항

  • 현재 C# 앱에서 사용할 수 없습니다. 하지만 이후 릴리스에서는 이 기능을 C# 앱으로 가져오는 방법을 평가하고 있습니다.

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

  • 1.1.0 미리 보기 1에서 C#을 사용하는 경우 최소한 .NET SDK 6.0.201, 6.0.103, 5.0.212 또는 5.0.406 중 하나를 사용해야 합니다. .NET SDK를 업그레이드하려면 최신 버전의 Visual Studio로 업데이트하거나 .NET 다운로드를 방문하세요.

버전 1.0 미리 보기 3(1.0.0-preview3)

미리 보기 3은 Windows 앱 SDK 버전 1.0에 대한 미리 보기 채널의 최신 릴리스입니다. 미리 보기 3은 모든 미리 보기 채널 기능을 지원합니다.

1.0 미리보기 3 Visual Studio 확장(VSIX) 다운로드

참고 항목

Windows 앱 SDK VSIX(Visual Studio 확장)이 이미 설치되어 있는 경우 새 버전을 설치하기 전에 제거합니다. 지침은 Visual Studio용 확장 관리를 참조하세요.

아래 표에서 1.0 미리 보기 3 릴리스용 VSIX(Visual Studio 확장)를 다운로드할 수 있습니다. 모든 버전의 경우 Windows 앱 SDK용 다운로드를 참조하세요. 아직 수행하지 않은 경우 먼저 Windows 앱 SDK 용 도구 설치의단계를 사용하여 개발 환경을 구성합니다.

아래 확장은 프로그래밍 언어 및 Visual Studio 버전에 맞게 조정됩니다.

1.0 미리 보기 3 다운로드 설명
C# Visual Studio 2019 확장 Windows 앱 SDK Visual Studio 2019 확장을 통해 C# 앱을 빌드합니다.
C++ Visual Studio 2019 확장 Windows App SDK Visual Studio 2019 확장을 통해 C++ 앱을 빌드합니다.
C# Visual Studio 2022 확장 Windows 앱 SDK Visual Studio 2022 확장을 통해 C# 앱을 빌드합니다.
C++ Visual Studio 2022 확장 Windows 앱 SDK Visual Studio 2022 확장을 통해 C++ 앱을 빌드합니다.
.exe설치 관리자 및 MSIX 패키지 .exe설치 관리자 및 MSIX 패키지를 사용하여 앱에 Windows 앱 SDK를 배포합니다.

다음 섹션에서는 1.0 Preview 3의 새로운 기능과 업데이트된 기능, 제한 사항 및 알려진 문제에 대해 설명합니다.

WinUI 3

이제 MSIX 패키징 없는 WinUI 3 앱 배포를 지원합니다. 첫 번째 WinUI 3 프로젝트 만들기를 참조하여 포장되지 않은 배포를 지원하도록 WinUI 3 애플리케이션을 구성하십시오.

중요한 제한 사항

  • 패키지되지 않은 WinUI 3 애플리케이션은 Windows 버전 1909 이상에서만 지원됩니다.
  • 패키지되지 않은 WinUI 3 애플리케이션은 x86 및 x64에서 지원됩니다. arm64 지원은 안정적인 다음 릴리스에 추가될 예정입니다.
  • 패키지되지 않은 앱에는 Visual Studio 2019 또는 Visual Studio 2022단일 프로젝트 MSIX 패키징 도구가 필요합니다.
  • 패키지되지 않은 앱에서 .NET 3.5를 설치하라는 메시지가 표시될 수 있습니다. 이러한 메시지는 무시해도 됩니다.
  • 일부 API는 현재 패키지되지 않은 앱에서 지원되지 않습니다. 다음 안정적인 릴리스에서 이 문제를 해결할 계획입니다. 몇 가지 예제:
  • ListView, CalendarView 및 GridView 컨트롤은 잘못된 스타일을 사용하며 안정적인 다음 릴리스에서 이 문제를 해결할 계획입니다.

자세한 내용은 WinUI 3로 개발을 시작하려면 다음을 참조하십시오:

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

  • 패키지되지 않은 앱은 Windows 10 버전 1809에서 지원되지 않습니다. 안정적인 채널의 다음 릴리스에서 이 문제를 해결할 계획입니다.

  • C++ UWP 도구가 설치되어 있지 않으면 C# 단일 프로젝트 MSIX 앱이 컴파일되지 않습니다. C# 단일 프로젝트 MSIX 프로젝트가 있는 경우 C++(v14x) 유니버설 Windows 플랫폼 도구 선택적 구성 요소를 설치해야 합니다.

  • 이 릴리스에서는 C# 및 C++용 비어 있는 앱, 패키지됨(데스크톱의 WinUI 3) 프로젝트 템플릿을 도입했습니다. 이러한 템플릿을 사용하면 별도의 패키징 프로젝트를 사용하지 않고도 MSIX 패키지에 앱을 빌드할 수 있습니다(단일 프로젝트 MSIX를 사용하여 앱 패키지 참조). 이번 릴리스의 이러한 템플릿에는 다음과 같은 몇 가지 알려진 문제가 있습니다.

    • Visual Studio를 다시 시작할 때까지 게시 메뉴 항목이 없습니다. 비어 있는 앱, 패키지됨(데스크톱의 WinUI 3) 프로젝트 템플릿을 사용하여 Visual Studio 2019 및 Visual Studio 2022에서 새 앱을 만들 때 Visual Studio를 닫았다가 다시 열 때까지 프로젝트를 게시하는 명령이 메뉴에 표시되지 않습니다.

    • 단일 프로젝트 MSIX 패키징을 사용하여 C++ 정적/동적 라이브러리 프로젝트 참조를 C++ 앱에 추가할 때 오류가 발생합니다. Visual Studio 프로젝트 형식이 호환되지 않으므로 프로젝트를 참조로 추가할 수 없다는 오류가 표시됩니다.

    • 클래스 라이브러리 프로젝트에서 사용자 지정 사용자 컨트롤을 참조하는 동안 오류가 발생합니다. 시스템에서 지정된 경로를 찾을 수 없다는 오류를 나타내며 애플리케이션이 충돌합니다.

    • Visual Studio 2019용 C# 또는 C++ 템플릿. 프로젝트를 구축하려고 할 때 "프로파일 프로젝트 이름을(를) 실행할 방법을 모릅니다"라는 오류가 발생합니다. 이 문제를 해결하려면 단일 프로젝트 MSIX 패키징 도구 확장을 설치합니다.

    • Visual Studio 2019 및 Visual Studio 2022용 C# 템플릿. 디버깅 시작 또는 디버깅하지 않고 시작을 수행할 때 Visual Studio에서 앱이 배포 및 실행되지 않고 Visual Studio에서 피드백이 발생하지 않는 경우 솔루션 탐색기에서 프로젝트 노드를 클릭하여 선택한 다음, 다시 시도합니다.

    • Visual Studio 2019 및 Visual Studio 2022용 C# 템플릿. 개발 컴퓨터에서 프로젝트를 실행하거나 디버그하려고 하면 “디버그하려면 프로젝트를 배포해야 합니다. 구성 관리자 배포를 사용하도록 설정하세요.” 메시지가 표시됩니다. 이 문제를 해결하려면 구성 관리자에서 프로젝트에 대한 배포를 사용하도록 설정합니다. 자세한 지침은 첫 번째 WinUI 3 프로젝트 만들기를 참조하세요.

    • Visual Studio 2022 버전 17.0용 C++ 템플릿은 미리 보기 4까지 릴리스됩니다. 프로젝트를 처음 실행하려고 할 때 “배포 오류가 발생했습니다.”라는 오류가 발생합니다. 이 문제를 해결하려면 프로젝트를 두 번째로 실행하거나 배포하세요. 이 문제는 Visual Studio 2022 버전 17.0 미리 보기 7에서 해결될 예정입니다.

  • 모든 CPU 빌드 구성에 대한 지원 없음: 모든 CPU를 지원하는 기존 .NET 애플리케이션 또는 구성 요소에 Windows 앱 SDK를 추가할 때 원하는 아키텍처(x86, x64 또는 arm64)를 지정해야 합니다.

  • 1.0 Preview 3을 사용하는 C# 프로젝트는 다음과 같은 .NET SDK: .NET 6 SDK 이상을 사용해야 합니다( .NET 다운로드 및 .NET 5는 2022년 5월 10일에 지원 종료에 도달합니다참조).

  • DispatcherQueue.TryEnqueue 대신(디스패처 큐 스레드에서 실행을 재개하기 위해) WIL(WINDOWS 구현 라이브러리)에서 resume_foreground 도우미 함수를 사용하는 것입니다.

    1. 프로젝트에 대한 참조를 Microsoft.Windows.ImplementationLibrary NuGet 패키지에 추가합니다.
    2. #include <wil/cppwinrt_helpers.h>pch.h에 추가합니다.
    3. #include <winrt/Microsoft.UI.Dispatching.h>pch.h에 추가합니다.
    4. 이제 co_await wil::resume_foreground(your_dispatcherqueue); 입니다.

1.0 미리 보기 1 및 미리 보기 2에 영향을 미치는 중요한 문제

Windows 앱 SDK의 버전 1.0 미리 보기 1 및 미리 보기 2에는 해당 앱이 제거되면 패키지된 앱에서 변경한 환경 변수를 정리하는 메커니즘이 포함되어 있습니다. 이 기능은 실험적 상태이며 첫 번째 릴리스에는 시스템 PATH 환경 변수를 손상시킬 수 있는 알려진 버그가 포함되어 있습니다.

미리 보기 1 및 미리 보기 2는 확장 문자 %를 포함하는 PATH 환경 변수를 손상시킵니다. 이 문제는 패키지된 앱이 제거되면 앱에서 Windows 앱 SDK를 사용하는지 여부에 관계없이 발생합니다.

PATH 환경 변수 손상 문제도 참조하세요.

세부 정보

시스템 PATH 항목은 Windows 레지스트리의 다음 키에 있는 Path 값에 저장됩니다.

Computer\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment

레지스트리 편집기(regedit.exe)를 시작하는 경우 위의 경로를 복사하여 이동 경로 표시줄(메뉴 모음 바로 아래)에 붙여넣고 Enter 키를 눌러 키를 찾을 수 있습니다.

해당 키 Path 값은 REG_EXPAND_SZ 유형이어야 하지만 버그로 인해 REG_SZ로 변경됩니다. 또한 변수 확장 문자 %가 포함된 경우 시스템 PATH 환경 변수를 사용할 수 없게 됩니다.

영향을 받는 릴리스

완화

머신을 다시 양호한 상태로 되돌리려면 다음 단계를 수행합니다.

  1. 레지스트리의 PATH가 손상되었는지 확인하고, 손상된 경우 아래 스크립트를 실행하여 다시 설정합니다.

    다음 Windows PowerShell 스크립트를 사용하여 1단계를 수행할 수 있습니다(PowerShell Core는 작동하지 않음). 관리자 권한으로 실행합니다.

    # This script must be run from an elevated Windows PowerShell
    # window (right-click Windows PowerShell in the Start menu,
    # and select Run as Administrator).
    
    # If the PATH in the Registry has been set to REG_SZ, then delete
    # it, and recreate it as REG_EXPAND_SZ.
    
    $EnvPath = 'Registry::HKLM\System\CurrentControlSet\Control\Session Manager\Environment'
    $Environment=Get-Item $EnvPath
    $PathKind = $Environment.GetValueKind('Path')
    
    if ($PathKind -ne 'ExpandString') {
      $Path = $Environment.GetValue('Path')
      Remove-ItemProperty $EnvPath -Name Path
      New-ItemProperty $EnvPath -Name Path -PropertyType ExpandString -Value $Path
    }
    
  2. Windows 앱 SDK 1.0 미리 보기 1 또는 미리 보기 2를 사용하는 모든 앱을 제거합니다(아래 스크립트 참조).

  3. 버그가 포함된 패키지를 포함하여 Windows 앱 SDK 1.0 미리 보기 1/미리 보기 2 패키지를 제거합니다(아래 스크립트 참조).

    다음 Windows PowerShell 스크립트를 사용하여 2단계와 3단계를 수행할 수 있습니다(PowerShell Core는 작동하지 않음). 관리자 권한으로 실행합니다.

    # This script must be run from an elevated Windows PowerShell
    # window (right-click Windows PowerShell in the Start menu,
    # and select Run as Administrator).
    
    # Remove the Windows App SDK 1.0 Preview1/2, and all apps that use it.
    
    $winappsdk = "Microsoft.WindowsAppRuntime.1.0-preview*"
    Get-AppxPackage | Where-Object { $_.Dependencies -like $winappsdk } | Remove-AppxPackage
    Get-AppxPackage $winappsdk | Remove-AppxPackage
    

Windows 앱 SDK 1.0 미리 보기 3의 수정 사항

PATH 환경 변수를 손상시키는 기능은 예정된 Windows 앱 SDK 1.0 미리 보기 3 릴리스에서 제거됩니다. 모든 버그가 수정되고 철저히 테스트된 경우 나중에 다시 도입될 수 있습니다.

대신, 버전 1.0 미리 보기 3을 사용하는 것이 좋습니다.

버전 1.0 미리 보기 2(1.0.0-preview2)

Important

버전 1.0 미리 보기 1 및 미리 보기 2에는 심각한 버그가 있습니다. 이러한 미리 보기 중 하나를 이미 설치했다면 문제 해결 방법을 참조하세요. 대신 버전 1.0 미리 보기 3을 사용하는 것이 좋습니다.

버전 1.0에 대한 미리 보기 채널의 최신 릴리스입니다. 이 버전은 모든 미리 보기 채널 기능을 지원합니다.

다음 섹션에서는 이 릴리스의 새로운 기능과 업데이트된 기능, 제한 사항 및 알려진 문제에 대해 설명합니다.

WinUI 3

새 업데이트:

  • WinUI 2.6의 최신 Windows 스타일을 반영하도록 컨트롤이 업데이트되었습니다.
  • 단일 프로젝트 MSIX가 지원됩니다.
  • WinUI 3 패키지는 이제 빌드 17763 이상을 대상으로 할 수 있습니다. 이 문제에 대한 자세한 내용은 문제 #921을 참조하세요.
  • 앱 내 도구 모음이 지원됩니다. 그러나 앱 내 도구 모음 및 기존 핫 다시 로드/라이브 시각적 트리 지원에는 10월 말에 제공되는 예정된 Visual Studio 17.0 미리 보기 5 릴리스가 필요합니다.

버그가 수정됨: WebView2Runtime 텍스트가 이제 지역화되었습니다.

자세한 내용은 WinUI 3로 개발을 시작하려면 다음을 참조하십시오:

Windowing

이 릴리스에서는 AppWindow 클래스에 대한 업데이트를 도입했습니다. 이 릴리스에 추가된 주요 새 기능은 없지만 메서드 이름, 속성 및 일부 반환 값이 변경되었습니다. 자세한 업데이트는 설명서 및 샘플을 참조하세요. 1.0 실험적 또는 1.0 미리 보기 1 릴리스에서 AppWindow를 사용한 경우 코드가 일부 변경될 수 있습니다.

새 업데이트:

  • AppWindowConfiguration 클래스가 제거되었습니다. 이 클래스의 속성은 이제 AppWindow 자체 또는 Presenter 클래스에서 사용할 수 있습니다.
  • 이 공간의 WinRT API 메서드에 대한 대부분의 bool 반환 값은 제거되었으며 이러한 메서드가 항상 성공하기 때문에 지금은 void입니다.
  • GetWindowIdFromWindowGetWindowFromWindowId에서는 더 이상 C# ImportDll 호출이 필요하지 않습니다. 대신 Microsoft.UI.Win32Interop 클래스에서 사용할 수 있는 .NET 래퍼 메서드를 사용합니다.

중요한 제한 사항:

  • Windows 앱 SDK는 현재 UI 프레임워크 콘텐츠를 AppWindow에 연결하는 메서드를 제공하지 않습니다. HWND interop 액세스 메서드만 사용할 수 있습니다.
  • 창 제목 표시줄 사용자 지정은 Windows 11에서만 작동합니다. IsCustomizationSupported 메서드를 사용하여 제목 표시줄 사용자 지정 기능 지원을 확인합니다. 이 기능을 하위 수준으로 가져오려고 합니다.

자세한 내용은 앱 창 관리를 참조하세요.

입력

새 업데이트:

  • 정밀도 터치 패드 입력에 대한 지원이 향상되었습니다.

중요한 제한 사항:

  • 모든 PointerPoint 고정적인 센터 함수가 제거되었습니다. GetCurrentPoint, GetCurrentPointTransformed, GetIntermediatePoints, GetIntermediatePointsTransformed.
  • Windows 앱 SDK는 포인터 ID를 사용하여 PointerPoint 개체 검색을 지원하지 않습니다. 대신 PointerPoint 멤버 함수 GetTransformedPoint를 사용하여 기존 PointerPoint 개체의 변환된 버전을 검색할 수 있습니다. 중간 지점의 경우 PointerEventArgs 멤버 함수 GetIntermediatePointsGetTransformedIntermediatePoints를 사용할 수 있습니다. 자세한 내용은 설명서를 참조하세요.

MRT Core

새 업데이트:

  • 앱 개발자는 이제 이미지 파일 또는 RESW 파일이 .NET 프로젝트의 PRI 파일에 인덱싱되지 않도록 옵트아웃할 수 있습니다. 이 문제에 대한 자세한 내용은 문제 980을 참조하세요.

중요한 제한 사항:

  • .NET 프로젝트에서 프로젝트 폴더에 복사하여 붙여넣은 리소스 파일은 앱이 이미 빌드된 경우 F5에 인덱싱되지 않습니다. 이를 해결하려면 앱을 다시 빌드합니다. 이 문제에 대한 자세한 내용은 문제 1503을 참조하세요.
  • .NET 프로젝트에서 외부 폴더로부터 추가된 기존 리소스 파일은 빌드 작업을 수동으로 설정하지 않으면 인덱싱되지 않습니다. 이 문제를 해결하려면 Visual Studio에서 빌드 작업인 Content(이미지 파일용) 및 PRIResource(RESW 파일용)를 설정합니다. 이 문제에 대한 자세한 내용은 문제 1504를 참조하세요.

패키지되지 않은 앱 배포

새 기능:

  • Windows App SDK 1.0 Preview 2에서는 부트스트래퍼 API의 .NET 래퍼를 소개합니다( 외부 위치로 패키지화되거나 패키지화되지 않은 앱의 경우 Windows App SDK 런타임 사용참조). 부트스트래퍼 API는 패키지되지 않은 앱이 런타임에 Windows 앱 SDK 프레임워크 패키지에 대해 종속성을 동적으로 획득하는 데 사용해야 하는 네이티브 C/C++ 함수 집합입니다. .NET 래퍼는 Windows Forms 및 WPF 앱을 포함하여 .NET 앱에서 부트스트래퍼 API를 호출하는 좀 더 쉬운 방법을 제공합니다. 부트스트래퍼 API에 대한 .NET 래퍼는 앱 프로젝트에 로컬인 Microsoft.WindowsAppRuntime.Bootstrap.Net.dll 어셈블리에서 사용할 수 있습니다. .NET 래퍼에 대한 자세한 내용은 .NET 래퍼 라이브러리를 참조하세요.
  • 이제 패키지된 앱은 배포 API를 사용하여 기본 및 싱글톤 MSIX 패키지를 머신에 설치할 수 있습니다. 기본 및 싱글톤 패키지는 앱과 함께 설치되는 프레임워크 패키지의 일부이지만, Windows 애플리케이션 모델의 제한으로 인해 패키지된 앱은 이러한 패키지를 설치하기 위해 이 추가 단계를 수행해야 합니다. 배포 API의 작동 방식에 대한 자세한 내용은 프레임워크 종속 패키지 앱에 대한 Windows 앱 SDK 배포 가이드를 참조하세요.

중요한 제한 사항:

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

앱 수명 주기

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

비 UWP 앱은 MSIX 패키지로 패키지될 수도 있습니다. 이러한 앱은 Windows 앱 SDK 앱 수명 주기 기능 중 일부를 사용할 수 있지만 이 기능을 사용할 수 있는 매니페스트 접근 방식을 사용해야 합니다. 예를 들어, Windows 앱 SDK RegisterForXXXActivation API를 사용할 수 없으며, 대신 매니페스트를 통해 다양한 활성화를 등록해야 합니다.

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

중요 고려 사항:

  • 다양한 활성화: GetActivatedEventArgs

  • 다양한 활성화를 위한 등록/등록 취소

    • Unpackaged 앱: 완전히 사용할 수 있습니다.
    • 패키지 앱: 앱의 MSIX 매니페스트를 대신 사용할 수 없습니다.
    • 자세한 내용은 다양한 활성화를 참조하세요.
  • 단일/다중 인스턴스화

    • Unpackaged 앱: 완전히 사용할 수 있습니다.
    • 패키지된 앱: 완전히 사용할 수 있습니다.
    • WinUI 3 앱: 앱이 다른 인스턴스를 검색하고 활성화를 리디렉션하려는 경우 가능한 한 빨리, 그리고 창을 초기화하기 전에 이를 수행해야 합니다. 이를 사용하도록 설정하려면 앱이 DISABLE_XAML_GENERATED_MAIN을 정의하고 검색 및 리디렉션을 수행할 수 있는 사용자 지정 Main(C#) 또는 WinMain(C++)을 작성해야 합니다.
    • RedirectActivationToAsync는 비동기 호출이며, 앱이 STA에서 실행 중인 경우 비동기 호출을 기다리지 않아야 합니다. Windows Forms 및 C# WinUI 3 앱의 경우 필요에 따라 Main을 비동기로 선언할 수 있습니다. C++ WinUI 3 및 C# WPF 앱의 경우 Main을 비동기로 선언할 수 없으므로 STA를 차단하지 않도록 리디렉션 호출을 다른 스레드로 이동해야 합니다.
    • 자세한 내용은 앱 인스턴스화를 참조하세요.
  • 전원/상태 알림

    • Unpackaged 앱: 완전히 사용할 수 있습니다.
    • 패키지된 앱: 완전히 사용할 수 있습니다.
    • 자세한 내용은 전원 관리를 참조하세요.

알려진 문제:

패키지되지 않은 Win32 앱과 충돌하는 동사 처리기의 명령줄 템플릿을 설정하는 경우 파일 형식 연결이 %1을(를) %251(으)로 잘못 인코딩합니다. 대신 부분적인 해결 방법으로 레지스트리 값을 %1(으)로 수동으로 편집할 수 있습니다. 대상 파일 경로에 공백이 있으면 여전히 실패하고 해당 시나리오에 대한 해결 방법이 없습니다.

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

  • 버전 1.0 미리 보기 1 및 미리 보기 2에는 심각한 버그가 있습니다. 이러한 미리 보기 중 하나를 이미 설치했다면 문제 해결 방법을 참조하세요. 대신 버전 1.0 미리 보기 3을 사용하는 것이 좋습니다.

  • 이 릴리스에서는 C# 및 C++ 프로젝트용 비어 있는 앱, 패키지됨(데스크톱의 WinUI 3) 템플릿을 도입했습니다. 이러한 템플릿은 별도의 패키징 프로젝트를 사용하지 않고 MSIX 패키지에 앱을 빌드할 수 있도록 합니다. 이번 릴리스의 이러한 템플릿에는 다음과 같은 몇 가지 알려진 문제가 있습니다.

    • Visual Studio 2019용 C# 템플릿 프로젝트를 빌드하려고 하면 “프로젝트에서 프로필 프로젝트 이름을 실행하는 방법을 모름” 오류가 발생합니다. 이 문제를 해결하려면 단일 프로젝트 MSIX 패키징 도구 확장을 설치합니다.

    • Visual Studio 2019 및 Visual Studio 2022용 C# 템플릿. 개발 컴퓨터에서 프로젝트를 실행하거나 디버그하려고 하면 “디버그하려면 프로젝트를 배포해야 합니다. 구성 관리자 배포를 사용하도록 설정하세요.” 메시지가 표시됩니다. 이 문제를 해결하려면 구성 관리자에서 프로젝트에 대한 배포를 사용하도록 설정합니다. 자세한 지침은 첫 번째 WinUI 3 프로젝트 만들기를 참조하세요.

    • Visual Studio 2019 및 Visual Studio 2022용 C++ 템플릿. 이 릴리스에서 이러한 프로젝트는 UWP 앱에서 호출할 수 있는 Win32 API의 하위 집합을 호출하도록 제한됩니다. 비어 있는 앱, WAP로 패키지됨(데스크톱의 WinUI 3) 템플릿은 이 문제의 영향을 받지 않습니다.

    • Visual Studio 2022 버전 17.0용 C++ 템플릿은 미리 보기 4까지 릴리스됩니다. 프로젝트를 처음 실행하려고 할 때 “배포 오류가 발생했습니다.”라는 오류가 발생합니다. 이 문제를 해결하려면 프로젝트를 두 번째로 실행하거나 배포하세요. 이 문제는 Visual Studio 2022 버전 17.0 미리 보기 5에서 해결될 예정입니다.

  • 푸시 알림 API(Microsoft.Windows.PushNotifications 네임스페이스)가 1.0 미리 보기 2 릴리스에 잘못 포함되었습니다. 이는 여전히 실험적 기능이며 이를 사용하려면 1.0 실험적 릴리스를 대신 설치해야 합니다. 이 기능은 향후 1.0 릴리스에서 제거될 예정입니다.

  • 앱 수명 주기 API(Microsoft.Windows.AppLifecycle 네임스페이스)에는 1.0 미리 보기 2 릴리스에 실험적 특성을 잘못 포함합니다. 실험적 특성은 다음 릴리스의 이 API에서 제거됩니다.

  • 모든 CPU 빌드 구성에 대한 지원 없음: 모든 CPU를 지원하는 기존 .NET 애플리케이션 또는 구성 요소에 Windows 앱 SDK를 추가할 때 원하는 아키텍처(x86, x64 또는 arm64)를 지정해야 합니다.

  • 1.0 미리보기 2를 사용하는 C# 프로젝트는 다음과 같은 .NET SDK: .NET 6 SDK 이상을 사용해야 합니다( .NET 다운로드.NET 5는 2022년 5월 10일에 지원 종료에 도달합니다참조).

  • DispatcherQueue.TryEnqueue 대신(디스패처 큐 스레드에서 실행을 재개하기 위해) WIL(WINDOWS 구현 라이브러리)에서 resume_foreground 도우미 함수를 사용하는 것입니다.

    1. 프로젝트에 대한 참조를 Microsoft.Windows.ImplementationLibrary NuGet 패키지에 추가합니다.
    2. #include <wil/cppwinrt_helpers.h>pch.h에 추가합니다.
    3. #include <winrt/Microsoft.UI.Dispatching.h>pch.h에 추가합니다.
    4. 이제 co_await wil::resume_foreground(your_dispatcherqueue); 입니다.

버전 1.0 미리 보기1(1.0.0-preview1)

Important

버전 1.0 미리 보기 1 및 미리 보기 2에는 심각한 버그가 있습니다. 이러한 미리 보기 중 하나를 이미 설치했다면 문제 해결 방법을 참조하세요. 대신 버전 1.0 미리 보기 3을 사용하는 것이 좋습니다.

버전 1.0에 대한 미리 보기 채널의 최초 릴리스입니다. 이 버전은 모든 미리 보기 채널 기능을 지원합니다.

다음 섹션에서는 이 릴리스의 새로운 기능과 업데이트된 기능, 제한 사항 및 알려진 문제에 대해 설명합니다.

WinUI 3

이 WinUI 3 릴리스는 버그 수정을 통해 1.0을 향해 빌드하는 데 중점을 둡니다.

  • 새 기능: 미리 보기 1에는 새로운 기능이 없습니다.
  • 해결된 문제: 이 릴리스에서 해결된 문제의 전체 목록은 GitHub 리포지토리를 참조하세요.

자세한 내용은 WinUI 3로 개발을 시작하려면 다음을 참조하십시오:

Windowing

이 릴리스에서는 실험적 1에서 도입한 Windowing API를 미리 보기 상태로 제공합니다. 이 릴리스는 버그 픽스, 안정성 및 API 서명 조정에 중점을 두기 때문에 새로운 주 기능 영역이 없습니다. 아래에는 유의할 변경 내용과 추가 사항이 나와 있습니다.

새 기능:

  • DisplayAreaWatcher가 Windowing API에 추가되었습니다. 개발자가 디스플레이 토폴로지의 변경 내용을 관찰하고 시스템에 현재 정의된 DisplayAreas를 열거하는 데 사용할 수 있습니다.
  • AppWindow는 이제 SetIcon 메서드를 통해 창 아이콘 설정을 지원하며, AppWindowTitleBar는 이제 IconShowOptions 속성을 통해 시스템 메뉴와 함께 창 아이콘을 표시할지 또는 숨길지 선택할 수 있습니다.

중요한 제한 사항:

  • AppWindow 릴리스는 현재 Win32 앱(패키지된 앱 및 패키지되지 않은 앱 모두)에서만 사용할 수 있습니다.
  • Windows 앱 SDK는 현재 UI 프레임워크 콘텐츠를 AppWindow에 연결하는 메서드를 제공하지 않습니다. HWND interop 액세스 메서드만 사용할 수 있습니다.
  • 창 제목 표시줄 사용자 지정은 Windows 11에서만 작동합니다. IsCustomizationSupported 메서드를 사용하여 제목 표시줄 사용자 지정 기능 지원을 확인합니다. 이 기능을 하위 수준으로 가져오려고 합니다.

자세한 내용은 앱 창 관리를 참조하세요.

입력

이 릴리스에서는 입력 API에 몇 가지 새로운 기능을 제공합니다. 아래에는 유의할 변경 내용과 추가 사항이 나와 있습니다.

새로운 기능 및 업데이트:

  • PointerPredictor는 입력 대기 시간이 중요한 애플리케이션(예: 수동 입력 애플리케이션)에 향후 대기 시간을 줄이고 원활하게 애니메이트하기 위해 입력 지점 위치를 최대 15ms 안에 예측하는 기능을 제공합니다.
  • PenDeviceInterop을 사용하면 FromPointerPoint 메서드를 사용하여 Windows.Devices.Input.PenDevice에 대한 참조를 얻을 수 있습니다.
  • InputCursorCoreCursor에 있는 “사용자 지정” 형식을 제거하고 CoreCursor 개체를 별도의 개체로 분할하여 미리 설정된 시스템 커서 형식과 사용자 지정 커서 형식 간을 명시적으로 구분합니다.
  • InputCursor API를 업데이트합니다.
  • GestureRecognizer가 실험적에서 Microsoft.UI.Input으로 이동되었습니다.
  • PointerPoint가 실험적에서 Microsoft.UI.Input으로 이동되었습니다.
  • 마우스, 터치 및 펜 입력은 WinUI 3 끌어서 놓기에서 완전히 지원됩니다.

중요한 제한 사항:

  • 이 릴리스 버전의 입력 API는 Windows 버전 1809에서 알려진 문제가 있습니다.
  • MRT Core는 InputCursor의 하위 형식에서 아직 지원되지 않습니다.
  • 플랫폼 SDK API Windows.UI.Core.CoreDragOperation을 직접 사용하면 WinUI 3 애플리케이션 내에서 작동하지 않습니다.
  • PointerPoint 속성 RawPosition 및 ContactRectRaw는 OS의 기본 값과 동일한 예측 되지 않은 값을 참조하기 때문에 제거되었습니다. 대신 PositionContactRect를 사용합니다. 이제 포인터 예측이 Microsoft.UI.Input.PointerPredictor API 개체를 사용하여 처리됩니다.

MRT Core

1.0 미리 보기 1 버전부터 MRT Core API가 Microsoft.ApplicationModel.Resources 네임스페이스에서 Microsoft.Windows.ApplicationModel.Resources 네임스페이스로 이동했습니다.

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

  • 버전 1.0 미리 보기 1 및 미리 보기 2에는 심각한 버그가 있습니다. 이러한 미리 보기 중 하나를 이미 설치했다면 문제 해결 방법을 참조하세요. 대신 버전 1.0 미리 보기 3을 사용하는 것이 좋습니다.

  • C++ 비어 있는 앱, WAP로 패키지됨(데스크톱의 WinUI 3) 프로젝트 템플릿을 사용하여 만든 프로젝트에는 기본적으로 다음과 같은 빌드 오류가 발생합니다. fatal error C1083: Cannot open include file: 'winrt/microsoft.ui.dispatching.co_await.h': No such file or directory. 이 문제를 해결하려면 pch.h 파일에서 다음 코드 줄을 제거합니다. 이 문제는 다음 릴리스에서 해결될 예정입니다.

    #include <winrt/microsoft.ui.dispatching.co_await.h>
    
  • DispatcherQueue.TryEnqueue 대신(디스패처 큐 스레드에서 실행을 재개하기 위해) WIL(WINDOWS 구현 라이브러리)에서 resume_foreground 도우미 함수를 사용하는 것입니다.

    1. 프로젝트에 대한 참조를 Microsoft.Windows.ImplementationLibrary NuGet 패키지에 추가합니다.
    2. #include <wil/cppwinrt_helpers.h>pch.h에 추가합니다.
    3. #include <winrt/Microsoft.UI.Dispatching.h>pch.h에 추가합니다.
    4. 이제 co_await wil::resume_foreground(your_dispatcherqueue); 입니다.
  • 모든 CPU 빌드 구성 지원 안 됨: Windows 앱 SDK는 네이티브 코드로 작성되었으므로 모든 CPU 빌드 구성을 지원하지 않습니다. 이 Visual Studio 의 WinUI 3 템플릿은 아키텍처별 빌드만 허용합니다. 모든 CPU를 지원하는 기존 .NET 애플리케이션 또는 구성 요소에 Windows 앱 SDK를 추가할 때 원하는 아키텍처를 지정해야 합니다(x86, x64 또는 arm64).

  • .NET 앱은 빌드 18362 이상을 대상으로 해야 함: TFM을 18362 이상으로 설정해야 net6.0-windows10.0.18362 하며 패키징 프로젝트를 <TargetPlatformVersion> 18362 이상으로 설정해야 합니다. 자세한 내용은 GitHub의 알려진 문제를 참조하세요.

  • 1.0 미리보기 1를 사용하는 C# 프로젝트는 다음과 같은 .NET SDK: .NET 6 SDK 이상을 사용해야 합니다( .NET 다운로드.NET 5는 2022년 5월 10일에 지원 종료에 도달합니다참조).

  • 패키지되지 않은 앱은 Windows 10 버전 1809에서 지원되지 않음: 이 문제는 다음 릴리스에서 해결되어야 합니다.