いくつかのプレビューの後ビルド、MicrosoftはWindows App SDK 1.0.0 Stableをリリースしました。これは、デスクトップアプリの開発者が最新のWindows UI、API、プラットフォーム機能を備えたアプリをビルドできるようにするツールキットです。

このリリースでは、Microsoftは複数を追加しました。 Windows App SDK0.8の新機能と1.0プレビューリリースの安定した問題。

WinUI 3

WinUI 3は、Windows App SDKのネイティブユーザーエクスペリエンス(UX)フレームワークです。

新機能と更新:

Microsoftは新しいコントロール(PipsPager、Expander、BreadcrumbBar)を追加し、既存のコントロールを更新して、 WinUI 2.6 .Single-project MSIXパッケージはでサポートされています「空白のアプリ、パッケージ化された…」テンプレートを使用して新しいアプリケーションを作成することによるWinUI。Microsoftは、Windowsバージョン1809以降でのMSIXパッケージ化なしのWinUI3アプリの展開をサポートするようになりました。 WinUI3をパッケージ化せずに作成するをご覧ください詳細については、デスクトップアプリをご覧ください。WinUI3プロジェクトでは、ターゲットバージョンをWindows 10、バージョン1809に設定できるようになりました。以前は、バージョン1903までしか設定できませんでした。アプリ内ツールバー、ホットリロード、ライブWinUIパッケージアプリ用のVisualTreeは、Visual Studio 2022 Preview5およびGAでサポートされています。

重要な制限:

パッケージ化されたWinUIアプリケーションとパッケージ化されていないWinUIアプリケーションの両方の既知の問題:シングルプロジェクトMSIXを使用するWinUIアプリケーションの既知の問題(空白のアプリ、パッケージ化されたテンプレート):Visual Studioを再起動するまで[パッケージと公開]メニュー項目がありません:両方でシングルプロジェクトMSIXを使用して新しいアプリを作成する場合空白のアプリ、パッケージ化された(デスクトップのWinUI 3)プロジェクトテンプレートを使用するVisual Studio2019およびVisualStudio 2022、プロジェクトを公開するコマンドが表示されないVisual Studioを閉じて再度開くまでnu。シングルプロジェクトMSIXを使用するC#アプリは、「C ++(v14x)ユニバーサルWindowsプラットフォームツール」オプションコンポーネントがインストールされていないとコンパイルされません。表示開発者ツールをインストールする詳細については、参照されているWindowsランタイムコンポーネントで定義されたタイプを使用するシングルプロジェクトMSIXを使用するアプリでの潜在的なランタイムエラー:解決するには、手動で appxmanifest.xmlへのアクティブ化可能なクラスエントリ。 C#アプリケーションのエラーは「COMException:クラスが登録されていません(0x80040154(REGDB_E_CLASSNOTREG))」です。C++/WinRTアプリケーションで予想されるエラーは「winrt:: hresult_class_not_registered」です。 MSIXパッケージのないWinUIアプリケーションの既知の問題(パッケージ化されていないアプリ):一部のAPIはパッケージIDを必要とし、パッケージ化されていないアプリではサポートされていません。例: WinUIアプリケーションのパッケージ化とデプロイに関する既知の問題:パッケージこのコマンドは、シングルプロジェクトMSIX(空白アプリ、パッケージテンプレート)を使用するWinUIアプリではサポートされていません。代わりに、Package&Publishコマンドを使用してMSIXパッケージを作成します。Packコマンドを使用してC#クラスライブラリからNuGetパッケージを作成するには、アクティブな構成がリリースであることを確認します。Packコマンドは、C ++ Windowsランタイムコンポーネントでサポートされていないため、 NuGetパッケージ。

ウィンドウ処理

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

新機能

AppWindow は、Windowsユーザーとうまく統合できる使いやすいウィンドウシナリオを可能にする高レベルのウィンドウAPIです。経験と他のアプリで。アプリのコンテンツのシステム管理コンテナの高レベルの抽象化を表します。これは、コンテンツがホストされるコンテナーであり、ユーザーがアプリのサイズを変更して画面上で移動するときに対話するエンティティを表します。 Win32に精通している開発者にとって、AppWindowはHWNDの高レベルの抽象化と見なすことができます。 DisplayArea は、HMONITORの高レベルの抽象化を表し、AppWindowと同じ原則に従います。 DisplayAreaWatcher を使用すると、開発者は表示トポロジの変更を観察して列挙できます。現在システムで定義されているDisplayAreas。

入力

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

新機能

重要な制限

