Windows App SDK の安定チャネルのリリース ノート

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

安定チャネルの次のリリースが現在使用できます。

既存のアプリを以前のバージョンの Windows App SDK から新しいバージョンにアップグレードする場合は、「既存のプロジェクトを最新リリースの Windows App SDK に更新する」を参照してください。

Windows App SDK 用のダウンロード

Windows App Visual Studio Extensions(VSIX)は、現在は別々のダウンロードとして配布されていません。 それらは、Visual Studio内のVisual Studio Marketplaceで利用可能です。

バージョン 1.5

バージョン 1.5.2 (1.5.240404000)

これは、Windows アプリ SDK 1.5 リリースの重大なバグ修正とウィジェット フィード プロバイダー向け新機能を含んだ Windows アプリ SDK のサービス リリースです。

ウィジェット フィード プロバイダーの更新

  • フィード プロバイダーは、ウィジェット ダッシュボードでアナウンスを表示できるようになりました。
    • 新しい FeedManager.TryShowAnnouncement API を使用すると、フィード プロバイダーはウィジェット ダッシュボードにアナウンスを表示するよう要求できます。 アナウンスを表示するには、FeedAnnouncement オブジェクトを作成して FeedManager.TryShowAnnouncement API を呼び出します。
    • [アナウンスのフィード] では、FeedAnnouncement API を使用してカスタマイズできる独自のバッジがタスク バーに表示されます。
  • フィード プロバイダーは、ユーザーが操作するプロバイダーに関する分析レポートとエラー レポートの情報の受信をオプトインできるようになりました。 オプトインするには、プロバイダーにより IFeedProviderAnalytics インターフェイスと IFeedProviderErrors インターフェイスの一方または両方を実装します。

フィード プロバイダーの更新には、次の新しい API が含まれています。

Microsoft.Windows.Widgets.Feeds.Providers
 
    FeedAnalyticsInfoReportedArgs
    FeedErrorInfoReportedArgs
    FeedManager
        SendMessageToContent
        TryShowAnnouncement
 
    FeedMessageReceivedArgs
    FeedResourceRequest
    FeedResourceRequestedArgs
    FeedResourceResponse
    IFeedAnnouncementInvokedTarget
    IFeedManager2
    IFeedProviderAnalytics
    IFeedProviderErrors
    IFeedProviderMessage
    IFeedResourceProvider
Microsoft.Windows.Widgets.Notifications
 
    AnnouncementActionKind
    AnnouncementTextColor
    FeedAnnouncement
    FeedAnnouncementInvokedArgs

バグ修正

  • プライマリ ディスプレイが 60 Hz で実行されていない場合に、正しい時刻に DispatcherTimer が起動しない問題を修正しました。
  • 100% 以外のスケール ファクターで実行すると、テキスト ボックス入力メソッド エディター (IME) ウィンドウが正しく配置されない問題を修正しました。 詳細については、GitHub の問題 #9382 を参照してください。
  • 別のアプリからドラッグ アンド ドロップ操作を開始すると、コピー/移動/リンクの正しいドロップ操作が許可されない問題を修正しました。
  • ListView の ItemsSource がリセットされ、すぐにフォーカスが当てられると発生する可能性のあるクラッシュを修正しました。
  • 継承されたスケール変換に ShouldConstrainToRootBounds="false" ポップアップが適用されない問題を修正しました。 詳細については、GitHub の問題 #9118#9433 を参照してください。
  • アニメーションが実行している状態でコンポジション オブジェクトが破棄された場合に発生する可能性があるクラッシュを修正しました。
  • NavigationView::RevokeNavigationViewItemRevokers でシャットダウン時に発生する可能性のあるクラッシュを修正しました。

バージョン 1.5.1 (1.5.240311000)

これは、1.5 リリースの重大なバグの修正が含まれている Windows App SDK のサービス リリースです。

  • 「map.html」をコピーできないために自己完結型アプリのビルドに失敗する場合がある問題を修正しました。
  • 有効なトークンが拒否されることで MapControl が初期化に失敗する問題を修正しました。 詳細については、GitHub の問題 #9324 を参照してください。
  • 青い背景で MapControl が読み込まれる問題を修正しました。 詳細については、GitHub の問題 #9377 を参照してください。
  • NavigationViewItem のシェブロンをクリックしても、1 回のクリックで正しく展開または折りたたまれない問題を修正しました。 これが原因で、PaneDisplayMode="Top" モードでシェブロンをクリックするとメニューが空白として表示される問題も起きていました。 詳細については、GitHub の問題 #9423#9426 を参照してください。
  • タッチまたはペンで NavigationViewItem をタップすると、アイテムがそれ以降の入力に応答しなくなる問題を修正しました。 詳細については、GitHub の問題 #9429 を参照してください。
  • NavigationView.PaneFooter 領域内のアイテムをクリックするとクラッシュする問題を修正しました。 詳細については、GitHub の問題 #9396 を参照してください。
  • メニューのアイコンが間違った場所に表示される場合がある問題を修正しました。 詳細については、GitHub の問題 #9409 を参照してください。
  • ウィンドウから切り替えて戻るまで、アクリルがメニューに表示されない問題を修正しました。 詳細については、GitHub の問題 #9406 を参照してください。
  • TextBox/RichEditBox の初期化中に発生する可能性があるクラッシュを修正しました。 詳細については、GitHub の問題 #9216 を参照してください。
  • NavigationView が破棄時にスローされ、キャッチされるノイズの多い一部の例外を修正しました。
  • 間違った PointerCaptureLost メッセージが発生したことが原因で、「ピンチ操作によるズーム」 ジェスチャがパンまたはタップとして表示される場合がある問題を修正しました。

バージョン 1.5

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

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

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

XAML Islands ランタイムおよびシャットダウンの更新

WinAppSDK 1.4とWinAppSDK 1.5では、XAML Islandsベースのアプリケーションで、任意のスレッド上の最後のXAMLウィンドウが閉じられた場合の動作に違いがあります。

  • WinAppSDK 1.4では、スレッド上の最後のXAMLウィンドウが閉じられると、常にXAMLランタイムはスレッドのイベントループを終了します。
  • WinAppSDK 1.5 の場合:
    • アプリが WinUI Desktop アプリの場合、既定の反応は WinAppSDK 1.4 と同じです。
    • デスクトップWindowXamlSource("XAML Islands")APIでXAMLを使用している場合、デフォルトの動作は、XAMLが自動的にスレッドのイベントループを終了しないようになりました。
    • 双方のモードで、Application.DispatcherShutdownMode プロパティを設定して、この反応を変更できます。

詳細については、使用可能であれば Application.DispatcherShutdownMode プロパティ用ドキュメンテーションを参照してください。 GitHub提案#8492.が完了しました。

WinAppSDK 1.4とWinAppSDK 1.5のXAML Islandsベースのアプリにおいて、XAMLランタイムのライフタイムには動作上の違いがあります。

  • WinAppSDK 1.4 では、特定のスレッド上のすべての WindowsXamlManager および DesktopWindowXamlSource オブジェクトが閉じられるかシャットダウンされるか、そのスレッドで実行されている DispatcherQueue がシャットダウンされると、XAML ランタイムはスレッド上でシャットダウンします。 ダウンします (この場合、XAML ランタイムはDispatcherQueue.FrameworkShutdownStarting段階でシャットダウンします)。
  • WinAppSDK 1.5 では、XAML ランタイムは、そのスレッド上で実行されている DispatcherQueue がシャットダウンされた場合にのみスレッド上でシャットダウンします (Xaml ランタイムは常に DispatcherQueue.FrameworkShutdownStarting ステージでシャットダウンされます)。

詳細については、使用可能であれば WindowsXamlManager クラス用ドキュメンテーションを参照してください。

WindowsXamlManager.InitializeForCurrentThread()には動作の違いがあります:

  • WinAppSDK 1.4 では、WindowsXamlManager.InitializeForCurrentThread()は呼び出しごとに WindowsXamlManager オブジェクトの一意のインスタンスを返します。
  • WinAppSDK 1.5 では、スレッド上に既存のインスタンスが存在する場合、WindowsXamlManager.InitializeForCurrentThread() は既存のインスタンスを返します。 Close/Dispose() は無視されるようになりました。

WinUI Maps コントロール

WinUIMapsコントロールが利用できるようになりました。 このコントロールは、WebView2 と Azure Maps を利用し、次の機能を提供します。

  • マップ ボタンまたはタッチによるパンとズーム。
  • マップのスタイルを、サテライト、地形、またはストリート ビューに変更。
  • 開発者がカスタマイズ可能なアイコンを含む対話可能なピンをプログラムでマップに追加。
  • 初期読み込みがマップに基づく箇所における開発者によるカスタマイズ。
  • パン、ズーム、マップ スタイルのボタンの非表示または表示に対する開発者によるコントロール。

WinUI 3 Maps コントロール

Note

Maps コントロールを使用するには、Azure Maps キーが必要です。 キーを作成するには、Web アプリ作成用 Azure Maps ドキュメンテーション ページを参照してください。

Maps コントロールは全く新しい機能であり、今後の方向性の評価のため皆様のフィードバックをお待ちしております。

新しい SelectorBar コントロール

バージョン 1.5 では、ユーザーが複数のデータ ビューを切り替えられるようにする新しいコントロールSelectorBarを追加しました。 このコントロールは、1.5 ロードマップでは以前は「SegmentedControl」と呼ばれていました。

WinUI 3 SelectorBar コントロール

CommandBarFlyout の基本コマンドのラベル

CommandBarFlyoutのビジュアルが更新され、Label プロパティが AppBarButton() に設定されている場合に、プライマリ コマンド領域の項目のテキスト ラベルが表示されるようになりました。 以前は、CommandBarFlyoutエリアの主なコマンドはアイコンのみを表示していましたが、使いやすさを向上させるためにアイコンとラベルの両方を表示できるようになりました。

WinUI 3 CommandBarFlyout ラベル

カスタム環境/オプションの WebView2 サポート

WinUI WebView2 コントロールは、カスタム CoreWebView2およびCoreWebView2Environmentを使用して基になる () オブジェクトをカスタマイズする機能を公開するようになりました。 これにより、アプリ作成者は、WebView2Runtime の読み込み元となる代替パスを指定したり、別の UserDataFolder の使用を選択したり、IsPrivateModeEnabled()ScriptLocaleなどのオプションを設定したりすることができます。

.NET 8のサポート

最近の 1.4 サービス リリースで .NET 8 のサポートを追加しましたが、プラットフォーム固有の RID の使用に対する警告は依然として残りました。 1.5 ではその作業が完了し、警告が表示されなくなりました。

デバッグとソースの可用性の向上

現在、microsoft-ui-xaml リポジトリ内のコードの Github ソース サーバー情報がパブリック シンボルに挿入され、デバッガーがソース コードを自動的にダウンロードできるようになりました。 また、デバッグ エクスペリエンスを向上させるために、WinAppSDK 全体のシンボルにその他の修正と改善も加えました。

レイアウトサイクルのデバッグ機能の改善

WinUI アプリでのレイアウト サイクルのデバッグは困難な場合があるため、1.5 ではDebugSettings オブジェクトで、レイアウト プロセスのログ記録とブレークポイントの改善を有効にするオプションが公開され、アプリでのレイアウト サイクルのデバッグと修正が容易になります

WinAppSDK における他の新機能

  • PublishSingleFile デプロイ モデルのサポートが追加されました。 PublishSingleFile について詳しくは、 単一ファイルのデプロイに関するドキュメンテーションをご覧ください。
  • スクリーン リーダーのサポート、テキスト スケーリングのサポート、その他のアクセシビリティ機能に改善が追加されました。
  • 優先順位の高い GitHub バグ バックログに基づいて、さまざまな安定性とパフォーマンスが向上しました。

新機能は個別にリリースされます

C# および C++ 用の WinAppSDK Visual Studio テンプレートの新しいバージョンが Visual Studio Marketplace を通じてリリースされており、1.5 のリリースから数週間後に表示されます。 新しいバージョンでは、テンプレートを WinAppSDK リリースとは独立してリリースできるようになり、顧客に更新情報を提供する際の柔軟性が大幅に向上しました。

以前に計画されていたその他の機能

1.5 では、ロードマップで発表した次の機能について進展がありましたが、完了していませんでした。 これらは 1.6 タイムフレームまで継続されます。

  • タブ付きウィンドウ
  • WebView2 のドラッグ アンド ドロップのサポート
  • テーブルビューとインクコントロールの調査

ダイナミックライティングは当面ロードマップから削除されました。

既知の問題

  • .xaml ファイルなどのリソースを含むライブラリを使用すると、実行時にそれらのリソースが見つからないことを示すエラー メッセージが表示されることがあります。 この場合、それらのリソースが確実に含まれるように、プロジェクト ファイルに <ShouldComputeInputPris>true</ShouldComputeInputPris>を挿入することが必要になる場合があります。
  • NavigationViewItemの山形をクリックしても、1 回のクリックで正しく展開または折りたたまれなくなりました。 ダブルクリックは引き続き機能し、NavigationViewItem の他の場所をクリックしても機能します。

