Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этом руководстве показано, как использовать winapp CLI на всех этапах внутреннего цикла разработки приложения WinUI 3: создание проекта из официального шаблона, сборка и запуск с удостоверением пакета, отладка сбоев, поиск элементов управления и API, автоматизация пользовательского интерфейса и создание подписанного пакета MSIX. Каждый шаг выполняется из командной строки, поэтому он работает в любом редакторе, в CI и с агентами программирования ИИ.
Шаблоны проектов WinUI уже включают Package.appxmanifest, поэтому вам не нужно запускать winapp init для приложения WinUI. Если вы добавляете удостоверение пакета в существующее приложение .NET, которое не использует WinUI, см. статью Использование winapp CLI с .NET вместо этого.
Prerequisites
Windows 10 версии 1809 или более поздней версии или Windows 11.
.NET SDK версии 8.0.100 или более поздней. Для экспериментальных шаблонов Reactor требуется пакет SDK для .NET 10. Интерфейс командной строки winapp не устанавливает цепочки инструментов, поэтому
winapp newиwinapp runостанавливаются с подсказкой, если отсутствует .NET SDK.winapp CLI:
winget install Microsoft.winappcli --source wingetРежим разработчика, который Windows требует для регистрации приложения из выходных данных сборки. Включите его в Параметры > Система > Для разработчиков. Сведения об изменениях на компьютере см. в разделе Безопасность.
Создание приложения WinUI
winapp new создает каркас приложения WinUI из официального Microsoft.WindowsAppSDK.WinUI.CSharp.Templates пакета. Он устанавливает или обновляет пакет шаблонов по запросу, а затем вызывает для вас dotnet new.
# Pick a template and a name interactively
winapp new
# Or create a NavigationView app without prompts
winapp new --name MyApp --template winui-navview --use-defaults
Запустите winapp new --list , чтобы просмотреть шаблоны в установленном пакете. Пакет включает следующие шаблоны:
| Template | Description |
|---|---|
winui |
Минимальное пустое приложение XAML (по умолчанию). См. снимок экрана |
winui-navview |
Приложение XAML с оболочкой NavigationView. См. снимок экрана |
winui-tabview |
Приложение XAML с оболочкой TabView. См. снимок экрана |
winui-mvvm |
Приложение XAML, использующее шаблон MVVM с CommunityToolkit.Mvvm. См. снимок экрана |
winui-lib |
Библиотека классов WinUI |
winui-unittest |
Упакованный проект MSTest для модульных тестов WinUI |
reactor, reactor-mvu, reactor-navview, reactor-tabview |
Экспериментальный. Приложения WinUI, написанные только на C#, без XAML |
Note
Шаблоны Reactor ссылаются на пакеты предварительного выпуска Microsoft.UI.Reactor. Их API-интерфейсы могут изменяться или удаляться в будущем выпуске.
Для каждого параметра см. newсправочник команд.
Сборка и запуск с учетными данными
Из папки проекта команда winapp run собирает проект, устанавливает среду выполнения Windows App SDK, соответствующую вашей архитектуре, если она отсутствует, регистрирует приложение с удостоверением пакета и запускает его.
cd MyApp
winapp run
winapp run принимает файл проекта, файл решения, папку, содержащую один из них, или папку выходных данных сборки:
# A specific project and configuration
winapp run .\MyApp.csproj -c Release --arch arm64
# A solution: winapp CLI finds the single app project and skips libraries and tests
winapp run .\MySolution.sln
# A solution with more than one app project
winapp run .\MySolution.sln --project MyApp
# Build output that you produced yourself
winapp run .\bin\x64\Debug\net10.0-windows10.0.26100.0\win-x64
Winapp CLI считывает свойство проекта WindowsPackageType , чтобы решить, как его запустить. Упакованный проект запускается с идентификатором пакета. Проект, для которого WindowsPackageType имеет значение None, запускается как неупакованное приложение без идентификатора. Чтобы запустить упакованный проект в неупакованном виде, передайте свойство в командной строке:
winapp run -p WindowsPackageType=None
Другие полезные варианты включают: --clean удалить предыдущую регистрацию и сохраненные данные приложения (LocalState и параметры) для нового первого запуска, --no-launch зарегистрировать без запуска приложения, а --detach --json вернуть идентификатор процесса и выйти, чтобы скрипты и агенты могли продолжать работу, пока приложение выполняется. Полный список см. в режиме проектов (проекты .NET SDK).
Вместо этого используйте dotnet run
Если вы предпочитаете dotnet run, используйте пакет NuGet Microsoft.Windows.SDK.BuildTools.WinApp. Пакет перехватывает dotnet run, что позволяет вызывать winapp run и запускать приложение с идентификатором. Проекты, которые вы создаете с winapp new, уже содержат ссылку на пакет, поэтому dotnet run работает без дополнительной настройки. Для других проектов сначала добавьте пакет:
dotnet add package Microsoft.Windows.SDK.BuildTools.WinApp --prerelease
dotnet run
Вы можете передать параметры dotnet run -p:WinAppRunDebugOutput=true в качестве свойств MSBuild winapp run, например WinAppRun*. Чтобы отключить интеграцию, установите EnableWinAppRunSupport в значение false в файле проекта. Дополнительные сведения см. в разделе о поддержке dotnet run.
Отладка сбоев
Добавьте --debug-output для записи сообщений OutputDebugString и исключений первого шанса во время работы приложения. Если приложение WinUI завершается сбоем с исключением stowed, winapp CLI анализирует аварийный дамп и выводит исходную ошибку и стек вызовов вместо универсального кода сбоя.
winapp run --debug-output
Добавьте --symbols, чтобы скачивать символы для полных имен нативных функций. Так как --debug-output подключает winapp CLI как отладчик, вы не можете подключить Visual Studio или другой отладчик к тому же процессу. Чтобы выполнить отладку с помощью IDE, см. Отладка с помощью winapp CLI. Дополнительные сведения об анализе stowed-exception см. в статье Триаж stowed-exception в WinUI.
Найдите элементы управления и API
winapp find-uiвыполняет поиск примеров XAML и C# из WinUI Gallery и Windows Community Toolkit по назначению и возвращает код для выбранного сценария.
winapp find-apiвыполняет поиск по поверхности API Windows и WinRT, на которую ссылается ваш проект, например по типам, членам и перечислениям Windows App SDK и Windows SDK.
# Find a control by what you want to build
winapp find-ui "tabbed layout"
# Get the XAML and C# for one of the returned scenarios
winapp find-ui --id gallery-tabview-1
# Look up an API
winapp find-api NavigationView
Обе команды поддерживают --json, поэтому агенты программирования ИИ могут использовать их для выбора элементов управления и проверки имен API. Дополнительные сведения см. в ссылках find-ui и find-api.
Автоматизируйте и проверьте пользовательский интерфейс
winapp uiуправляет запущенным приложением через Microsoft модель автоматизации пользовательского интерфейса. Используйте его для проверки дерева элементов, вызова элементов управления, ожидания изменений состояния и создания снимков экрана. Агенты могут использовать те же команды для проверки собственных изменений.
winapp run --detach
winapp ui inspect -a MyApp
winapp ui search Button -a MyApp
winapp ui invoke PART_PaneToggleButton -a MyApp
winapp ui screenshot -a MyApp
Селектор PART_PaneToggleButton указывает на кнопку меню в шаблоне winui-navview. Для собственных элементов управления скопируйте селектор из выходных данных winapp ui inspect или winapp ui search.
Чтобы запустить приложение в песочнице Windows, а не на рабочем столе, добавьте --on sandbox в winapp run и winapp ui. Дополнительные сведения см. в разделе автоматизации пользовательского интерфейса и выполнения в песочнице.
Упаковать и подписать
Когда вы будете готовы протестировать пакет локально, создайте сертификат разработки, издатель которого соответствует вашему манифесту, а затем соберите и упакуйте проект за один шаг:
winapp cert generate --manifest .\Package.appxmanifest
winapp pack .\MyApp.csproj -c Release --arch x64 --cert .\devcert.pfx
winapp pack собирает проект и создает подписанный .msix. Чтобы объединить сборки для нескольких архитектур в одну .msixbundle, ознакомьтесь с мультиархитектурными пакетами. Проект должен быть упакован, поэтому проект, который устанавливает WindowsPackageType в значение None, не может быть упакован. Для проектов WinUI сборка Windows App SDK управляет манифестом, точкой входа и созданием ресурсов, поэтому --manifest, --executable и --skip-pri не принимаются.
Сертификат разработки предназначен только для локального тестирования и использует пароль по умолчанию. Перед распространением приложения подписывайте его доверенным сертификатом, например, с помощью winapp az-sign и Azure Trusted Signing. Дополнительные сведения см. в разделе Упаковка проекта напрямую и Безопасность.
Существующие проекты WinUI
Winapp CLI работает с проектами WinUI, созданными в Visual Studio. Наведите указатель winapp run на файл проекта, файл решения или папку, содержащую один из них. Для winapp pack, передайте .csproj. Вы можете продолжать сборку и отладку в Visual Studio и использовать winapp CLI для сценариев, CI и рабочих процессов агента.
WinUI с C++
winapp run также создает и запускает проекты WinUI C++/WinRT (.vcxproj), созданные на основе шаблона Visual Studio WinUI Blank App (Packaged). Он собирает проект с помощью MSBuild Visual Studio, регистрирует приложение с идентификатором пакета и запускает его:
winapp run .\MyApp.vcxproj
# Or from the folder that contains the project
winapp run .
Для проектов C++ требуется Visual Studio или Build Tools for Visual Studio с рабочей нагрузкой Разработка классических приложений на C++ и средствами разработки приложений WinUI на C++.
winapp pack не собирает .vcxproj проекты, поэтому создайте пакет MSIX в Visual Studio. Предварительные требования и параметры см. в проектах C++ (.vcxproj). Сведения о приложениях C++, которые не используют WinUI, см. в статье "Использование CLI winapp с C++".
Samples
-
winui-app: упакованое приложение WinUI с элементами управления, настроенными дляwinapp uiавтоматизации -
winui-unpackaged-app: приложение WinUI, которое выполняется без идентификатора пакета -
winui-solution: решение с несколькими проектами, показывающее, какwinapp runвыбирает проект приложения -
cpp-winui-app: упакованное приложение C++/WinRT WinUI (Visual Studio.vcxprojс XAML), которое работает сwinapp run
Дальнейшие действия
Windows developer