Windows アプリ SDK の最新の安定版チャネル リリース ノート
安定チャネルでは、運用環境のアプリによる使用がサポートされている Windows App SDK のリリースが提供されます。 Windows App SDK の安定リリースが使用されるアプリは、Microsoft Store に発行することもできます。
重要なリンク:
- 既存のアプリを以前のバージョンの Windows App SDK から新しいバージョンにアップグレードする場合は、「既存のプロジェクトを最新リリースの Windows App SDK に更新する」を参照してください。
安定版チャネル リリース ノートのアーカイブ:
- Windows アプリ SDK 1.5 の安定チャネルリリース ノート
- Windows アプリ SDK 1.4 の安定版チャネル リリース ノート
- Windows アプリ SDK 1.3 の安定版チャネル リリース ノート
- Windows アプリ SDK 1.2 の安定版チャネル リリース ノート
- Windows アプリ SDK 1.1 の安定版チャネル リリース ノート
- Windows アプリ SDK 1.0 の安定版チャネル リリース ノート
- Windows アプリ SDK 0.8 の安定版チャネル リリース ノート
- Windows アプリ SDK 0.5 の安定版チャネル リリース ノート
Windows App SDK 用のダウンロード
Note
Windows アプリ SDK Visual Studio 拡張機能(VSIX)は、現在は個別のダウンロードとして配布されていません。 それらは、Visual Studio内のVisual Studio Marketplaceで利用可能です。
バージョン 1.6.2 (1.6.241106002)
これは、1.6 リリースの重要なバグ修正を含むWindows アプリ SDKのサービス リリースです。
AppWindow.ExtendsContentIntoTitleBar
プロパティを読み取ると、カスタム タイトルバーのレンダリングがオンになる問題を修正しました。 詳細については、GitHub の問題 #9988 を参照してください。TextBox
/RichEditBox
の破壊中にクラッシュする可能性がある問題を修正しました。 詳細については、GitHub の問題 #9070 を参照してください。PackageDeploymentManager.IsPackageReadyOrNewerAvailable()
が失敗する問題を修正しました。 詳細については、GitHub の問題 #4817 を参照してください。ScrollViewer
がリークする問題を修正しました。- アプリがレンダリングを停止し、回復しないまれなシナリオの検出を追加しました。
- PackageFamilyName による登録を省略可能にする必要がある場合に、
PackageDeploymentManager.RegisterPackageSetAsync()
に URI が必要になる問題を修正しました。 - 予期される親ディレクトリが見つからない場合に ApplicationData の Machine フォルダーを作成するインストール時のエラーを修正しました。
- AppxManifest.xmlでの
<accesscontrol:AccessControl>
の処理に関する問題を修正しました。
このリリースには、ウィジェットのプロバイダーがウィジェットに Web コンテンツを組み込むことができる次の新しい API が含まれています。
Microsoft.Windows.Widgets.Providers
IWidgetManager2
IWidgetProviderMessage
IWidgetResourceProvider
WidgetManager
SendMessageToContent
WidgetMessageReceivedArgs
WidgetResourceRequest
WidgetResourceRequestedArgs
WidgetResourceResponse
バージョン 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 のサポート
.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.md と Pull Request #4453 」を参照してください。
TabView タブのティアアウトの改善
TabView
では、新しい CanTearOutTabs
モードがサポートされています。タブをドラッグしたり、新しいウィンドウにドラッグしたりするためのエクスペリエンスが強化されています。 この新しいオプションを有効にすると、タブドラッグは、ドラッグ中に新しいウィンドウがすぐに作成される Edge と Chrome のタブドラッグエクスペリエンスとよく似ています。これにより、ユーザーはウィンドウを画面の端にドラッグして、ウィンドウを最大化したり、1 つのスムーズな動きでスナップしたりできます。 この実装ではドラッグ アンド ドロップ API も使用されないため、これらの API の制限の影響を受けません。 特に、管理者として管理者特権で実行されているプロセスでは、タブの破棄がサポートされています。
その他の注目すべき変更点
- UWP からのギャップを埋める新しい
ColorHelper.ToDisplayName()
API を追加しました。 - 新しい
Microsoft.Windows.Globalization.ApplicationLanguages
クラスが追加されました。これには、特に新しいPrimaryLanguageOverride
機能が含まれています。 詳細については、GitHub の問題 #4523 を参照してください。 - 封印されていない
ItemsWrapGrid
。 これは下位互換性のある変更である必要があります。 PipsPager
は、最初の項目と最後の項目の間で折り返すことができる新しいモードをサポートします。
RatingControl
は、いくつかのハードコーディングされたスタイル プロパティをテーマ リソースに移動することで、よりカスタマイズ可能になりました。 これにより、アプリはこれらの値をオーバーライドして 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 を参照してください。MediaPlayerElement
がNone
または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
関連トピック
Windows developer