バグ修正

  • StackPanel が折りたたまれたアイテムに間隔を適用する問題を修正しました。 詳細については、GitHub の問題 #916 を参照してください。
  • 別のアプリウィンドウを閉じた後にスクロールコントロールが機能しなくなる問題を修正しました。 詳細については、GitHub の問題 #9292 および #9355を参照してください。
  • 最初のフレームがレンダリングされる前に DebugSettings.EnableFrameRateCounter 正しい EF に設定するとクラッシュする問題を修正しました。 詳細については、GitHub イシュー #2835 を参照してください。
  • 一部のヘッダーに必要な依存関係が含まれていない場合の C++ の潜在的なコンパイル エラーを修正しました。 #include 順序の変更は、アプリが 2023 より古いバージョンの C++/WinRT を使用している場合に IInspectable のコンパイル エラーが発生する可能性があるなど、一部のアプリに影響を与える可能性があることに注意してください。 詳細については、GitHub の問題 #9014 を参照してください。
  • ElementName バインディングが ItemsRepeaterDataTemplate 内で機能しない問題を修正しました。 詳細については、GitHub の問題 #560 を参照してください。
  • アプリ内ツールバーが有効になっている Visual Studio でアプリを実行するとクラッシュする問題を修正しました。 修正を完全に入手するには、Visual Studio 17.8 Preview 2 以降が必要です。 詳細については、GitHub の問題 #8806 を参照してください。
  • 高速スクロール時に AnnotatedScrollbar がクラッシュすることがある問題を修正しました。
  • メニューテキストが時々切り詰められる問題を修正しました。
  • TeachingTip が適切な対象を受け取らない問題を修正しました。 詳細については、GitHub の問題 #3257 を参照してください。
  • TeachingTipTailVisibility を、起動時に折りたたむに設定するとアプリケーションがクラッシュする問題を修正しました。 詳細については、GitHub の問題 #8731 を参照してください。
  • ライブラリ使用時の PRI ファイルの処理方法に関する問題を修正しました。 詳細については、GitHub の問題 #8857 を参照してください。
  • プロジェクション DLL が生成されない 1.5-experimental2 リリースの問題を修正しました。 詳細については、GitHub の問題 #4152 を参照してください。
  • RichEditBox のテキスト書式設定ポップアップ上の 3 点リーダーボタンがアクションの一覧を正しく表示しない問題を修正しました。 詳細については、GitHub の問題 #9140 を参照してください。
  • ListView がキーボード アクセラレーターを正しく扱わない問題を修正しました。 詳細については、GitHub の問題 #8063 を参照してください。
  • AccessKey を使ってウィンドウを閉じる際のアクセス違反問題を修正しました。 詳細については、GitHub の問題 #8648 を参照してください。
  • AccessKey() を使用してウィンドウを閉じるときのクラッシュを修正しました。 詳細については、GitHub の問題 #9002 を参照してください。
  • MenuBar にある MenuFlyoutItem のテキスト配置に影響する問題を修正しました。 詳細については、GitHub の問題 #8755 を参照してください。
  • 強調表示されたテキストが右クリック時に強調表示されたままとならない問題を修正しました。 詳細については、GitHub の問題 #1801 を参照してください。
  • 非アクティブなウィンドウを閉じるとアプリがクラッシュする問題を修正しました。 詳細については、GitHub の問題 #8913 を参照してください。
  • マウスの中央ボタンでスクロールし、直後に左クリックすると、アプリケーションがハングされることがある問題を修正しました。 詳細については、GitHub の問題 #9233 を参照してください。
  • カスタムの NavigationViewItem を使用していると起動時にアプリがクラッシュする問題を修正しました。 詳細については、GitHub の問題 #8814 を参照してください。
  • 省略記号ボタンで誤ってエラーが生成される NavigationView の問題を修正しました。 詳細については、GitHub の問題 #8380 を参照してください。
  • マルチウィンドウ アプリで SystemBackdrop が正しくレンダリングされない問題を修正しました。 詳細については、GitHub の問題 #8423 を参照してください。
  • ObservableCollection の先頭に挿入すると生じる重複の問題を修正しました。 詳細については、GitHub の問題 #8370 を参照してください。

バージョン 1.4

バージョン 1.4.5 (1.4.240211001)

これは、1.4 リリースの重大なバグの修正が含まれている Windows App SDK のサービス リリースです。

  • マウス ホイールでスクロール中にマウス ボタンをクリックするとアプリケーションがハングするという問題を修正しました。 詳細については、GitHub の問題 #9233 を参照してください。
  • NuGet パッケージのチェーンを参照するときにアセットが重複するという問題を修正しました。 詳細については、GitHub の問題 #8857 を参照してください。
  • メモリ リーク、省略記号メニューが空のときに生じるクラッシュ、ウィンドウ内で誤って制約されている省略記号メニューなど、BreadcrumbBar の問題をいくつか修正しました。
  • グラフィックス リソースを解放するとシャットダウン時にクラッシュする可能性があるという問題を修正しました。

バージョン1.4.4 (1.4.231219000)

これは、1.4 リリースの重大なバグの修正が含まれている Windows App SDK のサービス リリースです。

  • WinUI 3 診断のセキュリティの問題を修正しました。
  • タッチでアクティブ化したときにパスワードボックスにスクリーンキーボードが表示されない入力の問題を修正しました。 詳細については、GitHub issue #8947 を参照してください。
  • Microsoft.UI.Xaml.Controls.dll ファイルのサイズが予期せず大きくなる問題を修正しました。
  • フォーカスの設定時にクラッシュする可能性があった CommandBarFlyout の問題を修正しました。
  • .NET 8 RID 固有の資産処理に対する Windows App SDK のサポートを更新しました。
  • 一部のスワップチェーンが正しく配置または引き伸ばされない問題を修正しました。

バージョン 1.4.3 (1.4.231115000)

これは、1.4 リリースの重大なバグの修正が含まれている Windows App SDK のサービス リリースです。

  • メニューが背景なしで短時間表示される場合がある問題を修正しました。
  • 特定のマルチモニター シナリオで発生する可能性のあるクラッシュを修正しました。
  • コンテキスト メニューが画面外に表示される場合がある問題を修正しました。
  • ウィンドウ スタイルと動作の最大化に関する問題を修正しました。 詳細については、GitHub issue #8996 を参照してください。
  • フォーカスが別のコントロールから予期せず取得されるアイランドに関する問題を修正しました。
  • NavigationView のタブの順序に関する問題を修正しました。
  • 白色のバーがタイトルバーの上部に表示される場合があるレンダリングの問題を修正しました。 詳細については、GitHub issue #8947 を参照してください。
  • さまざまなパフォーマンスの修正。

バージョン 1.4.2 (1.4.231008000)

これは、1.4 リリースの重大なバグの修正が含まれている Windows App SDK のサービス リリースです。

  • メモリとオブジェクトの過剰な割り当てが原因で explorer.exe でクラッシュする問題を修正しました。
  • [戻る] ボタンが正常に動作しなくなるタイトル バーの操作の問題を修正しました。
  • ソース ファイルが複数回含まれている場合に警告が生成される原因となった問題を修正しました。
  • コンテキスト メニューのパフォーマンスに影響する問題を修正しました。
  • ターゲットの .exe が WindowsApps フォルダー内のパッケージの同じ場所を常に指していた .lnk ショートカットの問題を修正しました。
  • 一部のフォントでインド語のテキストの適切なレンダリングに影響する DWriteCore の問題を修正しました。
  • リスト ビューで、入れ子になった選択項目との Tab/Shift + Tab キーを使った適切なキーボード ナビゲーションが行われない問題を修正しました。
  • コンボボックスを 2 回目に展開した後、タッチ操作でコンボボックス項目をスクロールできなくなる問題を修正しました。 詳細については、GitHub issue #8831 を参照してください。
  • 一部の言語で WinAppSDK パッケージに WinUI のローカライズされたリソースが含まれていなかった問題を修正しました。
  • エクスプローラーと XAML でユーザーの優先する言語が表示される方法の不整合を修正しました。
  • エクスプローラーで、アクティブなタブの下に細い線が表示される技術的な問題を修正しました。
  • フレームワークが提供するキーボード アクセラレータの一部が適切にローカライズされていない問題を修正しました。 詳細については、GitHub issue #2023 を参照してください。
  • タップ時に繰り返しスクロールする RepeatButton コントロールの問題を修正しました。
  • WinAppSDK インストーラー .exe を適切なリソース バージョン情報に修正しました。

バージョン 1.4.1 (1.4.230913002)

これは、1.4 リリースの重大なバグの修正が含まれている Windows App SDK のサービス リリースです。

  • 最初のフレームまでの時間を改善するためにパフォーマンスの問題を修正しました。
  • メニューが RequestedTheme に従っていなかった問題を修正しました。 たとえば、この問題により、白い背景に白いテキストが表示される可能性がありました。 詳細については、GitHub イシュー #8756 を参照してください。
  • 一部のメニューでアクリルの背景が完全に透明になる場合がある問題を修正しました。
  • XAML により、Windows でデスクトップの壁紙が不必要に再描画される場合がある問題を修正しました。
  • ListViewGridViewTabNavigation = LocalTabNavigation = Cycle のサポートを修正しました。これにより、方向キーに加えて、TAB キーを使用してヘッダーと項目の間を移動できるようになりました。
  • ツールヒントを閉じたときのいくつかの煩雑な例外を修正しました。 詳細については、GitHub イシュー #8699 を参照してください。

バージョン 1.4

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

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

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

カスタム タイトル バーと AppWindow タイトル バーの結合

WinUI 3 カスタム タイトル バーは、Windows App SDK 1.4 の内部で、NonClientInputPointerSource API と共に AppWindow タイトルのバー実装を使用します。 その結果、両方のタイトル バー実装が、同じ機能と制限で同じように動作するようになりました。 これは、サポートされているすべてのケースで完全に下位互換性があります。カスタム定義のタイトル バーを持つアプリはすべて、前と同様に動作します。 ただし、カスタム タイトル バーを初めて使用する可能性がある WinUI 3 開発者は、これらの新機能を利用してより簡単に理解し、使用できるようになりました。

  • 開発者が特にタイトル バー要素を定義しないより適切な既定のシナリオ (WinUI 2 からのフォールバック タイトル バーが置き換えられる)
  • タイトル バー内に個別のドラッグ領域があるため、複数のドラッグ領域を作成し、クリック可能なコントロールをクライアント以外の領域 (タイトル バー領域) の任意の部分に配置できる
  • アプリ内の任意の場所に配置したり、アプリ全体をドラッグ可能にしたりできるアプリ全体にわたるドラッグ可能な領域
  • リソース ベースのテーマを置き換えるより適切なテーマのサポート
    • ドラッグ領域は透明であるため、毎回アプリのテーマに従う
  • カスタマイズの豊富さ。[最小化]、[最大化]、[閉じる] ボタンを非表示にする、タイトル バー内にシステム アイコンを配置する、さまざまな領域を NCHITTEST 応答を受信するキャプション ボタンとして機能させる
  • ほとんどのシナリオでは上位レベルの WinUI 3 API を使用するが、下位レベルの制御には AppWindow API を混在させるなど、AppWindow タイトル バー API での組み合わせを可能にする開発者の自由度の向上

ウィジェットの更新

ウィジェット プロバイダーで実装する 3 つの新しいインターフェイス IWidgetProvider2IWidgetProviderAnalyticsIWidgetProviderErrors が追加されました。 IWidgetProvider2 を使用すると、プロバイダーは、ユーザーによって呼び出された [カスタマイズ] アクションに応答できます。これは、ファースト パーティ ウィジェットで使用可能なものと同じです。 IWidgetProviderAnalytics および IWidgetProviderErrors インターフェイスは、各ウィジェットのテレメトリを収集するためにプロバイダーによって使用されます。ウィジェットに関する分析およびエラー イベントは、対応するウィジェット プロバイダーに伝達されます。 新しい機能をサポートするための関連情報を伝達するために、WidgetCustomizationRequestedArgsWidgetAnalyticsInfoReportedArgsWidgetErrorInfoReportedArgs の各クラスが使用されます。

XAML Islands が試験段階ではなくなった

XAML Islands と基になる ContentIslands プラットフォームが試験段階ではなくなりました。

  • 現在、XAML Islands は C++ アプリでの使用のためにのみテストされます。 このリリースには、WPF または WinForms で使用するための便利なラッパー要素は含まれていません。
  • DesktopWindowXamlSource とそれに関連する型が XAML Islands の Microsoft.UI.Xaml.Hosting 名前空間に追加されました。 要素の基になる Island 情報にアクセスしやすくするために XamlRoot.ContentIslandEnvironment が追加されました。
  • XAML Islands の基になるサポートとして、またはこの ContentIslands 機能を XAML なしで使用するために、Microsoft.UI.Content 名前空間と Microsoft.UI.Input 名前空間に多くの新しい型が導入されました。
  • Island のシナリオのために、Microsoft.UI.Input.DragDrop 名前空間に新しい DragDropManager (および関連する型) が追加されました。

ItemsView

ItemsView という名前の新しいリスト コントロールと、対応する具象クラス ItemContainer を導入しています。 ItemContainer は、選択状態とビジュアルが組み込まれた軽量のコンテナーです。これは、目的のコンテンツを容易にラップでき、コレクション コントロールのシナリオに ItemsView と共に使用できます。

  • 新しい ItemsView コントロールは、データ コレクションを表示します。 ItemsViewListView および GridView コントロールに似ていますが、ItemsRepeaterScrollViewItemContainerItemCollectionTransitionProvider の各コンポーネントを使用して構築されます。 これは、カスタム Layout または ItemCollectionTransitionProvider 実装をプラグインするための固有の機能を提供します。 もう 1 つの主な利点として、項目の選択を保持しながら、その場でレイアウトを切り替える機能があります。 内側の ScrollView コントロールもまた、プログラムによるスクロール中にアニメーションを制御する機能などの、ListView/GridViewScrollViewer コントロールでは使用できない機能を提供します。
    • ItemsRepeater 上の新しい ItemTransitionProvider プロパティ (および新しい ItemsView コントロール) を使用すると、そのコントロール上の切り替えアニメーションを制御する ItemCollectionTransitionProvider オブジェクトを指定できます。 CreateDefaultItemTransitionProvider メソッドも Layout に追加されました。これにより、レイアウト オブジェクトは、ユーザーが ItemsView コントロールで明示的に提供しない場合、それに付随するフォールバック切り替えを提供できるようになります。
    • 項目のレイアウト方向 (存在する場合) がソース コレクション内のそのインデックスに基づいている場合の Layout 上の新しい IndexBasedLayoutOrientation プロパティ。 既定値は IndexBasedLayoutOrientation.None です。 カスタム レイアウトは、新しい (保護された) SetIndexBasedLayoutOrientation メソッドを呼び出してこのプロパティを設定します。
    • VirtualizingLayoutContext 上の新しい VisibleRect プロパティは、Layout に関連付けられた FrameworkElement 内の表示されているビューポートの四角形を取得します。 保護された仮想 VirtualizingLayoutContext.VisibleRectCore メソッドは、VisibleRect プロパティから返される値を指定するようにオーバーライドできます。
  • 新しい LinedFlowLayout クラスは通常、ItemsView コレクション コントロールの項目をレイアウトするために使用されます。 これは、画像のコレクションを表示するために特に役立ちます。 これは、等しい高さのラインで左から右に、次に上から下にレイアウトすることによって行われます。 これらの画像によって水平線が塗りつぶされた後、次のラインに折り返されます。 画像は、ラインに収まるように、左端と右端でトリミングされる可能性があります。 また、拡大モードが使用されているとき、ラインを塗りつぶすために水平方向に拡張され、上端と下端でトリミングされる可能性もあります。

