Windows アプリ SDK 1.0 のプレビュー チャネル リリース ノート
重要
プレビュー チャネルは、運用環境での使用ではサポートされていません。また、プレビュー リリースを使用するアプリを Microsoft Store に公開することはできません。
プレビュー チャネルには、開発の後期段階のプレビュー チャネル機能を備えた Windows アプリ SDK のリリースが含まれています。 プレビュー リリースには試験段階の機能と API は含まれていませんが、次の安定版リリースの前に破壊的変更が発生する可能性は残っています。
重要なリンク:
- 既存のアプリを以前のバージョンの Windows App SDK から新しいバージョンにアップグレードする場合は、「既存のプロジェクトを最新リリースの Windows App SDK に更新する」を参照してください。
- プレビュー リリースのドキュメントについては、「Windows アプリ SDK のプレビュー チャネルと実験チャネル用のツールのインストール」を参照してください。
最新のプレビュー チャネル リリース ノート
最新の安定版チャネル リリース ノート:
バージョン 1.0 プレビュー 3 (1.0.0-preview3)
プレビュー 3 は、Windows App SDK のバージョン1.0 のプレビュー チャネルの最新リリースです。 プレビュー 3 では、すべてのプレビュー チャネル機能がサポートされています。
1.0 Preview 3 Visual Studio 拡張機能 (VSIX) のダウンロード
Note
Windows App SDK Visual Studio 拡張機能 (VSIX) が既にインストールされている場合は、新しいバージョンをインストールする前にアンインストールします。 手順については、「Visual Studio の拡張機能の管理」を参照してください。
下のテーブルから、1.0 プレビュー 3 リリースの Visual Studio 拡張機能 (VSIX) をダウンロードできます。 すべてのバージョンについては、「最新の Windows アプリ SDK ダウンロード」を参照してください。 まだ行っていない場合は、「Windows App SDK のツールをインストールする」の手順を使用して、開発環境を構成することから始めます。
次の拡張機能は、お使いの Visual Studio のプログラミング言語とバージョンに合わせて調整されています。
1.0 プレビュー 3 のダウンロード | 説明 |
---|---|
C# Visual Studio 2019 拡張機能 | Windows App SDK Visual Studio 2019 拡張機能を使用して C# アプリをビルドします。 |
C++ Visual Studio 2019 拡張機能 | Windows App SDK Visual Studio 2019 拡張機能を使用して C++ アプリをビルドします。 |
C# Visual Studio 2022 拡張機能 | Windows App SDK Visual Studio 2022 拡張機能を使用して C# アプリをビルドします。 |
C++ Visual Studio 2022 拡張機能 | Windows App SDK Visual Studio 2022 拡張機能を使用して C++ アプリをビルドします。 |
.exe インストーラーと MSIX パッケージ |
.exe インストーラーと MSIX パッケージを使用して、アプリに Windows App SDK をデプロイします。 |
次のセクションでは、1.0 Preview 3 の新機能と更新された機能、制限事項、および既知の問題について説明します。
WinUI 3 (1.0.0-preview3)
MSIX パッケージを使用せずに、WinUI 3 アプリのデプロイをサポートするようになりました。 パッケージ化されていないデプロイをサポートするように WinUI 3 アプリケーションを構成するには、「最初の WinUI 3 (Windows アプリ SDK) プロジェクトを作成する」を参照してください。
重要な制限事項:
- 非パッケージ WinUI 3 アプリケーションは、Windows バージョン 1909 以降でのみサポートされています。
- 非パッケージ WinUI 3 アプリケーションは、x86 と x64 でサポートされています。arm64 サポートが次の安定リリースで追加されます。
- 非パッケージ アプリには、Visual Studio 2019 または Visual Studio 2022 のための単一プロジェクト MSIX パッケージ ツールが必要です。
- 非パッケージ アプリでは、.NET 3.5 をインストールするように求めるメッセージが表示されることがあります。この場合、無視してかまいません。
- 一部の API は、非パッケージ アプリでは現在サポートされていません。 次の安定リリースでこれを修正することを目指しています。 いくつか例を示します。
- ApplicationData
- StorageFile.GetFileFromApplicationUriAsync
- ApiInformation (Windows 10 ではサポートされていません)
- Package.Current
- ListView、CalendarView、GridView の各コントロールは不適切なスタイルを使用しているため、次の安定リリースでこれを修正することを目指しています。
詳細について、または WinUI 3 で開発を開始するには、以下を参照してください。
その他の制限事項と既知の問題:
非パッケージ アプリは、Windows 10 バージョン 1809 ではサポートされていません。 安定チャネルの次のリリースでこれを修正することを目指しています。
C++ UWP ツールがインストールされていない場合、C# 単一プロジェクト MSIX アプリはコンパイルされません。 C# 単一プロジェクト MSIX プロジェクトがある場合は、C++ (v14x) ユニバーサル Windows プラットフォーム ツール オプション コンポーネントをインストールする必要があります。
このリリースでは、C# と C++ のために [空のアプリ、パッケージ (WinUI 3 in Desktop)] プロジェクト テンプレートが導入されています。 これらのテンプレートを使用すると、個別のパッケージ プロジェクトを使用せずに、アプリを MSIX パッケージに組み込むことができます (「単一プロジェクト MSIX を使用してアプリをパッケージ化する」を参照してください)。 このリリースでは、これらのテンプレートにいくつかの既知の問題があります。
Visual Studio を再起動するまで、[公開] メニュー項目が表示されない。 [空のアプリ、パッケージ (WinUI 3 in Desktop)] プロジェクト テンプレートを使用して Visual Studio 2019 と Visual Studio 2022 の両方で新しいアプリを作成するときには、Visual Studio を閉じてもう一度開くまで、プロジェクトを公開するコマンドがメニューに表示されません。
単一プロジェクト MSIX パッケージを使用して、C++ 静的/動的ライブラリ プロジェクト参照を C++ アプリに追加するときのエラー。 Visual Studio で、プロジェクトの種類に互換性がないため、プロジェクトを参照として追加できないというエラーが表示されます。
クラス ライブラリ プロジェクトでカスタム ユーザー コントロールを参照するときのエラー。 指定されたパスが見つからないというエラーが発生すると、アプリケーションがクラッシュします。
Visual Studio 2019 のための C# または C++ テンプレート。 プロジェクトをビルドしようとすると、"The project doesn't know how to run the profile project name" というエラーが発生します。 この問題を解決するには、単一プロジェクト MSIX パッケージ ツール拡張機能をインストールします。
Visual Studio 2019 と Visual Studio 2022 のための C# テンプレート。 Visual Studio で、[デバッグの開始] または [デバッグなしで開始] を選択したときに、アプリがデプロイされて実行されない (そして Visual Studio からのフィードバックがない) 場合は、ソリューション エクスプローラーでプロジェクト ノードをクリックして選択し、再試行します。
Visual Studio 2019 と Visual Studio 2022 のための C# テンプレート。 開発用コンピューター上でプロジェクトを実行またはデバッグしようとすると、次のようなエラーが発生します。"The project needs to be deployed before we can debug. Please enable Deploy in the Configuration Manager." この問題を解決するには、構成マネージャーでプロジェクトのデプロイを有効にします。 詳細な手順については、「最初の WinUI 3 (Windows アプリ SDK) プロジェクトを作成する」を参照してください。
プレビュー 4 までの Visual Studio 2022 バージョン17.0 リリースの C++ テンプレート。 プロジェクトを初めて実行しようとすると、次のようなエラーが発生します。"There were deployment errors"。 この問題を解決するには、プロジェクトをもう一度実行またはデプロイします。 この問題は、Visual Studio 2022 バージョン 17.0 プレビュー 7 で修正される予定です。
Any CPU ビルド構成のサポートがない: Windows App SDK を既存の .NET アプリケーションまたはコンポーネントに追加し、それが Any CPU をサポートする場合は、希望するアーキテクチャ
x86
、x64
、またはarm64
を指定する必要があります。1.0 Preview 3 を使用する C# プロジェクトでは、次の .NET SDK を使用する必要があります: .NET 6 SDK 以降 (「.NET のダウンロード」および「.NET 5 は 2022 年 5 月 10 日にサポート終了」を参照)。
DispatcherQueue.TryEnqueue (ディスパッチャー キュー スレッドで実行を再開するため) の代わりの手段は、Windows Implementation Library (WIL) の resume_foreground ヘルパー関数を使用することです。
- プロジェクトに Microsoft.Windows.ImplementationLibrary NuGet パッケージへの参照を追加します。
#include <wil/cppwinrt_helpers.h>
をpch.h
に追加します。#include <winrt/Microsoft.UI.Dispatching.h>
をpch.h
に追加します。- ここで、
co_await wil::resume_foreground(your_dispatcherqueue);
を指定します。
1.0 プレビュー 1 と プレビュー 2 に影響する重要な問題
Windows App SDK のバージョン 1.0 プレビュー 1 とプレビュー 2 には、パッケージ アプリがアンインストールされたときにそのアプリによって行われた環境変数の変更をすべてクリーンアップするためのメカニズムが含まれています。 この機能は試験的な状態であり、最初のリリースには、システム PATH 環境変数を破損する可能性がある既知のバグが含まれています。
プレビュー 1 とプレビュー 2 では、拡張文字 %
を含むすべての PATH 環境変数が破損されます。 これは、パッケージ アプリがアンインストールされるたびに、そのアプリが Windows App SDK を使用しているかどうかに関係なく発生します。
PATH 環境変数の破損の問題についても参照してください。
詳細
システム PATH エントリは、Windows レジストリの次のキーの Path 値に格納されます。
Computer\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment
レジストリ エディター (regedit.exe
) を起動する場合は、上のパスをコピーし、(メニュー バーのすぐ下にある) 階層リンク バーに貼り付け、Enter キーを押してキーを検索することができます。
そのキーの Path 値は REG_EXPAND_SZ 型である "必要があります" が、バグによってそれが REG_SZ に変更されます。 また、変数拡張文字 %
が含まれている場合は、システム PATH 環境変数が使用できなくなります。
影響を受けるリリース
対応策
コンピューターを良好な状態に戻すには、次の手順を実行します。
レジストリ内の PATH が破損しているかどうかを確認し、該当する場合は、下のスクリプトを実行してリセットします。
次の Windows PowerShell スクリプトで手順 1 を実行できます (PowerShell Core では機能しません)。 昇格して実行します。
# This script must be run from an elevated Windows PowerShell # window (right-click Windows PowerShell in the Start menu, # and select Run as Administrator). # If the PATH in the Registry has been set to REG_SZ, then delete # it, and recreate it as REG_EXPAND_SZ. $EnvPath = 'Registry::HKLM\System\CurrentControlSet\Control\Session Manager\Environment' $Environment=Get-Item $EnvPath $PathKind = $Environment.GetValueKind('Path') if ($PathKind -ne 'ExpandString') { $Path = $Environment.GetValue('Path') Remove-ItemProperty $EnvPath -Name Path New-ItemProperty $EnvPath -Name Path -PropertyType ExpandString -Value $Path }
Windows App SDK 1.0 プレビュー 1 またはプレビュー 2 を使用するすべてのアプリをアンインストールします (以下のスクリプトを参照してください)。
バグが含まれているパッケージを含めて、Windows App SDK 1.0 プレビュー 1/プレビュー 2 パッケージをアンインストールします (以下のスクリプトを参照してください)。
次の Windows PowerShell スクリプトで手順 2 と 3 を実行できます (PowerShell Core では機能しません)。 昇格して実行します。
# This script must be run from an elevated Windows PowerShell # window (right-click Windows PowerShell in the Start menu, # and select Run as Administrator). # Remove the Windows App SDK 1.0 Preview1/2, and all apps that use it. $winappsdk = "Microsoft.WindowsAppRuntime.1.0-preview*" Get-AppxPackage | Where-Object { $_.Dependencies -like $winappsdk } | Remove-AppxPackage Get-AppxPackage $winappsdk | Remove-AppxPackage
Windows App SDK 1.0 プレビュー 3 での修正
PATH 環境変数が破損する原因となっている機能は、今後の Windows App SDK 1.0 プレビュー 3 リリースで削除される予定です。 後日、すべてのバグが修正され、全面的にテストされた後で、再導入される可能性があります。
バージョン 1.0 プレビュー 3 を使うことをお勧めします。
バージョン 1.0 プレビュー 2 (1.0.0-preview2)
重要
バージョン 1.0 プレビュー 1 とプレビュー 2 には重大なバグが含まれています。 これらのプレビューのいずれかを既にインストールしている場合は、問題の解決方法を参照してください。 代わりに、バージョン 1.0 プレビュー 3 を使うことをお勧めします。
これは、バージョン 1.0 のプレビュー チャネルの最新リリースです。 すべてのプレビュー チャネル機能がサポートされています。
以下のセクションでは、このリリースの新機能と更新された機能、制限事項、既知の問題について説明します。
WinUI 3 (1.0.0-preview2)
新しい更新:
- WinUI 2.6 からの最新の Windows スタイルを反映するようにコントロールが更新されました。
- 単一プロジェクト MSIX がサポートされています。
- WinUI 3 パッケージで、ビルド 17763 以降をターゲットにできるようになりました。 詳細については、問題 #921 を参照してください。
- アプリ内ツール バーがサポートされています。 ただし、アプリ内ツール バーと既存のホット リロード/ライブ ビジュアル ツリーのサポートには、10 月後半に提供される予定の Visual Studio 17.0 プレビュー 5 リリースが必要です。
バグ修正: WebView2Runtime テキストがローカライズされました。
詳細について、または WinUI 3 での開発を開始するには、以下を参照してください。
ウィンドウ設定 (1.0.0-preview2)
このリリースでは、Appwindow クラスへの更新が導入されています。 このリリースでは、主要な新機能は追加されていませんが、メソッド名とプロパティが変更され、いくつかの戻り値が削除されました。 更新の詳細については、ドキュメントとサンプルを参照してください。 1.0 試験版または 1.0 プレビュー 1 のリリースで AppWindow を操作した場合は、コードにいくつかの変更を加える必要があります。
新しい更新:
- AppWindowConfiguration クラスが削除されました。 このクラスのプロパティは、AppWindow 自体、または Presenter クラスで使用できるようになりました。
- この空間の WINRT API メソッドのほとんどの
bool
戻り値が削除され、void
になりました。これらのメソッドは常に成功するためです。 - GetWindowIdFromWindow と GetWindowFromWindowId では、C# importdll の呼び出しが不要になりました。 代わりに、Microsoft.UI.Win32Interop クラスで使用できる .NET ラッパー メソッドを使用してください。
重要な制限事項:
- 現在、Windows App SDK には、UI フレームワーク コンテンツを AppWindow にアタッチするためのメソッドが用意されていません。HWND 相互運用アクセス メソッドを使用するように制限されています。
- ウィンドウ タイトル バーのカスタマイズは、Windows 11 でのみ機能します。 タイトル バー カスタマイズ機能のサポートを確認するには、IsCustomizationSupported メソッドを使用します。 この機能を下位レベルでも導入する予定です。
詳細については、「アプリ ウィンドウの管理 (Windows アプリ SDK)」を参照してください。
入力 (1.0.0-preview2)
新しい更新:
- 高精度タッチパッド入力のサポートが改善されました。
重要な制限事項:
- すべての PointerPoint 静的ファクトリ関数が削除されました。GetCurrentPoint、GetCurrentPointTransformed、GetIntermediatePoints、GetIntermediatePointsTransformed。
- Windows App SDK では、ポインター ID を使用した PointerPoint オブジェクトの取得はサポートされていません。 代わりに、PointerPoint メンバー関数 GetTransformedPoint を使用して、既存の PointerPoint オブジェクトの変換されたバージョンを取得できます。 中間点として、PointerEventArgs メンバー関数 GetIntermediatePoints と GetTransformedIntermediatePoints を使用できます。 詳細については、ドキュメントを参照してください。
MRT Core (1.0.0-preview2)
新しい更新:
- アプリ開発者は、.NET プロジェクトの PRI ファイルでインデックスが作成されないように、イメージ ファイルまたは RESW ファイルを選択して除外できるようになりました。 詳細については、問題 980 を参照してください。
重要な制限事項:
- .NET プロジェクトでは、アプリが既にビルドされている場合、コピーしてプロジェクト フォルダーに貼り付けられたリソース ファイルには、F5 でインデックスが作成されません。 回避策として、アプリをリビルドします。 詳細については、問題 1503 を参照してください。
- .NET プロジェクトでは、ビルド アクションを手動で設定しないと、外部フォルダーから追加された既存のリソース ファイルには、インデックスが作成されません。 この問題を回避するには、Visual Studio のビルド アクションを設定します (イメージ ファイルの場合は [コンテンツ]、RESW ファイルの場合は [PRIResource])。 詳細については、問題 1504 を参照してください。
非パッケージ アプリのデプロイ
新機能:
- Windows アプリ SDK 1.0 Preview 2 では、ブートストラップ API の .NET ラッパーが導入されています (「外部の場所でパッケージ化されたアプリまたはパッケージ化されていないアプリに Windows アプリ SDK ランタイムを使用する」を参照してください)。 ブートストラップ API はネイティブ C/C++ 関数のセットです。非パッケージ アプリは、実行時に Windows App SDK フレームワーク パッケージに対する依存関係を動的に取得するために、この API を使用する必要があります。 .NET ラッパーを使用すると、Windows フォームや WPF アプリなどの .NET アプリからブートストラップ API を簡単に呼び出すことができます。 ブートストラップ API 用の .NET ラッパーが Microsoft.WindowsAppRuntime.Bootstrap.Net.dll アセンブリ内に用意されています。これはアプリ プロジェクトのローカルにあります。 .NET ラッパーの詳細については、.NET ラッパー ライブラリに関する記事を参照してください。
- パッケージ アプリは、デプロイ API を使用して、コンピューターにインストールされているメインとシングルトンの MSIX パッケージを取得できるようになりました。 メインとシングルトンのパッケージはアプリと共にインストールされるフレームワーク パッケージの一部ですが、Windows アプリケーション モデルには制限があるため、それらのパッケージをインストールするためには、パッケージ アプリでこの追加の手順を実行する必要があります。 展開 API のしくみについては、「フレームワークに依存するパッケージ 化されたアプリのWindows アプリ SDK展開ガイド」を参照してください。
重要な制限事項:
- ブートストラップ API 専用の .NET ラッパーは、Windows App SDK へのアクセスを簡略化するための非パッケージ .NET アプリケーションによる使用のみを目的としています。
- 完全に信頼されているか、packageManagement の制限された機能を持つ MSIX パッケージ アプリのみが、デプロイ API を使用してメインとシングルトンのパッケージの依存関係をインストールするアクセス許可を持っています。 部分的に信頼されているパッケージ アプリのサポートは、今後のリリースで予定されています。
- X64 システムで DeploymentManager.Initialize メソッドを使用する x86 アプリを F5 でテストする場合は、WindowsAppRuntimeInstall.exe を実行して、x64 フレームワークが最初にインストールされていることを確認します。 そうしないと、Visual Studio は x64 フレームワークをデプロイしないため、NOT_FOUND エラーが発生します。通常、これは Store のデプロイまたはサイドローディングを通じて発生します。
アプリのライフサイクル
アプリのライフサイクル機能のほとんどは UWP プラットフォームに既に存在しており、デスクトップ アプリの種類 (特に、非パッケージ コンソール アプリ、Win32 アプリ、Windows フォーム アプリ、WPF アプリ) で使用するために Windows App SDK に取り込まれています。 UWP プラットフォーム自体に同等の機能があるため、これらの機能の Windows App SDK 実装は、UWP アプリでは使用できません。
UWP 以外のアプリを MSIX パッケージにパッケージ化することもできます。 これらのアプリでは Windows App SDK のアプリのライフサイクル機能の一部を使用できますが、マニフェストの手法が使用できる場合はそれを使用する必要があります。 たとえば、Windows App SDK の RegisterForXXXActivation API を使用することはできず、代わりにマニフェストを使用してリッチ アクティベーションに登録する必要があります。
パッケージ化されたアプリのすべての制約は、パッケージ化された WinUI 3 アプリにも適用されます。また、以下で説明するように、追加の考慮事項があります。
重要な考慮事項:
リッチ アクティベーション: GetActivatedEventArgs
- 非パッケージ アプリ: 完全に使用可能です。
- パッケージ アプリ: 使用可能ですが、これらのアプリはプラットフォーム
GetActivatedEventArgs
を使用することもできます。 プラットフォームは Windows.ApplicationModel.AppInstance を定義し、Windows App SDK は Microsoft.Windows.AppLifecycle.AppInstance を定義していることに注意してください。 また、UWP アプリはFileActivatedEventArgs
やLaunchActivatedEventArgs
などのActivatedEventArgs
クラスを使用できるのに対して、Windows App SDK AppLifecycle 機能はクラスではなくインターフェイス (たとえば、IFileActivatedEventArgs
、ILaunchActivatedEventArgs
など) を使用する必要があります。 - WinUI 3 アプリ: WinUI 3 の App.OnLaunched には Microsoft.UI.Xaml.LaunchActivatedEventArgs が与えられますが、プラットフォーム
GetActivatedEventArgs
は Windows.ApplicationModel.IActivatedEventArgs を返し、WindowsAppSDKGetActivatedEventArgs
はプラットフォームLaunchActivatedEventArgs
を表すことができる Microsoft.Windows.AppLifecycle.AppActivationArguments オブジェクトを返します。 - 詳細については、「アプリ ライフサイクル API を使用したリッチ アクティベーション」を参照してください。
リッチ アクティベーションの登録/登録解除
- 非パッケージ アプリ: 完全に使用可能です。
- パッケージ アプリ: 使用不可です。代わりにアプリの MSIX マニフェストを使用してください。
- 詳細については、「アプリ ライフサイクル API を使用したリッチ アクティベーション」を参照してください。
単一または複数のインスタンス化
- 非パッケージ アプリ: 完全に使用可能です。
- パッケージ アプリ: 完全に使用可能です。
- WinUI 3 アプリ: アプリが他のインスタンスを検出してアクティブ化をリダイレクトする場合は、できるだけ早く、ウィンドウなどを初期化する前に行う必要があります。これを有効にするには、アプリでDISABLE_XAML_GENERATED_MAINを定義し、検出とリダイレクトを実行できるカスタム Main (C#) または WinMain (C++) を記述する必要があります。
- RedirectActivationToAsync は非同期呼び出しであり、アプリが STA で実行されている場合は、非同期呼び出しで待機しないでください。 Windows フォームと C# WinUI 3 アプリの場合は、必要に応じて Main を非同期として宣言できます。 C++ WinUI 3 および C# WPF アプリの場合、Main を非同期として宣言することはできないため、代わりにリダイレクト呼び出しを別のスレッドに移動して、STA をブロックしないようにする必要があります。
- 詳細については、「App instancing with the app lifecycle API」(アプリのライフサイクル API によるアプリのインスタンス化) を参照してください。
電源/状態通知
- 非パッケージ アプリ: 完全に使用可能です。
- パッケージ アプリ: 完全に使用可能です。
- 詳細については、「アプリ ライフサイクル API を使用した電源管理」を参照してください。
既知の問題:
動詞ハンドラーのコマンド ライン テンプレートを設定するときに、ファイルの種類の関連付けによって %1 が %251 になるように誤ってエンコードされるため、非パッケージ Win32 アプリがクラッシュします。 部分的な回避策として、代わりにレジストリ値が %1 になるように手動で編集できます。 ターゲット ファイルのパスにスペースが含まれている場合も、失敗します。そのシナリオに対する回避策はありません。
その他の制限事項と既知の問題:
バージョン 1.0 プレビュー 1 とプレビュー 2 には重大なバグが含まれています。 これらのプレビューのいずれかを既にインストールしている場合は、問題の解決方法を参照してください。 代わりに、バージョン 1.0 プレビュー 3 を使うことをお勧めします。
このリリースでは、C# と C++ のプロジェクトのために [空のアプリ、パッケージ (WinUI 3 in Desktop)] テンプレートが導入されています。 これらのテンプレートを使用すると、個別のパッケージ プロジェクトを使用せずに、アプリを MSIX パッケージに組み込むことができます。 このリリースでは、これらのテンプレートにいくつかの既知の問題があります。
Visual Studio 2019 のための C# テンプレート。 プロジェクトをビルドしようとすると、"The project doesn't know how to run the profile project name" というエラーが発生します。 この問題を解決するには、単一プロジェクト MSIX パッケージ ツール拡張機能をインストールします。
Visual Studio 2019 と Visual Studio 2022 のための C# テンプレート。 開発用コンピューター上でプロジェクトを実行またはデバッグしようとすると、次のようなエラーが発生します。"The project needs to be deployed before we can debug. Please enable Deploy in the Configuration Manager." この問題を解決するには、構成マネージャーでプロジェクトのデプロイを有効にします。 詳細な手順については、「最初の WinUI 3 (Windows アプリ SDK) プロジェクトを作成する」を参照してください。
Visual Studio 2019 と Visual Studio 2022 のための C++ テンプレート。 このリリースでは、これらのプロジェクトは、UWP アプリから呼び出すことができる Win32 API のサブセットの呼び出しに制限されています。 [Blank App, Packaged with WAP (WinUI 3 in Desktop) (空のアプリ、WAP を使用したパッケージ (デスクトップの WinUI 3))] テンプレートは、この問題の影響を受けません。
プレビュー 4 までの Visual Studio 2022 バージョン17.0 リリースの C++ テンプレート。 プロジェクトを初めて実行しようとすると、次のようなエラーが発生します。"There were deployment errors"。 この問題を解決するには、プロジェクトをもう一度実行またはデプロイします。 この問題は、Visual Studio 2022 バージョン 17.0 Preview 5 で修正される予定です。
プッシュ通知 API (Microsoft.Windows.PushNotifications 名前空間) が 1.0 プレビュー 2 リリースに誤って含まれています。 これはまだ試験的な機能であり、使用するには、代わりに 1.0 試験版リリースをインストールする必要があります。 この機能は、今後の 1.0 リリースから削除されます。
アプリのライフサイクル API (Microsoft.Windows.AppLifecycle 名前空間) の試験的な属性が 1.0 プレビュー 2 リリースに誤って含まれています。 試験的な属性は、次のリリースでこの API から削除される予定です。
Any CPU ビルド構成のサポートがない: Windows App SDK を既存の .NET アプリケーションまたはコンポーネントに追加し、それが Any CPU をサポートする場合は、希望するアーキテクチャ
x86
、x64
、またはarm64
を指定する必要があります。1.0 Preview 2 を使用する C# プロジェクトでは、.NET SDK (.NET 6 SDK 以降) を使用する必要があります (「.NET のダウンロードと .NET 5 は 2022 年 5 月 10 日にサポート終了」を参照)。
DispatcherQueue.TryEnqueue (ディスパッチャー キュー スレッドで実行を再開するため) の代わりの手段は、Windows Implementation Library (WIL) の resume_foreground ヘルパー関数を使用することです。
- プロジェクトに Microsoft.Windows.ImplementationLibrary NuGet パッケージへの参照を追加します。
#include <wil/cppwinrt_helpers.h>
をpch.h
に追加します。#include <winrt/Microsoft.UI.Dispatching.h>
をpch.h
に追加します。- ここで、
co_await wil::resume_foreground(your_dispatcherqueue);
を指定します。
バージョン 1.0 プレビュー 1 (1.0.0-preview1)
重要
バージョン 1.0 プレビュー 1 とプレビュー 2 には重大なバグが含まれています。 これらのプレビューのいずれかを既にインストールしている場合は、問題の解決方法を参照してください。 代わりに、バージョン 1.0 プレビュー 3 を使うことをお勧めします。
これは、バージョン 1.0 のプレビュー チャネルの最初のリリースです。 すべてのプレビュー チャネル機能がサポートされています。
以下のセクションでは、このリリースの新機能と更新された機能、制限事項、既知の問題について説明します。
WinUI 3 (1.0.0-preview1)
WinUI 3 のこのリリースでは、バグ修正を含む 1.0 に向けたビルドに重点が置かれています。
- 新機能: プレビュー 1 に新機能はありません。
- 修正済みの問題: このリリースで解決されたすべての問題の一覧については、GitHub リポジトリを参照してください。
詳細について、または WinUI 3 での開発を開始するには、以下を参照してください。
ウィンドウ設定 (1.0.0-preview1)
このリリースでは、試験版 1で導入されたウィンドウ化 API がプレビュー状態になります。 バグ修正、安定性、API シグネチャに対する調整に焦点を合わせているため、このリリースには主要な新機能の領域がありません。 注目すべき変更内容と追加内容を以下に示します。
新機能:
- DisplayAreaWatcher がウィンドウ化 API に追加されました。 これにより、開発者は、表示トポロジでの変更を観察し、システムで現在定義されている DisplayArea を列挙することができます。
- AppWindow では、SetIcon メソッドを使用したウィンドウ アイコンの設定がサポートされるようになりました。また、AppWindowTitleBar では、IconShowOptions プロパティを使用して、ウィンドウ アイコンをシステム メニューと共に表示するか非表示にするかを選択できるようになりました。
重要な制限事項:
- このリリースの AppWindow は現在、Win32 アプリでのみ使用できます (パッケージと非パッケージの両方)。
- 現在、Windows App SDK には、UI フレームワーク コンテンツを AppWindow にアタッチするためのメソッドが用意されていません。HWND 相互運用アクセス メソッドを使用するように制限されています。
- ウィンドウ タイトル バーのカスタマイズは、Windows 11 でのみ機能します。 タイトル バー カスタマイズ機能のサポートを確認するには、IsCustomizationSupported メソッドを使用します。 この機能を下位レベルでも導入する予定です。
詳細については、「アプリ ウィンドウの管理 (Windows アプリ SDK)」を参照してください。
入力 (1.0.0-preview1)
このリリースでは、入力 API にいくつかの新機能が導入されています。 注目すべき変更内容と追加内容を以下に示します。
新機能と機能の更新:
- PointerPredictor は、入力の待機時間が重要なアプリケーション (手書き入力アプリケーションなど) に、今後の入力ポイントの位置を 15 ミリ秒までの精度で予測する機能を提供して、待機時間の改善とスムーズなアニメーションを実現します。
- PenDeviceInterop を使用すると、FromPointerPoint メソッドを使用して、Windows.Devices.Input.PenDevice への参照を取得できます。
- InputCursor は、
CoreCursor
に存在する "カスタム" 型を削除し、CoreCursor
オブジェクトを個別のオブジェクトに分割することで、事前に設定されたシステム カーソルの種類とカスタム カーソルの種類を明確に区別します。 - InputCursor API への更新。
- GestureRecognizer が試験段階から Microsoft.UI.Input に移動されました。
- PointerPoint が試験段階から Microsoft.UI.Input に移動されました。
- マウス、タッチ、ペン入力は、WinUI 3 のドラッグ アンド ドロップで完全にサポートされています。
重要な制限事項:
- このリリースの入力 API には、Windows バージョン 1809 に関する既知の問題があります。
- MRT Core は、InputCursor のサブタイプではまだサポートされていません。
- プラットフォーム SDK API の直接使用 Windows.UI.Core.CoreDragOperation は、WinUI 3 アプリケーションでは機能しません。
- PointerPoint プロパティ RawPosition と ContactRectRaw は、予測値ではない値 (OS 内の通常の値と同じ) を参照していたため、削除されました。 代わりに Position と ContactRect を使用してください。 ポインター予測は、Microsoft.UI.Input.PointerPredictor API オブジェクトで処理されるようになりました。
MRT Core (1.0.0-preview1)
バージョン 1.0 プレビュー 1 以降、MRT Core API は、Microsoft.ApplicationModel.Resources 名前空間から Microsoft.Windows.ApplicationModel.Resources 名前空間に移動されました。
その他の制限事項と既知の問題:
バージョン 1.0 プレビュー 1 とプレビュー 2 には重大なバグが含まれています。 これらのプレビューのいずれかを既にインストールしている場合は、問題の解決方法を参照してください。 代わりに、バージョン 1.0 プレビュー 3 を使うことをお勧めします。
C++ の [Blank App, Packaged with WAP (WinUI 3 in Desktop) (空のアプリ、WAP を使用したパッケージ (デスクトップの WinUI 3))] プロジェクト テンプレートを使用して作成されたプロジェクトでは、既定で次のビルド エラーが発生します:
fatal error C1083: Cannot open include file: 'winrt/microsoft.ui.dispatching.co_await.h': No such file or directory
。 この問題を解決するには、pch.h ファイルから次のコード行を削除します。 この問題は次のリリースで修正される予定です。#include <winrt/microsoft.ui.dispatching.co_await.h>
DispatcherQueue.TryEnqueue (ディスパッチャー キュー スレッドで実行を再開するため) の代わりの手段は、Windows Implementation Library (WIL) の resume_foreground ヘルパー関数を使用することです。
- プロジェクトに Microsoft.Windows.ImplementationLibrary NuGet パッケージへの参照を追加します。
#include <wil/cppwinrt_helpers.h>
をpch.h
に追加します。#include <winrt/Microsoft.UI.Dispatching.h>
をpch.h
に追加します。- ここで、
co_await wil::resume_foreground(your_dispatcherqueue);
を指定します。
Any CPU ビルド構成のサポートがない: Windows App SDK はネイティブ コードで記述されているため、Any CPU ビルド構成をサポートしていません。 Visual Studio の WinUI 3 テンプレートでは、アーキテクチャ固有のビルドのみが許可されます。 Any CPU をサポートする既存の .NET アプリケーションまたはコンポーネントに Windows App SDK を追加した場合、目的のアーキテクチャ (
x86
、x64
、arm64
) を指定する必要があります。.NET アプリはビルド 18362 以降をターゲットにする必要がある: TFM は、
net6.0-windows10.0.18362
以降に設定する必要があり、パッケージ プロジェクトの<TargetPlatformVersion>
は 18362 以降に設定する必要があります。 詳細については、GitHub に関する既知の問題に関するページを参照してください。1.0 Preview 1 を使用する C# プロジェクトでは、.NET 6 SDK 以降の .NET SDK を使用する必要があります (「.NET のダウンロード」および「.NET 5 は 2022 年 5 月 10 日にサポート終了」を参照)。
Windows 10 バージョン 1809 ではサポートされない非パッケージ アプリ: これは、次のリリースで解決されます。
関連トピック
Windows developer