Поделиться через


Последние заметки о выпуске стабильного канала для пакета SDK для приложений Windows

Стабильный канал предоставляет выпуски пакета SDK для приложений Windows, которые поддерживаются приложениями в рабочих средах. Приложения, использующие стабильный выпуск пакета SDK для приложений Windows, также можно опубликовать в Microsoft Store.

Важные ссылки:

Архив заметки о выпуске стабильного канала:

Скачиваемые файлы пакета 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

Поддержка собственного AOT в версии 1.6

Теперь свойство проекта .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 в версии 1.6

TabView поддерживает новый CanTearOutTabs режим, который предоставляет расширенный интерфейс для перетаскивания вкладок и перетаскивания в новое окно. Если этот новый параметр включен, перетаскивание вкладок очень похоже на режим перетаскивания вкладок в Edge и Chrome, где новое окно сразу же создается во время перетаскивания, что позволяет пользователю перетаскивать его на край экрана, чтобы развернуть или привязать окно в одном плавном движении. Эта реализация также не использует API перетаскивания, поэтому это не влияет на какие-либо ограничения в этих API. В частности, разрыв вкладки поддерживается в процессах, работающих с повышенными привилегиями от имени администратора.

Другие важные изменения

  • Добавлен новый ColorHelper.ToDisplayName() API, заполнив этот разрыв от UWP.
  • Добавлен новый класс, который, в частности, включает в Microsoft.Windows.Globalization.ApplicationLanguages себя новую PrimaryLanguageOverride функцию. Дополнительные сведения см. в статье о проблеме GitHub #4523.
  • Неуправляемый ItemsWrapGrid. Это должно быть изменение, совместимое с обратной совместимостью.
  • PipsPager поддерживает новый режим, в котором он может выполнять оболочку между первыми и последними элементами.

Новый режим упаковки PipsPager в версии 1.6

  • RatingControl теперь является более настраиваемым, переместив некоторые жестко закодированные свойства стиля в ресурсы темы. Это позволяет приложениям переопределить эти значения, чтобы лучше настроить внешний вид RatingControl.
Новая настройка RatingControl в версии 1.6
  • 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 событие не работало/ComboBoxTextBox. Дополнительные сведения см. в статье о проблеме 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