WinAppSDK 全体にまたがる新機能

  • UWP の AccessibilitySettings クラスと同様に、Win32 WinRT アプリでシステムのハイ コントラスト設定がいつ変更されたかを検出できるようにする新しい ThemeSettings クラス。 詳細については、GitHub 上の ThemeSettings API の仕様を参照してください。
  • AccessKeyManager.EnterDisplayMode は、指定されたルートの現在のフォーカスされた要素のアクセス キーを表示するための新しいメソッドです。 アクセス キーは、コマンドを呼び出すためにキーのヒントを表示しているとき (ペイントで Alt キーを押して、どのキーがどのコントロールに対応しているかを表示する場合など) に "表示モード" になります。 このメソッドを使用すると、プログラムで表示モードに入ることができます。
  • Application.ResourceManagerRequested は、既定の ResourceManager が機能しないシナリオで、リソース URI を解決するための別の IResourceManager を指定するメカニズムを提供します。 詳細については、GitHub 上の Application.ResourceManagerRequested API の仕様を参照してください。
  • WebView2 SDK のバージョンが 1661.34 から 1823.32 に更新されました。
  • Popup/FlyoutBase.IsConstrainedToRootBounds = false がサポートされるようになったため、ポップアップは親ウィンドウの境界外に拡張できます。 これらの制約なしのポップアップでのアクリルの使用をサポートするために、SystemBackdrop プロパティがこれらの型に追加されました。 メニューは、既定ではこれを使用してアクリルを使用します。
  • オブジェクトまたはスレッドのシャットダウン中の処理を改善するために、ClosedFrameworkClosedIsClosedDesktopAcrylicControllerMicaController に追加されました。
  • DesktopAcrylicController.Kind が、いくつかの標準的なアクリルの外観から選択するように設定できるようになりました。
  • DispatcherQueue には、より適切に整理されたシャットダウンを容易にするため、また Islands を使用するアプリが標準のサポートされているイベント ループを簡単に実行するための新しいイベントとヘルパーがいくつか含まれています。
  • Microsoft.UI.Input 名前空間内の InputNonClientPointerSource は、カスタム タイトル バーのシナリオでクライアント以外の領域を定義するために使用できます。 これらの領域でのホバー イベントやクリック イベントなどの対応するイベント用のコードを登録できます。
  • AppWindow には、DispatcherQueue を取得して関連付けるための新しいヘルパーがいくつか含まれています。
  • 新しい TreeView.SelectionChanged イベントを使用すると、開発者は、ユーザーまたは分離コードが TreeView コントロール内の選択された一連のノードを変更したときに応答できます。
  • 新しい ScrollView コントロールは、ScrollViewer に代わる新しい代替手段を提供します。 この新しいコントロールは、動作や API が既存の ScrollViewer コントロールと高度に整合されていますが、InteractionTracker に基づいているため、アニメーション駆動型のビュー変更などの新機能を備え、また ItemsRepeater のすべての機能を保証するようにも設計されています。 詳細については、より柔軟な ScrollViewer · イシュー #108 · microsoft/microsoft-ui-xaml (github.com) を参照してください。 さまざまな新しい型 (ScrollPresenter を含む) が ScrollView モデル全体に含まれています。
  • 新しい AnnotatedScrollBar コントロールは、多数の項目間を簡単に移動する方法を提供することによって、通常のスクロール バーの機能を拡張します。 これは、マーカーとして機能するラベルが付いたクリック可能なレールを使用して実現されます。 また、クリック可能なレールの上にマウス ポインターを置くとツールヒントが表示されるため、スクロール可能なコンテンツのよりきめ細かな理解も可能になります。

既知の問題

バグ修正

  • Microsoft.Windows.AppLifecycle.AppInstance.Restart("") API を呼び出すと、非パッケージ アプリがクラッシュしていた問題を修正しました。 詳細については、GitHub イシュー #2792 を参照してください。
  • 1.4-experimental1 で導入されたインストーラーのクラッシュの問題を修正しました。 詳細については、GitHub イシュー #3760 を参照してください。
  • TextBlock でテキスト取り消し線が正しく削除されなかった問題を修正しました。 詳細については、GitHub イシュー #1093 を参照してください。
  • TabFocusNavigation が [一度だけ] に設定されているパネルで Shift + Tab キーの移動が正しくない問題を修正しました。詳細については、GitHub イシュー #1363 を参照してください。
  • 名前付き XAML コントロールのプロパティで {x:Bind} が正しく機能しなくなった C++/WinRT での問題を修正しました。 詳細については、GitHub イシュー #2721 を参照してください。
  • DebugSettings.EnableFrameRateCounter = true を設定すると発生する WinUI デスクトップ アプリでのランタイム AccessViolation の問題を修正しました。 詳細については、GitHub イシュー #2835 を参照してください。
  • XamlTypeInfo.g.cpp に必要なヘッダーが含まれていなかった問題を修正しました。 詳細については、GitHub イシュー #4907 を参照してください。
  • マルチタッチとマウスの同時入力によって発生するクラッシュの問題を修正しました。 詳細については、GitHub イシュー #7622 を参照してください。
  • マウス ポインターを置いたときの非アクティブなウィンドウのスクロールを無効にするシステム設定が有効な場合に、アクティブな WinUI 3 アプリ ウィンドウがスクロールできなくなっていた問題を修正しました。 詳細については、GitHub イシュー #8764 を参照してください。
  • MediaPlayerElement をサブクラス化しようとしているときのクラッシュを修正しました。
  • TreeView でのクラッシュとメモリ リークのいくつかの問題を修正しました。
  • RadioButtons でキーボードを使用して移動しているときに発生する可能性があったアプリのハングの問題を修正しました。
  • PipsPager でキーボードを使用して移動しているときのクラッシュを修正しました。
  • 設定アプリの [テキスト サイズ] アクセシビリティ設定でスケーリングするように WebView2 コンテンツを修正しました。
  • ディスプレイがオフのときにアニメーションが実行されていると発生する可能性があったクラッシュを修正しました。
  • 最初のレイアウトまたはレンダリングに最大 10% のオーバーヘッドが追加された 1.3 で導入されたパフォーマンスの問題を修正しました。

バージョン 1.3

バージョン 1.3.3 (1.3.230724000)

これは、1.3 リリースの重大なバグの修正が含まれている Windows App SDK のサービス リリースです。

  • ダイアログ ボックスが閉じられたときにマウスが機能を停止する場合があった問題を修正しました。
  • システム上のパッケージ バージョンの不一致のためにアプリをインストールできなくなっていたデプロイの問題を修正しました。 詳細については、GitHub イシュー #3740 を参照してください。
  • Windows App SDK 1.3 でのコンテキスト メニューの配置に影響を与えている問題を修正しました。
  • XAML による自身のシャットダウンが早すぎるため、アプリが閉じられると (状況によっては) 一部の WinUI3 アプリがクラッシュする問題を修正しました。
  • 右から左に記述する言語でフォント アイコンが正しくミラーリングされなかった問題を修正しました。 詳細については、GitHub イシュー #7661 を参照してください。
  • リソースが不適切な順序で破棄された場合にシャットダウン時にアプリがクラッシュする問題を修正しました。 詳細については、GitHub イシュー #7924 を参照してください。

バージョン 1.3.2 (1.3.230602002)

これは、1.3 リリースの重大なバグの修正が含まれている Windows App SDK のサービス リリースです。

  • 保護されたカーソルを設定するときのクラッシュを修正しました。
  • アプリ起動時の XamlMetadataProvider のパフォーマンスの問題を修正しました。 詳細については、GitHub の issue #8281 を参照してください。
  • RichTextBlock のハイパーリンクとタッチに関する問題を修正しました。 詳細については、GitHub の issue #6513 を参照してください。
  • WebView2 のスクロールとタッチパッドに関する問題を修正しました。 詳細については、GitHub の issue #7772 を参照してください。
  • Windows App SDK の更新で Visual Studio の再起動が必要になることがある問題を修正しました。 詳細については、GitHub の issue #3554 を参照してください。
  • デバッガーで実行するときのシャットダウン時の煩雑な例外を修正しました。

バージョン 1.3.1 (1.3.230502000)

これは、1.3 リリースの重大なバグの修正が含まれている Windows App SDK のサービス リリースです。

  • コンテンツが null の場合に SystemBackdrop を設定すると、アプリがクラッシュする問題を修正しました。 詳細については、GitHub の issue #8416 を参照してください。
  • 1.3.0 で追加された新しい機能である XAML で Window タイトルを設定すると、アプリがクラッシュする問題を修正しました。 詳細については、GitHub の issue #3689 を参照してください。
  • コンテンツが変更されたときに、ウィンドウが適切にフォーカスを取得できない問題を修正しました。
  • WinAppSDK 1.3 プロジェクト テンプレートを使って C++ プロジェクトを作成する際に関する問題を修正しました。
  • Visual Studio Marketplace のテンプレートを更新しました

バージョン 1.3

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

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

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

XAML Backdrop API

XAML ウィンドウに組み込まれたプロパティにより、マイカと背景アクリルの背景が WinUI 3 アプリで使いやすくなりました。 Xaml Backdrop プロパティの詳細については、System BackdropMica Backdrop の API ドキュメントを参照してください。

public MainWindow()
{
    this.InitializeComponent();

    this.SystemBackdrop = new MicaBackdrop();
}

Window.AppWindow

数行の定型コードを置き換えて、Window.AppWindow を介して [ウィンドウ] から直接 AppWindow API を使用できるようになりました。

WinAppSDK 全体の新機能

  • ApplicationModel.DynamicDependency: 非推奨の MddGetGenerationId を置き換える PackageDependency.PackageGraphRevisionId
  • Environment Manager: Environment Manager の変更をアプリケーションで追跡できるかどうかを通知する EnvironmentManager.AreChangesTracked
  • 参照された Static/ThemeResource の検索を解決できないときに、新しいイベント DebugSettings.XamlResourceReferenceFailed が発生するようになりました。 このイベントは、Static & ThemeResource ルックアップの失敗をより適切にデバッグできるようにするために、フレームワークがそのキーを検索した場所の詳細を示すトレースへのアクセスを提供します。 詳細については、GitHub の「XAML リソース参照の検索エラーの追跡」の API 仕様を参照してください。

その他の更新内容

既知の問題

xaml コンパイラの最近の変更により、1.3 にアップグレードした既存のプロジェクトは Visual Studio 内で次のようなビルド エラーが発生する可能性があります。

> C:\Users\user\\.nuget\packages\microsoft.windowsappsdk\\**1.3.230331000**\buildTransitive\Microsoft.UI.Xaml.Markup.Compiler.interop.targets(537,17): error MSB4064: The "PrecompiledHeaderFile" parameter is not supported by the "CompileXaml" task loaded from assembly: Microsoft.UI.Xaml.Markup.Compiler, Version=1.0.0.0, Culture=neutral, PublicKeyToken=de31ebe4ad15742b from the path: C:\Users\user\\.nuget\packages\microsoft.windowsappsdk\\**1.2.230118.102**\tools\net472\Microsoft.UI.Xaml.Markup.Compiler.dll. Verify that the parameter exists on the task, the <UsingTask> points to the correct assembly, and it is a settable public instance property.

これは、前述のエラー テキストに示されているように、Visual Studio には 1.2 のキャッシュされた xaml コンパイラ タスク DLL が使われているにもかかわらず、1.3 の互換性のない MSBuild ロジックで実行されるために発生します。 回避策は、Visual Studio をシャットダウンして再起動し、ソリューションを再度読み込むことです。

バージョン 1.2

バージョン 1.2.5 (1.2.230313.1)

これは、1.2 リリースの重大なバグの修正が含まれている Windows App SDK のサービス リリースです。

  • コンポジションのシャットダウン時にアプリがクラッシュする問題を修正しました。
  • 画面がオフの場合でもアプリでアニメーションの実行が継続される問題を修正しました。
  • マウスとキーボード入力が同時に発生すると、WebView2 でマウスとタッチ入力が失敗する問題を修正しました。 詳細については、GitHub の issue #3266 を参照してください。

バージョン 1.2.4 (1.2.230217.4)

これは、1.2 リリースの重大なバグの修正が含まれている Windows App SDK のサービス リリースです。

  • 自己完結型アプリが UAC 設定を実行できない問題を修正しました。 詳細については、GitHub の issue #3376 を参照してください。
  • PushNotificationChannel::ExpirationTime でプッシュ通知から不正確な有効期限が返される問題を修正しました。 詳細については、GitHub の issue #3300 を参照してください。
  • x:Bind 関数のパラメーターとして double を渡すと、負の数が "無効" と見なされる問題を修正しました。
  • WinUI VSIX を更新するいくつかの修正。 これらの更新には、app.manifest のプロジェクト テンプレート dipAwareness の簡略化、UWP テンプレートの削除、ローカライズされたリソース ファイルの更新、ストア送信のブロックを解除する電話 ID の追加、著作権表示とライセンスの削除が含まれています。 詳細については、GitHub の #5659#3205#3323#3322#3143 を参照してください。