すべて PointerPoint 静的ファクトリ関数が削除されました: GetCurrentPoint GetCurrentPointTransformed GetIntermediatePoints 、および GetIntermediatePointsTransformed 。WindowsAppSDKにはありません。ポインタIDを持つ PointerPoint オブジェクトの取得をサポートします。代わりに、 PointerPoint メンバー関数 GetTransformedPoint を使用して、既存の PointerPoint オブジェクトの変換されたバージョンを取得できます。中間ポイントについては、 PointerEventArgs メンバー関数 GetIntermediatePoints および GetTransformedIntermediatePoints 。プラットフォームSDKAPIの直接使用 Windows.UI.Core.CoreDragOperation は機能しませんWinUIアプリケーションを使用します。 PointerPoint プロパティ RawPosition ContactRectRaw は、の通常の値と同じ予測されていない値を参照していたため、削除されました。 OS。 位置を使用します ContactRect 代わりに。ポインタ予測は、 Microsoft.UI.Input.PointerPredictor APIオブジェクトで処理されるようになりました。

アプリライフサイクル

アプリライフサイクル機能のほとんどは、UWPプラットフォームにすでに存在します。デスクトップアプリタイプ、特にパッケージ化されていないコンソールアプリ、Win32アプリ、Windowsフォームアプリ、およびWPFアプリで使用するためにWindows AppSDKに組み込まれています。これらの機能のWindowsApp SDK実装は、UWPプラットフォーム自体に同等の機能があるため、UWPアプリでは使用できません。

重要

UWPアプリに取り組んでいる場合は、 UWP移行ガイダンス。アプリをWindowsAppSDKに移行する方法の詳細をご覧ください。

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

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

重要な考慮事項:

豊富なアクティベーション: GetActivatedEventArgs リッチアクティベーションの登録/登録解除パッケージ化されていないアプリ:完全に使用可能。パッケージ化アプリ:使用できません。代わりにアプリのMSIXマニフェストを使用してください。詳細については、リッチアクティベーション。シングル/マルチインスタンスアンパッケージアプリ:完全に使用可能。パッケージアプリ:完全に使用可能。WinUIアプリ:アプリが他のインスタンスを検出する場合esを使用してアクティベーションをリダイレクトするには、できるだけ早く、ウィンドウなどを初期化する前に行う必要があります。これを有効にするには、アプリでDISABLE_XAML_GENERATED_MAINを定義し、カスタムMain(C#)またはWinMain(C ++)を記述して実行できるようにする必要があります。検出とリダイレクト。 RedirectActivationToAsync は非同期呼び出しであり、アプリがSTAで実行されている場合は、非同期呼び出しを待つべきではありません。 WindowsフォームおよびC#WinUIアプリの場合、必要に応じてMainを非同期として宣言できます。 C ++ WinUIおよびC#WPFアプリの場合、Mainを非同期として宣言することはできないため、代わりにリダイレクト呼び出しを別のスレッドに移動して、STAをブロックしないようにする必要があります。詳細については、アプリのインスタンス化。電源/状態の通知パッケージ化されていないアプリ:完全に使用可能。パッケージ化されたアプリ:完全に使用可能。詳細については、電源管理

既知の問題:

Verbハンドラーのコマンドラインテンプレートを設定すると、ファイルタイプの関連付けで%1が誤って%251にエンコードされ、パッケージ化されていないWin32がクラッシュしますアプリ。部分的な回避策として、レジストリ値を手動で編集して%1にすることができます。ターゲットファイルパスにスペースが含まれている場合でも失敗し、そのシナリオの回避策はありません。これらのシングル/マルチインスタンス化のバグは、今後のサービスパッチで修正されます:AppInstanceリダイレクションはx86キーを登録し、登録を解除し、再登録すると、アプリがクラッシュします

DWriteCore

DWriteCoreは、 DirectWrite は、高品質のテキストレンダリング、解像度に依存しないアウトラインフォント、および完全なUnicode用のDirectXAPIです。テキストとレイアウトのサポート。 DWriteCoreは、Windows10からWindows10、バージョン1809(10.0;ビルド17763)までのバージョンで実行されるDirectWriteの形式であり、クロスプラットフォームで使用するための扉を開きます。

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

重要な制限

DWriteCoreには、次のDirectWrite機能は含まれていません。セッションごとfontsEnd-ユーザー定義文字(EUDC)fontsFont-streaming API低レベルのレンダリングAPIサポートは部分的です。DWriteCoreはDirect2Dと相互運用しませんが、 IDWriteGlyphRunAnalysis および IDWriteBitmapRenderTarget 。

MRTコア

MRTコアは、最新のWindowsの合理化されたバージョンです Windows AppSDKの一部として配布されるリソース管理システム

重要な制限

.NETプロジェクトでは、アプリが既にビルドされている場合、プロジェクトフォルダーにコピーアンドペーストされたリソースファイルはF5でインデックスに登録されません。回避策として、アプリを再構築します。詳細については、 issue 1503 を参照してください。.NETプロジェクトでは、リソースファイルがVisual Studio UIを使用するプロジェクトでは、ファイルはデフォルトでインデックス付けされない場合があります。詳細については、 issue 1786 をご覧ください。この問題を回避するには、CSPROJファイルの以下のエントリを削除してください。 “/> パッケージ化されていないC ++ WinUIアプリの場合、リソースURIが正しく構築されていません。この問題を回避するには、vcxprojに以下を追加します。

Categories: IT Info