Windows アプリ SDK の最新の安定版チャネル リリース ノート

安定チャネルでは、運用環境のアプリによる使用がサポートされている Windows App SDK のリリースが提供されます。 Windows App SDK の安定リリースが使用されるアプリは、Microsoft Store に発行することもできます。

重要なリンク:

安定版チャネル リリース ノートのアーカイブ:

Windows App SDK 用のダウンロード

Note

Windows アプリ SDK Visual Studio 拡張機能(VSIX)は、現在は個別のダウンロードとして配布されていません。 それらは、Visual Studio内のVisual Studio Marketplaceで利用可能です。

バージョン 1.6.1 (1.6.240923002)

これは、1.6 リリースの重要なバグ修正を含むWindows アプリ SDKのサービス リリースです。

  • FocusVisualKind.Reveal() を使用するときのクラッシュを修正しました。 詳細については、GitHub の問題 #9966 を参照してください。
  • Bcp47Langs.dllからのノイズの多い C++ 例外を修正しました。 詳細については、GitHub の問題 #4691 を参照してください。 この修正により、 Windows.Globalization.ApplicationLanguages.PrimaryLanguageOverrideとの同期が削除されることに注意してください。
  • ContentDialogを表示した直後に追加のUnloaded イベントが発生する問題を修正しました。 詳細については、GitHub の問題 #8402 を参照してください。
  • 開くスペースがあった場合でも、CommandBar メニューが正しく開かなかった可能性がある問題を修正しました。
  • トップレベル ウィンドウが右から左モードで実行されているときに、 InputNonClientPointerSource リージョンへの入力が正しく処理されない問題を修正しました。
  • .NET 9 で使用される少し異なるフレームワーク名を処理するために、Windows SDK フレームワークのバージョンのコンパイル時チェックを修正しました。

バージョン 1.6

以降のセクションでは、バージョン 1.6 の新機能と更新された機能と既知の問題について説明します。

既存の Windows アプリ SDK 1.5 アプリでは、Nuget パッケージを 1.6.240829007 に更新できます (「 NuGet パッケージ マネージャー を使用して Visual Studio でパッケージをインストールおよび管理する」の「パッケージの更新」セクションを参照してください)。

更新されたランタイムと MSIX については、Windows App SDK 用のダウンロード ページを参照してください。

1.6 に必要なプロジェクトの変更

C++ プロジェクトの変更

C++ プロジェクトを 1.6 に更新する場合は、プロジェクト参照を Microsoft.Web.WebView2 パッケージに追加する必要があります。 Visual Studio で NuGet パッケージ マネージャーを使用して更新すると、この依存関係が追加されます。

C# プロジェクトの変更

1.6 では、Windows アプリ SDKマネージド アプリには Microsoft.Windows.SDK.NET.Ref *.*.*.38 以降が必要です。これは、csproj ファイルの WindowsSdkPackageVersion を使用して指定できます。 次に例を示します。

<Project Sdk="Microsoft.NET.Sdk">
   <PropertyGroup>
       <OutputType>WinExe</OutputType>
       <TargetFramework>net8.0-windows10.0.22621.0</TargetFramework>
       <TargetPlatformMinVersion>10.0.17763.0</TargetPlatformMinVersion>
       <WindowsSdkPackageVersion>10.0.22621.38</WindowsSdkPackageVersion>
   <PropertyGroup>
   ...

さらに、マネージド アプリWindows アプリ SDKMicrosoft.Windows.CsWinRT 2.1.1 (またはそれ以降) に更新する必要があります。

Note

次の .NET SDK サービス更新プログラムがリリースされると、これらの手動参照は不要になります。

ネイティブ AOT のサポート

1.6 でのネイティブ AOT サポート

.NET PublishAot プロジェクト プロパティは、ネイティブの Ahead-Of-Time コンパイルでサポートされるようになりました。 ネイティブ AOT の詳細については、「 Native AOT のデプロイを参照してください。 AOT はトリミングのサポートに基づいて構築されているため、次のトリミング関連のガイダンスの多くは AOT にも適用されます。

PublishAotサポートとトリミングのサポートについては、前のセクションで説明した C# プロジェクトの変更に加えて、Microsoft.Windows.CsWinRT 2.1.1 (またはそれ以降) へのパッケージ参照も必要です。これにより、次の .NET SDK サービス更新プログラムが不要になったときに、そのパッケージからソース ジェネレーターを有効にすることができます。

詳細については、 CsWinRT トリミング/AOT サポート ドキュメント および CsWinRT 2.1.1 リリース ノートを参照してください。