バージョン 1.2.3 (1.2.230118.102)

これは、1.2 リリースの重大なバグの修正が含まれている Windows App SDK のサービス リリースです。

  • 複数のウィンドウを閉じたときに WinUI 3 アプリがクラッシュする問題を修正しました。
  • ThreadPoolTimer インターフェイスへの複数の参照が呼び出されている場合に、アプリの終了時にクラッシュが発生する問題を修正しました。 詳細については、GitHub の issue #7260#7239 を参照してください。
  • すべての単一プロジェクト MSIX アプリが完全信頼として実行される問題を修正しました。 詳細については、GitHub の issue #7766 を参照してください。

バージョン 1.2.2 (1.2.221209.1)

これは、1.2 リリースの重大なバグの修正が含まれている Windows App SDK のサービス リリースです。

  • (インストーラー、NuGet、ブートストラッパーなどの) ストア パッケージとサイドロード パッケージのいずれかが既にインストールされている場合に、もう一方のインストールに失敗する問題を修正しました。 詳細については、GitHub の issue #3168 を参照してください。
  • タッチパッドでスクロールするときに、エラスティック効果やアニメーション カーブが欠落する問題を修正しました。 詳細については、GitHub の issue #7874 を参照してください。
  • ListView でメモリ リークが発生する問題を修正しました。
  • ボタン テンプレートでマウス ポインターを置いても Foreground プロパティが無視される問題を修正しました。 詳細については、GitHub の issue #7208 を参照してください。
  • MediaElement に MediaPlaybackItem が存在しない場合に、不要な例外が発生する問題を修正しました。
  • コンテンツの遷移時に MediaPlayerElement に白いフレームが表示される問題を修正しました。
  • App.UnhandledException が他のスレッドからの例外をキャッチしない追加の問題を修正しました。 詳細については、GitHub の issue #1259#5221 を参照してください。

バージョン 1.2.1 (1.2.221116.1)

これは、1.2 リリースの重大なバグの修正が含まれている Windows App SDK のサービス リリースです。

C++ WinUI 3 アプリに WebView2 または TextBox コントロールを追加すると、起動時にクラッシュする問題を修正しました。 詳細については、GitHub の issue #7911および#3117 を参照してください。

バージョン 1.2

以下のセクションでは、1.2 の新機能と更新された機能、制限事項、既知の問題について説明します。

注意

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 のいずれかが必要になります。 リリース時には、WinAppSDK 1.2 は .NET 7 もサポートする予定です。

.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 に、[ターゲットの OS バージョン] を適切な値 (net6.0-windows10.0.19041.0 など) に変更します。

Windows でのサードパーティ製ウィジェット

ウィジェット ボードは Windows 11 で初めて導入され、組み込みのウィジェットの表示に限定されていました。 ウィジェットは、ウィジェット ボードにテキストとグラフィックスを表示する小さな UI コンテナーです。デバイスにインストールされたアプリに関連付けられています。 サード パーティ開発者である場合は、Windows App SDK を使い、パッケージ化された Win32 アプリ用のウィジェットを作成して、Windows 11 のウィジェット ボードでローカルにテストできるようになりました。

ウィジェットの詳細については、「ウィジェットの概要」を参照してください。

初めてアプリ用のウィジェットを開発する場合、前提条件、ガイダンス、ベスト プラクティスについては、ウィジェット サービス プロバイダーの開発ドキュメントと「ウィジェット設計の基礎」を参照してください。

このリリースには次のような前提条件があります。

  • 開発マシンでデベロッパー モードが有効になっている。
  • 開発マシンは、Windows Insider Preview (WIP) の Dev Channel から 25217 以降のバージョンの Windows を実行しており、ウィジェット ボードのバージョンが 521.20060.1205.0 以降である。

ウィジェット開発時の既知の制限事項

  • サードパーティ製ウィジェットは、今回のプレビュー リリースの WIP に登録されたデバイスのローカルでのみテストできます。
  • パッケージ化された Win32 アプリ用にのみウィジェットを作成できます。 Progressive Web Apps (PWA) 用のウィジェットは、Microsoft Edge 108 の一部としてサポートされる予定です。

DisplayInformation

Windows デスクトップ アプリは、WinAppSDK の DisplayInformation クラスを介して、ハイ ダイナミック レンジ (HDR) と Auto Color Management (ACM) をサポートできます。 DisplayInformation クラスを使うと、アプリケーション ビューのディスプレイ関連情報を監視できます。 これには、ビューが表示されているディスプレイに影響するアプリケーション ビューの変更と、アプリケーション ビューに影響する可能性があるディスプレイの変更を、クライアントから監視できるようになるイベントが含まれています。

WinUI 3

WinUI 3 アプリで、MediaPlayerElementMediaTransportControls メディア再生コントロールを使ってオーディオとビデオを再生できます。 メディア コントロールの使い方とタイミングについては、「メディア プレイ ヤー」を参照してください。

WinUI 3 は WinUI 2.8 から更新され、最新のコントロール、スタイル、動作になりました。 これらの更新には、InfoBadge コントロールの追加、アクセシビリティとハイ コントラスト モードの機能強化、コントロール全体のバグ修正が含まれています。 詳細については、WinUI 2.7WinUI 2.8 のリリース ノートを参照してください。

修正された問題

既知の制限事項

  • Visual Studio 2022 17.4.0 を使って新しい WinUI 3 プロジェクトを作成すると、WinAppSDK のプレビュー バージョンが参照されます。 NuGet パッケージ マネージャーを使って、参照をこのリリースに更新してください。
  • パッケージ化されていないアプリで MediaPlayerElement.Source を相対 URI (ms-appx/ms-resource) に設定できません。 お勧めする回避策は、相対的な ms-appx:/// URI を完全に解決された file:/// URI に変換することです。

.NET を使って開発されたアプリのトリミング

.NET 開発者は、WinAppSDK アプリをトリミングして発行できるようになりました。 CsWinRT 2.0 では、WinAppSDK で配布される C#/WinRT のプロジェクションをトリミングできるようになりました。 アプリをトリミングして発行すると、トリミング可能なバイナリから使われていないコードが削除されるので、アプリのディスク占有領域を減らすことができます。 また、アプリの起動パフォーマンスも向上する可能性があります。 基本的な Hello World アプリの場合、トリミングして発行すると、ディスク占有領域は約 80%、起動パフォーマンスは約 7% 向上することを確認しました。 WinUI ギャラリーの場合、ディスク占有領域は約 45% 向上することを確認しました。

トリミングを有効にする方法、トリミングの制限 (トリミング可能な型に対するリフレクションなど)、トリミングの警告の詳細については、「自己完結型の展開と実行可能ファイルのトリミング」を参照してください。 開発者は、トリミング後のアプリを徹底的にテストして、すべてが想定どおりに機能することを確認してください。 詳細については、GitHub の issue 2478 を参照してください。

Visual Studio Arm64 のサポート

Project Reunion (現在の WinAppSDK) 0.5 の時点では、WinAppSDK を使って開発したアプリは Arm64 上で実行できました。 Visual Studio 17.3 Preview 2 以降、Arm64 デバイス上で WinAppSDK を使ったネイティブ アプリケーションを開発できるようになりました。

Arm64 デバイス上で初めて開発する場合は、「Arm 版 Windows」と「Arm64 Visual Studio」を参照してください。

通知

AppNotificationBuilder は、アプリ通知を作成および定義する際に XML ペイロードの代わりとして導入されました。

使い方については、GitHub の AppNotificationBuilder 仕様を参照してください。

また、ローカル アプリ通知を送受信するデスクトップ Windows アプリケーションの作成方法の例については、「クイックスタート: Windows アプリ SDK のアプリ通知」を参照してください。

重大な変更

プッシュ通知の場合、チャネル要求呼び出しを行うときに、アプリは Azure アプリ ID ではなく Azure オブジェクト ID を使う必要があります。 Azure オブジェクト ID の見つけ方の詳細については、「クイックスタート: Windows App SDK のプッシュ通知」を参照してください。

修正された問題

PushNotificationManager.IsSupported は管理者特権モードのチェックを実行します。 管理者特権でアプリが実行されている場合は、false を返します。

既知の制限事項 (通知)

  • AppNotificationScenario では、Urgent は Windows ビルド 19041 以降でのみサポートされています。 AppNotificationBuilder.IsUrgentScenarioSupported を使うと、実行時にその機能を使用できるかどうかを確認できます。
  • AppNotificationButton では、hint-toolTiphint-buttonStyle はビルド 19041 以降でのみサポートされています。 IsButtonStyleSupportedIsToolTipSupported を使うと、実行時にその機能を使用できるかどうか確認できます。
  • パッケージ化されていないアプリの XAML マークアップで MediaPlayerElement を使う場合、Source プロパティには ms-appx または ms-resource URI を設定できません。 代わりに、ファイル URI を使って Source を設定するか、コードから設定してください。

ウィンドウ化

Windows 10 のバージョン 1809 以降では、AppWindowTitleBar クラスを使ってタイトル バーの完全なカスタマイズが可能になりました。 AppWindowTitleBar.ExtendsContentIntoTitleBartrue に設定するとタイトル バー リージョンにコンテンツを拡張できます。また、SetDragRectangles を使うと、(他のカスタマイズ オプションに加えて) ドラッグ領域を定義できます。

AppWindowTitleBar.IsCustomizationSupported プロパティを使って AppWindowTitleBar API を呼び出すことができるかどうかを確認している場合、サポートされている Windows App SDK Windows 10 バージョン (1809 以降) では true が返されるようになりました。

既知の制限事項 (Windowing)

Windows 10 では、基本のタイトル バーのカスタマイズはサポートされていません。 たとえば、BackgroundColorInactiveBackgroundColorForegroundColorInactiveForegroundColorIconShowOptions などです。 これらのプロパティを呼び出すと、メッセージなしで無視されます。 他のすべての AppWindowTitleBar API は、Windows 10 バージョン 1809 以降で機能します。 (特に) キャプション ボタンの色 API と、Height については、ExtendsContentIntoTitleBartrue に設定する必要があります。そうしないと、メッセージなしで無視されます。

アクセス制御

security.accesscontrol.hGetSecurityDescriptorForAppContainerNames 関数を導入し、パッケージ プロセスと一般的な Win32 API 間の名前付きオブジェクト共有を容易にし、合理化しました。 このメソッドは、パッケージ ファミリ名 (PFN) とアクセス マスクの一覧を受け取り、セキュリティ記述子を返します。 詳細については、GitHub の GetSecurityDescriptorForAppContainerNames 仕様を参照してください。

その他の制限事項と既知の問題

重要

プロジェクトから WinAppSDK 1.2 を参照すると、次のようなエラーが表示されることがあります: "パッケージのダウングレードが検出されました: Microsoft.Windows.SDK.BuildTools 10.0.22621.1 から 10.0.22000.194"。これは、アプリ プロジェクトと WinAppSDK パッケージからのパッケージへの参照に互換性がないために発生します。 これを解決するには、プロジェクト内の参照を新しく互換性のあるバージョンの Microsoft.Windows.SDK.BuildTools に更新します。

  • Visual Studio のテスト出力ペインで、単体テストが REGDB_E_CLASSNOTREG エラーで失敗することがあります。 回避策として、プロジェクト ファイルに <WindowsAppContainer>true</WindowsAppContainer> を追加できます。
  • .NET PublishSingleFile はサポートされていません。
  • ブートストラップとドッキングされていない RegFree WinRT 自動初期化子の既定値は、(現在は) 実行可能ファイル (OutputType=Exe または WinExe) を生成するプロジェクトにのみ設定されています。 そのため、クラス ライブラリ DLL やその他の非実行可能ファイルに自動初期化子を既定で追加できなくなりました。
    • 非実行可能ファイル (たとえば、ブートストラッパーを初期化しない汎用実行可能ファイルによって読み込まれるテスト DLL) に自動初期化子が必要な場合、<WindowsAppSdkBootstrapInitialize>true</WindowsAppSdkBootstrapInitialize> または <WindowsAppSdkUndockedRegFreeWinRTInitialize>true</WindowsAppSdkUndockedRegFreeWinRTInitialize> を使って、プロジェクトで自動初期化子を明示的に有効にすることができます。
  • Microsoft.WindowsAppRuntime.Release.Net.dll は常に Arm64 バイナリであり、x86 と x64 アプリでは機能しません。 Bootstrap API を明示的に呼び出す場合は、Microsoft.WindowsAppRuntime.Release.Net.dll アセンブリを使わないでください。 回避策として、NuGet パッケージ '..\include\WindowsAppSDK-VersionInfo.cs' で配布するこのソース ファイルにバージョン定数を含めるか、自動初期化子を使用できます。

バージョン 1.1

Windows App SDK の安定版チャネルの 1.1.x 系列で使用できる最新リリースはバージョン 1.1.5 です。 1.1.x はすべての安定版チャネルの機能をサポートしています (「Windows App SDK のリリース チャネル」の「リリース チャネルで使用可能な機能」セクションを参照してください)。

バージョン 1.1.5

これは、1.1 リリースの重大なバグの修正が含まれている Windows App SDK のサービス リリースです。

バグの修正

  • Mica が有効な場合、Acrylic が機能しない問題を修正しました。 詳細については、GitHub の issue 7200 を参照してください。
  • WindowsAppRuntime インストーラーに依存するアプリ (たとえば、パッケージ化されていないアプリ) が Windows 10 ARM64 マシンで実行できない問題を修正しました。 詳細については、GitHub の issue 2564 を参照してください。

