Последние заметки о выпуске стабильного канала для пакета SDK для приложений Windows
Стабильный канал предоставляет выпуски пакета SDK для приложений Windows, которые поддерживаются приложениями в рабочих средах. Приложения, использующие стабильный выпуск пакета SDK для приложений Windows, также можно опубликовать в Microsoft Store.
Важные ссылки:
- Если вы хотите обновить существующее приложение с более старой версии пакета SDK для приложений Windows до более новой версии, ознакомьтесь с обновлением существующих проектов до последнего выпуска пакета SDK для приложений Windows.
Архив заметки о выпуске стабильного канала:
- Заметки о выпуске стабильного канала для пакета SDK для приложений Windows 1.5
- Заметки о выпуске стабильного канала для пакета SDK для приложений Windows 1.4
- Заметки о выпуске стабильного канала для пакета SDK для приложений Windows 1.3
- Заметки о выпуске стабильного канала для пакета SDK для приложений Windows 1.2
- Заметки о выпуске стабильного канала для пакета SDK для приложений Windows 1.1
- Заметки о выпуске стабильного канала для пакета SDK для приложений Windows 1.0
- Заметки о выпуске стабильного канала для пакета SDK для приложений Windows 0.8
- Заметки о выпуске стабильного канала для пакета SDK для приложений Windows 0.5
Скачиваемые файлы пакета SDK для приложений для Windows
Примечание.
Расширения Visual Studio для пакета SDK для приложений Windows (VSIX) больше не распределяются в виде отдельной загрузки. Они доступны в Visual Studio Marketplace в Visual Studio.
Версия 1.6.1 (1.6.240923002)
Это выпуск пакета SDK для приложений Windows, содержащий критические исправления ошибок для выпуска 1.6.
- Исправлен сбой при использовании FocusVisualKind.Reveal(). Дополнительные сведения см. в статье о проблеме GitHub #9966.
- Исправлены шумные исключения C++ из Bcp47Langs.dll. Дополнительные сведения см. в статье о проблеме GitHub #4691. Обратите внимание, что это исправление удаляет синхронизацию с
Windows.Globalization.ApplicationLanguages.PrimaryLanguageOverride
. - Исправлена проблема, из-за которой событие
Unloaded
было создано сразу после отображенияContentDialog
события. Дополнительные сведения см. в статье о проблеме GitHub #8402. - Исправлена проблема, из-за которой меню CommandBar, возможно, неправильно открылось, даже если для него было место для открытия.
- Исправлены некоторые проблемы, при которых входные данные в
InputNonClientPointerSource
регионы не обрабатывались правильно, когда окно верхнего уровня выполнялось в режиме справа налево. - Исправлена проверка времени компиляции для версии платформы WINDOWS SDK для обработки немного другого имени платформы, используемой для .NET 9.
Версия 1.6
В следующих разделах описываются новые и обновленные функции и известные проблемы для версии 1.6.
В существующем приложении пакета SDK для приложений Windows 1.5 можно обновить пакет Nuget до версии 1.6.240829007 (см. раздел "Обновление пакета" в Visual Studio и управление ими с помощью диспетчер пакетов NuGet).
Сведения об обновленной среде выполнения и MSIX см. в разделе "Загрузки" для пакета SDK для приложений Windows.
Обязательные изменения проекта для версии 1.6
Изменения проекта C++
При обновлении проекта C++ до версии 1.6 необходимо добавить ссылку на проект в Microsoft.Web.WebView2
пакет. Если вы обновляете диспетчер пакетов NuGet в Visual Studio, эта зависимость будет добавлена для вас.
Изменения проекта C#
В 1.6 управляемые приложения пакета SDK для приложений Windows требуют microsoft.Windows.SDK.NET.Ref *.*.*.38
или более поздней версии, которые можно указать с помощью WindowsSdkPackageVersion в файле csproj
. Например:
<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.38</WindowsSdkPackageVersion>
<PropertyGroup>
...
Кроме того, управляемые приложения пакета SDK для Приложений Windows должны обновляться до Microsoft.Windows.CsWinRT 2.1.1
(или более поздней версии).
Примечание.
Эти ссылки вручную больше не потребуются после выпуска следующего обновления пакета SDK для .NET.
Поддержка собственного AOT
Теперь свойство проекта .NET PublishAot
поддерживается для собственной компиляции "Впереди времени". Дополнительные сведения о собственном AOT см. в разделе "Собственное развертывание AOT". Поскольку AOT основывается на поддержке Обрезки, большая часть следующих рекомендаций, связанных с обрезкой, также применяется к AOT.
Для PublishAot
поддержки и обрезки поддержки в дополнение к изменениям проекта C#, описанным в предыдущем разделе, вам также потребуется ссылка на пакет Microsoft.Windows.CsWinRT 2.1.1
(или более поздней версии), чтобы включить генератор источника из этого пакета, пока не будет выпущено следующее обновление пакета SDK для .NET, когда оно больше не потребуется.
Дополнительные сведения см. в документации по поддержке CsWinRT Trimming / AOT и заметках о выпуске CsWinRT 2.1.1.
Так как пакет SDK для приложений Windows вызывает целевые объекты публикации при развертывании F5, рекомендуется включить PublishAot
во время восстановления NuGet, добавив его в csproj
файл:
<PublishAot>true</PublishAot>
Устранение проблем AOT
В этом выпуске разработчик отвечает за обеспечение правильности корня всех типов, чтобы избежать обрезки (например, с целевыми объектами на основе {Binding}
отражения). Более поздние выпуски расширят возможности C#/WinRT и компилятора XAML, чтобы автоматизировать корневую обработку, где это возможно, оповещения разработчиков обрезанию рисков и предоставляют механизмы для устранения.
Разделяемые классы
C#/WinRT также включает PublishAot
поддержку в версии 2.1.1. Чтобы включить класс для публикации AOT с помощью C#/WinRT, сначала его необходимо пометить partial
. Это позволяет исходному анализатору C#/WinRT AOT атрибутировать классы для статического анализа. Для этого атрибута требуются только классы (содержащие методы, целевые объекты обрезки).
Небезопасная ошибка кода
Генератор источника CsWinRT может создать код, который использует unsafe
. Если вы столкнулись с такой ошибкой во время компиляции или предупреждением о диагностике (CS0227 для "Небезопасный код может отображаться только в том случае, если компиляция с /unsafeBlocks имеет значение true), следует задать значение EnableUnsafeBlocks. Дополнительные сведения см. в статье GitHub о проблеме CsWinRT #1721.
WebView2 еще не совместим с AOT
Проекции WebView2 в Microsoft.Web.WebView2
пакете версии 1.0.2651.64 еще не совместимы. Это будет исправлено в предстоящем выпуске Microsoft.Web.WebView2
пакета, который затем можно ссылаться в проекте.
Методы без отражения
Чтобы обеспечить совместимость AOT, методы на основе отражения следует заменить статически типизированной сериализацией, AppContext.BaseDirectory, typeof() и т. д. Дополнительные сведения см. в разделе "Общие сведения об обрезке предупреждений".
Типы корневых элементов
Пока не будет реализована полная поддержка {Binding}
, типы могут быть сохранены от обрезки следующим образом:
Учитывая сборку, используюющую проект P
с типом T
в пространстве N
имен, которое динамически ссылается (поэтому обычно обрезано), T
можно сохранить с помощью:A
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-выражений корневого дескриптора см. в разделе "Корневые дескрипторы".
Примечание.
Пакеты зависимостей, которые еще не приняли поддержку AOT, могут столкнуться с проблемами среды выполнения.
Разделение управления версиями WebView2
Пакет SDK для приложений Windows теперь использует пакет SDK Для Edge WebView2 в качестве ссылки на NuGet, а не внедряет жестко закодированную версию пакета SDK Edge WebView2. Новая модель позволяет приложениям выбирать более новую версию Microsoft.Web.WebView2
пакета, а не ограничиваться версией, с помощью которой был создан пакет SDK для Windows. Новая модель также позволяет приложениям ссылаться на пакеты NuGet, которые также ссылались на пакет SDK Edge WebView2. Дополнительные сведения см. в статье о проблеме GitHub #5689.
Новые API развертывания пакетов
API управления пакетами получил несколько улучшений, включая Is*ReadyOrNewerAvailable*(), EnsureReadyOptions.RegisterNewerIfAvailable, Is*Provisioned*(), IsPackageRegistrationPending() и несколько исправлений ошибок. Дополнительные сведения см . в разделе PackageManagement.md и запрос на вытягивание #4453 .
Улучшенный разрыв вкладки TabView
TabView
поддерживает новый CanTearOutTabs
режим, который предоставляет расширенный интерфейс для перетаскивания вкладок и перетаскивания в новое окно. Если этот новый параметр включен, перетаскивание вкладок очень похоже на режим перетаскивания вкладок в Edge и Chrome, где новое окно сразу же создается во время перетаскивания, что позволяет пользователю перетаскивать его на край экрана, чтобы развернуть или привязать окно в одном плавном движении. Эта реализация также не использует API перетаскивания, поэтому это не влияет на какие-либо ограничения в этих API. В частности, разрыв вкладки поддерживается в процессах, работающих с повышенными привилегиями от имени администратора.
Другие важные изменения
- Добавлен новый
ColorHelper.ToDisplayName()
API, заполнив этот разрыв от UWP. - Добавлен новый класс, который, в частности, включает в
Microsoft.Windows.Globalization.ApplicationLanguages
себя новуюPrimaryLanguageOverride
функцию. Дополнительные сведения см. в статье о проблеме GitHub #4523. - Неуправляемый
ItemsWrapGrid
. Это должно быть изменение, совместимое с обратной совместимостью. PipsPager
поддерживает новый режим, в котором он может выполнять оболочку между первыми и последними элементами.
RatingControl
теперь является более настраиваемым, переместив некоторые жестко закодированные свойства стиля в ресурсы темы. Это позволяет приложениям переопределить эти значения, чтобы лучше настроить внешний вид RatingControl.
- WinUI 3 изменился на типографическую модель для выбора шрифта, а не устаревшую модель веса или растяжения/стиля. Типографическая модель требуется для некоторых новых шрифтов, включая переменную пользовательского интерфейса Segoe, и обеспечивает расширенные возможности шрифтов. Некоторые старые шрифты, которые зависят от модели веса или растяжения или стиля для выбора, не могут быть найдены с типографической моделью.
Известные проблемы
- Если отладчик настроен на разрыв для всех исключений C++, он будет прерывать некоторые шумные исключения при запуске в коде BCP47 (глобализация Windows). Дополнительные сведения см. в статье о проблеме GitHub #4691.
- Пакеты библиотек компонентов, ссылающиеся на пакет WinAppSDK 1.6, не будут правильно получать содержимое пакета WebView2. Дополнительные сведения см. в разделе WebView2Feedback #4743. Обходной путь — добавить прямую ссылку на
Microsoft.Web.WebView2
пакет, где это необходимо. - Приложения, скомпилированные с помощью Native AOT, иногда могут столкнуться с зависанием после навигации по страницам из-за состояния гонки в потоке GC среды выполнения .NET. Дополнительные сведения см. в статье о проблеме .NET #104582.
- Первоначальный выпуск версии 1.6.0 представил проблему с одной из наших зависимостей, которую мы ожидаем, будет решена в предстоящем выпуске пакета SDK для .NET. Если возникла ошибка с версией Microsoft.Windows.SDK.NET ссылки, необходимо явно ссылаться на версию пакета SDK для .NET, указанную сообщением об ошибке. Например, если ошибка говорит, что вам нужна версия 10.0.19041.38, добавьте в файл следующую команду
.csproj
:<WindowsSdkPackageVersion>10.0.19041.38</WindowsSdkPackageVersion>
.
Исправления ошибок
- Исправлен сбой при задании
InfoBar.IsOpen
в XAML. Дополнительные сведения см. в статье о проблеме GitHub #8391. - Исправлена проблема, из-за которой элементы HTML потеряют запись указателя при перемещении мыши за пределы
WebView2
границ. Дополнительные сведения см. в статье о проблеме GitHub #8677. - Исправлена проблема, из-за которой перетаскивание и перетаскивание в всплывающее
ShouldConstrainToRootBounds=false
меню не работало. Дополнительные сведения см. в статье GitHub о проблеме 9276. - Исправлена проблема, из-за которой
ms-appx://
ссылки не работали приPublishSingleFile
включении. Дополнительные сведения см. в статье о проблеме GitHub #9468. - Исправлена проблема, из-за которой символы отладчика не работали правильно для некоторых двоичных файлов. Дополнительные сведения см. в статье о проблеме GitHub #4633.
- Исправлен потенциальный сбой при подклассах
NavigationView
. - Исправлена проблема, из-за которой границы таблицы не
RichEditBox
были правильно удалены при прокрутке или уменьшении размера таблицы. - Исправлена проблема, из-за которой всплывающие элементы имели
MediaTransportControls
полностью прозрачный фон. - Исправлена проблема, из-за которой перетаскивание в WebView2 завершилось ошибкой или сбоем в неправильном расположении на коэффициентах масштабирования отображения, отличных от 100 % или при включении масштабирования системного текста.
- Исправлена проблема
TextBox
/RichEditBox
, из-за которой не объявлять средства специальных возможностей при блокировкеMaxLength
входных данных из-за ограничения. - Исправлены некоторые проблемы, связанные с обработкой сценариев пользовательской панели заголовков. Дополнительные сведения см. в статье о проблемах GitHub #7629, #9670, #9709 и #8431.
- Исправлена проблема, из-за которой
InfoBadge
значок не был видимым. Дополнительные сведения см. в статье о проблеме GitHub #8176. - Исправлена проблема со значками, которые иногда отображаются в неправильной позиции
CommandBarFlyout
. Дополнительные сведения см. в статье о проблеме GitHub #9409. - Исправлена проблема с фокусом клавиатуры в меню при открытии или закрытии подмены. Дополнительные сведения см. в статье о проблеме GitHub #9519.
- Исправлена проблема с
TreeView
использованием неправильногоIsExpanded
состояния при перезапуске элементов. Дополнительные сведения см. в статье о проблеме GitHub #9549. - Исправлена проблема при использовании привязки ElementName в объекте
ItemsRepeater.ItemTemplate
. Дополнительные сведения см. в статье о проблеме GitHub #9715. - Исправлена проблема с первым элементом в
ItemsRepeater
иногда с неправильной позицией. Дополнительные сведения см. в статье о проблеме GitHub #9743. - Исправлена проблема с
InputNonClientPointerSource
иногда критическим вводом к кнопкам min/max/close. Дополнительные сведения см. в статье о проблеме GitHub #9749. - Исправлена ошибка компиляции при использовании Microsoft.UI.Interop.h с clang-cl. Дополнительные сведения см. в статье о проблеме GitHub #9771.
- Исправлена проблема, из-за которой
CharacterReceived
событие не работало/ComboBox
TextBox
. Дополнительные сведения см. в статье о проблеме GitHub #9786. - Исправлена проблема, из-за которой повторяющиеся
KeyUp
события были вызваны для клавиш со стрелками и вкладками. Дополнительные сведения см. в статье о проблеме GitHub #9399. - Исправлена проблема, из-за которой
PowerManager.SystemSuspendStatusChanged
событие было непригодным для полученияSystemSuspendStatus
. Дополнительные сведения см. в статье о проблеме GitHub #2833. - Исправлена проблема, из-за которой начальный фокус клавиатуры не был правильно задан
WebView2
, когда это был единственный элемент управления в окне. - Исправлена проблема, при использовании
ExtendsContentIntoTitleBar=true
которой кнопки Min/Max/Close не отображались в модель автоматизации пользовательского интерфейса, что не позволило отображать номера голосовых кнопок. - Исправлена проблема, из-за которой приложение может завершиться сбоем в проверке блокировки из-за неожиданного повторного входа.
- Исправлена проблема, из-за которой
Hyperlink
цвета неправильно обновлялись при переключении в тему высокой контрастности. - Исправлена проблема, из-за которой изменение коллекции
ListView
в фоновом окне может неправильно переместить это окно на передний план и сосредоточиться. - Исправлена проблема, из-за которой вызов
ItemsRepeater.StartBringIntoView
иногда может привести к исчезновению элементов. - Исправлена проблема, из-за которой касание и перетаскивание в ней
Button
ScrollViewer
осталось бы в состоянии нажатия. - Обновлена технология IntelliSense, которая отсутствовала для многих новых типов и членов.
- Исправлена проблема, из-за которой щелкнуть пустую область
ScrollViewer
фокуса всегда перемещается к первому фокусируемому элементу управления вScrollViewer
элементе управления и прокрутите его в режиме просмотра. Дополнительные сведения см. в статье о проблеме GitHub #597. - Исправлена проблема, из-за которой
Window.Activated
событие иногда запускалось несколько раз. Дополнительные сведения см. в статье о проблеме GitHub #7343. - Исправлена проблема, из-за которой свойство
NavigationViewItem.IsSelected
true
не позволяло отображать дочерние элементы при развертывании. Дополнительные сведения см. в статье о проблеме GitHub #7930. - Исправлена проблема, из-за которой
MediaPlayerElement
неправильно отображались заголовки сNone
эффектами края илиDropShadow
эффектами края. Дополнительные сведения см. в статье о проблеме 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
не работало.
Новые API в версии 1.6.0
Версия 1.6.0 включает следующие новые API по сравнению с стабильным выпуском 1.5:
Microsoft.UI
ColorHelper
ToDisplayName
Microsoft.UI.Input
EnteredMoveSizeEventArgs
EnteringMoveSizeEventArgs
ExitedMoveSizeEventArgs
InputNonClientPointerSource
EnteredMoveSize
EnteringMoveSize
ExitedMoveSize
WindowRectChanged
WindowRectChanging
MoveSizeOperation
WindowRectChangedEventArgs
WindowRectChangingEventArgs
Microsoft.UI.Xaml
XamlRoot
CoordinateConverter
Microsoft.UI.Xaml.Automation.Peers
ScrollPresenterAutomationPeer
Microsoft.UI.Xaml.Controls
PipsPager
WrapMode
WrapModeProperty
PipsPagerWrapMode
TabView
CanTearOutTabs
CanTearOutTabsProperty
ExternalTornOutTabsDropped
ExternalTornOutTabsDropping
TabTearOutRequested
TabTearOutWindowRequested
TabViewExternalTornOutTabsDroppedEventArgs
TabViewExternalTornOutTabsDroppingEventArgs
TabViewTabTearOutRequestedEventArgs
TabViewTabTearOutWindowRequestedEventArgs
Microsoft.Windows.Globalization
ApplicationLanguages
Microsoft.Windows.Management.Deployment
EnsureReadyOptions
RegisterNewerIfAvailable
PackageDeploymentFeature
PackageDeploymentManager
IsPackageDeploymentFeatureSupported
IsPackageProvisioned
IsPackageProvisionedByUri
IsPackageReadyOrNewerAvailable
IsPackageReadyOrNewerAvailableByUri
IsPackageSetProvisioned
IsPackageSetReadyOrNewerAvailable
PackageReadyOrNewerAvailableStatus
Microsoft.Windows.Storage
ApplicationData
ApplicationDataContainer
ApplicationDataContract
ApplicationDataCreateDisposition
ApplicationDataLocality
См. также
Windows developer