次の方法で共有


Windows アプリ SDK の最新の試験段階チャネル リリース ノート

重要

実験的チャネルは、運用環境での使用ではサポートされていません。また、実験的リリースを使用するアプリを Microsoft Store に公開することはできません。

試験段階チャネルには、開発の初期段階にある試験段階チャネル機能を備えた Windows アプリ SDK のリリースが含まれています。 実験的機能の API には、Experimental 属性があります。 コードで実験的 API を呼び出した場合は、ビルド時の警告が表示されます。 試験段階チャネル内のすべての API は、大規模な変更と破壊的変更の対象となります。 試験段階の機能と API は、今後のリリースからいつでも削除できます。

重要なリンク:

試験段階チャネル リリース ノートのアーカイブ

バージョン 1.6 試験的 (1.6.0-experimental1)

これは、実験的チャネルの最新リリースです。

ダウンロードするには、WinAppSDK NuGet のバージョンを 1.6.240531000-experimental1 に再ターゲットします。

1.6-experimental1 に必要な C# プロジェクトの変更

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

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

さらに、C#/WinRT を使用するマネージド アプリWindows アプリ SDK、Microsoft.Windows.CsWinRT2.1.0-prerelease.240602.1 (またはそれ以降) に更新する必要があります。

ネイティブ AOT のサポート

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

サポートのために PublishAot 、前のセクションで説明した C# プロジェクトの変更に加えて、そのパッケージからソース ジェネレーターを 有効にするには、Microsoft.Windows.CsWinRT2.1.0-prerelease.240602.1 (またはそれ以降) へのパッケージ参照も必要です。

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

<PublishAot Condition="'$(ExcludeRestorePackageImports)'=='true'">true</PublishAot>

さらに、発行プロファイルまたはプロジェクトでリリース構成を発行するときに条件付きで有効に PublishAot することをお勧めします。

<PublishAot Condition="'$(Configuration)'=='Release'">true</PublishAot>

AOT の問題の解決

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

部分クラス

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

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

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

ルート型

完全な{Binding}サポートが実装されるまで、型はトリミングから保持される可能性があります。名前空間N内の型Tを持つアセンブリAを使用するプロジェクトPでは、動的に参照される (通常はトリミングされる) T だけで保持できます。

P.csproj:

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

ILLink.Descriptors.xml:

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

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

Note

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

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

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

既知の問題: このリリースでは、スケール ファクターが 100% とは異なるモニターでは、ポインター入力の動作 CanTearOutTabs が正しくありません。 これは、次の 1.6 リリースで修正される予定です。

新しい TitleBar コントロール

新しい TitleBar コントロールを使用すると、次の機能を使用して、アプリ用の優れたカスタマイズ可能なタイトル バーを簡単に作成できます。

  • 構成可能なアイコン、タイトル、サブタイトルのプロパティ
  • 統合された戻るボタン
  • 検索ボックスなどのカスタム コントロールを追加する機能
  • ウィンドウの幅に基づく要素の自動非表示と表示
  • アクティブまたは非アクティブなウィンドウの状態を表示するためのアフォーダンス
  • 空の領域のドラッグ可能領域、テーマの応答性、既定のキャプション (最小/最大/閉じる) ボタン、組み込みのアクセシビリティ サポートなど、既定のタイトル バー機能のサポート

この TitleBar コントロールは、タイトル バーのさまざまな組み合わせをサポートするように設計されているため、多くのカスタム コードを記述しなくても、必要なエクスペリエンスを柔軟に作成できます。 コミュニティ ツールキットのタイトル バープロトタイプからフィードバックを受け取り、追加のフィードバックをお待ちしております。

既知の問題: このリリースでは、一部の TitleBar 要素が読み込み時に表示されない問題のため、アイコンとタイトルのみが表示されます。 これを回避するには、次のコードを使用して、他の要素 (サブタイトル、ヘッダー、コンテンツ、フッター) を読み込みます。