バージョン 1.1.4

これは、1.1 リリースの重大なバグの修正が含まれている Windows App SDK のサービス リリースです。

バグの修正

  • 1.0.x からの回帰により、多数の項目をスクロールするときに ListView、TreeView、その他の 'List' コントロールがクラッシュする問題を修正しました。 詳細については、GitHub の issue 7230 を参照してください。
  • DispatcherQueue によって、キューに格納されたコールバックが起動されなくなる問題を修正しました。
  • 同じアプリ セッションで DeploymentManager.Initialize を複数回呼び出すと、アプリがクラッシュする問題を修正しました。
  • Arm64 の Visual Studio で C# アプリのビルドに失敗する問題を修正しました。 詳細については、GitHub の issue 7140 を参照してください。
  • 不適切な障害処理により XAML イメージング コードで発生する断続的なクラッシュを修正しました。
  • ItemsRepeater のイベント ハンドラーを親 UserControl にアタッチするときのメモリ リークの問題を修正しました。 詳細については、GitHub の issue 6123 を参照してください。
  • アプリ プロジェクトがサイドロードされたときにパッケージの自動更新を有効にするように構成されている場合 (つまり .appinstaller)、Visual Studio 17.3 でビルド エラーが発生する問題を修正しました。 詳細については、issue 2773 を参照してください。
  • メインおよびシングルトン パッケージが既にインストールされていると、DeploymentManager::GetStatus から Package Install Needed が返されるので、Initialize を呼び出す Store 配布パッケージ アプリ (Push などに必要) が重複して呼び出される問題を修正しました。 これにより、アプリ起動時にパフォーマンスが低下していました。
  • 単一インスタンス アプリで、クリーン イベントを開けない場合に無視するという仕様だった場合に、例外が発生する問題を修正しました。 詳細については、GitHub の PR を参照してください。

バージョン 1.1.3

これは、1.1 リリースの重大なバグの修正が含まれている Windows App SDK のサービス リリースです。

バグの修正

  • アプリの最初のページに ProgressBar、ProgressRing、PipsPager、PersonPicture、または Expander コントロールを含めると XAML がクラッシュすることに関連する一連の問題を修正しました。 詳細については、GitHub の issue 7164 を参照してください。
  • x64 インストーラーが Windows App SDK ランタイムのインストールに失敗する問題を修正しました。 詳細については、GitHub の issue 2713 を参照してください。
  • WindowsAppRuntime の新しいバージョンがインストールされている場合に、インストールに失敗する問題を修正しました。 詳細については GitHub のディスカッション 2708 を参照してください。

バージョン 1.1.2

これは、1.1 リリースの重大なバグの修正が含まれている Windows App SDK のサービス リリースです。

バグの修正

  • ダイアログを開いたままウィンドウを閉じると、XAML がクラッシュする問題を修正しました。 詳細については、GitHub の issue 1032 を参照してください。
  • StyleCop の警告を防ぐために、C# ファイルに <auto-generated> タグを追加しました。 詳細については、GitHub の issue 4526 を参照してください。
  • 一致するフレームワーク パッケージがインストールされていないときに MddBootstrapInitialize を呼び出すと、アクセス違反エラーとクラッシュが発生する問題を修正しました。 詳細については、GitHub の issue 2592 を参照してください。
  • Visual Studio で C# WinUI 3 項目テンプレートが見つからない問題を修正しました。 詳細については、GitHub の issue 7148 を参照してください。
  • システム ユーザーとして WindowsAppRuntime インストーラーを実行すると失敗する問題を修正しました。 詳細については、GitHub の issue 2546 を参照してください。

バージョン 1.1.1

これは、1.1 リリースの重大なバグの修正が含まれている Windows App SDK のサービス リリースです。

バグの修正

  • ドラッグ アンド ドロップ操作中にアプリがクラッシュすることがある問題を修正しました。 詳細については、GitHub の issue 7002 を参照してください。
  • AppWindowPresenterKind を FullScreen から Default に切り替えると、タイトル バーが消える問題を修正しました。
  • ApiInformation.IsPropertyPresentApiInformation.IsMethodPresent のような Bootstrapper API が、パッケージ化されていないアプリでハンドルされない例外が発生する問題を修正しました。 詳細については、GitHub の issue 2382 を参照してください。
  • ペン入力でアプリケーションを最大化すると、アプリケーションがフリーズする問題を修正しました。

バージョン 1.1

以下のセクションでは、1.1 の新機能と更新された機能、制限事項、既知の問題について説明します。

注意

C# 開発者の場合は、6.0.202、6.0.104、5.0.407、5.0.213 の .NET SDK バージョン (またはそれ以降) のいずれかが必要です。 .NET SDK バージョンを更新するには、「.NET のダウンロード」を参照するか、Visual Studio の最新バージョンに更新してください。 必要な .NET SDK バージョンがない状態で NuGet パッケージを更新すると、次のようなエラーが表示されます: "このバージョンの WindowsAppSDK には WinRT.Runtime.dll バージョン 1.6 以降が必要です。"

アプリのライフサイクルと再起動

アプリは、既存の RegisterApplicationRestart API に基づいて、特定の引数と状態を指定して明示的に再起動を開始できるようになりました。これにより、更新、ハングアップ、再起動のシナリオで再起動する OS に登録することができます。

新機能:

  • パッケージ化された、またはパッケージ化されていないデスクトップ アプリから、停止と再起動をコマンドによって自動的に行うことができます。また、AppInstance.Restart() API を使って再起動したインスタンスの任意のコマンドライン文字列にアクセスできます。
    • これは、UWP RequestRestartAsync() API の強化された同期バージョンです。引数を指定して再起動し、再起動が失敗した場合は AppRestartFailureReason を返すことができます。
    • 使用方法と参照情報については、GitHub の Restart API ドキュメントを参照してください。

WinUI 3

WinUI 3 は、Windows App SDK 用のネイティブ ユーザー エクスペリエンス (UX) フレームワークです。 このリリースには、WinAppSDK 1.0 の新機能と、1.0 および 1.1 プレビュー リリースからのいくつかの安定性の機能強化が含まれています。

新機能:

  • Mica と Background Acrylic を WinUI 3 アプリケーションで使用できるようになりました。
  • WinUI 3 アプリケーションの同一スレッド上で複数のウィンドウを作成する機能は 1.0.1 で初めて導入され、安定化に取り組み、使用できるようになりました。 詳細については、issue 5918 を参照してください。

修正されたバグ:

  • Mica を使う場合に、ウィンドウを 2 画面で均等に分割するとアプリがクラッシュする問題を修正しました。 詳細については、GitHub の issue 7079 を参照してください。
  • WebView2 SDK を 1020.46 から 1185.39 にアップグレードすると、C/C++ ランタイム (CRT) がインストールされていない場合に、WebView2 を使った C# アプリが起動時にクラッシュする問題を修正しました。
  • 一部の丸い角が、単色のはずがグラデーションで表示される問題を修正しました。 詳細については、GitHub の issue 6076 & issue 6194 を参照してください。
  • 更新されたスタイルが generic.xaml に含まれていない問題を修正しました。
  • ListView の末尾までスクロールするとアプリがクラッシュするレイアウト サイクルの問題を修正しました。 詳細については、GitHub の issue 6218 を参照してください。
  • ドラッグ アンド ドロップが有効な場合に、ユーザーが要素をドロップできない問題を修正しました。 詳細については、GitHub の issue 7008 を参照してください。

既知の制限事項:

  • カスタム タイトル バーを使っている場合、テーマを変更してもキャプション コントロールの色は変わりません。
  • ユーザーがダイアログを開いたままウィンドウを閉じると、XAML がクラッシュします。

デプロイ

新機能:

既知の制限事項:

  • Windows アプリ ランタイムのインストーラー (WindowsAppRuntimeInstall.exe) を実行するには、サイドローディングを有効にする必要があります。 詳細については、GitHub の issue 2469 を参照してください。
  • Visual Studio の [プロジェクト] メニューから MSIX パッケージを作成すると、一部のシナリオで Visual Studio がクラッシュすることがあります。 この問題は、Visual Studio バージョン 17.3 Preview 2 で修正され、17.2 で提供される予定です。 この問題が発生した場合は、コマンド ラインから MSIX を生成するか、パッケージ化されていないプロジェクトに切り替えるか、Windows App SDK 1.0 に戻すことで回避できます。
  • MSIX でパッケージ化された自己完結型アプリケーションは、1809 ではサポートされておらず、アプリは起動時にクラッシュします。

Elevation

管理者特権を使ってアプリを実行できるようになりました。

既知の制限事項:

Environment Variable Manager

Environment Variable Manager は、Windows App SDK 1.1 で導入された新しい API です。 開発者は Environment Variable Manager を使うと、1 つの API 画面からプロセス、ユーザー、マシン スコープの環境変数にアクセスして変更することができます。

パッケージ アプリケーションから Environment Variable Manager を使うと、すべての環境変数の操作が記録されます。 パッケージが削除されると、すべての環境変数の操作が元に戻ります。

新機能:

  • プロセス、ユーザー、マシンのスコープで環境変数を取得および設定します。
  • Environment Variable Manager を使うパッケージが削除されると、環境変数は自動的に元に戻ります。
  • PATH と PATHEXT の特定の API が含まれています。

既知の制限事項:

  • Windows 11 でのみ使用できます

MRT Core

MRT Core は、Windows アプリ SDK の一部として配布される最新の Windows リソース管理システムの簡素化されたバージョンです。

修正された問題:

  • VS UI を使ってリソース ファイルを追加したときに、既定でリソースのインデックスが作成されない問題は、.NET SDK 6.0.300 で修正されました。 以前の .NET SDK バージョンを使っている場合は、1.0 のリリース ノートに記載されている回避策を引き続き使ってください。 詳細については、GitHub の issue 1786 を参照してください。
  • パッケージ化されていない C++ WinUI 3 アプリでリソース URI が正常にビルドされない問題は、Visual Studio 2022 17.2 で修正されました。 以前の Visual Studio バージョンを使っている場合、この修正プログラムを受け取るには、Visual Studio を 17.2 に更新してください。

既知の制限事項:

  • .NET プロジェクトでは、アプリが既にビルドされている場合、コピーしてプロジェクト フォルダーに貼り付けたリソース ファイルには、F5 でインデックスが作成されません。 回避策として、アプリをリビルドします。 詳細については、GitHub の issue 1503 を参照してください。

詳細については、「MRT Core を使用してリソースを管理する」を参照してください。

通知

パッケージ アプリ (外部の場所を使うパッケージ アプリを含みます) とパッケージ化されていないアプリの開発者は Windows 通知を送信できるようになりました。

新機能:

  • パッケージ アプリとパッケージ化されていないアプリのアプリ通知をサポートします。
    • 開発者は、ローカルまたは独自のクラウド サービスから、トースト通知とも呼ばれるアプリ通知を送信できます。 「アプリ通知の概要」を参照してください。
  • パッケージ アプリとパッケージ化されていないアプリのプッシュ通知をサポートします。
    • 開発者は、生の通知とアプリの通知を独自のクラウド サービスから送信できます。 「プッシュ通知の概要」を参照してください。

既知の制限事項:

  • 管理者特権アプリから通知を送信することはサポートされていません。 PushNotificationManager::IsSupported() は管理者特権モードのチェックを実行しません。

ウィンドウ化

USER32.dll に実装されている機能 (「Windows とメッセージ」を参照してください) にプログラムから簡単にアクセスできるように、このリリースの AppWindow にはその他の機能が表示されます。

新機能:

  • 既存のウィンドウがあるアプリは、ShowWindow(SW_SHOWDEFAULT) と同等の AppWindow.ShowOnceWithRequestedStartupState を呼び出すことで、ウィンドウの表示方法をより詳細に制御できます。
  • アプリで、呼び出しが行われた時点でウィンドウをアクティブにするかどうかを指定するときに、ウィンドウを表示、最小化、または復元できます。
  • Win32 座標でウィンドウのクライアント領域のサイズとして特定の寸法をアプリで指定できるようになりました。特定のクライアント領域のサイズを取得するために非クライアント領域のサイズを計算する必要はありません。
  • SetWindowPos の hWndInsertAfter 機能に基づいて、ウィンドウの z オーダー管理をサポートする追加の WinRT API を使用できるようになりました。
  • AppWindowTitleBar.ExtendsContentIntoTitleBar を使ってカスタム タイトル バーを描画するアプリで、PreferredTitleBarHeight オプションを設定できます。 標準の高さのタイトル バーか、対話型コンテンツ向けに領域を確保する縦長のタイトル バーのどちらかを選択できるようになりました。 縦長のタイトル バーを使う場合のアドバイスについては、Fluent デザイン ガイドラインのタイトル バーに関する記事を参照してください。

修正された問題:

  • 全画面表示プレゼンターを初めて起動したときに、ウィンドウが画面全体に適切に収まるようになりました。 詳細については、GitHub の issue 1853 を参照してください。
  • AppWindow::GetFromWindowId を使って作成されたウィンドウは既定のプレゼンターが OverlappedPresenter ですが、他の API によるウィンドウ スタイルの変更に関しては制限はありません。 AppWindow::Create を使って作成されたウィンドウには、最初から既定のプレゼンター ガードレールが設定されています。 詳細については、GitHub の issue 2049 を参照してください。
  • OverlappedPresenter.SetBorderAndTitlebar API を使ってキャプション ボタンと境界線を非表示にすると、最大化したときに上の境界線が 1 ピクセルになります。 これは解決しました。 詳細については、GitHub の issue 1693 を参照してください。