Windows アプリ SDKは F5 のデプロイ時に発行ターゲットを呼び出すので、これを csproj ファイルに追加して、NuGet の復元時にPublishAotを有効にすることをお勧めします。

<PublishAot>true</PublishAot>

AOT の問題の解決

このリリースでは、開発者は、トリミング (リフレクション ベースの {Binding} ターゲットなど) を回避するために、すべての型が適切にルート化されていることを確認する責任を負います。 以降のリリースでは、C#/WinRT と XAML コンパイラの両方が強化され、可能な限りルート化を自動化し、開発者にリスクをトリミングするよう警告し、解決するメカニズムを提供します。

部分クラス

C#/WinRT には、バージョン 2.1.1 での PublishAot サポートも含まれています。 C#/WinRT を使用して AOT 発行のクラスを有効にするには、最初に partialマークする必要があります。 これにより、C#/WinRT AOT ソース アナライザーで静的分析用のクラスを属性化できます。 この属性が必要なのは、クラス (メソッドを含む、トリミングのターゲット) のみです。

安全でないコード エラー

CsWinRT ソース ジェネレーターは、 unsafeを利用するコードを生成する場合があります。 コンパイル中にこのようなエラーが発生した場合、またはそのエラーに対する診断警告 (CS0227 "Unsafe code may only appear if compiling with /unsafe")、EnableUnsafeBlocks を true に設定する必要があります。 詳細については、GitHub の問題 CsWinRT #1721 を参照してください。

WebView2 はまだ AOT 互換ではありません

Microsoft.Web.WebView2 パッケージ バージョン 1.0.2651.64 の WebView2 プロジェクションはまだ AOT 互換ではありません。 これは、プロジェクトで参照できる Microsoft.Web.WebView2 パッケージの今後のリリースで修正される予定です。

リフレクションフリーの手法

AOT の互換性を有効にするには、リフレクション ベースの手法を静的に型指定されたシリアル化、AppContext.BaseDirectory、typeof() などに置き換える必要があります。詳細については、「 警告をトリミングする方法を参照してください。

ルート型

{Binding}の完全なサポートが実装されるまで、型は次のようにトリミングから保持される場合があります。

名前空間Nで型Tを持つアセンブリ Aを使用するプロジェクトP、動的に参照される (通常はトリミングされる) 場合、Tは次の方法で保持できます。

P.csproj:

<ItemGroup>
    <TrimmerRootDescriptor Include="ILLink.Descriptors.xml" />
</ItemGroup>

ILLink.Descriptors.xml:

<?xml version="1.0" encoding="utf-8"?>
<linker>
    <assembly fullname="A">
        <type fullname="N.T" preserve="all" />
    </assembly>
</linker>

完全なルート記述子 XML 式の構文については、 Root 記述子を参照してください。

Note

AOT サポートをまだ採用していない依存関係パッケージでは、実行時の問題が発生する可能性があります。

分離された WebView2 のバージョン管理

Windows アプリ SDKは、Edge WebView2 SDK のハードコーディングされたバージョンを埋め込むのではなく、NuGet 参照として Edge WebView2 SDK を使用するようになりました。 新しいモデルを使用すると、アプリは、Windows アプリ SDKがビルドされたバージョンに限定されるのではなく、Microsoft.Web.WebView2 パッケージの新しいバージョンを選択できます。 新しいモデルでは、アプリが Edge WebView2 SDK も参照する NuGet パッケージを参照することもできます。 詳細については、GitHub の問題 #5689 を参照してください。

新しいパッケージ展開 API

パッケージ管理 API には、Is*ReadyOrNewerAvailable*()、EnsureReadyOptions.RegisterNewerIfAvailable、Is*Provisioned*()、IsPackageRegistrationPending()、いくつかのバグ修正など、いくつかの機能強化が用意されています。 詳細については、「 PackageManagement.mdPull Request #4453 」を参照してください。

TabView タブのティアアウトの改善

1.6 での TabView のティアアウトの改善

TabView では、新しい CanTearOutTabs モードがサポートされています。タブをドラッグしたり、新しいウィンドウにドラッグしたりするためのエクスペリエンスが強化されています。 この新しいオプションを有効にすると、タブドラッグは、ドラッグ中に新しいウィンドウがすぐに作成される Edge と Chrome のタブドラッグエクスペリエンスとよく似ています。これにより、ユーザーはウィンドウを画面の端にドラッグして、ウィンドウを最大化したり、1 つのスムーズな動きでスナップしたりできます。 この実装ではドラッグ アンド ドロップ API も使用されないため、これらの API の制限の影響を受けません。 特に、管理者として管理者特権で実行されているプロセスでは、タブの破棄がサポートされています。