public MainWindow()
  {
      this.InitializeComponent();
      this.ExtendsContentIntoTitleBar = true;
      this.SetTitleBar(MyTitleBar);

      MyTitleBar.Loaded += MyTitleBar_Loaded;
  }

  private void MyTitleBar_Loaded(object sender, RoutedEventArgs e)
  {
      // Parts get delay loaded. If you have the parts, make them visible.
      VisualStateManager.GoToState(MyTitleBar, "SubtitleTextVisible", false);
      VisualStateManager.GoToState(MyTitleBar, "HeaderVisible", false);
      VisualStateManager.GoToState(MyTitleBar, "ContentVisible", false);
      VisualStateManager.GoToState(MyTitleBar, "FooterVisible", false);

      // Run layout so we re-calculate the drag regions.
      MyTitleBar.InvalidateMeasure();
  }

この問題は、次の 1.6 リリースで修正される予定です。

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

  • 封印されていない ItemsWrapGrid. これは下位互換性のある変更である必要があります。
  • PipsPager では、最初の項目とリスト 項目の間で折り返すことができる新しいモードがサポートされています。
  • RatingControl は、いくつかのハードコーディングされたスタイル プロパティをテーマ リソースに移動することで、よりカスタマイズ可能になりました。 これにより、アプリはこれらの値をオーバーライドして RatingControl の外観をより適切にカスタマイズできます。

1.6-experimental1 用の新しい API

1.6-experimental1 には、次の新しい API が含まれています。 これらの API は実験段階ではありませんが、WinAppSDK の安定した製品版にはまだ含まれていません。

Microsoft.UI.Xaml.Controls

    PipsPager
        WrapMode
        WrapModeProperty

    PipsPagerWrapMode
        None
        Wrap

その他の 1.6-experimental1 API

このリリースには、次の新しい実験的 API と変更された実験的 API が含まれています。

Microsoft.UI.Content

    ChildContentLink
    ContentExternalOutputLink
        IsAboveContent

    ContentIsland
        Children
        Create
        FindAllForCompositor
        GetByVisual
        Offset
        RotationAngleInDegrees

    ContentSite
        Offset
        RotationAngleInDegrees

    ContentSiteView
        Offset
        RotationAngleInDegrees

    IContentLink
    IContentSiteBridge2
    ReadOnlyDesktopSiteBridge

Microsoft.UI.Input

    EnteredMoveSizeEventArgs
    EnteringMoveSizeEventArgs
    ExitedMoveSizeEventArgs
    InputNonClientPointerSource
        EnteredMoveSize
        EnteringMoveSize
        ExitedMoveSize
        WindowRectChanged
        WindowRectChanging

    MoveSizeOperation
    WindowRectChangedEventArgs
    WindowRectChangingEventArgs

Microsoft.UI.Windowing

    AppWindow
        DefaultTitleBarShouldMatchAppModeTheme

Microsoft.UI.Xaml

    XamlRoot
        CoordinateConverter
        TryGetContentIsland

Microsoft.UI.Xaml.Controls

    ScrollingViewChangingEventArgs
    ScrollView
        ViewChanging

    StackLayout
        IsVirtualizationEnabled
        IsVirtualizationEnabledProperty

    TabView
        CanTearOutTabs
        CanTearOutTabsProperty
        ExternalTornOutTabsDropped
        ExternalTornOutTabsDropping
        TabTearOutRequested
        TabTearOutWindowRequested

    TabViewExternalTornOutTabsDroppedEventArgs
    TabViewExternalTornOutTabsDroppingEventArgs
    TabViewTabTearOutRequestedEventArgs
    TabViewTabTearOutWindowRequestedEventArgs
    TitleBar
    TitleBarAutomationPeer
    TitleBarTemplateSettings

Microsoft.UI.Xaml.Controls.Primitives

    ScrollPresenter
        ViewChanging

その他の既知の問題

  • ContentIsland.AutomationProviderRequested イベントを使用Microsoft.UI.Content.ContentIslandsして処理しない XAML 以外のアプリケーション (またはオートメーション プロバイダーとして nullptr を返す) は、Voice Access、ナレーター、Accessibility Insights、Inspect.exe などのアクセシビリティまたは UI オートメーション ツールが有効になっている場合にクラッシュします。

バグ修正