既知の制限事項:

  • AppWindowTitlebar API を使って標準タイトル バーの色をカスタマイズすると、標準タイトル バーと比べてアイコンとテキストの表示位置がずれています。 詳細については、GitHub の issue 2459 を参照してください。

  • GitHub issue 2049 (上記を参照してください) を解決するときに、次のバグが組み込まれました: GetFromWindowId から取得した AppWindowAppWindowPresenter を適用し、USER32 API を呼び出してそのプレゼンターが追跡しているウィンドウ スタイルを変更し、既定のプレゼンターを再適用して以前のウィンドウ状態に戻そうとすると、結果としてタイトル バーがないウィンドウになります。 アプリでプレゼンターを使い、既定ではないプレゼンターを適用したときにウィンドウのスタイルを変更するために USER32 の呼び出しを使っている場合、このバグが修正されるまでは、必要に応じてウィンドウの正常動作を確保する回避策を追加してください。 この問題を回避する方法のテンプレートとして、次のコード スニペットを使用できます。

    AppWindow m_appWindow;
    OverlappedPresenter m_defaultPresenter;
    
    private void EnterFullScreen_Click(object sender, RoutedEventArgs e)
    {
        // Capture the default presenter.
        m_defaultPresenter = m_appWindow.Presenter as OverlappedPresenter;
    
        // Opt in the default overlapped presenter so it can control various aspects of the AppWindow.
        m_defaultPresenter.IsAlwaysOnTop = m_defaultPresenter.IsAlwaysOnTop;
        m_defaultPresenter.IsResizable = m_defaultPresenter.IsResizable;
        m_defaultPresenter.IsMinimizable = m_defaultPresenter.IsMinimizable;
        m_defaultPresenter.IsMaximizable = m_defaultPresenter.IsMaximizable;
        m_defaultPresenter.SetBorderAndTitleBar(m_defaultPresenter.HasBorder, m_defaultPresenter.HasTitleBar);
    
        m_appWindow.SetPresenter(AppWindowPresenterKind.FullScreen);
    }
    
    private void ExitFullScreen_Click(object sender, RoutedEventArgs e)
    {
        m_appWindow.SetPresenter(AppWindowPresenterKind.Default);
    }
    

C#/WinRT

WinUI カスタム コントロールを含む C# Windows ランタイム コンポーネントがサポートされるようになりました。 これにより、コンポーネント作成者は、C# で作成されたランタイム コンポーネントを WinRT 互換言語 (C++/WinRT など) に配布できます。 概要については、「チュートリアル — WinUI 3 コントロールを使用して C# コンポーネントを作成し、Windows App SDK を使用する C++/WinRT アプリから使用する」と GitHub のサンプルを参照してください。

その他の制限事項と既知の問題

  • WebView2 に依存するパッケージ (Microsoft.Identity.Client など) を参照するアプリはビルドに失敗します。 これは、ビルド時のバイナリの競合が原因です。 詳細については、GitHub の issue 2492 を参照してください。
  • WinAppSDK C# クラス ライブラリ プロジェクトで dotnet build を使うと、ビルド エラー "Microsoft.Build.Packaging.Pri.Tasks.ExpandPriContent タスクを読み込めませんでした" が表示されることがあります。 この問題を解決するには、プロジェクト ファイルで <EnableMsixTooling>true</EnableMsixTooling> を設定します。
  • 既定の WinAppSDK テンプレートでは、MaxVersionTested="10.0.19041.0" ですが、本来は "10.0.22000.0" にする必要があることに注意してください。 一部の機能 (特に UnlockedDEHs) を完全にサポートするには、プロジェクト ファイルの MaxVersionTested を "10.0.22000.0" に更新します。

バージョン 1.0

Windows App SDK の安定版チャネルの 1.0.x 系列で使用できる最新リリースはバージョン 1.0.4 です。 1.0.x はすべての安定版チャネルの機能をサポートしています (「Windows App SDK のリリース チャネル」の「リリース チャネルで使用可能な機能」セクションを参照してください)。

バージョン 1.0.4

これは、1.0 リリースの重大なバグの修正が含まれている Windows App SDK のサービス リリースです。

バグの修正

  • AppBar を Page.TopAppBar または Page.BottomAppBar として使った場合に、画面上にレンダリングされない問題を修正しました。
  • MUXControls.dll の WinUI コントロールを使い、パッケージ名が 12 文字以下であるアプリがすぐにクラッシュする問題を修正しました。 詳細については、GitHub の issue 6360 を参照してください。
  • キーボード ショートカットやその他のシナリオで問題が発生するタッチ入力の問題を修正しました。 詳細については、GitHub の issue 6291 を参照してください。
  • MSIX を使ってパッケージされたアプリまたは自己完結型として展開されたアプリの展開に失敗する問題を修正しました。
  • ドラッグ アンド ドロップ操作中にアプリがクラッシュすることがある問題を修正しました。 詳細については、GitHub の issue 7002 を参照してください。

バージョン 1.0.3

これは、1.0 リリースの重大なバグの修正が含まれている Windows App SDK のサービス リリースです。

バグの修正

  • C/C++ ランタイム (CRT) がインストールされていない場合に、WebView2 を使った C# アプリが起動時にクラッシュする問題を修正しました。
  • キーボード ショートカットやその他のシナリオで問題が発生するタッチ入力の問題を修正しました。 詳細については、GitHub の issue 6291 を参照してください。

: 通常、サービス リリースで機能を追加することはありませんが、このリリースの WebView2 の修正プログラムでは、WebView2 SDK の最新バージョン (1020.46 から 1185.39) に更新する必要がありました。 WebView2 1.0.1185.39 に関するその他の情報は WebView2 SDK のリリース ノートを、WebView2 ランタイムに関するその他の情報は「アプリと WebView2 ランタイムを配布する」を参照してください。

バージョン 1.0.2

これは、1.0 リリースの重大なバグの修正が含まれている Windows App SDK のサービス リリースです。

バグの修正

  • ListView の末尾までスクロールするとアプリがクラッシュするレイアウト サイクルの問題を修正しました。 詳細については、GitHub の issue 6218 を参照してください。
  • C/C++ ランタイム (CRT) がインストールされていない場合に C# アプリが起動時にクラッシュする問題を修正しました。 ただし、WebView2 を使う C# アプリには、CRT が引き続き必要です。 詳細については、GitHub の issue 2117 を参照してください。
  • 単一プロジェクトの MSIX を使ったアプリケーションで .appinstaller ファイルが生成されない問題を修正しました。 詳細については、GitHub の issue 1821 を参照してください。
  • WinUI アプリケーションが .NET 6 dotnet build をサポートしない問題を修正しました。

Version 1.0.1

これは、1.0 リリースの重大なバグの修正と複数ウィンドウのサポートが含まれている Windows App SDK のサービス リリースです。

バグの修正

  • ImplicitUsings が有効な場合に MddBootstrapAutoinitializer がコンパイルされない問題を修正しました。 詳細については、GitHub の issue 1686 を参照してください。
  • WebView2 のフォーカスが予期せず失われ、入力と選択の問題が発生する問題を修正しました。 詳細については、GitHub の issue 5615 & issue 5570 を参照してください。
  • WinUI 3 アプリでカスタム タイトル バーを使うと、Visual Studio のアプリ内ツール バーをクリックできなくなる問題を修正しました。
  • WinUI 3 アプリでカスタム タイトル バーを使っているときに、スナップ レイアウトが表示されない問題を修正しました。 詳細については、GitHub の issue 6333 & issue 6246 を参照してください。
  • 読み込み中の UIElement で Window.SetTitlebar が呼び出されたときに、Window.ExtendsContentIntoTitleBar プロパティを設定すると例外が発生する問題を修正しました。
  • 単一プロジェクトの MSIX アプリが dotnet build をサポートしない問題を修正しました。
  • パッケージ アプリをインストールした後、パッケージ化されていないアプリがインストールされない問題を修正しました。 詳細については、GitHub の issue 1871 を参照してください。
  • マウスのドラッグ操作時のパフォーマンスが低下する問題を修正しました。
  • パッケージ化されていないアプリで GetWindowIdFromWindow() を呼び出すとクラッシュする問題を修正しました。 詳細については GitHub のディスカッション 1891 を参照してください。

バージョン 1.0 の制限事項と既知の問題は、バージョン 1.0.1 にも適用されます。

さらに、カスタム タイトル バーがあるアプリ向けに、このリリースでは、ドラッグドロップ操作に使うガラス ウィンドウの修正を含む変更を加えました (また、多数の問題を修正しました)。 既定の値と動作を使うことをお勧めします (試してみてください)。 タイトル バーが余白を使っていて、既定のキャプション ボタンが対話型である場合、タイトル バーの背景を赤に設定し、余白を調整してキャプション コントロールまでドラッグ領域を拡張して、ドラッグ領域を視覚化することをお勧めします。

新機能

WinUI 3 アプリケーションの同一スレッド上で複数のウィンドウを作成する機能の安定化に取り組み、使用できるようになりました。 詳細については、issue 5918 を参照してください。

バージョン 1.0

以下のセクションでは、1.0 の新機能と更新された機能、制限事項、既知の問題について説明します。

WinUI 3

WinUI 3 は、Windows App SDK 用のネイティブ ユーザー エクスペリエンス (UX) フレームワークです。 このリリースでは、Windows App SDK 0.8 からの複数の新機能が追加され、1.0 プレビュー リリースからの問題が安定化されました。

新機能と機能の更新:

  • 新しいコントロール (PipsPager、Expander、BreadcrumbBar) が追加され、WinUI 2.6 からの最新の Windows スタイルを反映するように既存のコントロールが更新されました。
  • "空のアプリ, パッケージ化..." テンプレートを使用して新しいアプリケーションを作成することにより、WinUI で単一プロジェクト MSIX パッケージがサポートされています。 テンプレートを選択します。
  • Windows バージョン 1809 以降でパッケージ化されていない WinUI 3 アプリの展開をサポートするようになりました。 詳細については、「最初の WinUI 3 プロジェクトを作成する」を参照してください。
  • WinUI 3 プロジェクトでは、ターゲット バージョンを Windows 10 バージョン 1809 に下げて設定できるようになりました。 以前は、バージョン 1903 までしか設定できませんでした。
  • アプリ内ツールバーで、WinUI パッケージ アプリ用のホット リロードおよびライブ ビジュアル ツリーが Visual Studio 2022 プレビュー 5 および GA でサポートされています。

重要な制限事項:

  • パッケージ化された WinUI アプリケーションとパッケージ化されていない WinUI アプリケーションの両方に関する既知の問題:

    • C++ Windows ランタイム コンポーネントを参照する C++ または C# アプリでランタイム エラーが発生する:
      • 解決するには、Windows ランタイム コンポーネントの .vcxproj の末尾に以下のターゲットを追加します。

        <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>
        
      • WinRT 送信エラー - 0x80004005: ''ms-appx:///BlankPage.xaml' からのリソースを特定できません。' のようなエラーが発生します。

  • 単一プロジェクト MSIX を使用する WinUI アプリケーション (空のアプリ、パッケージ化テンプレート) の既知の問題:

    • Visual Studio を再起動するまで [パッケージと発行] メニュー項目が見つからない: Visual Studio 2019 と Visual Studio 2022 の両方で、空のアプリ、パッケージ (デスクトップの WinUI 3) プロジェクト テンプレートを使用して単一プロジェクト MSIX で新しいアプリを作成する場合、Visual Studio を閉じて再度開くまで、プロジェクトを発行するコマンドがメニューに表示されません。
    • 単一プロジェクト MSIX を含む C# アプリは、"C++ (v14x) ユニバーサル Windows プラットフォーム ツール" オプション コンポーネントがインストールされないとコンパイルされません。 その他の情報については、「Windows App SDK のインストール ツール」を参照してください。
    • 参照される Windows ランタイム コンポーネントで定義されている型を使用する、単一プロジェクト MSIX を含むアプリでの潜在的な実行時エラー: 解決するには、アクティブ化可能なクラスのエントリを appxmanifest.xml に手動で追加します。
      • C# アプリケーションで予期されるエラーは、"COMException: クラスが登録されていません (0x80040154 (REGDB_E_CLASSNOTREG))" です。
      • C++/WinRT アプリケーションで予期されるエラーは、"winrt::hresult_class_not_registered" です。
  • パッケージ化されていない WinUI 3 アプリ (パッケージ化されていないアプリ) の既知の問題:

  • WinUI アプリケーションのパッケージ化と展開に関する既知の問題:

    • Package コマンドは、単一プロジェクト MSIX (空のアプリ、パッケージ化されたテンプレート) を使用する WinUI アプリではサポートされていません。 代わりに、Package & Publish コマンドを使用して MSIX パッケージを作成します。
    • Pack コマンドを使用して C# クラス ライブラリから NuGet パッケージを作成するには、アクティブな ConfigurationRelease であることを確認します。
    • NuGet パッケージを作成するために、Pack コマンドは C++ Windows ランタイム コンポーネントではサポートされていません。

詳細については、または WinUI を使用した開発を開始するには、次の情報を参照してください。

ウィンドウ化

Windows App SDK では、以前の使いやすい Windows.UI.WindowManagement.AppWindow プレビュー クラスを進化させ、Win32、WPF、および WinForms を含むすべての Windows アプリで利用できるようにする AppWindow クラスが提供されています。

新機能

  • AppWindow は、Windows のユーザー エクスペリエンスや他のアプリとうまく統合する、使いやすいウィンドウ化のシナリオを可能にする高度なウィンドウ化 API です。 アプリのコンテンツのシステム マネージド コンテナーを表す高水準の抽象化を表します。 これはコンテンツがホストされるコンテナーであり、ユーザーが画面上でアプリのサイズを変更したり移動したりするときにユーザーが操作するエンティティを表します。 Win32 に習熟している開発者にとって、AppWindow は HWND の高水準の抽象化と考えることができます。
  • DisplayArea は、HMONITOR の高水準の抽象化を表し、AppWindow と同じ原則に従います。
  • DisplayAreaWatcher により、開発者は、表示トポロジでの変更を観察し、システムで現在定義されている DisplayArea を列挙することができます。