その他の注目すべき変更点

  • UWP からのギャップを埋める新しい ColorHelper.ToDisplayName() API を追加しました。
  • 新しい Microsoft.Windows.Globalization.ApplicationLanguages クラスが追加されました。これには、特に新しい PrimaryLanguageOverride 機能が含まれています。 詳細については、GitHub の問題 #4523 を参照してください。
  • 封印されていない ItemsWrapGrid。 これは下位互換性のある変更である必要があります。
  • PipsPager は、最初の項目と最後の項目の間で折り返すことができる新しいモードをサポートします。

1.6 の新しい PipsPager ラッピング モード

  • RatingControl は、いくつかのハードコーディングされたスタイル プロパティをテーマ リソースに移動することで、よりカスタマイズ可能になりました。 これにより、アプリはこれらの値をオーバーライドして RatingControl の外観をより適切にカスタマイズできます。
1.6 での新しい RatingControl カスタマイズ
  • WinUI 3 は、従来の重み/ストレッチ/スタイル モデルではなく、フォント選択の文字体裁モデルに変更されました。 文字体裁モデルは、Segoe UI 変数を含む一部の新しいフォントに必要であり、強化されたフォント機能を有効にします。 選択のために重み/ストレッチ/スタイル モデルに依存する一部の古いフォントは、文字体裁モデルでは見つからない場合があります。

既知の問題

  • デバッガーがすべての C++ 例外で中断するように設定されている場合は、BCP47 (Windows グローバリゼーション) コードの起動時にいくつかのノイズの多い例外で中断されます。 詳細については、GitHub の問題 #4691 を参照してください。
  • WinAppSDK 1.6 パッケージを参照するコンポーネント ライブラリ パッケージは、参照先の WebView2 パッケージの内容を正しく取得しません。 詳細については、「 WebView2Feedback #4743を参照してください。 回避策は、必要に応じて、 Microsoft.Web.WebView2 パッケージへの直接参照を追加することです。
  • ネイティブ AOT でコンパイルされたアプリでは、.NET ランタイムの GC スレッドの競合状態が原因で、ページ ナビゲーション後にハングする問題が発生することがあります。 詳細については、「 .NET の問題 #104582」を参照してください。
  • 1.6.0 の最初のリリースでは、.NET SDK の今後のリリースで解決される予定の依存関係の 1 つに問題が発生しました。 Microsoft.Windows.SDK.NET 参照のバージョンでエラーが発生した場合は、エラー メッセージで指定されている .NET SDK のバージョンを明示的に参照する必要があります。 たとえば、エラーでバージョン 10.0.19041.38 が必要と表示された場合は、 .csproj ファイルに次のコードを追加します。
    • <WindowsSdkPackageVersion>10.0.19041.38</WindowsSdkPackageVersion>.

