Neueste Versionshinweise zum experimentelle Kanal für das Windows App SDK
Wichtig
Der experimentelle Kanal wird nicht für die Verwendung in Produktionsumgebungen unterstützt, und Apps, die die experimentellen Versionen verwenden, können nicht im Microsoft Store veröffentlicht werden.
Der experimentelle Kanal umfasst Versionen des Windows App SDK mit experimentellen Kanalfeatures, die sich in frühen Entwicklungsphasen befinden. APIs für experimentelle Features weisen das Experimental-Attribut auf. Wenn Sie eine experimentelle API in Ihrem Code aufrufen, erhalten Sie eine Buildzeitwarnung. Alle APIs im experimentellen Kanal unterliegen umfangreichen Überarbeitungen und wichtigen Änderungen. Experimentelle Features und APIs können jederzeit aus nachfolgenden Versionen entfernt werden.
Wichtige Links:
- Wenn Sie für eine vorhandene App ein Upgrade von einer älteren Version des Windows App SDK auf eine neuere Version ausführen möchten, finden Sie weitere Informationen unter Aktualisieren vorhandener Projekte auf die neueste Version von Windows App SDK.
- Eine Dokumentation zur Verwendung der experimentellen Version finden Sie unter Installieren von Tools für Vorschau- und experimentelle Kanäle des Windows App SDK.
Archiv der Versionshinweise zum Experimental-Kanal
- Anmerkungen zur experimentellen Kanalversion für das Windows App SDK 1.5
- Versionshinweise zum experimentelle Kanal für das Windows App SDK 1.4
- Versionshinweise zum experimentelle Kanal für das Windows App SDK 1.3
- Versionshinweise zum experimentelle Kanal für das Windows App SDK 1.2
- Versionshinweise zum experimentelle Kanal für das Windows App SDK 1.0
- Versionshinweise zum experimentelle Kanal für das Windows App SDK 0.8
Version 1.6 Experimental (1.6.0-experimental1)
Dies ist die neueste Version des experimentellen Kanals.
Um sie herunterzuladen, richten Sie Ihre WinAppSDK NuGet-Version neu aus, auf 1.6.240531000-experimental1
.
Erforderliche C#-Projektänderungen für 1.6-experimental1
In 1.6-experimental1 erfordern verwaltete Windows App SDK-Apps Microsoft.Windows.SDK.NET.Ref*.*.*.35-preview
(oder höher), die über WindowsSdkPackageVersion in Ihrer csproj
Datei angegeben werden können. Zum Beispiel:
<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>
...
Darüber hinaus sollten verwaltete Windows App SDK-Apps mit C#/WinRT auf Microsoft.Windows.CsWinRT2.1.0-prerelease.240602.1
(oder höher) aktualisiert werden.
Unterstützung von nativem AOT
Die .NET-Projekteigenschaft PublishAOT
wird jetzt für die systemeigene Ahead-Of-Time-Kompilierung unterstützt. Ausführliche Informationen finden Sie unter native AOT-Bereitstellung. Da AOT auf der Trimming-Unterstützung basiert, gilt auch ein Großteil der folgenden Kürzungsanleitungen für AOT.
Zur PublishAOT
Unterstützung benötigen Sie zusätzlich zu den im vorherigen Abschnitt beschriebenen Änderungen des C#-Projekts auch einen Paketverweis auf Microsoft.Windows.CsWinRT2.1.0-prerelease.240602.1
(oder höher), um den Quellgenerator aus diesem Paket zu aktivieren.
Um die PublishAOT
MSBuild-Ziele zu aktivieren, muss der NuGet-Wiederherstellungsvorgang die PublishAOT
Eigenschaft explizit auf "true" festlegen. Zum Beispiel:
dotnet restore -p:publishAot=true ...
oder
msbuild /t:restore /p:publishAot=true ...
Sie können dies auch zu Ihrer csproj
Datei hinzufügen:
<PublishAot Condition="'$(ExcludeRestorePackageImports)'=='true'">true</PublishAot>
Beheben von AOT-Problemen
In dieser Version ist der Entwickler dafür verantwortlich, sicherzustellen, dass alle Typen ordnungsgemäß gewurzelt sind, um Kürzungen (z. B. mit spiegelbasierten {Binding}
Zielen) zu vermeiden. Spätere Versionen werden sowohl C#/WinRT als auch der XAML-Compiler verbessern, um die Stammerstellung nach Möglichkeit zu automatisieren, Entwickler auf das Kürzen von Risiken hinzuweisen und Mechanismen zur Behebung bereitzustellen.
Teilklassen
C#/WinRT enthält PublishAOT
auch Unterstützung in Version 2.1.0-prerelease.240602.1. Um eine Klasse für die AOT-Veröffentlichung mit C#/WinRT zu aktivieren, muss sie zuerst markiert partial
werden. Dadurch kann der C#/WinRT AOT-Quellanalysator die Klassen für statische Analysen attributieren. Nur Klassen (die Methoden enthalten, die Ziele des Kürzens) erfordern dieses Attribut.
Spiegelungsfreie Techniken
Um die AOT-Kompatibilität zu ermöglichen, sollten spiegelbasierte Techniken durch statisch typierte Serialisierung, AppContext.BaseDirectory, typeof() usw. ersetzt werden. Ausführliche Informationen finden Sie in der Einführung zum Kürzen von Warnungen.
Stammtypen
Bis zur vollständigen Unterstützung für {Binding}
die Implementierung können Typen wie folgt vor dem Kürzen beibehalten werden: Bei einem Projekt P
, das assembly A
mit Typ T
im Namespace N
verwendet wird, auf den nur dynamisch verwiesen wird (also normalerweise gekürzt), T
kann folgendes beibehalten werden:
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>
Vollständige XML-Ausdruckssyntax des Stammdeskriptors finden Sie unter "Stammdeskriptoren".
Hinweis
Abhängigkeitspakete, die noch keine AOT-Unterstützung übernommen haben, können Laufzeitprobleme aufweisen.
Verbesserte TabView-Registerkarte ausreißen
TabView
unterstützt einen neuen CanTearOutTabs
Modus, der eine erweiterte Benutzeroberfläche zum Ziehen von Registerkarten und Zum Ausziehen in ein neues Fenster bietet. Wenn diese neue Option aktiviert ist, ähnelt das Ziehen von Tabstopps in Edge und Chrome sehr ähnlich der Registerkartenziehfunktion, bei der während des Ziehens sofort ein neues Fenster erstellt wird, sodass der Benutzer es an den Rand des Bildschirms ziehen kann, um das Fenster in einer reibungslosen Bewegung zu maximieren oder anzudockt. Diese Implementierung verwendet auch keine Drag-and-Drop-APIs, sodass sie nicht durch Einschränkungen in diesen APIs beeinträchtigt wird. Insbesondere wird das Ausreißen von Registerkarten in Prozessen unterstützt, die als Administrator ausgeführt werden.
Bekanntes Problem: In dieser Version ist das Zeigereingabeverhalten auf CanTearOutTabs
Monitoren mit einem Skalierungsfaktor von 100 % falsch. Dies wird in der nächsten Version von 1.6 behoben.
Neues Titelleisten-Steuerelement
Ein neues TitleBar
Steuerelement erleichtert das Erstellen einer großartigen, anpassbaren Titelleiste für Ihre App mit den folgenden Features:
- Konfigurierbare Symbol-, Titel- und Untertiteleigenschaften
- Integrierte Schaltfläche "Zurück"
- Die Möglichkeit, ein benutzerdefiniertes Steuerelement wie ein Suchfeld hinzuzufügen
- Automatisches Ausblenden und Anzeigen von Elementen basierend auf der Fensterbreite
- Angebote zum Anzeigen des aktiven oder deaktiven Fensterzustands
- Unterstützung für standardmäßige Titelleistenfeatures wie ziehende Bereiche in leeren Bereichen, Reaktionsfähigkeit des Designs, Standardbeschriftungsschaltflächen (min/max/close) und integrierte Unterstützung für Barrierefreiheit
Das TitleBar
Steuerelement wurde entwickelt, um verschiedene Kombinationen von Titelleisten zu unterstützen, sodass es flexibel ist, die gewünschte Oberfläche zu erstellen, ohne viele benutzerdefinierten Code schreiben zu müssen. Wir haben Feedback vom Prototyp der Titelleiste des Community-Toolkits erhalten und freuen uns auf weiteres Feedback!
Bekanntes Problem: In dieser Version wird das TitleBar
Symbol und der Titel nur aufgrund eines Problems angezeigt, bei dem einige Elemente beim Laden nicht angezeigt werden. Um dies zu umgehen, verwenden Sie den folgenden Code, um die anderen Elemente zu laden (Untertitel, Kopfzeile, Inhalt und Fußzeile):
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();
}
Dieses Problem wird in der nächsten Version 1.6 behoben.
Weitere wichtige Änderungen
- Unversiegelt
ItemsWrapGrid
. Dies sollte eine abwärtskompatible Änderung sein. PipsPager
unterstützt einen neuen Modus, in dem er zwischen den ersten und Listenelementen umbrochen werden kann.RatingControl
ist jetzt besser anpassbar, indem einige hartcodierte Formateigenschaften in Designressourcen verschoben werden. Dadurch können Apps diese Werte überschreiben, um die Darstellung von RatingControl besser anzupassen.
Neue APIs für 1.6-experimental1
1.6-experimental1 enthält die folgenden neuen APIs. Diese APIs sind nicht experimentell, aber noch nicht in einer stabilen Version von WinAppSDK enthalten.
Microsoft.UI.Xaml.Controls
PipsPager
WrapMode
WrapModeProperty
PipsPagerWrapMode
None
Wrap
Zusätzliche 1.6-experimental1-APIs
Diese Version enthält die folgenden neuen und geänderten experimentellen APIs:
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
Andere bekannte Probleme
- Nicht-XAML-Anwendungen, die das ContentIsland.AutomationProviderRequested-Ereignis verwenden
Microsoft.UI.Content.ContentIslands
und nicht behandeln (oder nullptr als Automatisierungsanbieter zurückgeben), stürzt ab, wenn ein Barrierefreiheits- oder Benutzeroberflächenautomatisierungstool wie Voice Access, Sprachausgabe, Accessibility Insights, Inspect.exe usw. aktiviert ist.
Fehlerkorrekturen
Die folgenden Fehlerkorrekturen sind in diesem Release enthalten:
- Es wurde ein Problem behoben, bei dem durch Klicken in einen leeren Bereich eines Steuerelements
ScrollViewer
immer der Fokus auf das erste fokussierbare Steuerelement im Steuerelement verschoben und in dieScrollViewer
Ansicht gescrollt wurde. Weitere Informationen finden Sie unter GitHub-Problem Nr. 597. - Es wurde ein Problem behoben, bei dem das
Window.Activated
Ereignis manchmal mehrmals ausgelöst wurde. Weitere Informationen finden Sie unter GitHub-Problem #7343. - Ein Problem wurde behoben, durch das die
NavigationViewItem.IsSelected
Eigenschaft so festgelegt wurde,true
dass die untergeordneten Elemente nicht angezeigt werden, wenn sie erweitert werden. Weitere Informationen finden Sie unter GitHub-Problem #7930. - Es wurde ein Problem behoben, bei dem
MediaPlayerElement
Beschriftungen mitNone
oderDropShadow
Randeffekten nicht ordnungsgemäß angezeigt wurden. Weitere Informationen finden Sie unter GitHub-Problem #7981. - Es wurde ein Problem behoben, bei dem die
Flyout.ShowMode
Eigenschaft beim Anzeigen des Flyouts nicht verwendet wurde. Weitere Informationen finden Sie unter GitHub-Problem #7987. - Es wurde ein Problem behoben, bei dem
NumberBox
manchmal Rundungsfehler aufgetreten waren. Weitere Informationen finden Sie unter GitHub-Problem #8780. - Es wurde ein Problem behoben, bei dem die Verwendung einer Bibliothek, die mit einer älteren Version von WinAppSDK kompiliert wurde, auf einen Typ oder eine Eigenschaft stoßen kann. Weitere Informationen finden Sie unter GitHub-Problem #8810.
- Es wurde ein Problem behoben, bei dem der anfängliche Tastaturfokus beim Starten eines Fensters nicht festgelegt wurde. Weitere Informationen finden Sie unter GitHub-Problem #8816.
- Es wurde ein Problem behoben, bei dem
FlyoutShowMode.TransientWithDismissOnPointerMoveAway
nach der ersten Anzeige nicht mehr funktionierte. Weitere Informationen finden Sie unter GitHub-Problem #8896. - Es wurde ein Problem behoben, bei dem einige Steuerelemente nicht ordnungsgemäß vorlagenbindung
Foreground
undBackground
-eigenschaften enthielten. Weitere Informationen finden Sie unter GitHub-Problem #7070, #9020, #9029, #9083 und #9102. - Es wurde ein Problem behoben, bei dem
ThemeResource
in Settern verwendetVisualStateManager
wurde, bei der Designänderung nicht aktualisiert wurde. Dies hat häufig Auswirkungen auf Steuerelemente in Flyouts. Weitere Informationen finden Sie unter GitHub-Problem #9198. - Es wurde ein Problem behoben, bei dem
WebView
der Schlüsselfokus verloren ging, was zu zusätzlichen Weichzeichner-/Fokusereignissen und anderen Problemen führte. Weitere Informationen finden Sie unter GitHub-Problem #9288. - Ein Problem wurde behoben, bei dem
NavigationView
ein Bindungsfehler in der Debugausgabe angezeigt werden kann. Weitere Informationen finden Sie unter GitHub-Problem #9384. - Ein Problem wurde behoben, bei dem SVG-Dateien, die ein negatives Viewbox-Element definieren, nicht mehr gerendert wurden. Weitere Informationen finden Sie unter GitHub-Problem #9415.
- Es wurde ein Problem behoben, bei dem das Ändern
ItemsView.Layout
der Ausrichtung dazu führte, dass ein Element entfernt wurde. Weitere Informationen finden Sie unter GitHub-Problem #9422. - Es wurde ein Problem behoben, bei dem beim Scrollen eine
ScrollView
Menge Debugausgabe generiert wurde. Weitere Informationen finden Sie unter GitHub-Problem #9434. - Es wurde ein Problem behoben, bei dem
MapContorl.InteractiveControlsVisible
nicht ordnungsgemäß funktioniert. Weitere Informationen finden Sie unter GitHub-Problem #9486. - Es wurde ein Problem behoben, bei dem
MapControl.MapElementClick
das Ereignis nicht ordnungsgemäß ausgelöst wurde. Weitere Informationen finden Sie unter GitHub-Problem #9487. - Es wurde ein Problem behoben, bei dem x:Bind vor der Verwendung eines schwachen Verweises nicht auf NULL überprüft, was zu einem Absturz führen kann. Weitere Informationen finden Sie unter GitHub-Problem #9551.
- Es wurde ein Problem behoben, bei dem das Ändern der Eigenschaft ihre
TeachingTip.Target
Position nicht ordnungsgemäß aktualisiert. Weitere Informationen finden Sie unter GitHub-Problem #9553. - Ein Problem wurde behoben, bei dem Dropdowns in WebView2 nicht geantwortet haben. Weitere Informationen finden Sie unter GitHub-Problem #9566.
- Ein Speicherverlust bei Verwendung wurde
GeometryGroup
behoben. Weitere Informationen finden Sie unter GitHub-Problem #9578. - Es wurde ein Problem behoben, bei dem das Scrollen durch eine sehr große Anzahl von Elementen aus einem
ItemRepeater
in einerScrollView
Datei zu leeren Renderframes führen kann. Weitere Informationen finden Sie unter GitHub-Problem #9643. - Es wurde ein Problem behoben, bei dem
SceneVisual
es nicht funktionierte.
Zugehörige Themen
Windows developer
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für