詳細については、「アプリ ウィンドウの管理」を参照してください。

入力

これらは、WinUI をサポートする入力 API であり、開発者がより高度な入力対話を実現するための下位レベルの API サーフェスを提供します。

新機能

  • ポインター API: PointerPointPointerPointPropertiesPointerEventArgs は、XAML 入力 API を使用したポインター イベント情報の取得をサポートします。
  • InputPointerSource API: ポインター入力を報告するために登録されたオブジェクトを表し、XAML の SwapChainPanel API のためのポインター カーソルと入力イベントの処理を行います。
  • カーソル API: 開発者がカーソル ビットマップを変更できるようにします。
  • GestureRecognizer API: ポインター情報を指定したときに、ドラッグ、ホールド、クリックなどの特定のジェスチャを開発者が認識できるようにします。

重要な制限事項

  • すべての PointerPoint 静的ファクトリ関数が削除されました。GetCurrentPointGetCurrentPointTransformedGetIntermediatePointsGetIntermediatePointsTransformed
  • Windows App SDK では、ポインター ID を使用した PointerPoint オブジェクトの取得はサポートされていません。 代わりに、PointerPoint メンバー関数 GetTransformedPoint を使用して、既存の PointerPoint オブジェクトの変換されたバージョンを取得できます。 中間点として、PointerEventArgs メンバー関数 GetIntermediatePointsGetTransformedIntermediatePoints を使用できます。
  • プラットフォーム SDK API Windows.UI.Core.CoreDragOperation の直接使用は、WinUI アプリケーションでは機能しません。
  • PointerPoint プロパティ RawPositionContactRectRaw は、予測値ではない値 (OS 内の通常の値と同じ) を参照していたため、削除されました。 代わりに PositionContactRect を使用してください。 ポインター予測は、Microsoft.UI.Input.PointerPredictor API オブジェクトで処理されるようになりました。

アプリのライフサイクル

アプリのライフサイクル機能のほとんどは UWP プラットフォームに既に存在しており、デスクトップ アプリの種類 (特に、非パッケージ コンソール アプリ、Win32 アプリ、Windows フォーム アプリ、WPF アプリ) で使用するために Windows App SDK に取り込まれています。 UWP プラットフォーム自体に同等の機能があるため、これらの機能の Windows App SDK 実装は、UWP アプリでは使用できません。

重要

UWP アプリで作業している場合は、「UWP から Windows App SDK に移行する」を参照してください。

UWP 以外のアプリを MSIX パッケージにパッケージ化することもできます。 これらのアプリでは Windows App SDK のアプリのライフサイクル機能の一部を使用できますが、マニフェストの手法が使用できる場合はそれを使用する必要があります。 たとえば、Windows App SDK の RegisterForXXXActivation API を使用することはできず、代わりにマニフェストを使用してリッチ アクティベーションに登録する必要があります。

パッケージ アプリのすべての制約は、パッケージ化された WinUI アプリにも適用されます。また、以下で説明するように、追加の考慮事項があります。

重要な考慮事項:

  • リッチ アクティベーション: GetActivatedEventArgs

    • 非パッケージ アプリ: 完全に使用可能です。
    • パッケージ アプリ: 使用可能ですが、これらのアプリはプラットフォーム GetActivatedEventArgs を使用することもできます。 プラットフォームは Windows.ApplicationModel.AppInstance を定義し、Windows App SDK は Microsoft.Windows.AppLifecycle.AppInstance を定義していることに注意してください。 また、UWP アプリは FileActivatedEventArgsLaunchActivatedEventArgs などの ActivatedEventArgs クラスを使用できるのに対して、Windows App SDK AppLifecycle 機能はクラスではなくインターフェイス (たとえば、IFileActivatedEventArgsILaunchActivatedEventArgs など) を使用する必要があります。
    • WinUi アプリ: WinUI の App.OnLaunched には Microsoft.UI.Xaml.LaunchActivatedEventArgs が指定されるのに対して、プラットフォーム GetActivatedEventArgs は、Windows.ApplicationModel.IActivatedEventArgs を返し、WindowsAppSDK GetActivatedEventArgs は、プラットフォーム LaunchActivatedEventArgs を表すことができる Microsoft.Windows.AppLifecycle.AppActivationArguments オブジェクトを返します。
    • 詳細については、「リッチ アクティベーション」を参照してください。
  • リッチ アクティベーションの登録/登録解除

    • 非パッケージ アプリ: 完全に使用可能です。
    • パッケージ アプリ: 使用不可です。代わりにアプリの MSIX マニフェストを使用してください。
    • 詳細については、「リッチ アクティベーション」を参照してください。
  • 単一または複数のインスタンス化

    • 非パッケージ アプリ: 完全に使用可能です。
    • パッケージ アプリ: 完全に使用可能です。
    • WinUI アプリ: アプリが他のインスタンスを検出し、アクティブ化をリダイレクトする必要がある場合は、できるだけ早く、ウィンドウなどを初期化する前に実行する必要があります。これを有効にするには、アプリが DISABLE_XAML_GENERATED_MAIN を定義し、検出とリダイレクトを実行できるカスタム Main (C#) または WinMain (C++) を作成する必要があります。
    • RedirectActivationToAsync は非同期呼び出しであり、アプリが STA で実行されている場合は、非同期呼び出しで待機しないでください。 Windows フォームと C# WinUI アプリでは、必要に応じて、Main を非同期として宣言できます。 C++ WinUI と C# WPF アプリでは、Main を非同期として宣言することはできません。そのため、代わりに、STA をブロックしないように、リダイレクト呼び出しを別のスレッドに移動する必要があります。
    • 詳細については、「アプリのインスタンス化」を参照してください。
  • 電源/状態通知

    • 非パッケージ アプリ: 完全に使用可能です。
    • パッケージ アプリ: 完全に使用可能です。
    • 詳細については、「電源管理」を参照してください。

既知の問題:

  • 動詞ハンドラーのコマンド ライン テンプレートを設定するときに、ファイルの種類の関連付けによって %1 が %251 になるように誤ってエンコードされるため、非パッケージ Win32 アプリがクラッシュします。 部分的な回避策として、代わりにレジストリ値が %1 になるように手動で編集できます。 ターゲット ファイルのパスにスペースが含まれている場合も、失敗します。そのシナリオに対する回避策はありません。
  • これらの単一およびマルチインスタンス化のバグは、今後のサービス修正プログラムで修正される予定です。
    • X86 用にコンパイルした場合、AppInstance リダイレクトが機能しない
    • キーを登録し、登録を解除して再登録すると、アプリがクラッシュする

DWriteCore

DWriteCore は、DirectWrite の Windows App SDK 実装で、DirectWrite は、高品質のテキスト レンダリング、解像度に依存しないアウトライン フォント、Unicode テキストとレイアウトの完全サポートのための DirectX API です。 DWriteCore は、Windows 10、バージョン 1809 (10.0; ビルド 17763) までの Windows のバージョン上で実行される DirectWrite の一種で、クロスプラットフォームでの使用が可能になります。

機能 DWriteCore には、DirectWrite のすべての機能が含まれていますが、いくつかの例外があります。

重要な制限事項

  • DWriteCore には、次の DirectWrite 機能は含まれていません。
    • セッションごとのフォント
    • エンドユーザー定義文字 (EUDC) フォント
    • フォント ストリーミング API
  • 低レベルのレンダリング API のサポートは部分的です。
  • DWriteCore は Direct2D と相互運用できませんが、IDWriteGlyphRunAnalysisIDWriteBitmapRenderTarget を使用できます。

詳細については、「DWriteCore の概要」を参照してください。

MRT Core

MRT Core は、Windows アプリ SDK の一部として配布される最新の Windows リソース管理システムの簡素化されたバージョンです。

重要な制限事項

  • .NET プロジェクトでは、アプリが既にビルドされている場合、コピーしてプロジェクト フォルダーに貼り付けられたリソース ファイルには、F5 でインデックスが作成されません。 回避策として、アプリをリビルドします。 詳細については、問題 1503 を参照してください。
  • .NET プロジェクトでは、Visual Studio UI を使用してリソース ファイルがプロジェクトに追加されるとき、既定ではファイルにインデックスを設定できません。 詳細については、問題 1786 を参照してください。 この問題を回避するには、次のように CSPROJ ファイルのエントリを削除してください。
    <ItemGroup>
        <Content Remove="<image file name>" />
    </ItemGroup>
    <ItemGroup>
        <PRIResource Remove="<resw file name>" />
    </ItemGroup>
    
  • 非パッケージ C++ WinUI アプリの場合、リソース URI が正しく作成されていません。 この問題を回避するには、vcxproj に次の値を追加します。
    <!-- Add the following after <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> -->
    
    <PropertyGroup>
        <AppxPriInitialPath></AppxPriInitialPath>   
    </PropertyGroup>
    

詳細については、「MRT Core を使用してリソースを管理する」を参照してください。

デプロイ

新機能と機能の更新:

重要な制限事項

  • ブートストラップ API 用の .NET ラッパーは、Windows App SDK へのアクセスを簡略化するための非パッケージ .NET アプリケーションによる使用のみを目的としています。
  • 完全に信頼されているか、packageManagement の制限された機能を持つ MSIX パッケージ アプリのみが、デプロイ API を使用してメインとシングルトンのパッケージの依存関係をインストールするアクセス許可を持っています。 部分的に信頼されているパッケージ アプリのサポートは、今後のリリースで予定されています。
  • X64 システムで DeploymentManager.Initialize メソッドを使用する x86 アプリを F5 でテストする場合は、WindowsAppRuntimeInstall.exe を実行して、x64 フレームワークが最初にインストールされていることを確認します。 そうしないと、Visual Studio は x64 フレームワークをデプロイしないため、NOT_FOUND エラーが発生します。通常、これは Store のデプロイまたはサイドローディングを通じて発生します。

その他の制限事項と既知の問題

  • Any CPU ビルド構成のサポートがない: Windows App SDK を既存の .NET アプリケーションまたはコンポーネントに追加し、それが Any CPU をサポートする場合は、希望するアーキテクチャ x86x64、または arm64 を指定する必要があります。

  • .NET 5 から .NET 6 へのアップグレード: Visual Studio UI でアップグレードすると、ビルド エラーが発生することがあります。 回避策として、プロジェクト ファイルの TargetFrameworkPackage を次のように手動で更新します。

        <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 の複数のバージョンがインストールされている場合 (たとえば、Release と Preview)、C++ "と" C# の両方に対して Windows App SDK VSIX をインストールすると、2 番目のインストールは失敗します。 解決するには、1 つ目の言語 VSIX の後に Visual Studio 2019 用の単一プロジェクト MSIX パッケージング ツールをアンインストールします。 この問題の詳細については、このフィードバックを参照してください。

  • DispatcherQueue.TryEnqueue (ディスパッチャー キュー スレッドで実行を再開するため) の代わりの手段は、Windows Implementation Library (WIL)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); を指定します。

バージョン 0.8

Windows App SDK の安定版チャネルの 0.8.x 系列で使用できる最新リリースはバージョン 0.8.12 です。

注意

Windows App SDK は、以前は Project Reunion というコード ネームで知られていました。 バージョン 0.8 以前の一部の SDK 資産では、引き続きこのコード ネームが使用されます。 ドキュメントの一部では、既存のアセットや指定された旧リリースを参照する際に、Project Reunion が引き続き使用されています。

バージョン 0.8.12

これは、0.8.0 リリースの重大なバグの修正が含まれている Windows App SDK のサービス リリースです。

注意

C# 開発者の場合は、5.0.213、5.0.407、6.0.104、6.0.202 (またはそれ以降) の .NET SDK バージョン (またはそれ以降) のいずれかが必要です。 .NET SDK バージョンを更新するには、「.NET のダウンロード」を参照するか、Visual Studio の最新バージョンに更新してください。 必要な .NET SDK バージョンがない状態で NuGet パッケージを更新すると、次のようなエラーが表示されます: "このバージョンの WindowsAppSDK には WinRT.Runtime.dll バージョン 1.6 以降が必要です。"

バグ修正:

  • SwapChainPanel または WebView2 を使ったアプリが、アクセス違反により予測せずクラッシュする問題を修正しました。

バージョン 0.8.11

これは、0.8.0 リリースの重大なバグの修正が含まれている Windows App SDK のサービス リリースです。

注意

C# 開発者の場合は、5.0.213、5.0.407、6.0.104、6.0.202 (またはそれ以降) の .NET SDK バージョン (またはそれ以降) のいずれかが必要です。 .NET SDK バージョンを更新するには、「.NET のダウンロード」を参照するか、Visual Studio の最新バージョンに更新してください。 必要な .NET SDK バージョンがない状態で NuGet パッケージを更新すると、次のようなエラーが表示されます: "このバージョンの WindowsAppSDK には WinRT.Runtime.dll バージョン 1.6 以降が必要です。"

バグ修正:

  • マウスでテキストを選んだときに、フォーカスの喪失イベントが発生する回帰を修正しました。

バージョン 0.8.10

これは、0.8.0 リリースの重大なバグの修正が含まれている Windows App SDK のサービス リリースです。

注意

C# 開発者の場合は、5.0.213、5.0.407、6.0.104、6.0.202 (またはそれ以降) の .NET SDK バージョン (またはそれ以降) のいずれかが必要です。 .NET SDK バージョンを更新するには、「.NET のダウンロード」を参照するか、Visual Studio の最新バージョンに更新してください。 必要な .NET SDK バージョンがない状態で NuGet パッケージを更新すると、次のようなエラーが表示されます: "このバージョンの WindowsAppSDK には WinRT.Runtime.dll バージョン 1.6 以降が必要です。"

バグ修正:

  • ドラッグ アンド ドロップ操作中にアプリがクラッシュすることがある問題を修正しました。

注意