バグの修正

  • .xaml で InfoBar.IsOpen を設定するときのクラッシュを修正しました。 詳細については、GitHub の問題 #8391 を参照してください。
  • マウスが WebView2 境界外に移動すると HTML 要素がポインター キャプチャを失う問題を修正しました。 詳細については、GitHub の問題 #8677 を参照してください。
  • ShouldConstrainToRootBounds=falseでポップアップにドラッグ アンド ドロップできない問題を修正しました。 詳細については、GitHub の問題 #9276 を参照してください。
  • PublishSingleFileが有効になっているとms-appx://参照が機能しない問題を修正しました。 詳細については、GitHub の問題 #9468 を参照してください。
  • 一部のバイナリでデバッガー シンボルが正しく動作しない問題を修正しました。 詳細については、GitHub の問題 #4633 を参照してください。
  • NavigationViewのサブクラス化時にクラッシュする可能性がある問題を修正しました。
  • テーブルのサイズをスクロールまたは縮小すると、 RichEditBox 内のテーブルの罫線が正しく消去されない問題を修正しました。
  • MediaTransportControlsからのポップアップの背景が完全に透明になる問題を修正しました。
  • WebView2 へのドラッグが失敗したり、100% 以外の表示スケール ファクターで間違った場所にドロップしたり、システム テキストのスケーリングが有効になったりする問題を修正しました。
  • MaxLength制限に達したために入力がブロックされたときに、TextBox/RichEditBoxがアクセシビリティ ツールに読み上げられない問題を修正しました。
  • カスタム タイトルバー シナリオの処理に関するいくつかの問題を修正しました。 詳細については、GitHub の問題 #7629#9670#9709 および #8431 を参照してください。
  • InfoBadge アイコンが表示されない問題を修正しました。 詳細については、GitHub の問題 #8176 を参照してください。
  • CommandBarFlyoutでアイコンが間違った位置に表示される場合がある問題を修正しました。 詳細については、GitHub の問題 #9409 を参照してください。
  • サブメニューを開いたり閉じたりするときのメニューのキーボード フォーカスに関する問題を修正しました。 詳細については、GitHub の問題 #9519 を参照してください。
  • アイテムをリサイクルするときに正しくないIsExpanded状態を使用するTreeViewに関する問題を修正しました。 詳細については、GitHub の問題 #9549 を参照してください。
  • ItemsRepeater.ItemTemplateで ElementName バインドを使用する場合の問題を修正しました。 詳細については、GitHub の問題 #9715 を参照してください。
  • ItemsRepeaterの最初の項目の位置が正しくない場合がある問題を修正しました。 詳細については、GitHub の問題 #9743 を参照してください。
  • InputNonClientPointerSource時に最小/最大/閉じるボタンへの入力が中断される問題を修正しました。 詳細については、GitHub の問題 #9749 を参照してください。
  • clang-cl で Microsoft.UI.Interop.h を使用するときのコンパイル エラーを修正しました。 詳細については、GitHub の問題 #9771 を参照してください。
  • CharacterReceived イベントがComboBox/TextBoxで動作しない問題を修正しました。 詳細については、GitHub の問題 #9786 を参照してください。
  • 矢印キーとタブ キーで重複する KeyUp イベントが発生する問題を修正しました。 詳細については、GitHub の問題 #9399 を参照してください。
  • SystemSuspendStatusを取得するためにPowerManager.SystemSuspendStatusChanged イベントが使用できない問題を修正しました。 詳細については、GitHub の問題 #2833 を参照してください。
  • ウィンドウ内の唯一のコントロールである場合に、初期キーボード フォーカスが WebView2 に正しく与えられなかった問題を修正しました。
  • ExtendsContentIntoTitleBar=trueを使用しているときに、[最小]、[最大]、[閉じる] ボタンがUI オートメーションに正しく表示されず、音声アクセスでそれらのボタンの番号が表示されない問題を修正しました。
  • 予期しない再入が原因でロック チェックでアプリがクラッシュする可能性がある問題を修正しました。
  • ハイ コントラスト テーマに切り替えると、 Hyperlink の色が正しく更新されない問題を修正しました。
  • バックグラウンド ウィンドウで ListView のコレクションを変更すると、そのウィンドウがフォアグラウンドに誤って移動してフォーカスを取得する可能性がある問題を修正しました。
  • ItemsRepeater.StartBringIntoViewを呼び出すとアイテムが消えることがある問題を修正しました。
  • ScrollViewer内のButtonをタッチしてドラッグすると、押された状態になる問題を修正しました。
  • 多くの新しい型とメンバーの情報が不足していた IntelliSense が更新されました。
  • ScrollViewerの空の領域をクリックすると、常にフォーカスがScrollViewerの最初のフォーカス可能なコントロールに移動し、そのコントロールをスクロールして表示される問題を修正しました。 詳細については、GitHub の問題 #597 を参照してください。
  • Window.Activated イベントが複数回発生することがある問題を修正しました。 詳細については、GitHub の問題 #7343 を参照してください。
  • NavigationViewItem.IsSelected プロパティを true に設定すると、展開時に子が表示されなくなる問題を修正しました。 詳細については、GitHub の問題 #7930 を参照してください。
  • MediaPlayerElementNoneまたはDropShadowエッジ効果でキャプションを正しく表示しない問題を修正しました。 詳細については、GitHub の問題 #7981 を参照してください。
  • ポップアップを表示するときに Flyout.ShowMode プロパティが使用されない問題を修正しました。 詳細については、GitHub の問題 #7987 を参照してください。
  • NumberBoxで丸めエラーが発生することがある問題を修正しました。 詳細については、GitHub の問題 #8780 を参照してください。
  • 古いバージョンの WinAppSDK に対してコンパイルされたライブラリを使用すると、型またはプロパティを見つけようとするエラーが発生する可能性がある問題を修正しました。 詳細については、GitHub の問題 #8810 を参照してください。
  • ウィンドウを起動するときに初期キーボード フォーカスが設定されない問題を修正しました。 詳細については、GitHub の問題 #8816 を参照してください。
  • FlyoutShowMode.TransientWithDismissOnPointerMoveAwayが初めて表示された後に機能しない問題を修正しました。 詳細については、GitHub の問題 #8896 を参照してください。
  • 一部のコントロールで、 Foreground プロパティと Background プロパティが正しくバインドされない問題を修正しました。 詳細については、「GitHub issue #7070#9020#9029#9083 および #9102 を参照してください。
  • VisualStateManagerセッターで使用されているThemeResourceがテーマの変更時に更新されない問題を修正しました。 ポップアップのこの一般的な影響を受けるコントロール。 詳細については、GitHub の問題 #9198 を参照してください。
  • WebViewがキーフォーカスを失い、余分なぼかし/フォーカス イベントやその他の問題が発生する問題を修正しました。 詳細については、GitHub の問題 #9288 を参照してください。
  • デバッグ出力 NavigationView バインド エラーが表示される可能性がある問題を修正しました。 詳細については、GitHub の問題 #9384 を参照してください。
  • 負のビューボックスを定義する SVG ファイルがレンダリングされなくなる問題を修正しました。 詳細については、GitHub の問題 #9415 を参照してください。
  • ItemsView.Layoutの向きを変更すると項目が削除される問題を修正しました。 詳細については、GitHub の問題 #9422 を参照してください。
  • ScrollViewをスクロールすると多くのデバッグ出力が生成される問題を修正しました。 詳細については、GitHub の問題 #9434 を参照してください。
  • MapContorl.InteractiveControlsVisibleが正常に動作しない問題を修正しました。 詳細については、GitHub の問題 #9486 を参照してください。
  • MapControl.MapElementClickイベントが正しく発生しない問題を修正しました。 詳細については、GitHub の問題 #9487 を参照してください。
  • 弱参照を使用する前に x:Bind が null をチェックせず、クラッシュする可能性がある問題を修正しました。 詳細については、GitHub の問題 #9551 を参照してください。
  • TeachingTip.Target プロパティを変更しても位置が正しく更新されない問題を修正しました。 詳細については、GitHub の問題 #9553 を参照してください。
  • WebView2 でドロップダウンが応答しない問題を修正しました。 詳細については、GitHub の問題 #9566 を参照してください。
  • GeometryGroup使用時のメモリ リークを修正しました。 詳細については、GitHub の問題 #9578 を参照してください。
  • ScrollView内のItemRepeaterから非常に多くの項目をスクロールすると、レンダリング フレームが空白になる可能性がある問題を修正しました。 詳細については、GitHub の問題 #9643 を参照してください。
  • SceneVisualが機能しない問題を修正しました。