このリリースには、次のバグ修正が含まれています。

  • a の空の領域をクリックすると、常にフォーカスが最初の ScrollViewer フォーカス可能なコントロールに移動し、そのコントロールを ScrollViewer ビューにスクロールする問題を修正しました。 詳細については、GitHub の問題 #597 を参照してください。
  • イベントが Window.Activated 複数回発生することがある問題を修正しました。 詳細については、GitHub の問題 #7343 を参照してください。
  • 展開時に子が NavigationViewItem.IsSelected 表示されないようにプロパティを true 設定する問題を修正しました。 詳細については、GitHub の問題 #7930 を参照してください。
  • キャプションとエッジ効果がMediaPlayerElement正しく表示されない問題をNoneDropShadow修正しました。 詳細については、GitHub の問題 #7981 を参照してください。
  • ポップアップを表示するときにプロパティが Flyout.ShowMode 使用されない問題を修正しました。 詳細については、GitHub の問題 #7987 を参照してください。
  • 丸めエラーが NumberBox 発生することがある問題を修正しました。 詳細については、GitHub の問題 #8780 を参照してください。
  • 古いバージョンの WinAppSDK に対してコンパイルされたライブラリを使用すると、型またはプロパティを検索しようとしてヒットする可能性がある問題を修正しました。 詳細については、GitHub の問題 #8810 を参照してください。
  • ウィンドウを起動するときに初期キーボード フォーカスが設定されない問題を修正しました。 詳細については、GitHub の問題 #8816 を参照してください。
  • 最初に表示された後に機能しなかった問題 FlyoutShowMode.TransientWithDismissOnPointerMoveAway を修正しました。 詳細については、GitHub の問題 #8896 を参照してください。
  • 一部のコントロールでテンプレート Foreground バインドとプロパティが正しく表示されない問題を Background 修正しました。 詳細については、GitHub の問題 #7070、#9020#9029、#9083および #9102 を参照してください。
  • セッターで使用されている ThemeResourceテーマの変更時 VisualStateManager に更新されない問題を修正しました。 ポップアップのこの一般的な影響を受けるコントロール。 詳細については、GitHub の問題 #9198 を参照してください。
  • キーフォーカスが WebView 失われ、余分なぼかし/フォーカスイベントやその他の問題が発生する問題を修正しました。 詳細については、GitHub の問題 #9288 を参照してください。
  • デバッグ出力にバインド エラーが表示される可能性がある NavigationView 問題を修正しました。 詳細については、GitHub の問題 #9384 を参照してください。
  • 負のビューボックスを定義する SVG ファイルがレンダリングされなくなる問題を修正しました。 詳細については、GitHub の問題 #9415 を参照してください。
  • 向きの変更 ItemsView.Layout によって項目が削除される問題を修正しました。 詳細については、GitHub の問題 #9422 を参照してください。
  • スクロールで ScrollView 多くのデバッグ出力が生成される問題を修正しました。 詳細については、GitHub の問題 #9434 を参照してください。
  • 正常に動作しない問題を MapContorl.InteractiveControlsVisible 修正しました。 詳細については、GitHub の問題 #9486 を参照してください。
  • イベントが MapControl.MapElementClick 正しく発生しない問題を修正しました。 詳細については、GitHub の問題 #9487 を参照してください。
  • 弱参照を使用する前に x:Bind が null をチェックせず、クラッシュする可能性がある問題を修正しました。 詳細については、GitHub の問題 #9551 を参照してください。
  • プロパティを変更しても位置が TeachingTip.Target 正しく更新されない問題を修正しました。 詳細については、GitHub の問題 #9553 を参照してください。
  • WebView2 でドロップダウンが応答しない問題を修正しました。 詳細については、GitHub の問題 #9566 を参照してください。
  • 使用 GeometryGroup時のメモリ リークを修正しました。 詳細については、GitHub の問題 #9578 を参照してください。
  • インから ItemRepeater 非常に多くの項目をスクロールすると、レンダリング フレームが空白になる可能性がある問題を ScrollView 修正しました。 詳細については、GitHub の問題 #9643 を参照してください。
  • 動作していない問題 SceneVisual を修正しました。