Windows App SDK 0.8.9 はリリースされませんでした。 0.8.8 の直後にリリースされたバージョンは 0.8.10 です。

バージョン 0.8.8

これは、0.8.0 リリースの重大なバグの修正が含まれている Windows App SDK のサービス リリースです。

注意

C# 開発者の場合は、6.0.202、6.0.104、5.0.407、5.0.213 の .NET SDK バージョン (またはそれ以降) のいずれかが必要です。 .NET SDK バージョンを更新するには、「.NET のダウンロード」を参照するか、Visual Studio の最新バージョンに更新してください。 必要な .NET SDK バージョンがない状態で NuGet パッケージを更新すると、次のようなエラーが表示されます: "このバージョンの WindowsAppSDK には WinRT.Runtime.dll バージョン 1.6 以降が必要です。"

バグ修正:

  • ソフトキー ボードと一般的な相互作用に関する TextBox のタッチ入力の問題を修正しました。 これらの問題は、キーボード ショートカットにも影響していました。 詳細については、GitHub の issue 6291 を参照してください。
  • アプリのウィンドウがアクティブなときに非アクティブと表示されることがある問題を修正しました。
  • UIA (UI オートメーション) が外部プロセスで実行されることで発生するパフォーマンスの問題を修正しました。
  • ペン入力時のアプリの安定性に関する問題を修正しました。
  • UIA の影響により、メニューの png アイコンのレンダリングが大幅に遅延する問題を修正しました。

バージョン 0.8.7

これは、C#/.NET アプリケーションのいくつかのパフォーマンス更新を含む Windows App SDK のサービス リリースです。 このバージョンに更新するには、最新の Windows SDK パッケージのバージョンを参照する必要があります。 そのためには、.csproj ファイルに <WindowsSdkPackageVersion>10.0.<sdk_version>.24</WindowsSdkPackageVersion> プロパティを追加し、TargetFramework プロパティからアプリがターゲットとしている SDK バージョンを指定します。 次に例を示します。

<Project Sdk="Microsoft.NET.Sdk">
   <PropertyGroup>
       <OutputType>WinExe</OutputType>
       <TargetFramework>net6.0-windows10.0.19041.0</TargetFramework>
       <TargetPlatformMinVersion>10.0.17763.0</TargetPlatformMinVersion>
       <WindowsSdkPackageVersion>10.0.19041.24</WindowsSdkPackageVersion>
   <PropertyGroup>
   ...

このバージョンの Windows SDK プロジェクションは、今後の .NET 6 サービス リリースで使用できるようになる予定です。 その .NET SDK の更新プログラムがリリースされたら、プロジェクト ファイルから <WindowsSdkPackageVersion> プロパティを削除する必要があります。

このプロパティを設定しない場合、次のようなエラーが表示されます: "Error: This version of Project Reunion requires WinRT.Runtime.dll version 1.6 or greater."

バージョン 0.8.6

これは、0.8.0 リリースの C#/.NET アプリケーションのいくつかのパフォーマンス向上を含む Windows App SDK のサービス リリースです。

このバージョンの Windows App SDK に更新するには、最新の .NET SDK December 更新プログラムをインストールしておく必要があります (「.NET のダウンロード」と「.NET 5 は 2022 年 5 月 10 日にサポートが終了します」を参照してください)。 最低限必要なバージョンの .NET SDK がインストールされていない場合は、"Error: This version of Project Reunion requires WinRT.Runtime.dll version 1.4 or greater." のようなエラーが表示されます。

バグの修正

パフォーマンスの向上の詳細な一覧については、C#/WinRT 1.4.1 リリース ノートを参照してください。

バージョン 0.8.5

これは、0.8.0 リリースの追加の重要なバグ修正が含まれている Windows App SDK のサービス リリースです。

バグの修正

  • ポインター入力を使用する WinUI アプリがクラッシュする原因となっている問題を修正しました。
  • Windows 11 でタイトル バー ボタン (最小、最大、閉じる) の角が丸くなっていない問題を修正しました。
  • Windows 11 の最大化/復元ボタンにマウス ポインターを合わせたときにレイアウトのサイズ変更オプションが表示されない問題を修正しました。
  • PointCollection オブジェクトを作成する際のクラッシュ例外の原因となる問題を修正しました。 詳細については、Github の問題 971 を参照してください。

バージョン 0.8 の制限事項と既知の問題は、以下のセクションで特にマークされていない限り、バージョン 0.8.5 にも適用されます。

バージョン 0.8.4

これは、0.8.0 リリースの追加の重要なバグ修正が含まれている Windows App SDK のサービス リリースです。

バグの修正

  • ContentDialog によって隠されず、タイトル バーのボタンを丸くした、カスタム タイトル バーの修正。
  • 表示スケールが変更された場合の画像処理におけるクラッシュの修正。
  • UI が表示されない、または正しくクリップされないクリッピング バグの修正。

バージョン 0.8 の制限事項と既知の問題は、以下のセクションで特にマークされていない限り、バージョン 0.8.4 にも適用されます。

バージョン 0.8.3

これは、0.8.0 リリースの追加の重要なバグ修正が含まれている Windows App SDK のサービス リリースです。

バグの修正

ウィンドウを最小化してから復元するときにキーボード フォーカスが失われ、フォーカスを復元するためにマウス クリックが必要でした。

バージョン 0.8 の制限事項と既知の問題は、以下のセクションで特にマークされていない限り、バージョン 0.8.3 にも適用されます。

バージョン 0.8.2

これは、0.8.0 リリースの追加の重要なバグ修正が含まれている Windows App SDK のサービス リリースです。

バグ修正

  • Windows App SDK と WinUI 3 は、Visual Studio 2022 プレビュー 2 以降でサポートされるようになりました。
  • .NET アプリの場合、列挙型の配列を渡す際に次のエラーが発生する場合があります。Object contains non-primitive or non-blittable data.
  • テキスト ボックス内で手書きパネルを使用して書き込むと、クラッシュが発生します
  • アイコン/画像が、モニターのスケール値に基づくのではなく、常に 100% のスケール値で読み込まれます
  • EventSource<T> のガベージ コレクションにより、後続のハンドラーの登録を解除するためのエラーが発生します (詳細については、GitHub の問題ページを参照してください)
  • セキュリティ修正 – 詳細は、CVE-2021-34533 を参照してください。
  • 表示スケールを変更した後、SwapChainPanel.CompositionScaleChanged が正しくない CompositionScale 値を返す場合があります

バージョン 0.8 の制限事項と既知の問題は、以下のセクションで特にマークされていない限り、バージョン 0.8.2 にも適用されます。

バージョン 0.8.1

これは、0.8.0 リリースのいくつかの重要なバグ修正が含まれている Windows App SDK のサービス リリースです。

バグ修正

  • Windows App SDK が最新の Windows Insider ビルドで実行できない
  • ドロップダウンに表示されない値を入力すると、EditableComboBox でクラッシュする
  • WebView2 では、フォーカスを受け取った後、ユーザーが Tab キーを押して移動できない
  • 名前空間のあいまいさを回避するために、WinUI で生成されたコードの Windows.Foundation.Metadata.DefaultOverload 名前空間を完全修飾する
    • これにより、バグ #5108 が修正されました。
  • セキュリティ修正 – 詳細は、CVE-2021-34489 を参照してください。

バージョン 0.8 の制限事項と既知の問題は、以下のセクションで特にマークされていない限り、バージョン 0.8.1 にも適用されます。

バージョン 0.8.0 安定版

新機能と更新プログラム

このリリースでは、すべての安定チャネル機能がサポートされます。

WinUI 3

このリリースには、WinUI 3 全体での多くのバグ修正と強化された安定化が含まれています。 これらは、WinUI 3 - Project Reunion 0.5 のリリース以降の WinUI 3 での新しいすべての変更点です。

  • ピボット コントロールが再度追加され、任意の WinUI 3 アプリで使用できます。

  • このリリースには、Project Reunion v0.5.5、v0.5.6、v0.5.7 のすべてのバグ修正が含まれています。

  • 次を含む新しいバグ修正。

    • TextBox 内でマウスを右クリックすると、アプリケーションがクラッシュする
    • NavigationView により、UWP でクラッシュが発生する (Reunion 0.5 Preview)
    • ProgressBar で一時停止とエラー オプションの違いが表示されない
    • テキスト スタイルのコピー/貼り付け/変更時に RichEditBox でクラッシュする
    • SetTitleBar が設定されていない場合、または null の場合、ウィンドウのキャプション ボタンが誤って配置される

    このリリースで解決されたすべてのバグの一覧については、GitHub リポジトリを参照してください。

  • ColorHelper.ToDisplayName API は使用できなくなりました。

  • 次の型が削除されました。

    • Microsoft.Graphics.IGeometrySource2D
    • Microsoft.Graphics.IGeometrySource2DInterop

    代わりに、Windows.Graphics.IGeometrySource2D および Windows.Graphics.IGeometrySource2DInterop を使用してください。

  • Microsoft.System 名前空間内のすべての型が、DispatcherQueue クラスを含めて Microsoft.UI.Dispatching 名前空間に移動されました。

  • HostBackdrop は WinUI 3 では BackgroundSource としてサポートされないため、 AcrylicBrush.BackgroundSource プロパティが削除されました。

WinUI の詳細については、「Windows UI 3 ライブラリ (WinUI)」を参照してください。

WinUI 3 のコントロールと機能の動作を確認するには、GitHub から WinUI 3 ギャラリー アプリを複製してビルドするか、Microsoft Store からアプリをダウンロードします。

WinUI を使用して開発を開始するには、次の記事を参照してください。

DWriteCore

DWriteCore のこのリリースには、次の新機能と更新された機能が含まれています。 DWriteCore の紹介と説明については、「DWriteCore の概要」を参照してください。

注意

DWriteCoreCreateFactory は、DirectWrite のシステム バージョンによってエクスポートされる DWriteCreateFactory 関数と機能的に同じです。 DWriteCore.libDWrite.lib の両方をリンクした場合のあいまいさ回避するために、DWriteCore には異なる名前が付いています。

DWriteCore と DirectWrite API リファレンスについては、「DWriteCore API リファレンス」と「DirectWrite API リファレンス」を参照してください

MRTCore

  • リソースをプロジェクトに追加すると、リソースのビルド アクションが自動的に設定されるため、プロジェクトを手動で構成する必要性が少なくなります。

制限事項

  • このリリースは、Windows Insider Program の Dev チャネルでは現在サポートされていません。 これはバージョン 0.8.1 で修正されています

  • デスクトップ アプリ (C# または C++ デスクトップ): このリリースは、MSIX を使用してパッケージ化されたデスクトップ アプリ (C++ または C#) でのみ使用できます。 非パッケージ デスクトップ アプリで Windows App SDK を使用するには、試験的リリース チャネルを使用する必要があります。

重要

UWP アプリで作業している場合は、「UWP から Windows App SDK に移行する」を参照してください。

既知の問題

  • ライブ ビジュアル ツリー、ライブ プロパティ エクスプローラー、ホット リロードのバージョン 0.8 以降などの WinUI 3 ツールでは、Visual Studio 2019 16.11 プレビュー 3 以降が必要です。

  • 現在 WinUI 3 と Windows App SDK 0.8 を使用しているアプリでは、Project Reunion 0.5 を使用するクラス ライブラリを使用できません。 Windows App SDK 0.8 を使用するようにクラス ライブラリを更新してください。

  • .NET アプリはビルド 18362 以降をターゲットにする必要がある: TFM は、net6.0-windows10.0.18362 以降に設定する必要があり、パッケージ プロジェクトは 18362 以降に設定する必要があります。 詳細については、GitHub の問題 #921 を参照してください。

  • ライト モードとダーク モードの切り替えを頻繁に行うと、クラッシュが発生する可能性があります。

  • .NET アプリの場合、列挙型の配列を渡す際に次のエラーが発生する場合があります。Object contains non-primitive or non-blittable data.これはバージョン 0.8.2 で修正されています

  • .NET アプリの場合、現在、Visual Studio UI を使用してアプリ リソースとしてインデックスが取得されるイメージをオプトアウトする方法はありません。 この問題を回避するには、Directory.Build.targets をプロジェクトに追加し (手順については「ビルドをカスタマイズする- Visual Studio」を参照してください)、次のようにしてイメージを削除します。

    • 特定のイメージを削除するには (相対パスが必要であることに注意してください):

      <Project> 
      <ItemGroup> 
          <Content Remove="..\Bitmap1.bmp" />
      </ItemGroup>
      </Project>
      
    • メタデータに基づいてイメージを削除するには:

      <Project>
      <ItemGroup>
          <Content Remove="@(None->WithMetadataValue('Pack','true'))" />
      </ItemGroup>
      </Project>
      

    この問題の修正は、今後のリリースで予定されており、その時点で上記の回避策は不要になります。

バージョン 0.5

Windows App SDK の安定版チャネルの 0.5.x 系列で使用できる最新リリースはバージョン 0.5.9 です。

新機能と更新プログラム

このリリースでは、すべての安定チャネル機能がサポートされます。

既知の問題と制限事項

このリリースには、次の制限事項と既知の問題があります。

  • デスクトップ アプリ (C# または C++ デスクトップ): このリリースは、MSIX を使用してパッケージ化されたデスクトップ アプリ (C++ または C#) でのみ使用できます。 非パッケージ デスクトップ アプリで Windows App SDK を使用するには、試験的リリース チャネルを使用する必要があります。
  • .NET アプリはビルド 18362 以降をターゲットにする必要がある: TFM は、net6.0-windows10.0.18362 以降に設定する必要があり、パッケージ プロジェクトの <TargetPlatformVersion> は 18362 以降に設定する必要があります。 詳細については、GitHub に関する既知の問題に関するページを参照してください。

重要

UWP アプリで作業している場合は、「UWP から Windows App SDK に移行する」を参照してください。