1.6.0 の新しい API

バージョン 1.6.0 には、安定した 1.5 リリースと比較して、次の新しい API が含まれています。

Microsoft.UI

    ColorHelper
        ToDisplayName
Microsoft.UI.Input

    EnteredMoveSizeEventArgs
    EnteringMoveSizeEventArgs
    ExitedMoveSizeEventArgs
    InputNonClientPointerSource
        EnteredMoveSize
        EnteringMoveSize
        ExitedMoveSize
        WindowRectChanged
        WindowRectChanging

    MoveSizeOperation
    WindowRectChangedEventArgs
    WindowRectChangingEventArgs
Microsoft.UI.Xaml

    XamlRoot
        CoordinateConverter
Microsoft.UI.Xaml.Automation.Peers

    ScrollPresenterAutomationPeer
Microsoft.UI.Xaml.Controls

    PipsPager
        WrapMode
        WrapModeProperty

    PipsPagerWrapMode
    TabView
        CanTearOutTabs
        CanTearOutTabsProperty
        ExternalTornOutTabsDropped
        ExternalTornOutTabsDropping
        TabTearOutRequested
        TabTearOutWindowRequested

    TabViewExternalTornOutTabsDroppedEventArgs
    TabViewExternalTornOutTabsDroppingEventArgs
    TabViewTabTearOutRequestedEventArgs
    TabViewTabTearOutWindowRequestedEventArgs
Microsoft.Windows.Globalization

    ApplicationLanguages
Microsoft.Windows.Management.Deployment

    EnsureReadyOptions
        RegisterNewerIfAvailable

    PackageDeploymentFeature
    PackageDeploymentManager
        IsPackageDeploymentFeatureSupported
        IsPackageProvisioned
        IsPackageProvisionedByUri
        IsPackageReadyOrNewerAvailable
        IsPackageReadyOrNewerAvailableByUri
        IsPackageSetProvisioned
        IsPackageSetReadyOrNewerAvailable

    PackageReadyOrNewerAvailableStatus
Microsoft.Windows.Storage

    ApplicationData
    ApplicationDataContainer
    ApplicationDataContract
    ApplicationDataCreateDisposition
    ApplicationDataLocality